मुख्य सामग्री पर जाएं
Change page

ब्लॉक

ब्लॉक लेन-देन के बैच होते हैं जिनमें चेन में पिछले ब्लॉक का हैश होता है। यह ब्लॉकों को एक साथ (एक चेन में) जोड़ता है क्योंकि हैश क्रिप्टोग्राफ़िक रूप से ब्लॉक डेटा से प्राप्त होते हैं। यह धोखाधड़ी को रोकता है, क्योंकि इतिहास के किसी भी ब्लॉक में एक बदलाव बाद के सभी ब्लॉकों को अमान्य कर देगा क्योंकि बाद के सभी हैश बदल जाएंगे और ब्लॉकचेन चलाने वाले सभी लोग इस पर ध्यान देंगे।

पूर्वापेक्षाएँ

ब्लॉक शुरुआती लोगों के लिए बहुत ही अनुकूल विषय है। लेकिन इस पृष्ठ को बेहतर ढंग से समझने में आपकी मदद करने के लिए, हम अनुशंसा करते हैं कि आप पहले खाते, लेन-देन, और हमारे इथेरियम के परिचय को पढ़ें।

ब्लॉक क्यों?

यह सुनिश्चित करने के लिए कि इथेरियम नेटवर्क पर सभी प्रतिभागी एक सिंक्रनाइज़ स्थिति बनाए रखें और लेन-देन के सटीक इतिहास पर सहमत हों, हम लेन-देन को ब्लॉकों में बैच करते हैं। इसका मतलब है कि दर्जनों (या सैकड़ों) लेन-देन एक ही बार में प्रतिबद्ध, सहमत और सिंक्रनाइज़ किए जाते हैं।

A diagram showing transaction in a block causing state changes Ethereum EVM illustrated (opens in a new tab) से अनुकूलित आरेख

प्रतिबद्धताओं (commits) के बीच समय देकर, हम सभी नेटवर्क प्रतिभागियों को सर्वसम्मति पर पहुंचने के लिए पर्याप्त समय देते हैं: भले ही लेन-देन के अनुरोध प्रति सेकंड दर्जनों बार होते हैं, इथेरियम पर ब्लॉक हर 12 सेकंड में केवल एक बार बनाए और प्रतिबद्ध किए जाते हैं।

ब्लॉक कैसे काम करते हैं

लेन-देन के इतिहास को संरक्षित करने के लिए, ब्लॉकों को सख्ती से क्रमबद्ध किया जाता है (बनाए गए प्रत्येक नए ब्लॉक में उसके मूल ब्लॉक का संदर्भ होता है), और ब्लॉकों के भीतर लेन-देन भी सख्ती से क्रमबद्ध होते हैं। दुर्लभ मामलों को छोड़कर, किसी भी समय, नेटवर्क पर सभी प्रतिभागी ब्लॉकों की सटीक संख्या और इतिहास पर सहमत होते हैं, और वर्तमान लाइव लेन-देन अनुरोधों को अगले ब्लॉक में बैच करने के लिए काम कर रहे होते हैं।

एक बार जब नेटवर्क पर यादृच्छिक रूप से चुने गए सत्यापक द्वारा एक ब्लॉक को एक साथ रखा जाता है, तो इसे बाकी नेटवर्क में प्रसारित किया जाता है; सभी नोड इस ब्लॉक को अपनी ब्लॉकचेन के अंत में जोड़ते हैं, और अगला ब्लॉक बनाने के लिए एक नया सत्यापक चुना जाता है। सटीक ब्लॉक-असेंबली प्रक्रिया और प्रतिबद्धता/सर्वसम्मति प्रक्रिया वर्तमान में इथेरियम के “प्रूफ-ऑफ़-स्टेक (PoS)” प्रोटोकॉल द्वारा निर्दिष्ट की गई है।

प्रूफ-ऑफ़-स्टेक (PoS) प्रोटोकॉल

प्रूफ-ऑफ़-स्टेक (PoS) का अर्थ निम्नलिखित है:

  • सत्यापन करने वाले नोड्स को बुरे व्यवहार के खिलाफ संपार्श्विक के रूप में जमा अनुबंध में 32 ETH स्टेक करना होता है। यह नेटवर्क की सुरक्षा करने में मदद करता है क्योंकि साबित होने वाली बेईमान गतिविधि से उस स्टेक का कुछ या पूरा हिस्सा नष्ट हो जाता है।
  • प्रत्येक स्लॉट में (12 सेकंड के अंतराल पर) एक सत्यापक को यादृच्छिक रूप से ब्लॉक प्रस्तावक के रूप में चुना जाता है। वे लेन-देन को एक साथ बंडल करते हैं, उन्हें निष्पादित करते हैं और एक नई 'स्थिति' निर्धारित करते हैं। वे इस जानकारी को एक ब्लॉक में लपेटते हैं और इसे अन्य सत्यापकों को भेजते हैं।
  • अन्य सत्यापक जो नए ब्लॉक के बारे में सुनते हैं, वे लेन-देन को फिर से निष्पादित करते हैं ताकि यह सुनिश्चित हो सके कि वे वैश्विक स्थिति में प्रस्तावित बदलाव से सहमत हैं। यह मानते हुए कि ब्लॉक वैध है, वे इसे अपने स्वयं के डेटाबेस में जोड़ते हैं।
  • यदि कोई सत्यापक एक ही स्लॉट के लिए दो परस्पर विरोधी ब्लॉकों के बारे में सुनता है, तो वे सबसे अधिक स्टेक किए गए ETH द्वारा समर्थित ब्लॉक को चुनने के लिए अपने फ़ोर्क-चॉइस एल्गोरिदम का उपयोग करते हैं।

प्रूफ-ऑफ़-स्टेक (PoS) के बारे में अधिक जानकारी

ब्लॉक में क्या होता है?

एक ब्लॉक के भीतर बहुत सारी जानकारी होती है। उच्चतम स्तर पर एक ब्लॉक में निम्नलिखित फ़ील्ड होते हैं:

फ़ील्डविवरण
slotवह स्लॉट जिससे ब्लॉक संबंधित है
proposer_indexब्लॉक का प्रस्ताव करने वाले सत्यापक की ID
parent_rootपिछले ब्लॉक का हैश
state_rootस्थिति ऑब्जेक्ट का रूट हैश
bodyएक ऑब्जेक्ट जिसमें कई फ़ील्ड होते हैं, जैसा कि नीचे परिभाषित किया गया है

ब्लॉक body में इसके अपने कई फ़ील्ड होते हैं:

फ़ील्डविवरण
randao_revealअगले ब्लॉक प्रस्तावक का चयन करने के लिए उपयोग किया जाने वाला मान
eth1_dataजमा अनुबंध के बारे में जानकारी
graffitiब्लॉकों को टैग करने के लिए उपयोग किया जाने वाला मनमाना डेटा
proposer_slashingsकटौती किए जाने वाले सत्यापकों की सूची
attester_slashingsकटौती किए जाने वाले अनुप्रमाणकों की सूची
attestationsपिछले स्लॉटों के विरुद्ध किए गए अनुप्रमाणनों की सूची
depositsजमा अनुबंध में नई जमाओं की सूची
voluntary_exitsनेटवर्क से बाहर निकलने वाले सत्यापकों की सूची
sync_aggregateलाइट क्लाइंट्स की सेवा के लिए उपयोग किए जाने वाले सत्यापकों का उपसमुच्चय
execution_payloadनिष्पादन क्लाइंट से पारित लेन-देन

attestations फ़ील्ड में ब्लॉक में सभी अनुप्रमाणनों की एक सूची होती है। अनुप्रमाणनों का अपना डेटा प्रकार होता है जिसमें डेटा के कई टुकड़े होते हैं। प्रत्येक अनुप्रमाणन में शामिल हैं:

फ़ील्डविवरण
aggregation_bitsइस अनुप्रमाणन में किन सत्यापकों ने भाग लिया, इसकी एक सूची
dataकई उप-फ़ील्ड वाला एक कंटेनर
signaturedata भाग के विरुद्ध सत्यापकों के एक सेट का कुल हस्ताक्षर

attestation में data फ़ील्ड में निम्नलिखित शामिल हैं:

फ़ील्डविवरण
slotवह स्लॉट जिससे अनुप्रमाणन संबंधित है
indexअनुप्रमाणन करने वाले सत्यापकों के लिए सूचकांक
beacon_block_rootचेन के शीर्ष के रूप में देखे गए बीकन ब्लॉक का रूट हैश
sourceअंतिम औचित्य-सिद्ध जाँच-बिंदु
targetनवीनतम एपॉक सीमा ब्लॉक

execution_payload में लेन-देन को निष्पादित करने से वैश्विक स्थिति अपडेट हो जाती है। सभी क्लाइंट execution_payload में लेन-देन को फिर से निष्पादित करते हैं ताकि यह सुनिश्चित हो सके कि नई स्थिति नए ब्लॉक के state_root फ़ील्ड से मेल खाती है। इस तरह क्लाइंट बता सकते हैं कि एक नया ब्लॉक वैध है और उनके ब्लॉकचेन में जोड़ने के लिए सुरक्षित है। execution payload स्वयं कई फ़ील्ड वाला एक ऑब्जेक्ट है। एक execution_payload_header भी है जिसमें निष्पादन डेटा के बारे में महत्वपूर्ण सारांश जानकारी होती है। ये डेटा संरचनाएँ इस प्रकार व्यवस्थित हैं:

execution_payload_header में निम्नलिखित फ़ील्ड होते हैं:

फ़ील्डविवरण
parent_hashमूल ब्लॉक का हैश
fee_recipientलेन-देन शुल्क का भुगतान करने के लिए खाता पता
state_rootइस ब्लॉक में परिवर्तन लागू करने के बाद वैश्विक स्थिति के लिए रूट हैश
receipts_rootलेन-देन रसीद ट्राई (trie) का हैश
logs_bloomघटना लॉग वाली डेटा संरचना
prev_randaoयादृच्छिक सत्यापक चयन में उपयोग किया जाने वाला मान
block_numberवर्तमान ब्लॉक की संख्या
gas_limitइस ब्लॉक में अनुमत अधिकतम गैस
gas_usedइस ब्लॉक में उपयोग की गई गैस की वास्तविक मात्रा
timestampब्लॉक समय
extra_dataकच्चे बाइट्स के रूप में मनमाना अतिरिक्त डेटा
base_fee_per_gasआधार शुल्क मान
block_hashनिष्पादन ब्लॉक का हैश
transactions_rootपेलोड में लेन-देन का रूट हैश
withdrawal_rootपेलोड में निकासी का रूट हैश

execution_payload में स्वयं निम्नलिखित शामिल हैं (ध्यान दें कि यह हेडर के समान है सिवाय इसके कि लेन-देन के रूट हैश के बजाय इसमें लेन-देन और निकासी जानकारी की वास्तविक सूची शामिल है):

फ़ील्डविवरण
parent_hashमूल ब्लॉक का हैश
fee_recipientलेन-देन शुल्क का भुगतान करने के लिए खाता पता
state_rootइस ब्लॉक में परिवर्तन लागू करने के बाद वैश्विक स्थिति के लिए रूट हैश
receipts_rootलेन-देन रसीद ट्राई (trie) का हैश
logs_bloomघटना लॉग वाली डेटा संरचना
prev_randaoयादृच्छिक सत्यापक चयन में उपयोग किया जाने वाला मान
block_numberवर्तमान ब्लॉक की संख्या
gas_limitइस ब्लॉक में अनुमत अधिकतम गैस
gas_usedइस ब्लॉक में उपयोग की गई गैस की वास्तविक मात्रा
timestampब्लॉक समय
extra_dataकच्चे बाइट्स के रूप में मनमाना अतिरिक्त डेटा
base_fee_per_gasआधार शुल्क मान
block_hashनिष्पादन ब्लॉक का हैश
transactionsनिष्पादित किए जाने वाले लेन-देन की सूची
withdrawalsनिकासी ऑब्जेक्ट्स की सूची

withdrawals सूची में निम्नलिखित तरीके से संरचित withdrawal ऑब्जेक्ट होते हैं:

फ़ील्डविवरण
addressखाता पता जिसने निकासी की है
amountनिकासी राशि
indexनिकासी सूचकांक मान
validatorIndexसत्यापक सूचकांक मान

ब्लॉक समय

ब्लॉक समय का तात्पर्य ब्लॉकों को अलग करने वाले समय से है। इथेरियम में, समय को 12 सेकंड की इकाइयों में विभाजित किया जाता है जिन्हें 'स्लॉट' कहा जाता है। प्रत्येक स्लॉट में एक ब्लॉक प्रस्तावित करने के लिए एक ही सत्यापक का चयन किया जाता है। यह मानते हुए कि सभी सत्यापक ऑनलाइन हैं और पूरी तरह कार्यात्मक हैं, हर स्लॉट में एक ब्लॉक होगा, जिसका अर्थ है कि ब्लॉक समय 12 सेकंड है। हालाँकि, कभी-कभी ब्लॉक प्रस्तावित करने के लिए बुलाए जाने पर सत्यापक ऑफ़लाइन हो सकते हैं, जिसका अर्थ है कि स्लॉट कभी-कभी खाली जा सकते हैं।

यह कार्यान्वयन प्रूफ-ऑफ-वर्क (PoW) आधारित प्रणालियों से भिन्न है जहाँ ब्लॉक समय संभाव्य होते हैं और प्रोटोकॉल की लक्ष्य खनन कठिनाई द्वारा ट्यून किए जाते हैं। इथेरियम का औसत ब्लॉक समय (opens in a new tab) इसका एक आदर्श उदाहरण है जिसके द्वारा प्रूफ-ऑफ-वर्क (PoW) से प्रूफ-ऑफ़-स्टेक (PoS) में संक्रमण का स्पष्ट रूप से नए 12 सेकंड के ब्लॉक समय की स्थिरता के आधार पर अनुमान लगाया जा सकता है।

ब्लॉक का आकार

एक अंतिम महत्वपूर्ण बात यह है कि ब्लॉक स्वयं आकार में सीमित होते हैं। प्रत्येक ब्लॉक का लक्ष्य आकार 30 मिलियन गैस होता है, लेकिन नेटवर्क की माँगों के अनुसार ब्लॉकों का आकार बढ़ेगा या घटेगा, जो 60 मिलियन गैस (लक्ष्य ब्लॉक आकार का 2 गुना) की ब्लॉक सीमा तक हो सकता है। ब्लॉक गैस सीमा को पिछले ब्लॉक की गैस सीमा से 1/1024 के कारक द्वारा ऊपर या नीचे समायोजित किया जा सकता है। परिणामस्वरूप, सत्यापक सर्वसम्मति के माध्यम से ब्लॉक गैस सीमा को बदल सकते हैं। ब्लॉक में सभी लेन-देन द्वारा खर्च की गई गैस की कुल मात्रा ब्लॉक गैस सीमा से कम होनी चाहिए। यह महत्वपूर्ण है क्योंकि यह सुनिश्चित करता है कि ब्लॉक मनमाने ढंग से बड़े नहीं हो सकते। यदि ब्लॉक मनमाने ढंग से बड़े हो सकते हैं, तो कम प्रदर्शन करने वाले पूर्ण नोड धीरे-धीरे स्थान और गति की आवश्यकताओं के कारण नेटवर्क के साथ तालमेल बनाए रखने में सक्षम नहीं होंगे। ब्लॉक जितना बड़ा होगा, अगले स्लॉट के लिए समय पर उन्हें संसाधित करने के लिए उतनी ही अधिक कंप्यूटिंग शक्ति की आवश्यकता होगी। यह एक केंद्रीकृत करने वाली शक्ति है, जिसका विरोध ब्लॉक के आकार को सीमित करके किया जाता है।

आगे की पढ़ाई

क्या आप किसी ऐसे सामुदायिक संसाधन के बारे में जानते हैं जिसने आपकी मदद की? इस पृष्ठ को संपादित करें और इसे जोड़ें!