ब्लॉक प्रस्ताव
पृष्ठ अखेरचे अद्यतन: २३ फेब्रुवारी, २०२६
ब्लॉक हे ब्लॉकचेनचे मूलभूत एकक आहेत. ब्लॉक हे माहितीचे स्वतंत्र एकक आहेत जे नोड्स दरम्यान दिले जातात, त्यावर सहमती दर्शवली जाते आणि प्रत्येक नोडच्या डेटाबेसमध्ये जोडले जातात. हे पृष्ठ ते कसे तयार केले जातात हे स्पष्ट करते.
पूर्वतयारी
ब्लॉक प्रस्ताव हा प्रूफ-ऑफ-स्टेक प्रोटोकॉलचा भाग आहे. हे पृष्ठ समजण्यास मदत होण्यासाठी, आम्ही शिफारस करतो की तुम्ही प्रूफ-ऑफ-स्टेक आणि ब्लॉक आर्किटेक्चर बद्दल वाचा.
ब्लॉक कोण तयार करते?
व्हॅलिडेटर खाती ब्लॉक प्रस्तावित करतात. व्हॅलिडेटर खाती नोड ऑपरेटरद्वारे व्यवस्थापित केली जातात जे त्यांच्या एक्झिक्यूशन आणि कन्सेन्सस क्लायंटचा भाग म्हणून व्हॅलिडेटर सॉफ्टवेअर चालवतात आणि डिपॉझिट कॉन्ट्रॅक्टमध्ये किमान 32 ETH जमा केले आहेत. तथापि, प्रत्येक व्हॅलिडेटर केवळ अधूनमधून ब्लॉक प्रस्तावित करण्यासाठी जबाबदार असतो. Ethereum वेळेचे मोजमाप स्लॉट्स आणि इपॉक्समध्ये करते. प्रत्येक स्लॉट बारा सेकंदांचा असतो, आणि 32 स्लॉट्स (6.4 मिनिटे) मिळून एक इपॉक बनतो. प्रत्येक स्लॉट ही Ethereum वर नवीन ब्लॉक जोडण्याची एक संधी आहे.
यादृच्छिक निवड
प्रत्येक स्लॉटमध्ये ब्लॉक प्रस्तावित करण्यासाठी एका व्हॅलिडेटरची स्यूडो-रँडम पद्धतीने निवड केली जाते. ब्लॉकचेनमध्ये खऱ्या अर्थाने यादृच्छिकता अशी कोणतीही गोष्ट नाही कारण जर प्रत्येक नोडने खरोखर यादृच्छिक संख्या तयार केल्या, तर ते कन्सेन्ससवर येऊ शकणार नाहीत. त्याऐवजी, व्हॅलिडेटर निवड प्रक्रिया अनपेक्षित बनवणे हा उद्देश आहे. Ethereum वर RANDAO नावाच्या अल्गोरिदमचा वापर करून यादृच्छिकता प्राप्त केली जाते, जो ब्लॉक प्रस्तावकाकडून एक हॅश एका सीडसोबत मिसळतो जो प्रत्येक ब्लॉकवर अपडेट होतो. हे मूल्य एकूण व्हॅलिडेटर सेटमधून विशिष्ट व्हॅलिडेटर निवडण्यासाठी वापरले जाते. विशिष्ट प्रकारच्या सीड मॅनिप्युलेशनपासून संरक्षण करण्याचा एक मार्ग म्हणून व्हॅलिडेटर निवड दोन इपॉक्स आधीच निश्चित केली जाते.
जरी व्हॅलिडेटर्स प्रत्येक स्लॉटमध्ये RANDAO मध्ये भर घालत असले तरी, जागतिक RANDAO मूल्य प्रत्येक इपॉकला फक्त एकदाच अपडेट केले जाते. पुढील ब्लॉक प्रस्तावकाचा निर्देशांक मोजण्यासाठी, प्रत्येक स्लॉटमध्ये एक अद्वितीय मूल्य देण्यासाठी RANDAO मूल्य स्लॉट क्रमांकासोबत मिसळले जाते. एका वैयक्तिक व्हॅलिडेटरच्या निवडीची संभाव्यता फक्त 1/N नसते (जिथे N = एकूण सक्रिय व्हॅलिडेटर). त्याऐवजी, ते प्रत्येक व्हॅलिडेटरच्या प्रभावी ETH बॅलन्सनुसार भारित केले जाते. जास्तीत जास्त प्रभावी बॅलन्स 32 ETH आहे (याचा अर्थ बॅलन्स < 32 ETH मुळे बॅलन्स == 32 ETH पेक्षा कमी वजन मिळते, परंतु बॅलन्स > 32 ETH मुळे बॅलन्स == 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 मधील फील्ड्स Ethereum यलो पेपरमध्ये वर्णन केलेल्या ब्लॉक रचनेला प्रतिबिंबित करतात, फक्त त्यात कोणतेही ओमर्स नाहीत आणि difficulty च्या जागी prev_randao अस्तित्वात आहे. एक्झिक्यूशन क्लायंटला व्यवहारांच्या स्थानिक पूलमध्ये प्रवेश असतो, ज्याबद्दल त्याने स्वतःच्या गॉसिप नेटवर्कवर ऐकले आहे. हे व्यवहार पोस्ट-स्टेट म्हणून ओळखले जाणारे अपडेटेड स्टेट ट्राई तयार करण्यासाठी स्थानिकरित्या कार्यान्वित केले जातात. हे व्यवहार transactions नावाच्या यादीच्या स्वरूपात execution_payload मध्ये समाविष्ट केले जातात आणि पोस्ट-स्टेट state-root फील्डमध्ये प्रदान केले जाते.
हा सर्व डेटा एका बीकन ब्लॉकमध्ये गोळा केला जातो, त्यावर स्वाक्षरी केली जाते, आणि ब्लॉक प्रस्तावकाच्या पिअर्सना प्रसारित केला जातो, जे तो त्यांच्या पिअर्सना पुढे पाठवतात, इत्यादी.
ब्लॉक्सची रचना याबद्दल अधिक वाचा.
ब्लॉकचे काय होते?
ब्लॉक प्रस्तावकाच्या स्थानिक डेटाबेसमध्ये ब्लॉक जोडला जातो आणि कन्सेन्सस लेयर गॉसिप नेटवर्कद्वारे पिअर्सना प्रसारित केला जातो. जेव्हा एका व्हॅलिडेटरला ब्लॉक मिळतो, तेव्हा तो त्यातील डेटा सत्यापित करतो, ज्यामध्ये ब्लॉकला योग्य पॅरेंट आहे की नाही, तो योग्य स्लॉटशी संबंधित आहे की नाही, प्रस्तावकाचा निर्देशांक अपेक्षित आहे की नाही, RANDAO रिव्हील वैध आहे की नाही आणि प्रस्तावकाला स्लॅश केलेले नाही हे तपासणे समाविष्ट आहे. execution_payload अनबंडल केले जाते, आणि प्रस्तावित स्टेट बदल तपासण्यासाठी व्हॅलिडेटरचा एक्झिक्यूशन क्लायंट यादीतील व्यवहार पुन्हा कार्यान्वित करतो. ब्लॉक या सर्व तपासण्या पास करतो असे गृहीत धरून, प्रत्येक व्हॅलिडेटर तो ब्लॉक त्याच्या स्वतःच्या कॅनोनिकल चेनमध्ये जोडतो. पुढील स्लॉटमध्ये ही प्रक्रिया पुन्हा सुरू होते.
ब्लॉक रिवॉर्ड्स
ब्लॉक प्रस्तावकाला त्यांच्या कामासाठी पेमेंट मिळते. एक base_reward आहे जो सक्रिय व्हॅलिडेटर्सची संख्या आणि त्यांच्या प्रभावी बॅलन्सचे कार्य म्हणून मोजला जातो. ब्लॉक प्रस्तावकाला नंतर ब्लॉकमध्ये समाविष्ट असलेल्या प्रत्येक वैध ॲटेस्टेशनसाठी base_reward चा एक अंश मिळतो; जितके जास्त व्हॅलिडेटर ब्लॉकला ॲटेस्ट करतात, तितके ब्लॉक प्रस्तावकाचे रिवॉर्ड जास्त असते. ज्या व्हॅलिडेटर्सना स्लॅश केले पाहिजे त्यांची तक्रार करण्यासाठी देखील एक रिवॉर्ड आहे, जे प्रत्येक स्लॅश केलेल्या व्हॅलिडेटरसाठी 1/512 * प्रभावी बॅलन्स च्या बरोबरीचे आहे.