233 / 691ORPH

Orphan Block

अज्ञात मूल ब्लॉक वाला ब्लॉक; पार्श्व शाखा के ब्लॉक का अस्पष्ट नाम भी

Orphan Block का अर्थ मूल ब्लॉक का संदर्भ न मिलना या ढीले अर्थ में सक्रिय शृंखला के बाहर प्रतिस्पर्धी ब्लॉक हो सकता है। यह अंतर बताता है कि नोड ने वास्तव में क्या सत्यापित किया और उसके परिणाम से क्या निष्कर्ष निकलता है।

संकीर्ण अर्थ में Orphan Block वह ब्लॉक है जिसका मूल ब्लॉक पर्यवेक्षक नोड को ज्ञात नहीं है। व्यापक प्रयोग इसे निष्क्रिय शाखा के stale ब्लॉक से मिला देता है; इसलिए नाम अकेले वैधता या कारण नहीं बताता।

Bitcoin Developer Guide अज्ञात मूल वाले Orphan Block और प्रतिस्पर्धी शाखा के Stale Block में स्पष्ट अंतर करता है। दूसरे का मूल ज्ञात हो सकता है और ब्लॉक वैध भी हो सकता है। एक्सप्लोरर या पूल की रिपोर्ट पढ़ते समय पहले लेखक का आशय समझें; orphan शब्द अपने आप यह अंतर तय नहीं करता। [Bitcoin Developer Guide — Block height and forks]

Bitcoin Core 29 में AcceptBlockHeader सूचकांक में hashPrevBlock खोजता है। प्रविष्टि न होने पर prev-blk-not-found मिलता है; मूल को अवैध चिह्नित किया गया हो तो bad-prevblk मिलता है। ये अलग परिणाम हैं। मूल मिलने पर आगे संदर्भगत जाँच हो सकती है, लेकिन इससे पूरे ब्लॉक की स्वीकृति अपने आप सुनिश्चित नहीं होती। [Bitcoin Core 29 — Header acceptance]

Bitcoin Core 0.10.0 ने headers-first समन्वयन शुरू किया: पहले हेडर, फिर समानांतर ब्लॉक डाउनलोड। इसलिए डिस्क पर पूरा मूल ब्लॉक न होते हुए भी सूचकांक उसका हेडर जान सकता है। ब्लॉक का मुख्य भाग न मिलने को मूल हेडर अज्ञात होने से न मिलाएँ; देखें कि वास्तव में कौन-सा डेटा गायब है। [Bitcoin Core 0.10.0 — Headers-first synchronization]

getchaintips में Bitcoin Core 29 active, valid-fork, valid-headers, headers-only और invalid को अलग करता है। valid-fork पूरी तरह सत्यापित निष्क्रिय शाखा है; valid-headers में ब्लॉक उपलब्ध हैं पर पूर्ण सत्यापन नहीं हुआ, जबकि headers-only में कुछ ब्लॉक नहीं हैं। सहायता में orphaned branches वाक्यांश भी इन स्थितियों को एक श्रेणी बनाने का आधार नहीं है। [Bitcoin Core 29 — getchaintips]

उदाहरण: अलग ब्लॉक A और B दोनों की ऊँचाई 900000 हो सकती है। यह संख्या न विजेता तय करती है न अनूठी पहचान; hash और previousblockhash दर्ज करें। वैध शाखाओं में चयन संचित कार्य से होता है, जिसे RPC में chainwork कहते हैं, केवल ऊँचाई से नहीं। उदाहरण की संख्या किसी विशेष ऐतिहासिक विभाजन का दावा नहीं है। [Bitcoin Developer Guide — Block height and forks] [Bitcoin Core 29 — getblock]

Bitcoin Core 29 का getblock मुख्य शृंखला से बाहर के ब्लॉक के लिए confirmations = -1 देता है। यह न पुनर्गठन की ऋणात्मक गहराई है, न मूल गायब होने का प्रमाण। इसे हैश, शाखा की जानकारी और स्थानीय नोड की स्थिति के साथ पढ़ें; एक नोड का परिणाम दूसरे नोडों को मिली हर चीज़ की सूची नहीं है। [Bitcoin Core 29 — getblock]

Bitcoin Core 29 में COINBASE_MATURITY का मान 100 है। यह coinbase आउटपुट खर्च करने को ब्लॉक गहराई के आधार पर रोकता है, मिनटों की प्रतीक्षा के आधार पर नहीं। केवल समय बीतने या कहीं और अतिरिक्त ब्लॉक बनने से सक्रिय इतिहास के बाहर stale शाखा का पुरस्कार वापस नहीं आता; परिपक्वता शृंखला में शामिल होने का विकल्प नहीं है। [Bitcoin Core 29 — Coinbase maturity] [Bitcoin Developer Guide — Block height and forks]

अपने रिकॉर्ड में getchaintips और getblock को ब्लॉक हैश, मूल, शाखा स्थिति, नोड संस्करण और अवलोकन समय से जोड़ें। अवलोकन समय को हेडर के time फ़ील्ड से अलग दर्ज करें। एक परिणाम अपने आप हमला, वैश्विक orphan दर या कोई खास नेटवर्क विफलता सिद्ध नहीं करता; इसके लिए अतिरिक्त अवलोकन चाहिए। [Bitcoin Core 29 — getchaintips] [Bitcoin Core 29 — getblock]

पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Stale Block, Reorg, Block propagation, Proof of Work. इस प्रविष्टि का उल्लेख यहाँ भी है Stale Block.

DOC · 001Bitcoin Developer Guide — Block height and forksदस्तावेज़ ↗DOC · 002Bitcoin Core 29 — Header acceptanceप्राथमिक स्रोत ↗DOC · 003Bitcoin Core 0.10.0 — Headers-first synchronizationप्राथमिक स्रोत ↗DOC · 004Bitcoin Core 29 — getchaintipsदस्तावेज़ ↗DOC · 005Bitcoin Core 29 — getblockदस्तावेज़ ↗DOC · 006Bitcoin Core 29 — Coinbase maturityप्राथमिक स्रोत ↗
स्रोत पहले · यह निवेश सलाह नहीं है