46 / 736STALE

Stale Block

मुख्य श्रृंखला से बाहर रह गया वैध ब्लॉक

Stale Block एक वैध Bitcoin ब्लॉक है जो अलग शाखा पर रह जाता है। इसके लिए धोखाधड़ी होना ज़रूरी नहीं: दो माइनर लगभग एक साथ ब्लॉक खोज सकते हैं और बाद में नेटवर्क केवल एक शाखा पर आगे बढ़ता है।

Stale Block Bitcoin के नियमों का पालन करता है, लेकिन सक्रिय श्रृंखला का हिस्सा नहीं होता। सक्रिय श्रृंखला वह इतिहास है जिससे कोई नोड, यानी ब्लॉक और लेनदेन की जाँच करने वाला कंप्यूटर, पुष्टियाँ गिनता है और तय करता है कि कौन-सी रकम खर्च की जा सकती है। वैध शाखाओं में जमा माइनिंग कार्य से चुनाव होता है। भुगतान पाने वाले के लिए इसका मतलब एक पुष्टि का हटना और फिर इंतज़ार करना हो सकता है, बिटकॉइन का अपने आप खो जाना नहीं।

मान लें कि आना और पावेल दो माइनर हैं। दोनों एक ही आखिरी ब्लॉक के बाद नया ब्लॉक जोड़ने पर काम कर रहे हैं। आना नया ब्लॉक खोज लेती है, लेकिन खबर पावेल तक पहुँचने से पहले वह भी अपना ब्लॉक खोज लेता है। दोनों वैध हो सकते हैं; उनमें शामिल लेनदेन बस कुछ अलग हो सकते हैं। नोड ब्लॉक और लेनदेन की जाँच करते हैं। उन्हें इन ब्लॉकों की खबर अलग-अलग क्रम में मिलती है, इसलिए वे थोड़ी देर अलग सिरों का अनुसरण करते हैं। जब किसी वैध शाखा में अधिक कार्य जमा हो जाता है और नोड उसे जाँच लेते हैं, वे उसी पर चले जाते हैं। छोड़ी गई शाखा का ब्लॉक Stale Block कहलाता है। [1]

Bitcoin को एक इतिहास चाहिए, ताकि एक ही रकम दो बार सफलतापूर्वक खर्च न हो सके। इसलिए केवल यह जाँचना पर्याप्त नहीं कि दोनों ब्लॉक अपने-अपने स्तर पर नियम मानते हैं। नोड को यह भी चुनना होता है कि वह किस वैध शाखा पर आगे बढ़ेगा। ब्लॉक की वैधता और श्रृंखला का चुनाव अलग प्रश्न हैं। Stale Block में माइनिंग कार्य का सही प्रमाण (Proof of Work), वैध लेनदेन और सही हस्ताक्षर हो सकते हैं, फिर भी वह चुने हुए इतिहास से बाहर रह सकता है। इससे वह खराब या धोखाधड़ी वाला ब्लॉक नहीं हो जाता। [1] [2]

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

सामान्य भुगतान को Coinbase Transaction से अलग समझना ज़रूरी है। यह ब्लॉक का पहला लेनदेन है, जो माइनर का इनाम दर्ज करता है। इसमें नए जारी बिटकॉइन और लेनदेन शुल्क शामिल होते हैं। अगर पावेल का ब्लॉक सक्रिय श्रृंखला से बाहर रहता है, तो उसका coinbase इनाम उस इतिहास में खर्च नहीं किया जा सकता। वह सामान्य भुगतान की तरह Mempool में नहीं चला जाता। उधर, पावेल की खर्च हुई बिजली वापस नहीं आती। इसलिए माइनर केवल ब्लॉक खोजने पर नहीं, दूसरों तक उसकी खबर जल्दी पहुँचाने पर भी ध्यान देते हैं। [1] [2]

कुछ लेख और ब्लॉक एक्सप्लोरर Stale Block को Orphan Block भी कहते हैं। अक्सर दोनों नाम एक जैसे अर्थ में इस्तेमाल होते हैं, लेकिन अधिक सटीक अर्थ अलग है। Orphan Block वह ब्लॉक है जिसके पिछले ब्लॉक को नोड अभी नहीं जानता, इसलिए उसे श्रृंखला से जोड़ नहीं सकता। Stale Block का पिछला ब्लॉक ज्ञात हो सकता है और वह खुद वैध हो सकता है; वह बस चुनी शाखा से बाहर है। जब किसी लेनदेन के इनपुट जाँचने के लिए ज़रूरी पहले के लेनदेन नोड के पास नहीं होते, तो उस लेनदेन के लिए भी orphan शब्द इस्तेमाल होता है। इसलिए देखें कि स्रोत किस अर्थ में यह नाम दे रहा है। [1]

अगर नोड पहले पावेल का ब्लॉक इस्तेमाल कर रहा था और फिर उसे आना की शाखा से बदलता है, तो वह Reorg करता है: सक्रिय माने जाने वाले इतिहास का एक हिस्सा बदलता है। इसलिए वॉलेट में पुष्टि की संख्या बदल सकती है। हमारे उदाहरण जैसी छोटी प्रतिस्पर्धा ईमानदार माइनिंग में भी होती है। फिर भी कोई हमलावर इतिहास बदलने का लाभ उठाकर Double Spend करने की कोशिश कर सकता है, यानी उसी रकम का दूसरा भुगतान स्वीकार कराना। केवल Stale Block से ऐसी मंशा सिद्ध नहीं होती। घटना का क्रम और टकराने वाले लेनदेन अलग से जाँचना ज़रूरी है। [1] [2]

नए ब्लॉक की खबर पूरी दुनिया तक तुरंत नहीं पहुँचती। जितनी देर लगती है, उतनी देर दूसरे माइनर अनजाने में उसी पुराने ब्लॉक पर काम करते रह सकते हैं। डेटा भेजने की गति, नोडों के आपसी कनेक्शन और ब्लॉक अंतराल के मुकाबले खबर फैलने में लगने वाला समय महत्वपूर्ण हैं। Stale Rate खोजे गए वैध ब्लॉकों में उन ब्लॉकों का अनुपात है जो सक्रिय श्रृंखला में नहीं रहते। यह Bitcoin के नियमों का तय प्रतिशत नहीं है। आँकड़ों की तुलना में देखी गई अवधि और पर्यवेक्षक को वास्तव में दिखे ब्लॉक भी मायने रखते हैं। [1] [3]

BIP152 में Compact Block Relay का वर्णन है। नोड अक्सर नए ब्लॉक के अधिकतर लेनदेन अपने Mempool से पहले ही जानता है, इसलिए उनकी पूरी सामग्री दोबारा भेजना ज़रूरी नहीं होता। छोटे पहचानकर्ताओं से वह अपने पास मौजूद डेटा को जोड़कर ब्लॉक बना सकता है और गायब लेनदेन माँग सकता है। इससे भेजा जाने वाला डेटा घटता है और सही परिस्थितियों में नए ब्लॉक की खबर जल्दी मिलती है। यह प्रसारण में सुधार है, वैधता के नियमों में बदलाव नहीं। इससे दो ब्लॉक लगभग एक साथ मिलने की संभावना पूरी तरह खत्म नहीं होती। [3]

किसी शाखा के जमा कार्य का तकनीकी नाम chainwork है। यह वास्तव में खर्च हुई बिजली का माप या कंप्यूटरों की संख्या से होने वाला मतदान नहीं है। हर ब्लॉक अपने Proof of Work, यानी माइनिंग कार्य के प्रमाण, की कठिनाई से निकला मान जोड़ता है। इसलिए ‘लंबी श्रृंखला जीतती है’ से अधिक सटीक है ‘अधिक chainwork वाली वैध शाखा चुनी जाती है’। नोड को नियमों का पालन जाँचना पड़ता है: बहुत अधिक कार्य भी अमान्य लेनदेन को वैध नहीं बना देता। stale नाम किसी ब्लॉक का उस इतिहास से संबंध भी बताता है जिसे एक खास नोड ने उस समय चुना है। [1] [2]

ब्लॉक एक्सप्लोरर उपयोगी जानकारी देता है, लेकिन वह अपनी सेवा का नज़रिया दिखाता है। अपना Full Node, यानी नियमों की जाँच करने वाला नोड, आपको स्वतंत्र रूप से स्वीकार किया गया इतिहास देखने देता है। अगर नोड के पास उस ब्लॉक का डेटा है, तो Bitcoin Core में getblock सक्रिय श्रृंखला से बाहर के ब्लॉक के लिए confirmations: -1 देता है। अगर डेटा नहीं है, जैसे जगह बचाने के लिए pruning में उसे हटा दिया गया हो, तो कमांड त्रुटि देता है। केवल यह मान साबित नहीं करता कि ब्लॉक ने वैधता की हर जाँच पूरी की है। उसकी स्थिति समझने के लिए hash, यानी पहचानकर्ता, पिछला ब्लॉक, ऊँचाई (उससे पहले के ब्लॉकों की संख्या) और chainwork भी देखें; हर भुगतान की स्थिति अलग से जाँचें। दो ब्लॉकों की ऊँचाई एक हो सकती है, लेकिन उनके hash अलग हो सकते हैं। [4] [5]

पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Reorg, पुष्टि, Block, Block Header, Proof of Work, माइनिंग. इस प्रविष्टि का उल्लेख यहाँ भी है Reorg, Mining Pool, Hashrate, Selfish Mining.

DOC · 001Bitcoin Developer Guide — Block Chainदस्तावेज़ DOC · 002Bitcoin Core v29.0 — chain activation and mempool reconciliationप्राथमिक स्रोत DOC · 003BIP 152 — Compact Block Relayविनिर्देश DOC · 004Bitcoin Core v29.0 — getblockदस्तावेज़ DOC · 005Bitcoin Core v29.0 — block RPC implementationप्राथमिक स्रोत
समीक्षा की गई: स्रोत पहले · यह निवेश सलाह नहीं है