Coinbase लेनदेन ब्लॉक के इनाम के प्राप्तकर्ता तय करता है: अनुमत नए बिटकॉइन और दूसरे लेनदेन के शुल्क। सामान्य भुगतान के विपरीत, यह पहले प्राप्त धन को खर्च नहीं करता। लेकिन वह केवल मान्य ब्लॉक के भीतर मान्य होता है और उसका इनाम तुरंत खर्च नहीं किया जा सकता। यह किसी लेनदेन का प्रकार है, Coinbase एक्सचेंज नहीं।
कल्पना करें कि अन्ना माइनिंग के लिए एक संभावित ब्लॉक तैयार कर रही है। वह उपयोगकर्ताओं के भुगतान इकट्ठे करती है और उनसे पहले एक खास लेनदेन रखती है जो इनाम पाने वालों को तय करता है। हमारे उदाहरण में नियम 3.125 BTC नए बनाने देते हैं और चुने हुए भुगतान 0.075 BTC शुल्क लाते हैं। इसलिए अन्ना अधिकतम 3.2 BTC ले सकती है। यही पहला लेनदेन coinbase है। उसे लिख देने भर से इनाम नहीं मिल जाता: ब्लॉक को माइनिंग की शर्त और बाकी सभी शर्तें पूरी करनी होंगी, जिन्हें प्राप्त करने वाले नोड खुद जाँचते हैं। अन्ना ने अधिक रकम माँगी तो वे पूरा ब्लॉक ठुकरा देंगे, भले उसे खोजने में कितनी भी ऊर्जा लगी हो। कोई केंद्रीय खाता उसे रकम नहीं भेजता। नए सिक्के साझा नियमों के अनुसार स्वीकार किए गए ब्लॉक में बनते हैं। उदाहरण के 3.2 BTC में सिर्फ 3.125 BTC नए हैं; बाकी उपयोगकर्ताओं ने दिया है। यह इनाम है, शुद्ध लाभ नहीं: माइनिंग की लागत अभी नहीं घटाई गई है। [6] [4]
अनुमत नई आपूर्ति Block Subsidy कहलाती है और Halving पर नियमित अंतराल में आधी होती है। Satoshi बिटकॉइन की सबसे छोटी इकाई है। शुल्क चुने गए भुगतानों पर निर्भर है, इसलिए दो ब्लॉक अलग इनाम दे सकते हैं। पुरस्कार की अधिकतम सीमा उस ऊँचाई पर अनुमत नई आपूर्ति और ब्लॉक के अन्य सभी वैध लेनदेन के शुल्क का योग है। Bitcoin Core पहले भाग को GetBlockSubsidy से निकालता है। केवल नई आपूर्ति कुल मात्रा बढ़ाती है; शुल्क पहले से मौजूद satoshi हैं। माइनर कम राशि ले सकता है, लेकिन अंतर बाद में नहीं ले सकता: न ली गई नई आपूर्ति बनती ही नहीं और न लिए गए शुल्क हमेशा के लिए खर्च करने योग्य नहीं रहते। एक satoshi अधिक लेने पर भी पूरा ब्लॉक अमान्य हो जाता है। [4] [6]
इनाम अक्सर पूल को मिलता है, जो कई माइनरों का काम मिलकर चलाता है। लॉकिंग स्क्रिप्ट एक छोटा प्रोग्राम है जो आउटपुट को बाद में खर्च करने की शर्तें तय करता है। PPS, FPPS और PPLNS पूल की कमाई प्रतिभागियों में बाँटने के अलग तरीके हैं। आउटपुट सामान्य लॉकिंग स्क्रिप्ट का उपयोग करते हैं। पुरस्कार एक साझा पते पर जा सकता है, कई प्राप्तकर्ताओं में बँट सकता है या पूल संचालक का हिस्सा रख सकता है। नोड राशि और खर्च की शर्तें जाँचते हैं, अनुबंध या वास्तविक मालिक नहीं। PPS, FPPS, PPLNS, न्यूनतम भुगतान और प्रतिभागियों को बाद के हस्तांतरण पूल के नियम हैं, Bitcoin के सहमति नियम नहीं। [6] [7]
अन्ना इनाम ब्लॉक में देख सकती है, लेकिन उससे अभी बिजली का बिल नहीं दे सकती। कोई एक्सचेंज उसे रोक नहीं रहा; Bitcoin के नियम ही प्रतीक्षा कराते हैं। ब्लॉक की ऊँचाई चेन में उसकी क्रम संख्या है; यहाँ H उस ब्लॉक की ऊँचाई है जिसमें इनाम बना। COINBASE_MATURITY के अनुसार खर्च वाले ब्लॉक की ऊँचाई और आउटपुट बनने की ऊँचाई में कम से कम 100 का अंतर चाहिए। H पर बना आउटपुट पहली बार वैध ब्लॉक H+100 में खर्च हो सकता है। वॉलेट की पुष्टि गिनती अलग दिख सकती है, क्योंकि बनाने वाला ब्लॉक पहले से पहली पुष्टि है। आधार ऊँचाइयों का अंतर है, घंटों का अनुमान नहीं। यह शर्त पूरी होने पर भी ब्लॉक हमेशा चेन में रहने की गारंटी नहीं मिलती। [5]
पुनर्गठन में नोड अधिक संचित माइनिंग कार्य वाली दूसरी मान्य शाखा पर जाता है। UTXO अभी खर्च न हुए आउटपुट हैं, यानी अलग-अलग उपलब्ध रकम। इनाम अपने बनाने वाले ब्लॉक के साथ इस रिकॉर्ड से गायब हो सकता है। पुनर्गठन मूल ब्लॉक को सबसे अधिक संचित कार्य वाली वैध सक्रिय चेन से बाहर कर सकता है। उसके coinbase आउटपुट सक्रिय UTXO समूह से हट जाते हैं। पुरस्कार खर्च करने वाले आगे के लेनदेन भी प्रभावित हो सकते हैं। 100 ब्लॉक का इंतज़ार छोटे पुनर्गठन का असर सीमित करता है, पूर्ण गारंटी नहीं देता। पूल को सक्रिय चेन के पुरस्कार, उसे खर्च करने की योग्यता और माइनरों के प्रति अपने भुगतान दायित्व अलग रखने चाहिए। [4] [5]
सटीक प्रारूप के लिए कुछ नाम समझें: इनपुट आम तौर पर खर्च किए जा रहे धन को बताता है; आउटपुट रकम और खर्च की शर्तें तय करता है। Txid लेनदेन की पहचान है, संस्करण उसका प्रारूप बताता है और locktime शामिल होने का समय सीमित कर सकता है। हर ब्लॉक में कम से कम एक लेनदेन होना चाहिए और केवल पहला coinbase हो सकता है। इसका एक ही इनपुट होता है, जिसमें पुराने आउटपुट का संदर्भ शून्य है: हैश के सभी 32 बाइट शून्य और इंडेक्स 0xffffffff। outpoint कहलाने वाला यह संदर्भ पुरानी कोई राशि खर्च नहीं करता, इसलिए उस खर्च को अधिकृत करने वाले सामान्य हस्ताक्षर की जाँच नहीं होती। फिर भी लेनदेन का अपना txid, संस्करण, locktime और एक या अधिक आउटपुट होते हैं। [1] [2] [3]
ऊँचाई ब्लॉक की क्रम संख्या है। BIP34 उस प्रस्ताव का नाम है जिसका नियम Bitcoin ने अपनाया; scriptSig इनपुट का डेटा फ़ील्ड और CScript स्क्रिप्ट निर्देश तथा संख्याएँ लिखने का तरीका है। BIP34 के अनुसार scriptSig की शुरुआत ब्लॉक की ऊँचाई से होनी चाहिए, जिसे न्यूनतम एन्कोडिंग वाले CScript अंक के रूप में लिखा जाता है। पूरा फ़ील्ड 2–100 बाइट का होता है। इसके बाद extra nonce, पूल की पहचान या संयुक्त माइनिंग का डेटा आ सकता है। गलत ऊँचाई या लंबाई ब्लॉक को अस्वीकृत कराती है। इनपुट सामान्य अनलॉकिंग स्क्रिप्ट की तरह नहीं चलता, फिर भी उसके हस्ताक्षर संबंधी ऑपकोड sigops की गिनती में शामिल हो सकते हैं। यह गिनती हस्ताक्षर ऑपरेशनों की संख्या पर लागू सीमा के लिए की जाती है। [1] [9]
माइनिंग में ब्लॉक के छोटे सार, यानी हेडर का हैश बार-बार निकाला जाता है। हैश डिजिटल छाप है, nonce बदलने वाली संख्या और Merkle root सभी लेनदेन की संयुक्त छाप है। इसलिए लेनदेन बदलने से नई कोशिशें मिलती हैं। ब्लॉक हेडर का nonce केवल 32 बिट का है और माइनिंग उपकरण उसकी सभी संभावनाएँ जल्दी जाँच लेता है। इसलिए सॉफ़्टवेयर coinbase में extra nonce भी बदलता है। इससे txid, Merkle ट्री का रूट और फिर ब्लॉक हेडर बदलते हैं, जिससे उपयुक्त हैश खोजने के नए विकल्प मिलते हैं। पूल उपकरणों में काम बाँटता है ताकि वे बेवजह एक ही विकल्प न जाँचें। Extra nonce अतिरिक्त सिक्के नहीं बनाती। [6] [7] [12]
SegWit हस्ताक्षर जैसे कुछ सत्यापन डेटा को witness नाम के हिस्से में अलग करता है। Commitment डेटा से जाँचने योग्य संबंध है, कोई अतिरिक्त भुगतान नहीं। नीचे उसका तकनीकी प्रारूप है। ब्लॉक में witness डेटा होने पर BIP141 coinbase आउटपुट में witness commitment माँगता है, यानी उस डेटा से क्रिप्टोग्राफ़िक बंधन। स्क्रिप्ट 6a24aa21a9ed से शुरू होती है: OP_RETURN, 36 बाइट डालने का निर्देश और aa21a9ed चिह्न। इसके बाद witness Merkle root और आरक्षित मान को जोड़कर दो बार SHA-256 से निकाला गया 32-बाइट हैश आता है। Coinbase इनपुट के witness में केवल वही एक 32-बाइट आरक्षित मान होना चाहिए। कई आउटपुट मेल खाएँ तो सबसे बड़ा इंडेक्स मान्य होता है। यह खर्च योग्य भुगतान नहीं है; ब्लॉक में witness डेटा न हो तो यह commitment वैकल्पिक है। [10]
Full Node ऐसा कंप्यूटर है जो Bitcoin नियम खुद जाँचता है। ब्लॉक वज़न अनुमत डेटा क्षमता का उपयोग मापता है; Mempool सामान्य अपुष्ट लेनदेन स्थानीय तौर पर रखता है। इनाम की जाँच पूरे ब्लॉक की जाँच का हिस्सा है। Full Node पहले स्थान पर coinbase माँगता है और उसी ब्लॉक में दूसरी coinbase अस्वीकार करता है। वह scriptSig, BIP34 ऊँचाई, राशि सीमाएँ, ब्लॉक वज़न, शुल्क और आवश्यक witness commitment जाँचता है। आउटपुट का योग अनुमत नई आपूर्ति और शुल्क से अधिक नहीं हो सकता; बाद में खर्च करते समय भी परिपक्वता का नियम पूरा करना जरूरी है। माइनर नियमों के अनुसार खुद को मनचाही राशि नहीं दे सकता। ब्लॉक के बिना coinbase mempool में नहीं जाती। [3] [4] [10]
Genesis Block Bitcoin का शुरुआती ब्लॉक है। उसकी खास स्थिति और पुराने दोहराए गए पहचानकर्ता बताते हैं कि आज के सामान्य नियम हर ऐतिहासिक मामले पर बिना फर्क किए लागू नहीं किए जा सकते। ऊँचाई लिखना अनिवार्य होने से पहले अलग coinbase लेनदेन का txid समान हो सकता था। BIP30 पुराने, अभी तक न खर्च हुए आउटपुट को मिटाकर लिखने से रोकता है; BIP34 सामान्य आधुनिक ब्लॉक में अलग पहचान देने वाली ऊँचाई जोड़ता है। Genesis Block विशेष है: उसकी coinbase रिकॉर्ड किए गए ब्लॉक में है, लेकिन आरंभीकरण ने उसके आउटपुट को खर्च योग्य नहीं बनाया। इसलिए मूल 50 BTC खर्च नहीं हो सकते; यह सामान्य 100 ब्लॉक का इंतज़ार नहीं है। [8] [9] [11]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Block, Block Subsidy, Transaction Fees, माइनिंग, Block Template, Bitcoin. इस प्रविष्टि का उल्लेख यहाँ भी है Block Subsidy, पुष्टि, Reorg, Stale Block.