45 / 736REORG

Reorg

चेन का पुनर्गठन

पुष्टि हो चुके भुगतान की पुष्टि भी कुछ समय के लिए हट सकती है। जब कोई नोड Bitcoin के इतिहास की दूसरी वैध शाखा अपनाकर हाल के ब्लॉक बदलता है, तो इसे Reorg कहते हैं।

Bitcoin नोड वह प्रोग्राम है जो ब्लॉक और लेन-देन की जाँच करता है। Reorg में Bitcoin नोड ऐसी दूसरी वैध शाखा पर जाता है जिसमें अधिक संचित Proof of Work हो, यानी माइनिंग से प्रमाणित काम। नोड हाल के ब्लॉक और उनमें मौजूद भुगतानों का फिर मूल्यांकन करता है। इससे Bitcoin के नियम नहीं बदलते और न ही किसी को दूसरे का भुगतान रद्द करने का बटन मिलता है।

एना को 20,000 satoshi मिलते हैं। satoshi बिटकॉइन की छोटी इकाई है। वॉलेट एक पुष्टि दिखाता है: भुगतान उस ब्लॉक में है जिसे उसके नोड ने स्वीकार किया है। फिर नोड को एक दूसरी वैध प्रतिस्पर्धी शाखा का पता चलता है, जिसमें यह भुगतान अभी नहीं है। जब उस शाखा का संचित माइनिंग काम अधिक हो जाता है, तो नोड उस पर चला जाता है। इतिहास के एक हिस्से की इस अदला-बदली को Reorg कहते हैं। एना का भुगतान दोबारा पुष्टि की प्रतीक्षा में आ सकता है, भले ही किसी ने उसकी कुंजियाँ न चुराई हों और हस्ताक्षर न बदला हो। निर्णय वोट या केवल ब्लॉक की गिनती से नहीं, chainwork से होता है: हर ब्लॉक अपनी कठिनाई के अनुसार जितना काम प्रमाणित करता है, उसका योग। नियम तोड़ने वाली शाखा में अधिक काम हो, तब भी नोड उसे अस्वीकार करता है। [1] [4]

आगे एना को क्या दिखेगा, यह नई शाखा पर निर्भर है। यदि उसमें भी उसका भुगतान है, तो भुगतान पुष्ट रहता है, हालांकि पुष्टियों की संख्या बदल सकती है। नहीं होने पर Bitcoin Core उसे Mempool में वापस रखने की कोशिश कर सकता है। यह उन अपुष्ट लेन-देन की अस्थायी सूची है जो ब्लॉक में जगह पाने की प्रतीक्षा कर रहे हैं। वापसी की गारंटी नहीं है। पुराने लेन-देन के आउटपुट में राशि और उसे खर्च करने की शर्तें दर्ज होती हैं। नई शाखा उन्हीं पैसों को दूसरे लेन-देन में खर्च कर चुकी हो सकती है; जिस पुराने आउटपुट को खर्च करना है वह मौजूद न हो, या समय तथा स्वीकृति की दूसरी शर्तें पूरी न हों। इसलिए दोबारा इंतज़ार कर रहे भुगतान और नए इतिहास में स्वीकार न हो सकने वाले भुगतान में अंतर है। [1]

एक पुष्टि का मतलब भुगतान वाला ब्लॉक है। उसके बाद जुड़ने वाला हर ब्लॉक एक और पुष्टि जोड़ता है और वह काम भी बढ़ाता है जिसे प्रतिस्पर्धी शाखा को पार करना होगा। इसलिए सबसे नए ब्लॉक का भुगतान एक पुष्टि रखता है; स्वीकार किए गए इतिहास में जितना गहरा होता जाए, उस हिस्से को बदलना आम तौर पर उतना कठिन होता है। लेकिन पुष्टियों की कोई सीमित संख्या गणितीय गारंटी नहीं देती कि बदलाव असंभव है। व्यापारी और एक्सचेंज भुगतान की रकम तथा स्वीकार्य जोखिम के हिसाब से इंतज़ार तय करते हैं। [3] [5]

केवल Reorg होना हमले का प्रमाण नहीं है। दो माइनर लगभग एक ही समय पर एक ही पिछले ब्लॉक से जुड़ने वाले ब्लॉक खोज सकते हैं। खबर तुरंत पूरे नेटवर्क में नहीं पहुँचती, इसलिए नोड कुछ समय के लिए चेन के अलग-अलग अंतिम हिस्सों को मानते हैं। एक वैध शाखा में अधिक काम जमा होने पर वे उस पर जाते हैं; छोड़ दिया गया ब्लॉक Stale Block है। हालांकि Double Spend हमले में इसी तरीके का दुरुपयोग हो सकता है: हमलावर ऐसा इतिहास स्वीकार करवाना चाहता है जिसमें वही पैसे कहीं और दिए गए हों। इसलिए बदलाव की वजह और उससे प्रभावित भुगतानों को समझना ज़रूरी है। [4] [5]

Reorg के दौरान नोड वही नियम रखता है और उन्हें मानने वाले इतिहासों के बीच चुनता है। Hard Fork वैधता के नियम बदलता है, जिससे पुराना और नया सॉफ़्टवेयर एक ही ब्लॉक को अलग ढंग से परख सकते हैं। इसलिए पुनर्गठन अपने आप नई मुद्रा नहीं बनाता और Bitcoin के नियम नहीं बदलता। आगे के अध्याय बताते हैं कि नोड इतिहास का यह बदलाव तकनीकी रूप से कैसे करता है। [4]

Tip अभी स्वीकार की गई शाखा का अंतिम ब्लॉक है। शाखा बिंदु वर्तमान सक्रिय श्रृंखला और वैकल्पिक शाखा का अंतिम साझा ब्लॉक है। Reorg की गहराई आम तौर पर सक्रिय सिरे के उन ब्लॉकों की संख्या होती है जिन्हें इस साझा पूर्वज तक लौटने के लिए अलग करना पड़ता है। एक ब्लॉक वाला Reorg सिरे को बदलता है; अधिक गहरा Reorg कई पुष्टि प्राप्त ब्लॉकों को वापस हटाता है। गहराई किसी विशिष्ट नोड के दृष्टिकोण के सापेक्ष होती है। [1]

Full Node नियमों की जाँच खुद करता है। नीचे दिए फ़ंक्शन नाम Bitcoin Core में उनके कार्यान्वयन को बताते हैं। Bitcoin Core केवल सबसे अधिक ऊँचाई वाली या सबसे लोकप्रिय शाखा नहीं चुनता। सक्रियण के दौरान उम्मीदवार श्रृंखला को नोड के सहमति नियम पूरे करने होते हैं; अधिक chainwork किसी अमान्य ब्लॉक को वैध नहीं बनाता। FindMostWorkChain सबसे अधिक कार्य वाला ऐसा उम्मीदवार चुनता है जिसकी अमान्यता ज्ञात नहीं है। इसका अर्थ अभी पूरा सत्यापन नहीं है: ActivateBestChain में ब्लॉक जोड़ते समय अतिरिक्त जाँच होती है। ज्ञात अमान्य शाखाएँ बाहर कर दी जाती हैं। [1]

UTXO लेन-देन का अभी तक खर्च न हुआ आउटपुट है; UTXO सेट ऐसे उपलब्ध आउटपुट का संग्रह है। undo डेटा किसी ब्लॉक के प्रभाव वापस लेने के लिए ज़रूरी जानकारी रखता है। DisconnectTip और संबंधित सत्यापन प्रक्रिया अलग किए गए ब्लॉकों के प्रभावों को उल्टे क्रम में पूर्ववत करते हैं। खर्च किए गए UTXO बहाल होते हैं और हटाए गए ब्लॉक के बनाए आउटपुट अपनी पुष्टि खो देते हैं। इसलिए Bitcoin Core पूर्ववत करने का डेटा रखता है: उसे शाखा बिंदु पर UTXO समूह ठीक उसी स्थिति में फिर बनाना होता है। [1]

यहाँ rollback का मतलब अलग किए गए ब्लॉक से पहले की स्थिति पर लौटना है; chainstate स्वीकार किए गए इतिहास के अनुरूप नोड की कार्यशील स्थिति है। वापस लौटने के बाद ConnectTip अधिक chainwork वाली शाखा के ब्लॉक आगे के क्रम में जोड़ता है। हर लेनदेन का पुनर्निर्मित UTXO समूह और उस ऊँचाई पर लागू नियमों के अनुसार फिर सत्यापन होता है। परिणाम एक विशिष्ट इतिहास के अनुरूप chainstate होता है, दोनों शाखाओं के लेनदेन का मिश्रण नहीं। [1]

Coinbase Transaction ब्लॉक का पहला लेन-देन है, जो माइनर को पुरस्कार आवंटित करता है। ऊँचाई h चेन में ब्लॉक की जगह बताती है। Coinbase लेनदेन अपवाद है: ब्लॉक अलग करने के बाद वह mempool में वापस नहीं आता। सहमति नियमों के अनुसार ऊँचाई h पर बना coinbase आउटपुट सबसे पहले ब्लॉक h + 100 में खर्च किया जा सकता है। जब श्रृंखला का सिरा h + 99 पर होता है, तो स्रोत ब्लॉक की 100 पुष्टियाँ होती हैं और परिपक्वता की शर्त खर्च करने वाले लेनदेन को अगले ब्लॉक में शामिल करने देती है। यदि Reorg coinbase वाले ब्लॉक को हटाता है, तो उसका पुरस्कार सक्रिय chainstate से गायब हो जाता है। हटाए गए इतिहास पर निर्भर बाद के लेनदेन भी अमान्य हो सकते हैं। [1] [2] [3]

आगे किसी खास प्रोग्राम संस्करण के फ़ंक्शन नाम हैं, वॉलेट उपयोगकर्ता के लिए अतिरिक्त कदम नहीं। Bitcoin Core v29.0 में चरण स्पष्ट हैं: FindMostWorkChain सबसे अधिक chainwork वाला ऐसा उम्मीदवार खोजता है जिसकी अमान्यता ज्ञात नहीं है, ActivateBestChainStep वर्तमान सिरा अलग कर सकता है, ConnectTip वैकल्पिक ब्लॉकों का सत्यापन करके उन्हें जोड़ता है और MaybeUpdateMempoolForReorg अलग किए गए ब्लॉकों के लेनदेन फिर जाँचता है। सक्रियण उम्मीदवार की अमान्यता खोज सकता है और दूसरी शाखा की तलाश जारी रख सकता है। बड़े Reorg में अधिक ब्लॉक अलग करने और जोड़ने पड़ते हैं, इसलिए ActivateBestChain की प्रक्रिया लंबी हो सकती है। [1]

पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें पुष्टि, Proof of Work, Stale Block, दोहरा खर्च, Full Node, UTXO. इस प्रविष्टि का उल्लेख यहाँ भी है पुष्टि, दोहरा खर्च, कॉइनबेस लेनदेन, Soft Fork.

DOC · 001Bitcoin Core v29.0 — chain activation and mempool reconciliationप्राथमिक स्रोत DOC · 002Bitcoin Core v29.0 — coinbase maturity validationप्राथमिक स्रोत DOC · 003Bitcoin Core v29.0 — confirmation depthप्राथमिक स्रोत DOC · 004Bitcoin Developer Guide — Block Chainदस्तावेज़ DOC · 005Bitcoin whitepaper — Sections 5 and 11प्राथमिक स्रोत
समीक्षा की गई: स्रोत पहले · यह निवेश सलाह नहीं है