Reorg स्थानीय chainstate में बदलाव है, Bitcoin के सहमति नियमों में बदलाव नहीं। Full Node अपने सत्यापन नियम लागू करता है और उन्हें पूरा करने वाली सबसे अधिक संचयी chainwork वाली शाखा सक्रिय करता है। यदि वह शाखा वर्तमान सिरे से पहले अलग होती है, तो नोड अलग किए गए ब्लॉकों के UTXO परिवर्तन पूर्ववत करता है, वैकल्पिक शाखा लागू करता है और प्रभावित लेनदेन का mempool के संदर्भ में फिर मूल्यांकन करता है।
Bitcoin Core केवल सबसे अधिक ऊँचाई वाली या सबसे लोकप्रिय शाखा नहीं चुनता। सक्रियण के दौरान उम्मीदवार श्रृंखला को नोड के सहमति नियम पूरे करने होते हैं; अधिक chainwork किसी अमान्य ब्लॉक को वैध नहीं बनाता। FindMostWorkChain सबसे अधिक कार्य वाला ऐसा उम्मीदवार चुनता है जिसकी अमान्यता ज्ञात नहीं है। इसका अर्थ अभी पूरा सत्यापन नहीं है: ActivateBestChain में ब्लॉक जोड़ते समय अतिरिक्त जाँच होती है। ज्ञात अमान्य शाखाएँ बाहर कर दी जाती हैं। [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
शाखा बिंदु वर्तमान सक्रिय श्रृंखला और वैकल्पिक शाखा का अंतिम साझा ब्लॉक है। Reorg की गहराई आम तौर पर सक्रिय सिरे के उन ब्लॉकों की संख्या होती है जिन्हें इस साझा पूर्वज तक लौटने के लिए अलग करना पड़ता है। एक ब्लॉक वाला Reorg सिरे को बदलता है; अधिक गहरा Reorg कई पुष्टि प्राप्त ब्लॉकों को वापस हटाता है। गहराई किसी विशिष्ट नोड के दृष्टिकोण के सापेक्ष होती है। [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
DisconnectTip और संबंधित सत्यापन प्रक्रिया अलग किए गए ब्लॉकों के प्रभावों को उल्टे क्रम में पूर्ववत करते हैं। खर्च किए गए UTXO बहाल होते हैं और हटाए गए ब्लॉक के बनाए आउटपुट अपनी पुष्टि खो देते हैं। इसलिए Bitcoin Core पूर्ववत करने का डेटा रखता है: उसे शाखा बिंदु पर UTXO समूह ठीक उसी स्थिति में फिर बनाना होता है। [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
वापस लौटने के बाद ConnectTip अधिक chainwork वाली शाखा के ब्लॉक आगे के क्रम में जोड़ता है। हर लेनदेन का पुनर्निर्मित UTXO समूह और उस ऊँचाई पर लागू नियमों के अनुसार फिर सत्यापन होता है। परिणाम एक विशिष्ट इतिहास के अनुरूप chainstate होता है, दोनों शाखाओं के लेनदेन का मिश्रण नहीं। [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
अलग किए गए ब्लॉकों के लेनदेन का गायब होना आवश्यक नहीं है। Bitcoin Core पात्र गैर-coinbase लेनदेन को mempool में लौटाने की कोशिश करता है। कुछ पहले से नई शाखा में हो सकते हैं, दूसरे लेनदेन से टकरा सकते हैं, इनपुट खो सकते हैं या समय संबंधी शर्तें अथवा mempool नीति पूरी करना बंद कर सकते हैं। इसलिए वॉलेट को ध्यान रखना चाहिए कि Reorg किसी पुष्टि को रद्द कर सकता है। [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
Coinbase लेनदेन अपवाद है: ब्लॉक अलग करने के बाद वह mempool में वापस नहीं आता। सहमति नियमों के अनुसार ऊँचाई h पर बना coinbase आउटपुट सबसे पहले ब्लॉक h + 100 में खर्च किया जा सकता है। जब श्रृंखला का सिरा h + 99 पर होता है, तो स्रोत ब्लॉक की 100 पुष्टियाँ होती हैं और परिपक्वता की शर्त खर्च करने वाले लेनदेन को अगले ब्लॉक में शामिल करने देती है। यदि Reorg coinbase वाले ब्लॉक को हटाता है, तो उसका पुरस्कार सक्रिय chainstate से गायब हो जाता है। हटाए गए इतिहास पर निर्भर बाद के लेनदेन भी अमान्य हो सकते हैं। [Bitcoin Core v29.0 — chain activation and mempool reconciliation] [Bitcoin Core v29.0 — coinbase maturity validation] [Bitcoin Core v29.0 — confirmation depth]
पुष्टियों की संख्या में लेनदेन वाला ब्लॉक और विशिष्ट नोड की वर्तमान सक्रिय श्रृंखला में उसके बाद के सभी ब्लॉक शामिल होते हैं। वर्तमान सिरे के ब्लॉक में मौजूद लेनदेन की एक पुष्टि होती है। हर अतिरिक्त ब्लॉक आम तौर पर इतिहास बदलने के लिए आवश्यक कार्य बढ़ाता है, लेकिन पुष्टियों की कोई भी सीमित संख्या गणितीय रूप से पूर्ण अंतिमता नहीं देती। इसलिए एक्सचेंज और व्यापारी भुगतान के मूल्य तथा जोखिम मॉडल के अनुसार सीमा चुनते हैं। [Bitcoin Core v29.0 — confirmation depth] [Bitcoin whitepaper — Sections 5 and 11]
छोटा Reorg स्वाभाविक रूप से हो सकता है जब दो खनिक लगभग एक साथ प्रतिस्पर्धी ब्लॉक पाते हैं और नेटवर्क के अलग हिस्से कुछ समय तक अलग सिरों का अनुसरण करते हैं। फिर कम chainwork वाली शाखा सक्रिय श्रृंखला से बाहर हो जाती है। Double Spend हमला जानबूझकर इसी तंत्र का उपयोग करता है। श्रृंखला चुनने की तकनीकी प्रक्रिया समान रहती है; कारण और आर्थिक उद्देश्य अलग होते हैं। [Bitcoin Developer Guide — Block Chain] [Bitcoin whitepaper — Sections 5 and 11]
Reorg एक ही नियम समूह के भीतर होता है: नोड उन शाखाओं में से चुनता है जिन्हें वह वैध मानता है। Hard Fork वैधता के नियम बदलता है, जिससे पुराने और नए सॉफ़्टवेयर इस बात पर ही असहमत हो सकते हैं कि कोई ब्लॉक वैध है या नहीं। इसलिए पुनर्गठन अपने आप में सहमति का बदलाव नहीं है। [Bitcoin Developer Guide — Block Chain]
Bitcoin Core v29.0 में चरण स्पष्ट हैं: FindMostWorkChain सबसे अधिक chainwork वाला ऐसा उम्मीदवार खोजता है जिसकी अमान्यता ज्ञात नहीं है, ActivateBestChainStep वर्तमान सिरा अलग कर सकता है, ConnectTip वैकल्पिक ब्लॉकों का सत्यापन करके उन्हें जोड़ता है और MaybeUpdateMempoolForReorg अलग किए गए ब्लॉकों के लेनदेन फिर जाँचता है। सक्रियण उम्मीदवार की अमान्यता खोज सकता है और दूसरी शाखा की तलाश जारी रख सकता है। बड़े Reorg में अधिक ब्लॉक अलग करने और जोड़ने पड़ते हैं, इसलिए ActivateBestChain की प्रक्रिया लंबी हो सकती है। [Bitcoin Core v29.0 — chain activation and mempool reconciliation]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें पुष्टिकरण, Proof of Work, Stale Block, दोहरा खर्च, Full Node, UTXO. इस प्रविष्टि का उल्लेख यहाँ भी है पुष्टिकरण, दोहरा खर्च, कॉइनबेस लेनदेन, Soft Fork.