Change Address वह पता है जिस पर वॉलेट भुगतान की बची रकम लौटाता है। बिटकॉइन चुनी गई रकम को पूरा खर्च करता है। भुगतान और शुल्क घटाने के बाद वॉलेट आम तौर पर बाकी रकम अपने नए आउटपुट में भेजता है। पैसे आपके ही रहते हैं, लेकिन अब वे दूसरे आउटपुट और अक्सर नए पते पर दर्ज होते हैं।
एलिस को पहले 120 000 sat मिले थे और अब वह 100 000 sat देना चाहती है। sat बिटकॉइन की सबसे छोटी इकाई है। इस उदाहरण में उसके पैसे एक UTXO में हैं, यानी पिछली ट्रांज़ैक्शन के ऐसे आउटपुट में जो अभी खर्च नहीं हुआ है। भुगतान में वह इनपुट बनकर पूरा खर्च होता है। शुल्क 2 000 sat हो तो प्राप्तकर्ता को 100 000 sat मिलते हैं और बाकी 18 000 sat एलिस के वॉलेट के नए आउटपुट में जाते हैं। यह बड़ा नोट देकर बाकी पैसे पाने जैसा है, लेकिन दोनों रकम एक ही ट्रांज़ैक्शन में बाँटी जाती हैं। एलिस को सामने वाले के पैसे लौटाने का इंतज़ार नहीं करना पड़ता। वॉलेट आम तौर पर change का पता खुद चुनता है। इसलिए एक्सप्लोरर में दो गंतव्य पते दिख सकते हैं, जबकि भुगतान एक ही व्यक्ति को हुआ है। पुष्टि के बाद change अपना आउटपुट पहचानकर्ता outpoint रखने वाला नया UTXO होता है, पुराने आउटपुट का अधूरा बचा हिस्सा नहीं। outpoint में ट्रांज़ैक्शन का पहचानकर्ता txid और उस ट्रांज़ैक्शन में आउटपुट का स्थान, दोनों शामिल होते हैं। आगे एलिस इसे अपने बाकी पैसों की तरह खर्च कर सकती है। [1]
scriptPubKey स्क्रिप्ट आउटपुट खर्च करने की शर्तें तय करती है। वह यह नहीं बताती कि आपने पैसे क्यों भेजे। ब्लॉक में रकम और scriptPubKey स्क्रिप्ट होती हैं, भुगतान करने वाले, प्राप्तकर्ता या वापसी के लेबल नहीं। वॉलेट व्युत्पत्ति के रिकॉर्ड से अपने वापसी आउटपुट पहचानता है; ब्लॉकचेन एक्सप्लोरर या विश्लेषक उनका उद्देश्य अनुमान से तय करते हैं। आउटपुट का क्रम या यह मान लेना कि दूसरा आउटपुट वापसी है, भरोसेमंद नहीं है। लेनदेन में वापसी का कोई आउटपुट होना ज़रूरी नहीं है। उसमें एक वापसी आउटपुट, भेजने वाले के नियंत्रण में कई आउटपुट या अलग-अलग प्रतिभागियों के आउटपुट भी हो सकते हैं। इसलिए change शब्द आउटपुट और वॉलेट के संबंध को बताता है। यह प्रोटोकॉल में लिखी कोई अलग विशेषता नहीं है। [1]
यहाँ अनुमान अप्रत्यक्ष संकेतों पर आधारित होता है। Payjoin और CoinJoin कई भागीदारों को मिलकर ट्रांज़ैक्शन बनाने देते हैं, इसलिए सीधे-सादे अनुमान गलत हो सकते हैं। BIP तकनीकी प्रस्ताव या मानक का दस्तावेज़ है। आम अनुमान-आधारित तरीके किसी आउटपुट को वापसी मान सकते हैं यदि उसका स्क्रिप्ट प्रकार इनपुट जैसा हो, उसकी राशि राउंड फ़िगर में न हो, उसका पता नया हो या उसकी राशि बची रकम की गणना से मेल खाती हो। दो आउटपुट वाले साधारण भुगतान में ऐसे अनुमान काम कर सकते हैं और बाद के खर्चों को जोड़ सकते हैं, लेकिन हर तरीके के अपवाद हैं। BIP78 Payjoin जानबूझकर इनपुट के एक ही मालिक होने की धारणा और स्क्रिप्ट के प्रकार या राउंड फ़िगर वाली राशि से वापसी पहचानने के तरीकों को बाधित करता है। CoinJoin, एक साथ कई भुगतान और अपने ही पतों के बीच हस्तांतरण से अस्पष्टता बढ़ती है। अनुमान के साथ अनिश्चितता की मात्रा और सहायक प्रमाण बताने चाहिए। केवल अनुमान-आधारित तरीका न प्रोटोकॉल का प्रमाण है, न कानूनी स्वामित्व का। [4] [14]
PSBT ट्रांज़ैक्शन के प्रस्ताव और अतिरिक्त जानकारी का पैकेज है, जिसे वॉलेट और हस्ताक्षर उपकरण आपस में भेज सकते हैं। Multisig में कई कुंजियों से जुड़े नियम के अनुसार मंज़ूरी चाहिए। PSBT के आउटपुट में BIP32 के अनुसार कुंजी व्युत्पत्ति की जानकारी हार्डवेयर या ऑफलाइन हस्ताक्षर उपकरण को प्रस्तावित वापसी जाँचने देती है। उपकरण को संबंधित आउटपुट स्वयं व्युत्पन्न करके जाँचना चाहिए कि वह उसी वॉलेट के नियमों के अनुरूप है। BIP174 एकल कुंजी और Multisig, दोनों की जाँच बताता है। कई हस्ताक्षरों के मामले में आउटपुट में एक स्थानीय कुंजी होना पर्याप्त नहीं है। लेनदेन तैयार करने वाला दुर्भावनापूर्ण समन्वयक वापसी को अपने आउटपुट से बदल सकता है या बची रकम बहुत अधिक शुल्क में छिपा सकता है। इसलिए हस्ताक्षर से पहले भरोसेमंद स्क्रीन पर प्राप्तकर्ताओं के आउटपुट, कुल शुल्क और वापसी बताए गए हर आउटपुट को जाँचें। [5]
गणना में I चुनी रकम, R प्राप्तकर्ताओं को भुगतान, F शुल्क और C बची रकम है: C = I − R − F। RPC नोड को आदेश भेजने का प्रोग्रामिंग इंटरफ़ेस है। Coin Selection, यानी UTXO का चयन, इनपुट, शुल्क और संभावित वापसी की रकम एक साथ तय करता है। बिल्कुल सही राशि देने वाले इनपुट के संयोजन को वापसी का आउटपुट नहीं चाहिए। अन्यथा वॉलेट बची रकम की तुलना आउटपुट बनाने और बाद में उसे खर्च करने की लागत से करता है। Bitcoin Core का RPC fundrawtransaction अधिकतम एक वापसी आउटपुट जोड़ सकता है और उसका स्थान लौटाता है। जब चुनी गई सारी रकम प्राप्तकर्ताओं को भेजी जाती है, तो जानबूझकर वापसी नहीं बनाई जाती। Coin Control से हाथ से चयन करने पर इस्तेमाल किए गए इनपुट और लौटने वाली रकम बदलते हैं, लेकिन हर चुना इनपुट पूरा खर्च होता है। इसलिए केवल भुगतान की राशि नहीं, बल्कि अंतिम इनपुट, प्राप्तकर्ताओं की रकम, शुल्क और वापसी भी जाँचें। [9] [10] [13]
HD Wallet एक गुप्त शुरुआती मान से बहुत-सी कुंजियाँ और पते निकालता है। व्युत्पत्ति पथ बताता है कि कौन-सा पता निकालना है; BIP तकनीकी प्रस्ताव या मानक दस्तावेज़ को दर्शाता है। HD Wallet आम तौर पर रकम पाने वाले पते बाहरी शाखा से और बची रकम लौटाने वाले पते आंतरिक शाखा से व्युत्पन्न करता है। BIP44 में change=0 बाहरी और change=1 आंतरिक शाखा है। नेटिव SegWit खाते के लिए इसके उदाहरण m/84'/0'/0'/0/i और m/84'/0'/0'/1/i हैं। यह वॉलेट की परंपरा है, सहमति का नियम नहीं; डिस्क्रिप्टर आधारित वॉलेट दूसरे नियम भी इस्तेमाल कर सकता है। नया आंतरिक पता पते के बार-बार इस्तेमाल को कम करता है। बची रकम पुराने पते पर लौटाना वैध है, लेकिन उससे भुगतान का इतिहास जुड़ जाता है और उसे किसी खास व्यक्ति से जोड़ना आसान हो सकता है। [2] [3]
नीचे xpub विस्तारित सार्वजनिक कुंजी है। इससे आगे की सार्वजनिक जानकारी निकाली जा सकती है, लेकिन यह अपने आप भुगतान पर हस्ताक्षर नहीं कर सकती। Seed कुंजियाँ निकालने का गुप्त शुरुआती मान है। आउटपुट डिस्क्रिप्टर स्क्रिप्ट का प्रकार, कुंजियाँ, उनके मूल की जानकारी और आगे के पते व्युत्पन्न करने का नियम बताता है। wpkh([fingerprint/84h/0h/0h]xpub…/0/*) और …/1/* की जोड़ी रकम पाने और बची रकम लौटाने वाली शाखाओं का वर्णन कर सकती है। BIP389 एक साझा लिखावट में कई शाखाएँ दर्शाने देता है। internal चिह्न वॉलेट को बताता है कि वापसी के लिए कौन-सा डिस्क्रिप्टर इस्तेमाल करना है, लेकिन वह बनने वाली स्क्रिप्ट को नहीं बदलता। बहाली के समय केवल seed से सारी रकम मिल जाए, यह ज़रूरी नहीं। खाते, स्क्रिप्ट के प्रकार और व्युत्पत्ति के तरीके की जानकारी के बिना वॉलेट कुछ वैध वापसी आउटपुट को नज़रअंदाज़ कर सकता है, भले ही आवश्यक कुंजियाँ अब भी मौजूद हों। [6] [7] [8]
Dust बहुत छोटे आउटपुट को कहते हैं, जिसका आकलन नोड के लेनदेन आगे भेजने के नियमों से होता है। उसकी सीमा आउटपुट के प्रकार, बाद में उसे खर्च करने के लिए आवश्यक डेटा के अनुमानित आकार और बदली जा सकने वाली dust relay feerate से निकाली जाती है। यह हर जगह लागू होने वाली एक ही satoshi राशि या सहमति के नियमों की रोक नहीं है। वॉलेट इस सीमा से ऊपर की बची रकम भी लौटाने से मना कर सकता है, यदि आउटपुट बनाने और बाद में खर्च करने की लागत लौटने वाली राशि से अधिक होने की उम्मीद हो। यह आर्थिक सीमा वर्तमान शुल्क दर, भविष्य की दर के अनुमान और स्क्रिप्ट के आकार पर निर्भर करती है। वापसी का आउटपुट न बनाने से अभी का शुल्क बढ़ता है; बहुत छोटा आउटपुट बनाने पर उसे बाद में खर्च करना बेहद महँगा हो सकता है। [12]
Replace-by-fee (RBF) अपुष्ट लेनदेन को अधिक शुल्क वाले दूसरे लेनदेन से बदलता है। Bitcoin Core का RPC bumpfee अंतर की भरपाई वापसी घटाकर, इनपुट जोड़कर या नया वापसी आउटपुट बनाकर कर सकता है। यदि बची रकम नोड के नियमों या आर्थिक उपयोगिता की सीमा से नीचे गिरती है, तो वापसी हट सकती है। अपुष्ट वापसी खर्च करने से मूल लेनदेन पर निर्भर एक अगला लेनदेन बनता है; मूल लेनदेन बदलने से यह निर्भरता अमान्य हो सकती है। लेकिन वॉलेट या नोड के mempool, यानी उसकी अपुष्ट ट्रांज़ैक्शन की सूची, में मूल भुगतान का कोई आउटपुट खर्च करने वाली ट्रांज़ैक्शन पहले से मौजूद हो, तो bumpfee उसे बदलने से मना कर देता है। CPFP (Child Pays for Parent) मूल ट्रांज़ैक्शन को बदलने के बजाय उसके बाद की एक नई ट्रांज़ैक्शन बनाता है। यह मूल भुगतान के उस आउटपुट को खर्च करती है जो वॉलेट के नियंत्रण में है, और अधिक शुल्क देती है। इससे दोनों ट्रांज़ैक्शन की संयुक्त शुल्क दर बढ़ती है और माइनरों को दोनों की एक साथ पुष्टि करने का प्रोत्साहन मिलता है। जब तक प्रतिस्थापन का मामला हल न हो, अपुष्ट txid या आउटपुट संदर्भ outpoint को अंतिम न मानें। [11] [15]
बहाली के दौरान रकम पाने वाले और change वाले, दोनों तरह के पते मिलने चाहिए। सामान्य एकल-हस्ताक्षर वॉलेट में सही Seed Phrase (बहाली के शब्द), इस्तेमाल की गई passphrase, यदि कोई थी, और अनुकूल वॉलेट सेटिंग आम तौर पर पर्याप्त होती हैं। Seed कुंजियाँ निकालने का गुप्त शुरुआती मान है; passphrase वैकल्पिक अतिरिक्त पासवर्ड है, यदि आपने उसे चुना था। इसलिए हर उपयोगकर्ता को डिस्क्रिप्टर हाथ से लिखना ज़रूरी नहीं। लेकिन अपनी खास सेटिंग या Multisig में, जहाँ कई कुंजियाँ मंज़ूरी तय करती हैं, संभव है कि सिर्फ शब्द पर्याप्त न हों। वॉलेट का विवरण भी रखें: नेटवर्क, खाता, स्क्रिप्ट का प्रकार, कुंजी निकालने के नियम और Multisig में सभी भागीदारों की विस्तारित सार्वजनिक कुंजियाँ xpub, उनका क्रम और ज़रूरी हस्ताक्षरों की संख्या। /1/* शाखा न हो तो बहाली change को छोड़ सकती है और कम बैलेंस दिखा सकती है। दोनों शाखाओं के ज्ञात पते और आउटपुट, खोज का दायरा और इतिहास की जाँच शुरू करने का स्थान देखें। बहाली के परीक्षण से यह भी तय होना चाहिए कि भुगतान तैयार करके सही हस्ताक्षर किए जा सकते हैं। [2] [6] [7]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें बिटकॉइन पता, UTXO, Coin Control, वॉलेट, Coin Selection, HD Wallet. इस प्रविष्टि का उल्लेख यहाँ भी है बिटकॉइन पता, Coin Control, Bitcoin में गोपनीयता, छद्मनामिता.