Coin Selection वॉलेट की वह प्रक्रिया है जो लेनदेन के आउटपुट और शुल्क के लिए UTXO चुनती है। यह स्थानीय निर्णय है, सभी वॉलेट पर एक ही एल्गोरिदम थोपने वाला सर्वसम्मति नियम नहीं।
हर इनपुट एक विशिष्ट UTXO को पूरा खर्च करता है। इनपुट और आउटपुट के कुल योग का अंतर शुल्क है; प्रेषक को लौटने वाली राशि के लिए अलग आउटपुट चाहिए। उदाहरण में 100000 sat का इनपुट, 60000 sat का भुगतान और 1000 sat का शुल्क होने पर 39000 sat वापस लौटते हैं। [Bitcoin Developer Guide — Transactions]
केवल अंकित राशि पर्याप्त नहीं है: इनपुट जोड़ने से लेनदेन बढ़ता है। प्रभावी मूल्य चुनी गई शुल्क दर पर UTXO खर्च करने की लागत घटाता है। उदाहरण के लिए 10000 sat के इनपुट का अनुमानित आकार 68 vB और दर 10 sat/vB हो तो योगदान 9320 sat है; लेनदेन के बाकी हिस्सों के लिए अलग शुल्क अभी भी चाहिए। वास्तविक आकार स्क्रिप्ट और हस्ताक्षर पर निर्भर है। [Bitcoin Core — Coin selection implementation] [Bitcoin Core 29.0 — Transaction creation]
Branch-and-bound (BnB) ऐसे इनपुट संयोजन खोजता है जिनसे शेष राशि लौटाए बिना भुगतान हो सके। लक्ष्य सीमा शेष-वापसी आउटपुट बनाने और बाद में खर्च करने की लागत तक अतिरिक्त राशि स्वीकार करती है; यह अतिरिक्त राशि शुल्क बनती है। ठीक बराबर राशि मिलना आवश्यक नहीं है। सीमित खोज समाधान या वैश्विक सर्वोत्तम समाधान नहीं भी खोज सकती। [Bitcoin Core — Coin selection implementation]
Bitcoin Core 29.0 में BnB, Knapsack और Single Random Draw (SRD) पर विचार होता है; प्रभावी दर दीर्घकालिक दर के तीन गुने से अधिक होने पर CoinGrinder भी शामिल होता है। उम्मीदवारों की तुलना waste metric से होती है। आउटपुट से शुल्क घटाने पर BnB छोड़ दिया जाता है। यह एक विशिष्ट संस्करण का वर्णन है, सभी वॉलेट के एल्गोरिदम का सार्वभौमिक क्रम नहीं। [Bitcoin Core 29.0 — Transaction creation]
Waste metric वर्तमान और दीर्घकालिक दर पर इनपुट लागत की तुलना करता है, साथ में शेष-वापसी की लागत या शुल्क में दी गई अतिरिक्त राशि भी जोड़ता है। दीर्घकालिक दर एक धारणा है, भविष्यवाणी नहीं। समेकन भविष्य के इनपुट घटा सकता है, लेकिन आज शुल्क लगता है और उपयोग किए गए आउटपुट जुड़ जाते हैं; इसलिए न्यूनतम तत्काल शुल्क ही एकमात्र लक्ष्य नहीं है। [Bitcoin Core — Coin selection implementation] [Bitcoin Design — Coin selection and privacy]
अलग-अलग प्राप्तियों को साथ खर्च करना विश्लेषकों को उन्हें जोड़ने का संकेत देता है, एक ही व्यक्ति का प्रमाण नहीं। Coin Control और लेबल भुगतान के संदर्भ अलग रखने में मदद करते हैं। BIP 329 लेबल और खर्च-योग्यता मेटाडेटा के हस्तांतरण का वर्णन करता है; वह स्वयं कॉइन नहीं चुनता और निर्यात संवेदनशील संबंध उजागर कर सकता है। शेष-वापसी न होना भी गुमनामी की गारंटी नहीं है। [BIP 329 — Wallet Labels Export Format] [Bitcoin Design — Coin selection and privacy]
चयन को खर्च-योग्यता, पुष्टियों, लॉक किए गए आउटपुट और लेनदेन की सीमाओं का पालन करना चाहिए। Core 29.0 के RPC walletcreatefundedpsbt में include_unsafe जोखिमपूर्ण अपुष्ट इनपुट भी स्वीकार करता है; उनकी मूल लेनदेन गायब होने पर बनाया गया भुगतान अमान्य हो सकता है। अपुष्ट पूर्वज लेनदेन के लिए अतिरिक्त शुल्क भी चाहिए हो सकता है। बड़ा बैलेंस अपने आप उपयुक्त इनपुट संयोजन की गारंटी नहीं देता। [Bitcoin Core 29.0 — Transaction creation] [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]
Core 29.0 के walletcreatefundedpsbt में txid और vout से इनपुट निर्दिष्ट किए जा सकते हैं; add_inputs अतिरिक्त इनपुट जोड़ने को नियंत्रित करता है। fee_rate की इकाई sat/vB है, जबकि feeRate की BTC/kvB है। परिणामी PSBT आगे की प्रक्रिया की तैयारी है, पुष्ट भुगतान नहीं। हस्ताक्षर से पहले प्राप्तकर्ता, कुल शुल्क और अपनी लौटने वाली राशि जाँची जाती है; मैनुअल चयन यह जिम्मेदारी नहीं हटाता। [Bitcoin Core 29.0 — walletcreatefundedpsbt RPC]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें UTXO, Coin Control, चेंज आउटपुट, Fee Rate, PSBT, Bitcoin में गोपनीयता. इस प्रविष्टि का उल्लेख यहाँ भी है Watch-only Wallet, चेंज आउटपुट, Inventing Bitcoin.