23 / 736HDR

Block Header

ब्लॉक हेडर

ब्लॉक का छोटा हिस्सा, जो उसकी सामग्री को पिछले इतिहास से जोड़ता है और माइनिंग के काम की जाँच में मदद करता है।

Block Header बिटकॉइन ब्लॉक की शुरुआत में मौजूद एक छोटा रिकॉर्ड है। इसमें पिछले ब्लॉक की छाप, लेनदेन की संयुक्त छाप और Proof of Work की जाँच के लिए जरूरी जानकारी होती है। भुगतान का वास्तविक विवरण ब्लॉक के दूसरे हिस्से में रखा जाता है।

ब्लॉक को लेनदेन से भरा पैकेट और हेडर को उसके साथ लगा परिचय रिकॉर्ड समझें। इसमें प्राप्तकर्ताओं या रकम की सूची नहीं होती। इसकी जगह क्रिप्टोग्राफिक छापें होती हैं: डेटा से गणना करके निकाले गए छोटे मान, जिनसे उसमें बदलाव पहचाना जा सकता है। एक छाप पिछले ब्लॉक की ओर इशारा करती है। दूसरी, जिसे Merkle root कहते हैं, इस ब्लॉक के लेनदेन के पहचानकर्ताओं को समेटती है। इस तरह हेडर खास सामग्री को इतिहास की खास जगह से जोड़ता है। लेकिन यह लेनदेन की छोटी प्रति नहीं है; छाप से उनकी मूल सामग्री वापस नहीं पढ़ी जा सकती। [1] [4]

माइनर एक प्रस्तावित ब्लॉक बनाता है और उपयुक्त हैश खोजता है। हैश एक छाप है, जिसे यहाँ संख्या की तरह देखा जाता है। यह संख्या तय लक्ष्य से छोटी या उसके बराबर होनी चाहिए। इस खोज को Proof of Work कहते हैं: माइनर डेटा बदलकर बार-बार गणना करता है, क्योंकि उपयुक्त परिणाम का सीधे अनुमान नहीं लगाया जा सकता। सबसे जाना-पहचाना बदलने वाला मान nonce है, जो हेडर में एक सहायक संख्या है। और संभावनाएँ पाने के लिए माइनर ब्लॉक की शुरुआत में बनाई जाने वाली विशेष Coinbase Transaction का डेटा भी बदल सकता है। इससे Merkle root बदलता है और नया हेडर मिलता है। दूसरे नोड वही गणना दोहराकर परिणाम को जल्दी जाँच सकते हैं। [1] [3] [4]

हेडर की श्रृंखला से सभी लेनदेन डाउनलोड किए बिना ब्लॉकों का आपसी जुड़ाव और उनसे संबंधित काम जाँचा जा सकता है। लेकिन ऐसे ब्लॉक की कल्पना करें जिसका Proof of Work सही है, जबकि उसमें कोई जरूरी हस्ताक्षर के बिना दूसरे के पैसे खर्च करने की कोशिश कर रहा है। सिर्फ हेडर जाँचने से यह समस्या सामने नहीं आएगी। इसलिए Full Node लेनदेन, उनके हस्ताक्षर, उपलब्ध बिना खर्च किए गए आउटपुट और अनुमत इनाम भी जाँचता है। सही हेडर पूरे ब्लॉक के सही होने की गारंटी नहीं है। [2]

nBits फ़ील्ड वह लक्ष्य बताता है जिसे हैश को पूरा करना है। यह लक्ष्य का संक्षिप्त कूटबद्ध रूप है, ब्लॉक एक्सप्लोरर पर दिखने वाली “difficulty” संख्या नहीं। नोड यह भी जाँचता है कि लक्ष्य श्रृंखला में उस स्थान के नियमों के अनुसार है या नहीं। माइनर समय भी मनमाना नहीं चुन सकता। वह पिछले 11 ब्लॉकों के समय की माध्यिका से बाद का होना चाहिए। माध्यिका का अर्थ है समयों को क्रम में रखने पर बीच वाला मान। साथ ही वह समय मौजूदा समय से बहुत आगे का नहीं हो सकता। फिर भी यह हर भुगतान का सटीक समय या माइनिंग में लगे समय की घड़ी नहीं है। [2] [3]

फ़ील्ड का क्रम और आकार निश्चित है: version के 4 बाइट, पिछले हेडर के हैश के 32, Merkle root के 32, time के 4, nBits के 4 और nonce के 4 बाइट। लेनदेन की संख्या चाहे जो हो, कुल 80 बाइट होते हैं। ठीक इसी प्रारूप में लिखे हेडर पर SHA-256 दो बार लगाने से ब्लॉक का पहचानकर्ता मिलता है। संख्यात्मक फ़ील्ड little-endian क्रम अपनाते हैं, जिसमें सबसे कम महत्वपूर्ण बाइट पहले आता है। हैश का आंतरिक बाइट क्रम पहचानकर्ता के सामान्य प्रदर्शन से अलग होता है। इसलिए खुद गणना करते समय एक्सप्लोरर पर दिखे मानों को वैसे ही जोड़ देना पर्याप्त नहीं है। [1] [4]

पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Block, Proof of Work, Merkle Tree, Nonce. इस प्रविष्टि का उल्लेख यहाँ भी है Block, Hash, SHA-256, Merkle Tree.

DOC · 001Bitcoin Core v29.0: header serializationप्राथमिक स्रोत DOC · 002Bitcoin Core v29.0: header validationप्राथमिक स्रोत DOC · 003Bitcoin Core v29.0: proof of workप्राथमिक स्रोत DOC · 004Bitcoin Developer Reference: Block Headersप्राथमिक स्रोत
समीक्षा की गई: स्रोत पहले · यह निवेश सलाह नहीं है