Coin Selection वह प्रक्रिया है जिससे वॉलेट Bitcoin लेनदेन बनाने के लिए धन चुनता है। बैलेंस एक लगातार बनी हुई राशि नहीं है। वह पिछले लेनदेन के अलग-अलग, अभी तक खर्च न हुए आउटपुट से बनता है, जिन्हें UTXO कहते हैं। वॉलेट को भुगतान और शुल्क, दोनों के लिए पर्याप्त आउटपुट चुनने होते हैं। आम तौर पर यह अपने आप होता है; इन्हें खुद चुनने की सुविधा Coin Control कहलाती है। नेटवर्क तैयार लेनदेन की वैधता जाँचता है, लेकिन सभी वॉलेट को एक ही चयन विधि अपनाने के लिए बाध्य नहीं करता।
अन्ना 60000 sat का भुगतान करना चाहती है। भुगतान उसका वॉलेट तैयार करता है: ऐसा ऐप या उपकरण जिससे वह बिटकॉइन प्राप्त कर सकती है और भेज सकती है। sat, satoshi का संक्षिप्त रूप है, जो Bitcoin लेनदेन में रकम दर्ज करने की सबसे छोटी इकाई है। उसके पास 100000 sat का UTXO है। नोट से भुगतान करने की तरह, वह उसमें से केवल कुछ हिस्सा काट नहीं सकती: नए लेनदेन का एक इनपुट उस पूरे आउटपुट को खर्च करता है। लेनदेन दुकानदार के लिए 60000 sat का आउटपुट बनाता है और शुल्क 1000 sat हो तो अन्ना के लिए 39000 sat का दूसरा आउटपुट बनाता है। यही बची रकम, यानी change है। यह दुकानदार से बाद में मिलने वाला रिफंड नहीं; यह उसके अपने लेनदेन में ही बनता है। सभी इनपुट और सभी आउटपुट के कुल योग का अंतर शुल्क होता है। [1] [7]
वॉलेट एक ही भुगतान के लिए अलग-अलग UTXO चुन सकता है। लेकिन अधिक इनपुट का मतलब आम तौर पर अधिक डेटा है, इसलिए समान शुल्क दर पर कुल शुल्क बढ़ता है। शुल्क भेजी गई रकम का कोई प्रतिशत नहीं है। यह लेनदेन के वर्चुअल आकार पर निर्भर करता है, जिसकी इकाई vB, यानी वर्चुअल बाइट है। यह माप लेनदेन के अलग हिस्सों के अलग भार को ध्यान में रखता है। मान लीजिए, 10000 sat का UTXO खर्च करने वाला इनपुट लगभग 68 vB जोड़ता है। 10 sat/vB की दर पर उस इनपुट की लागत 680 sat होगी और बाकी भुगतान के लिए उसका योगदान 9320 sat होगा। यही उसका प्रभावी मूल्य है। लेनदेन के दूसरे हिस्सों की अपनी लागत फिर भी रहती है; इनपुट का वास्तविक आकार स्क्रिप्ट में लिखी खर्च की शर्तों और हस्ताक्षर के डेटा पर निर्भर करता है। स्क्रिप्ट एक छोटा प्रोग्राम है जो खर्च की शर्तें बताता है। सामान्य भुगतान में वॉलेट निजी कुंजी, यानी एक गुप्त संख्यात्मक मान, से डिजिटल हस्ताक्षर बनाता है: खर्च की ऐसी अनुमति जिसे जाँचा जा सके। [2] [3] [7]
अन्ना को समय के साथ कई छोटी रकम मिली होंगी। उन्हें अपने एक बड़े आउटपुट में जोड़ना समेकन कहलाता है। इससे बाद में कम इनपुट की जरूरत पड़ सकती है, लेकिन आज शुल्क देना पड़ता है और इस्तेमाल हुए आउटपुट सार्वजनिक रूप से जुड़ जाते हैं। इसलिए सब कुछ अपने आप जोड़ देना अच्छी सामान्य नीति नहीं है। Bitcoin Core लागत की तुलना waste metric से भी करता है। यह स्कोर वर्तमान इनपुट लागत और मानी गई दीर्घकालिक दर पर उसकी लागत के अंतर को देखता है। इसमें change बनाने और बाद में खर्च करने की लागत, या शुल्क में दी गई अतिरिक्त रकम भी शामिल होती है। दीर्घकालिक दर गणना की धारणा है, भविष्यवाणी नहीं। यह स्कोर लागत मापता है, गोपनीयता नहीं। [2] [6]
अन्ना ने एक प्राप्ति पर वेतन और दूसरी पर उपहार का लेबल लगाया है। दोनों को साथ खर्च करने से ब्लॉकचेन देखने वाले को उनके संबंध का संकेत मिलता है। इससे यह साबित नहीं होता कि सभी इनपुट एक ही व्यक्ति के हैं: कई लोग मिलकर भी लेनदेन बना सकते हैं। Coin Control खास UTXO चुनने देता है और लेबल उनका स्रोत याद रखने में मदद करते हैं। लेबल वॉलेट में रखा नोट है, ब्लॉकचेन में लिखा संदेश नहीं। BIP 329 इन नोटों और इस जानकारी को स्थानांतरित करने का तरीका बताता है कि वॉलेट किसी खास आउटपुट को खर्च के लिए उपलब्ध मानता है या नहीं। यह वॉलेट की अपनी सेटिंग है, जिससे Bitcoin नेटवर्क के नियम नहीं बदलते। यह प्रारूप खुद धन नहीं चुनता। लेबल निर्यात करने से संवेदनशील संबंध सामने आ सकते हैं और बिना change वाला भुगतान भी गुमनामी की गारंटी नहीं है। [4] [6]
दिख रहा पूरा बैलेंस जरूरी नहीं कि तुरंत इस्तेमाल हो सके। वॉलेट कुछ आउटपुट जानबूझकर बाहर रख सकता है; दूसरे पुष्टि या खर्च की शर्तें पूरी होने का इंतजार कर रहे हो सकते हैं। चयन को लेनदेन के आकार और भार की सीमाएँ भी माननी होती हैं। अपुष्ट प्राप्ति को खर्च करने पर नया भुगतान उसे बनाने वाले पिछले लेनदेन पर निर्भर हो जाता है। इस संदर्भ में उसे पूर्वज लेनदेन कहा जाता है। पूरी निर्भर श्रृंखला की पुष्टि के लिए अतिरिक्त शुल्क लग सकता है। RPC, वह इंटरफेस जिससे प्रोग्राम Bitcoin Core 29.0 को नियंत्रित करते हैं, walletcreatefundedpsbt में include_unsafe विकल्प देता है। यह जोखिम वाले अपुष्ट इनपुट भी शामिल करने देता है। यदि मूल लेनदेन ऐसे बदला जाए कि जरूरी आउटपुट न रहे, तो उस पर निर्भर भुगतान की पुष्टि नहीं हो सकती। केवल किसी नोड की मेमोरी से मूल लेनदेन का अस्थायी रूप से हटना उसकी वैधता नहीं बदलता। [3] [5]
वॉलेट संभावनाएँ कैसे खोजता है? Branch-and-bound, या BnB, इनपुट के संयोजन आजमाता है और खोज की ऐसी शाखाएँ छोड़ देता है जिनसे उचित परिणाम नहीं मिल सकता। लक्ष्य अलग change आउटपुट बनाए बिना भुगतान करना है। रकम बिल्कुल बराबर होना जरूरी नहीं: स्वीकार्य सीमा में change बनाने और बाद में खर्च करने की लागत तक अतिरिक्त रकम भी हो सकती है। यह अतिरिक्त रकम शुल्क बन जाती है; वॉलेट में कहीं छिपी नहीं रहती। इसलिए बिना change वाला भुगतान जरूरी नहीं कि सबसे सस्ता हो। खोज के प्रयास सीमित हैं और वह मौजूद समाधान या सभी संयोजनों में सर्वोत्तम समाधान को भी चूक सकती है। [2]
Bitcoin Core 29.0, BnB, Knapsack और Single Random Draw (SRD) के प्रस्तावों की तुलना करता है। ये उचित इनपुट समूह खोजने के अलग तरीके हैं। प्रभावी शुल्क दर दीर्घकालिक दर के तीन गुने से अधिक हो तो CoinGrinder भी शामिल होता है। यह तरीका कम भार वाला, change सहित चयन खोजता है। परिणामों की तुलना ऊपर समझाए गए waste metric से होती है। उपयोगकर्ता यदि प्राप्तकर्ताओं की रकम में से शुल्क काटने का विकल्प चुनता है तो BnB छोड़ दिया जाता है। यह उस खास संस्करण का वर्णन है, हर वॉलेट के लिए अनिवार्य तरीका या नवीनतम संस्करण के बारे में दावा नहीं। [3]
साधारण भुगतान के लिए प्रोग्रामिंग पैरामीटर जानना जरूरी नहीं। लेकिन हस्ताक्षर से पहले प्राप्तकर्ता, रकम, कुल शुल्क और अपनी बची राशि को समझना जरूरी है। उन्नत उपयोगकर्ताओं के लिए, Bitcoin Core 29.0 का walletcreatefundedpsbt इनपुट को txid, यानी मूल लेनदेन के पहचानकर्ता, और vout, यानी उसके आउटपुट के क्रमांक से चुनने देता है। add_inputs तय करता है कि वॉलेट अतिरिक्त इनपुट जोड़ सकता है या नहीं। इकाइयों पर ध्यान दें: fee_rate, sat/vB इस्तेमाल करता है, जबकि feeRate, BTC/kvB, यानी प्रति 1000 वर्चुअल बाइट bitcoin इस्तेमाल करता है। परिणाम PSBT होता है, तैयार लेनदेन को हस्ताक्षर के लिए साझा करने का प्रारूप। केवल PSBT बनाने से कुछ भेजा नहीं जाता और न भुगतान की पुष्टि होती है। मैनुअल चयन या यह प्रारूप सही प्राप्तकर्ता या अपुष्ट इनपुट की वैधता की गारंटी नहीं देते। [5]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें UTXO, Coin Control, Change Address, Fee Rate, PSBT, Bitcoin में गोपनीयता. इस प्रविष्टि का उल्लेख यहाँ भी है Watch-only Wallet, Change Address, Inventing Bitcoin.