120 / 736CMPCT

Compact Blocks

ब्लॉक को कम दोहराव के साथ भेजना

पड़ोसी नोड को नए ब्लॉक के अधिकतर लेनदेन अक्सर पहले से मालूम होते हैं। Compact Blocks सब कुछ फिर भेजने के बजाय उसे जोड़ने के संकेत भेजते हैं और कमी पूरी करते हैं। नतीजे की जाँच उतनी ही सख्त रहती है।

Compact Blocks, BIP 152 के अनुसार Bitcoin ब्लॉक भेजने का तरीका है, जिसमें डेटा कम दोहराया जाता है। इससे असली ब्लॉक छोटा नहीं होता और नियम ढीले नहीं होते: पाने वाले को पूरा डेटा वापस बनाकर स्वीकार करने से पहले जाँचना होता है।

आना पीटर को नया ब्लॉक भेजना चाहती हैं, लेकिन उसके कई लेनदेन पीटर के पास पहले से हैं। ब्लॉक लेनदेन का एक समूह है, जो साझा इतिहास में जोड़ा जाता है। सब भेजने पर जानकारी दोहराई जाएगी। Compact Blocks का तरीका इसके बजाय ब्लॉक हेडर और छोटे संकेतों की सूची भेजता है, जिनसे ज्ञात लेनदेन खोजे जा सकें। हेडर ब्लॉक का छोटा हिस्सा है, जिसमें बुनियादी जानकारी होती है: पिछले ब्लॉक का संदर्भ और लेनदेन की जाँच के लिए एक डिजिटल छाप भी। तकनीकी पाठकों के लिए: ये संकेत 48 बिट, यानी 6 बाइट के होते हैं और SipHash-2-4 फ़ंक्शन के परिणाम को छोटा करके बनते हैं। इसके पैरामीटर हेडर और इस प्रसारण के लिए जोड़ी गई संख्या nonce से निकलते हैं। इसलिए संकेत पूरे Bitcoin नेटवर्क में लेनदेन का स्थायी नाम नहीं है। [1] [2] [7]

सूची हर चीज़ की जगह नहीं ले सकती। आना चुने हुए लेनदेन पूरे भेजती हैं, साथ में बताती हैं कि ब्लॉक में उनकी जगह क्या है। सामान्य उदाहरण Coinbase Transaction है: ब्लॉक का पहला लेनदेन, जो माइनिंग का इनाम आवंटित करता है; उसी नाम के एक्सचेंज से इसका संबंध नहीं है। यह खास उस ब्लॉक के लिए बनता है, इसलिए आम तौर पर पीटर के इंतज़ार कर रहे लेनदेन में नहीं होगा। पूरे लेनदेन और छोटे संकेत ब्लॉक बनाने में एक-दूसरे के पूरक हैं। [1] [2]

पीटर का Mempool उन लेनदेन का स्थानीय संग्रह है जिन्हें उनका नोड जानता है, पर जो स्वीकृत चेन में अभी पुष्ट नहीं हुए हैं। उपलब्ध लेनदेन के लिए वे वही छोटे संकेत निकालते हैं और आना की सूची से मिलाते हैं। वे यह नहीं मानते कि हर किसी का संग्रह एक जैसा है। एक छोटा संकेत कभी-कभी कई लेनदेन से मिल सकता है, इसलिए मिल जाना ही सही डेटा का अंतिम प्रमाण नहीं है। [1] [2]

कुछ जगहें खाली या अस्पष्ट बचें तो पीटर उनकी स्थिति बताकर खास लेनदेन माँगते हैं। अनुरोध संदेश का नाम getblocktxn और लेनदेन वाले जवाब का नाम blocktxn है। नाम याद रखना ज़रूरी नहीं: असली बात यह है कि डेटा माँगा जाता है, अनुमान नहीं लगाया जाता। अनुरोध जाने और जवाब आने में अतिरिक्त समय लगता है। ब्लॉक दोबारा बनाना विफल हो तो उसे पूरा डाउनलोड किया जा सकता है। [1] [3]

पीटर को बिल्कुल सही लेनदेन सही क्रम में वापस पाने हैं और हेडर से उनका संबंध जाँचना है। Merkle Tree लेनदेन को जाँच के लिए एक डिजिटल छाप में समेटने वाली संरचना है, जो यह संबंध जाँचने में मदद करती है। मगर सही जोड़ लेना नियमों की जाँच का विकल्प नहीं है। Full Node ऐसा प्रोग्राम है जिससे पीटर खुद Bitcoin के नियम जाँचते हैं, जैसे रकम खर्च करने की अनुमति और इनाम की राशि। डिजिटल हस्ताक्षर निजी कुंजी, यानी एक गुप्त संख्यात्मक मान, से भुगतान की अनुमति का प्रमाण बनाता है, लेकिन उस कुंजी को उजागर नहीं करता। छोटा प्रसारण अमान्य ब्लॉक को छूट नहीं देता। [1] [8]

पड़ोसी नोड sendcmpct से मोड तय करते हैं। तेज़ विकल्प में दोबारा बनाने वाला डेटा लिए cmpctblock संदेश सीधे नए ब्लॉक की खबर देता है। निर्धारित शुरुआती जाँच के बाद भेजने वाला सभी लेनदेन जाँचना खत्म करने से पहले प्रसारण शुरू कर सकता है। उसे अन्य शर्तों के साथ सत्यापित चेन से जुड़ाव, गणनात्मक काम के प्रमाण Proof of Work और हेडर का लेनदेन से संबंध जाँचना होता है। पाने वाला फिर भी अपने इतिहास में स्वीकार करने से पहले पूरे ब्लॉक की जाँच करता है। [1] [4]

दूसरे विकल्प में पहले से सत्यापित ब्लॉक की सूचना inv या headers से दी जाती है। पीटर ज़रूरत होने पर संक्षिप्त डेटा माँगते हैं। इससे दूसरे रास्ते से मिल चुके ब्लॉक की अनावश्यक डिलीवरी बच सकती है, लेकिन संचार का एक कदम बढ़ जाता है। दोनों मोड सभी लेनदेन दोबारा भेजने की तुलना में डेटा बचा सकते हैं। अंतर भेजने के समय और पहले अनुरोध की ज़रूरत में है, ब्लॉक की वैधता के मानक में नहीं। [1] [7]

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

संक्षिप्त प्रोटोकॉल का संस्करण 2, SegWit का समर्थन करता है। SegWit हस्ताक्षर और दूसरे सत्यापन डेटा को witness हिस्से में अलग रखता है। यह संस्करण txid की जगह wtxid पहचानकर्ता इस्तेमाल करता है, जिसमें यह डेटा शामिल होता है; txid में वह शामिल नहीं होता। पूरे लेनदेन BIP 144 के अनुसार आवश्यक witness डेटा सहित भेजे जाते हैं। संदेश छोटा दिखाने के लिए डेटा फेंका नहीं जाता। प्रसारण प्रोटोकॉल का संस्करण भी खुद ब्लॉक के संस्करण नंबर से अलग है। [1] [6]

आना और पीटर को बहुत से समान लेनदेन मालूम हों, तो ब्लॉक बहुत कम दोहराए गए डेटा के साथ पहुँच सकता है। अचानक ब्लॉक आने पर घरेलू कनेक्शन को भी इससे मदद मिलती है। साझा लेनदेन कम हों तो अतिरिक्त माँग बढ़ती है और बचत घटती है। मुख्य लक्ष्य प्रसारण का डेटा बचाना है। तेज़ डिलीवरी संभावित लाभ है, शून्य इंतज़ार या एक निश्चित संदेश-आकार की गारंटी नहीं। इससे Bitcoin के ब्लॉक आकार की कोई नई सीमा नहीं बनती। [5] [7]

पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Block Propagation, Initial Block Download, Eclipse Attack, vByte, Bitcoin, कॉइनबेस लेनदेन. इस प्रविष्टि का उल्लेख यहाँ भी है Stale Block, Eclipse Attack, Selfish Mining, Block Propagation.

DOC · 001BIP 152 — Compact Block Relayविनिर्देश DOC · 002Bitcoin Core — BIP 152 implementationदस्तावेज़ DOC · 003Bitcoin Developer Reference — P2Pदस्तावेज़ DOC · 004Bitcoin Core v29.0 — net processingदस्तावेज़ DOC · 005Bitcoin Optech — Compact block relayदस्तावेज़ DOC · 006BIP 144 — SegWit peer servicesविनिर्देश DOC · 007Bitcoin Core — Compact Blocks FAQदस्तावेज़ DOC · 008Bitcoin Developer Guide — Block Chainदस्तावेज़
समीक्षा की गई: स्रोत पहले · यह निवेश सलाह नहीं है