ब्लॉक प्रस्ताव
अंतिम संपादन: @corwintines(opens in a new tab), 17 जनवरी 2024
ब्लॉक, ब्लॉकचेन की मूलभूत इकाइयां हैं। ब्लॉक, सूचना की अलग-अलग इकाइयां हैं, जो नोड्स के बीच से गुजरती हैं, उन पर सहमति बनती है और प्रत्येक नोड के डेटाबेस में जुड़ जाती हैं। यह पेज बताता है कि उनका उत्पादन कैसे किया जाता है।
आवश्यक शर्तें
ब्लॉक प्रस्ताव, 'हिस्सेदारी का सबूत' प्रोटोकॉल का हिस्सा है। इस पेज को समझने में मदद करने के लिए, हम अनुशंसा करते हैं कि आप हिस्सेदारी का सबूत और ब्लॉक आर्किटेक्चर।
ब्लॉक का उत्पादन कौन करता है?
सत्यापनकर्ता खाते, ब्लॉक का प्रस्ताव करते हैं। सत्यापनकर्ता खातों को उन नोड ऑपरेटरों द्वारा प्रबंधित किया जाता है, जो अपने निष्पादन और सहमति ग्राहकों के हिस्से के रूप में सत्यापनकर्ता सॉफ़्टवेयर चलाते हैं और जमा अनुबंध में कम से कम 32 ETH जमा करते हैं। हालांकि, प्रत्येक सत्यापनकर्ता केवल कभी-कभी ब्लॉक का प्रस्ताव देने के लिए जिम्मेदार होता है। एथेरियम, समय को स्लॉट और युगों में मापता है। प्रत्येक स्लॉट बारह सेकंड का होता है, और 32 स्लॉट (6.4 मिनट) एक युग बनाते हैं। प्रत्येक स्लॉट, एथेरियम पर एक नया ब्लॉक जोड़ने का अवसर है।
यादृच्छिक चयन
प्रत्येक स्लॉट में एक ब्लॉक का प्रस्ताव करने के लिए, कोई एकल सत्यापनकर्ता छद्म-यादृच्छिक रूप से चुना जाता है। ब्लॉकचेन में सच्ची यादृच्छिकता जैसी कोई चीज नहीं होती, क्योंकि यदि प्रत्येक नोड वास्तव में यादृच्छिक संख्या उत्पन्न करता है, तो वे आम सहमति पर नहीं आ सकते। इसके बजाय, उद्देश्य, सत्यापनकर्ता चयन प्रक्रिया को अप्रत्याशित बनाना है। RANDAO नामक एल्गोरिथम का उपयोग करके एथेरियम पर यादृच्छिकता प्राप्त की जाती है, जो ब्लॉक प्रस्तावक से एक हैश को एक बीज के साथ मिलाता है, जो हर ब्लॉक को अपडेट करता है। इस मान का उपयोग, कुल सत्यापनकर्ता सेट से एक विशिष्ट सत्यापनकर्ता का चयन करने के लिए किया जाता है। कुछ प्रकार के बीज हेरफेर से बचाने के तरीके के रूप में, सत्यापनकर्ता चयन दो युग पहले तय किया जाता है।
हालांकि सत्यापनकर्ता प्रत्येक स्लॉट के RANDAO में जोड़े जाते हैं, लेकिन वैश्विक RANDAO मान प्रति युग केवल एक बार अपडेट किया जाता है। अगले ब्लॉक प्रस्तावक के सूचकांक की गणना करने के लिए, प्रत्येक स्लॉट में एक अनन्य मान देने के लिए RANDAO मान को स्लॉट संख्या के साथ मिलाया जाता है। किसी व्यक्तिगत सत्यापनकर्ता के चुने जाने की संभावना केवल 1/N
नहीं है (जहां N
= कुल सक्रिय सत्यापनकर्ता है)। इसके बजाय, यह प्रत्येक सत्यापनकर्ता के प्रभावी ETH संतुलन द्वारा भारित होता है। अधिकतम प्रभावी शेष राशि 32 ETH है (इसका मतलब है कि balance < 32 ETH
का भार balance == 32 ETH
से कम होता है, लेकिन balance > 32 ETH
का भार balance == 32 ETH
से अधिक नहीं होता)।
प्रत्येक स्लॉट में केवल एक ब्लॉक प्रस्तावक का चयन किया जाता है। सामान्य परिस्थितियों में, एक एकल ब्लॉक निर्माता अपने समर्पित स्लॉट में एक एकल ब्लॉक बनाता है और जारी करता है। एक ही स्लॉट के लिए दो ब्लॉक बनाना, एक स्लैश किए जाने योग्य अपराध है, जिसे अक्सर "भ्रमित करने" के रूप में जाना जाता है।
ब्लॉक कैसे बनाया जाता है?
ब्लॉक प्रस्तावक से एक हस्ताक्षरित बीकन ब्लॉक प्रसारित करने की उम्मीद की जाती है, जो अपने स्वयं के स्थानीय रूप से संचालित कांटा विकल्प एल्गोरिथम के दृष्टिकोण के अनुसार चेन के सबसे हाल के शीर्ष पर बनाता है। कांटा विकल्प एल्गोरिथम पिछले स्लॉट से बचे हुए किसी भी कतारबद्ध सत्यापन को लागू करता है, फिर अपने इतिहास में सत्यापन के सबसे बड़े संचित भार के साथ ब्लॉक पाता है। वह ब्लॉक, प्रस्तावक द्वारा बनाए गए नए ब्लॉक का पैरेंट होता है।
ब्लॉक प्रस्तावक अपने स्वयं के स्थानीय डेटाबेस और चेन के दृश्य से डेटा एकत्र करके एक ब्लॉक बनाता है। ब्लॉक की सामग्री नीचे स्निपेट में दिखाई गई है:
1class BeaconBlockBody(Container):2 randao_reveal: BLSSignature3 eth1_data: Eth1Data4 graffiti: Bytes325 proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS]6 attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS]7 attestations: List[Attestation, MAX_ATTESTATIONS]8 deposits: List[Deposit, MAX_DEPOSITS]9 voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS]10 sync_aggregate: SyncAggregate11 execution_payload: ExecutionPayloadसभी दिखाएँ
randao_reveal
फ़ील्ड एक सत्यापन योग्य यादृच्छिक मान लेता है, जिसे ब्लॉक प्रस्तावक वर्तमान युग संख्या पर हस्ताक्षर करके बनाता है। eth1_data
जमा अनुबंध के ब्लॉक प्रस्तावक के दृष्टिकोण के लिए एक वोट है, जिसमें जमा मर्कल ट्राई की जड़ और जमा की कुल संख्या शामिल है, जो नई जमा को सत्यापित करने में सक्षम बनाती है। graffiti
एक वैकल्पिक फ़ील्ड है, जिसका उपयोग ब्लॉक में संदेश जोड़ने के लिए किया जा सकता है। proposer_slashings
और attester_slashings
ऐसे क्षेत्र हैं, जिनमें इस बात का प्रमाण होता है कि चेन के प्रस्तावक के दृष्टिकोण के अनुसार, कुछ सत्यापनकर्ताओं ने स्लैश करने योग्य अपराध किए हैं। deposits
नए सत्यापनकर्ता जमाओं की एक सूची है, जिसके बारे में ब्लॉक प्रस्तावक को पता है, और voluntary_exits
उन सत्यापनकर्ताओं की एक सूची है, जो बाहर निकलना चाहते हैं, जिसे ब्लॉक प्रस्तावक ने सहमति परत गपशप नेटवर्क पर सुना है। sync_aggregate
एक वेक्टर है, जो दिखाता है कि कौन से सत्यापनकर्ताओं को पहले एक सिंक समिति (सत्यापनकर्ताओं का वह सबसेट, जो हल्का क्लाइंट डेटा सर्व करता है) को सौंपा गया था और डेटा पर हस्ताक्षर करने में भाग लिया था।
execution_payload
निष्पादन और सहमति ग्राहकों के बीच पारित किए जाने वाले लेनदेन के बारे में जानकारी को सक्षम बनाता है। execution_payload
निष्पादन डेटा का एक ब्लॉक है, जो एक बीकन ब्लॉक के अंदर नेस्टेड हो जाता है। execution_payload
के अंदर के क्षेत्र, एथेरियम येलो पेपर में उल्लिखित ब्लॉक संरचना को दर्शाते हैं, सिवाय इसके कि कोई ओमर नहीं हैं और difficulty
के स्थान पर prev_randao
मौज़ूद है। निष्पादन ग्राहक के पास लेनदेन के एक स्थानीय पूल तक पहुंच होती है, जिसके बारे में उसने अपने गपशप नेटवर्क पर सुना है। इन लेनदेन को स्थानीय रूप से निष्पादित किया जाता है, ताकि एक अद्यतन स्थिति ट्राई जनरेट किया जा सके, जिसे पोस्ट-स्टेट के रूप में जाना जाता है। लेनदेन, execution_payload
में एक सूची के रूप में शामिल किए जाते हैं, जिसे transactions
कहा जाता है और पोस्ट-स्टेट को state-root
फ़ील्ड में प्रदान किया जाता है।
इन सभी डेटा को एक बीकन ब्लॉक में एकत्र किया जाता है, हस्ताक्षरित किया जाता है, और ब्लॉक प्रस्तावक के साथियों को प्रसारित किया जाता है, जो इसे अपने साथियों आदि पर प्रचारित करते हैं।
ब्लॉक की एनाटॉमी के बारे में और पढ़ें।
ब्लॉक का क्या होता है?
ब्लॉक को ब्लॉक प्रस्तावक के स्थानीय डेटाबेस में जोड़ा जाता है और सहमति परत गपशप नेटवर्क पर साथियों को प्रसारित किया जाता है। जब कोई सत्यापनकर्ता ब्लॉक प्राप्त करता है, तो यह उसके अंदर डेटा की पुष्टि करता है, जिसमें यह जांचना शामिल है कि ब्लॉक में सही पैरेंट है, सही स्लॉट से मेल खाता है, कि प्रस्तावक सूचकांक अपेक्षित है, कि RANDAO प्रकट वैध है और प्रस्तावक को स्लैश नहीं किया गया है। execution_payload
अनबंडल किया हुआ होता है, और सत्यापनकर्ता का निष्पादन ग्राहक प्रस्तावित स्थिति परिवर्तन की जांच करने के लिए सूची में लेनदेन को फिर से निष्पादित करता है। यह मानते हुए कि ब्लॉक इन सभी जांचों को पास करता है, प्रत्येक सत्यापनकर्ता ब्लॉक को अपनी कैनोनिकल चेन में जोड़ता है। इसके बाद, प्रक्रिया अगले स्लॉट में फिर से शुरू होती है।
ब्लॉक पुरस्कार
ब्लॉक प्रस्तावक को उनके काम के लिए भुगतान प्राप्त होता है। एक base_reward
होता है, जिसकी गणना, सक्रिय सत्यापनकर्ताओं की संख्या और उनकी प्रभावी शेष राशि के एक फ़ंक्शन के रूप में की गई है। ब्लॉक प्रस्तावक को ब्लॉक में शामिल प्रत्येक वैध साक्षी के लिए base_reward
का एक अंश प्राप्त होता है; जितने अधिक सत्यापनकर्ता ब्लॉक को प्रमाणित करते हैं, ब्लॉक प्रस्तावक का इनाम उतना ही अधिक होता है। उन सत्यापनकर्ताओं की रिपोर्ट करने के लिए भी इनाम है, जिन्हें स्लैश किया जाना चाहिए, प्रत्येक स्लैश किए गए सत्यापनकर्ता के लिए 1/512 * effective balance
के बराबर।
पुरस्कारों और जुर्मानों के बारे में अधिक जानकारी