ब्लॉक प्रस्ताव
ब्लॉक हे ब्लॉकचेनचे मूलभूत एकक आहेत. ब्लॉक हे माहितीचे स्वतंत्र एकक असतात जे नोड्स दरम्यान पाठवले जातात, ज्यावर एकमत होते आणि प्रत्येक नोडच्या डेटाबेसमध्ये जोडले जातात. हे पृष्ठ ते कसे तयार केले जातात हे स्पष्ट करते.
पूर्व शर्ती
ब्लॉक प्रस्ताव हा प्रूफ-ऑफ-स्टेक प्रोटोकॉलचा भाग आहे. हे पृष्ठ समजून घेण्यास मदत करण्यासाठी, आम्ही शिफारस करतो की आपण प्रूफ-ऑफ-स्टेक आणि ब्लॉक आर्किटेक्चर बद्दल वाचावे.
ब्लॉक कोण तयार करते?
प्रमाणक खाती ब्लॉक प्रस्तावित करतात. प्रमाणक खाती नोड ऑपरेटरद्वारे व्यवस्थापित केली जातात जे त्यांच्या अंमलबजावणी आणि सहमती क्लायंटचा भाग म्हणून प्रमाणक सॉफ्टवेअर चालवतात आणि त्यांनी ठेव करारामध्ये किमान 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 पेक्षा जास्त भार मिळत नाही).
प्रत्येक स्लॉटमध्ये फक्त एक ब्लॉक प्रस्तावक निवडला जातो. सामान्य परिस्थितीत, एकच ब्लॉक निर्माता त्यांच्या समर्पित स्लॉटमध्ये एकच ब्लॉक तयार करतो आणि प्रसारित करतो. एकाच स्लॉटसाठी दोन ब्लॉक तयार करणे हा स्लॅशिंग करण्यायोग्य गुन्हा आहे, ज्याला अनेकदा "दुटप्पीपणा" म्हणून ओळखले जाते.
ब्लॉक कसा तयार केला जातो?
ब्लॉक प्रस्तावकाने त्यांच्या स्वतःच्या स्थानिक पातळीवर चालणाऱ्या फोर्क निवड कलनविधीच्या दृष्टिकोनानुसार चेनच्या सर्वात अलीकडील हेडवर तयार केलेला स्वाक्षरी केलेला बीकन ब्लॉक प्रसारित करणे अपेक्षित आहे. फोर्क निवड कलनविधी मागील स्लॉटमधून उरलेले कोणतेही रांगेत असलेले साक्षांकन लागू करतो, त्यानंतर त्याच्या इतिहासामध्ये साक्षांकनांचे सर्वाधिक संचित वजन असलेला ब्लॉक शोधतो. तो ब्लॉक प्रस्तावकाने तयार केलेल्या नवीन ब्लॉकचा मूळ असतो.
ब्लॉक प्रस्तावक स्वतःच्या स्थानिक डेटाबेसमधून आणि चेनच्या दृष्टिकोनातून डेटा गोळा करून ब्लॉक तयार करतो. ब्लॉकची सामग्री खालील स्निपेटमध्ये दर्शविली आहे:
class BeaconBlockBody(Container):
randao_reveal: BLSSignature
eth1_data: Eth1Data
graffiti: Bytes32
proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS]
attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS]
attestations: List[Attestation, MAX_ATTESTATIONS]
deposits: List[Deposit, MAX_DEPOSITS]
voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS]
sync_aggregate: SyncAggregate
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 च्या बरोबरीचे असते.