ब्लॉक
ब्लॉक लेन-देन के बैच होते हैं जिनमें चेन में पिछले ब्लॉक का हैश होता है। यह ब्लॉकों को एक साथ (एक चेन में) जोड़ता है क्योंकि हैश क्रिप्टोग्राफ़िक रूप से ब्लॉक डेटा से प्राप्त होते हैं। यह धोखाधड़ी को रोकता है, क्योंकि इतिहास के किसी भी ब्लॉक में एक बदलाव बाद के सभी ब्लॉकों को अमान्य कर देगा क्योंकि बाद के सभी हैश बदल जाएंगे और ब्लॉकचेन चलाने वाले सभी लोग इस पर ध्यान देंगे।
पूर्वापेक्षाएँ
ब्लॉक शुरुआती लोगों के लिए बहुत ही अनुकूल विषय है। लेकिन इस पृष्ठ को बेहतर ढंग से समझने में आपकी मदद करने के लिए, हम अनुशंसा करते हैं कि आप पहले खाते, लेन-देन, और हमारे इथेरियम के परिचय को पढ़ें।
ब्लॉक क्यों?
यह सुनिश्चित करने के लिए कि इथेरियम नेटवर्क पर सभी प्रतिभागी एक सिंक्रनाइज़ स्थिति बनाए रखें और लेन-देन के सटीक इतिहास पर सहमत हों, हम लेन-देन को ब्लॉकों में बैच करते हैं। इसका मतलब है कि दर्जनों (या सैकड़ों) लेन-देन एक ही बार में प्रतिबद्ध, सहमत और सिंक्रनाइज़ किए जाते हैं।
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 | कई उप-फ़ील्ड वाला एक कंटेनर |
signature | data भाग के विरुद्ध सत्यापकों के एक सेट का कुल हस्ताक्षर |
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 के कारक द्वारा ऊपर या नीचे समायोजित किया जा सकता है। परिणामस्वरूप, सत्यापक सर्वसम्मति के माध्यम से ब्लॉक गैस सीमा को बदल सकते हैं। ब्लॉक में सभी लेन-देन द्वारा खर्च की गई गैस की कुल मात्रा ब्लॉक गैस सीमा से कम होनी चाहिए। यह महत्वपूर्ण है क्योंकि यह सुनिश्चित करता है कि ब्लॉक मनमाने ढंग से बड़े नहीं हो सकते। यदि ब्लॉक मनमाने ढंग से बड़े हो सकते हैं, तो कम प्रदर्शन करने वाले पूर्ण नोड धीरे-धीरे स्थान और गति की आवश्यकताओं के कारण नेटवर्क के साथ तालमेल बनाए रखने में सक्षम नहीं होंगे। ब्लॉक जितना बड़ा होगा, अगले स्लॉट के लिए समय पर उन्हें संसाधित करने के लिए उतनी ही अधिक कंप्यूटिंग शक्ति की आवश्यकता होगी। यह एक केंद्रीकृत करने वाली शक्ति है, जिसका विरोध ब्लॉक के आकार को सीमित करके किया जाता है।
आगे की पढ़ाई
क्या आप किसी ऐसे सामुदायिक संसाधन के बारे में जानते हैं जिसने आपकी मदद की? इस पृष्ठ को संपादित करें और इसे जोड़ें!