एथेरियम श्वेतपत्र
_यह परिचयात्मक पत्र मूल रूप से 2014 में एथेरियम के संस्थापक विटालिक ब्यूटिरिन द्वारा, 2015 में प्रोजेक्ट के लॉन्च से पहले प्रकाशित किया गया था। यह ध्यान देने योग्य है कि एथेरियम, कई समुदाय-संचालित, ओपन-सोर्स सॉफ्टवेयर परियोजनाओं की तरह, अपनी प्रारंभिक स्थापना के बाद से विकसित हुआ है।
_हालांकि कई साल पुराना है, हम इस श्वेतपत्र को बनाए रखते हैं क्योंकि यह एक उपयोगी संदर्भ और एथेरियम और उसकी दृष्टि के सटीक प्रतिनिधित्व के रूप में काम करना जारी रखता है। Ethereum के नवीनतम विकासों, और प्रोटोकॉल में परिवर्तन कैसे किए जाते हैं, के बारे में जानने के लिए, हम इस गाइड की अनुशंसा करते हैं।
एक अगली-पीढ़ी का स्मार्ट कॉन्ट्रैक्ट और विकेन्द्रीकृत अनुप्रयोग प्लेटफ़ॉर्म
2009 में सातोशी नाकामोटो द्वारा बिटकॉइन का विकास अक्सर पैसे और करेंसी में एक क्रांतिकारी विकास के रूप में सराहा गया है, यह एक डिजिटल संपत्ति का पहला उदाहरण है जिसका एक साथ कोई समर्थन या "आंतरिक मूल्य (opens in a new tab)" नहीं है और कोई केंद्रीकृत जारीकर्ता या नियंत्रक नहीं है। हालांकि, एक और, यकीनन अधिक महत्वपूर्ण, बिटकॉइन प्रयोग का हिस्सा अंतर्निहित ब्लॉकचेन तकनीक है जो वितरित सहमति के एक उपकरण के रूप में है, और ध्यान तेजी से बिटकॉइन के इस अन्य पहलू पर स्थानांतरित होने लगा है। ब्लॉकचेन प्रौद्योगिकी के आमतौर पर उद्धृत वैकल्पिक अनुप्रयोगों में कस्टम करेंसियों और वित्तीय साधनों ("कलर्ड कॉइन्स (opens in a new tab)") का प्रतिनिधित्व करने के लिए ऑन-ब्लॉकचेन डिजिटल संपत्तियों का उपयोग, एक अंतर्निहित भौतिक उपकरण ("स्मार्ट प्रॉपर्टी (opens in a new tab)") का स्वामित्व, डोमेन नाम जैसी नॉन-फंजिबल संपत्तियां ("नेमक्वाइन (opens in a new tab)"), और साथ ही अधिक जटिल अनुप्रयोग शामिल हैं, जिसमें डिजिटल संपत्तियों को मनमाने नियमों को लागू करने वाले कोड के एक अंश द्वारा सीधे नियंत्रित किया जाता है ("स्मार्ट कॉन्ट्रैक्ट्स (opens in a new tab)") या यहां तक कि ब्लॉकचेन-आधारित "विकेंद्रीकृत स्वायत्त संगठन (opens in a new tab)" (डीएओज़) भी शामिल हैं। एथेरियम जो प्रदान करने का इरादा रखता है वह एक अंतर्निहित पूरी तरह से ट्यूरिंग वाली प्रोग्रामिंग भाषा के साथ एक ब्लॉकचेन है जिसका उपयोग "अनुबंध" बनाने और मनमाने ढंग से स्टेट ट्रांजिशन फ़ंक्शन को एन्कोड करने के लिए किया जा सकता है, जिससे यूज़र ऊपर वर्णित किसी भी सिस्टम को बना सकते हैं, साथ ही कई अन्य जिनकी हमने अभी तक कल्पना नहीं की है, ऐसा वे बस कोड की कुछ पंक्तियों में तर्क लिखकर कर सकते हैं।
बिटकॉइन और मौजूदा अवधारणाओं का परिचय
इतिहास
विकेंद्रीकृत डिजिटल मुद्रा की अवधारणा के साथ-साथ संपत्ति रजिस्ट्रियों जैसे वैकल्पिक एप्लिकेशन दशकों से हैं। 1980 और 1990 के दशक के अनाम ई-कैश प्रोटोकॉल, जो ज़्यादातर एक क्रिप्टोग्राफिक प्रीमिटिव पर निर्भर थे, जिन्हें चौमियन ब्लाइंडिंग के रूप में जाना जाता था, उन्होंने उच्च स्तर की गोपनीयता के साथ एक मुद्रा प्रदान की, लेकिन प्रोटोकॉल काफी हद तक एक केंद्रीकृत मध्यस्थ पर उनकी निर्भरता के कारण कर्षण प्राप्त करने में विफल रहे। 1998 में, वेई दाई का b-money (opens in a new tab) कम्प्यूटेशनल पहेलियों को हल करने के साथ-साथ विकेंद्रीकृत सहमति के माध्यम से पैसा बनाने के विचार को पेश करने वाला पहला प्रस्ताव बन गया, लेकिन इस प्रस्ताव में इस बारे में बहुत कम विवरण था कि विकेंद्रीकृत सहमति को वास्तव में कैसे लागू किया जा सकता है। 2005 में, हैल फिनी ने "पुन: प्रयोज्य प्रूफ-ऑफ-वर्क (opens in a new tab)" की एक अवधारणा पेश की, एक ऐसी प्रणाली जो एक क्रिप्टोकरेंसी के लिए एक अवधारणा बनाने के लिए एडम बैक की कम्प्यूटेशनल रूप से कठिन हैशकैश पहेलियों के साथ b-money के विचारों का उपयोग करती है, लेकिन एक बार फिर एक बैकएंड के रूप में विश्वसनीय कंप्यूटिंग पर भरोसा करके आदर्श से कम रह गई। 2009 में, एक विकेंद्रीकृत मुद्रा को पहली बार सतोशी नाकामोतो द्वारा व्यवहार में लागू किया गया था, जिसमें सिक्कों के मालिक कौन हैं, इस पर नज़र रखने के लिए एक सर्वसम्मत एल्गोरिथ्म के साथ सार्वजनिक कुंजी क्रिप्टोग्राफ़ी के माध्यम से स्वामित्व के प्रबंधन के लिए स्थापित प्रीमिटिव को जोड़ा गया था, जिसे "काम का सबूत" के रूप में जाना जाता है।
काम के सबूत के पीछे की प्रणाली इस क्षेत्र में एक बड़ी सफलता थी, क्योंकि इससे एक साथ दो समस्याएँ हल हुईं। सबसे पहले, इसने एक सरल और मध्यम रूप से प्रभावी सर्वसम्मति एल्गोरिथ्म प्रदान किया, जिससे नेटवर्क में नोड्स को बिटकॉइन खाता बही की स्थिति के लिए कैनॉनिकल अपडेट के एक सेट पर सामूहिक रूप से सहमत होने की अनुमति मिली। दूसरा, इसने सर्वसम्मति प्रक्रिया में स्वतंत्र प्रवेश की अनुमति देने के लिए एक तरीका उपलब्ध कराया, यह तय करने की राजनीतिक समस्या को हल किया कि कौन सर्वसम्मति को प्रभावित करता है, साथ ही साथ सिबिल हमलों को रोकता है। यह भागीदारी के लिए एक औपचारिक समस्या को प्रतिस्थापित करके ऐसा करता है, जैसे कि एक विशेष सूची में एक अद्वितीय इकाई के रूप में पंजीकृत होने की आवश्यकता, एक आर्थिक रुकावट के साथ-सर्वसम्मति मतदान प्रक्रिया में एक सिंगल नोड का वज़न सीधे कंप्यूटिंग क्षमता के समानुपाती होता है जो नोड लाता है। तब से, प्रूफ-ऑफ-स्टेक नामक एक वैकल्पिक दृष्टिकोण प्रस्तावित किया गया है, जो एक नोड के वजन की गणना कम्प्यूटेशनल संसाधनों के बजाय उसकी करेंसी होल्डिंग्स के अनुपात में करता है; दोनों दृष्टिकोणों के सापेक्ष गुणों की चर्चा इस श्वेतपत्र के दायरे से परे है, लेकिन यह ध्यान दिया जाना चाहिए कि दोनों दृष्टिकोणों का उपयोग एक क्रिप्टोकरेंसी की रीढ़ के रूप में काम करने के लिए किया जा सकता है।
एक स्टेट ट्रांजिशन सिस्टम के रूप में बिटकॉइन
तकनीकी दृष्टिकोण से, बिटकॉइन जैसी क्रिप्टोकरेंसी के खाता बही को एक स्टेट ट्रांज़िशन सिस्टम के रूप में समझा जा सकता है, जहां एक "स्टेट" होता है जिसमें सभी मौजूदा बिटकॉइन के स्वामित्व वाली स्थिति और एक "स्टेट ट्रांज़िशन फ़ंक्शन" होता है जो एक राज्य और एक लेनदेन लेता है और एक नई स्थिति पेश करता है जो परिणाम है। एक मानक बैंकिंग सिस्टम में, उदाहरण के लिए, राज्य एक बैलेंस शीट है, लेनदेन $X को A से B तक स्थानांतरित करने का अनुरोध है, और स्टेट ट्रांज़िशन फ़ंक्शन A के खाते में मूल्य को $X कम कर देता है और B के खाते में मूल्य को $X से बढ़ जाता है। अगर A के खाते में पहले से ही $X से कम राशि है, तो राज्य संक्रमण फ़ंक्शन एक गड़बड़ी देता है। इसलिए, कोई औपचारिक रूप से परिभाषित कर सकता है:
APPLY(S,TX) -> S' या ERROR
ऊपर परिभाषित बैंकिंग सिस्टम में:
APPLY({ Alice: $50, Bob: $50 },"Send $20 from Alice to Bob") = { Alice: $30, Bob: $70 }
परंतु:
APPLY({ Alice: $50, Bob: $50 },"Send $70 from Alice to Bob") = ERROR
बिटकॉइन में "स्टेट" सभी सिक्कों (तकनीकी रूप से, "खर्च न किए गए लेनदेन आउटपुट" या UTXO) का संग्रह है, जिन्हें ढाला गया है और अभी तक खर्च नहीं किया गया है, प्रत्येक UTXO के पास एक मूल्यवर्ग और एक मालिक है (20-बाइट पते द्वारा परिभाषित किया गया है जो अनिवार्य रूप से एक क्रिप्टोग्राफिक सार्वजनिक कुंजी है fn1 )। एक लेन-देन में एक या अधिक इनपुट होते हैं, जिनमें हर इनपुट में मौजूदा UTXO का संदर्भ होता है और मालिक के पते से जुड़ी निजी कुंजी द्वारा जेनरेट किया गया एक क्रिप्टोग्राफ़िक हस्ताक्षर होता है, और एक या अधिक आउटपुट होते हैं, जिसमें हर आउटपुट में एक नया UTXO होता है जिसे स्टेट में जोड़ा जाना है।
स्टेट ट्रांज़िशन फ़ंक्शन APPLY(S,TX) -> S' को मोटे तौर पर इस प्रकार परिभाषित किया जा सकता है:
TXमें प्रत्येक इनपुट के लिए:- यदि संदर्भित UTXO
Sमें नहीं है, तो एक त्रुटि लौटाएं। - यदि प्रदान किया गया हस्ताक्षर UTXO के मालिक से मेल नहीं खाता है, तो एक त्रुटि लौटाएं।
- यदि संदर्भित UTXO
- यदि सभी इनपुट UTXO के मूल्यवर्ग का योग सभी आउटपुट UTXO के मूल्यवर्ग के योग से कम है, तो एक त्रुटि लौटाएं।
- सभी इनपुट UTXO हटाए जाने और सभी आउटपुट UTXO जोड़े जाने के साथ
Sलौटाएं।
पहले चरण का पहला भाग लेन-देन प्रेषकों को उन सिक्कों को खर्च करने से रोकता है जो मौजूद नहीं हैं, पहले चरण का दूसरा भाग लेन-देन प्रेषकों को अन्य लोगों के सिक्के खर्च करने से रोकता है, और दूसरा चरण मूल्य के संरक्षण को लागू करता है। इसका उपयोग करने के लिए भुगतान, प्रोटोकॉल इस प्रकार है। मान लीजिए ऐलिस, बॉब को 11.7 BTC भेजना चाहता है। सबसे पहले, ऐलिस उपलब्ध UTXO के एक सेट की तलाश करेगी जिसे वह जिसके पास कम से कम 11.7 BTC है। वास्तविक रूप से, ऐलिस ठीक 11.7 BTC प्राप्त करने में सक्षम नहीं होगी; मान लीजिए कि वह सबसे कम 6+4+2=12 प्राप्त कर सकती है। फिर वह उन तीन इनपुट और दो आउटपुट के साथ एक लेनदेन बनाती है। पहला आउटपुट 11.7 BTC होगा जिसमें बॉब का पता होगा मालिक, और दूसरा आउटपुट शेष 0.3 BTC "बदलाव" होगा, जिसकी मालिक खुद ऐलिस होगी।
माइनिंग
अगर हमारे पास एक भरोसेमंद केंद्रीकृत सेवा तक पहुंच होती, तो यह सिस्टम लागू करने के लिए तुच्छ हो; इसे बिल्कुल वर्णित के रूप में कोडित किया जा सकता है, राज्य पर नज़र रखने के लिए एक केंद्रीकृत सर्वर की हार्ड ड्राइव का उपयोग करना। हालांकि, बिटकॉइन के साथ हम एक विकेन्द्रीकृत मुद्रा प्रणाली बनाने की कोशिश कर रहे हैं, इसलिए हमें स्टेट ट्रांज़िशन सिस्टम को सर्वसम्मति प्रणाली के साथ संयोजित करने की आवश्यकता होगी, ताकि यह सुनिश्चित किया जा सके कि सभी लोग लेनदेन के क्रम से सहमत हों। बिटकॉइन की विकेन्द्रीकृत सर्वसम्मति प्रक्रिया के लिए नेटवर्क में नोड्स को लगातार "ब्लॉक" नाम के लेनदेन के पैकेज बनाने की कोशिश करना आवश्यक होता है। नेटवर्क का उद्देश्य लगभग हर दस मिनट में एक ब्लॉक का उत्पादन करना है, जिसमें प्रत्येक ब्लॉक में एक टाइमस्टैम्प, एक नॉन्स, पिछले ब्लॉक का एक संदर्भ (यानी, हैश) और पिछले ब्लॉक के बाद से हुए सभी लेन-देनों की एक सूची होती है। समय के साथ, यह एक स्थायी, निरंतर बढ़ने वाला "ब्लॉकचेन" बनाता है जो बिटकॉइन खाता बही की हाल ही की स्थिति को दिखाने के लिए लगातार अपडेट होता रहता है।
इस प्रतिमान में दिय़ा गया, किसी ब्लॉक के मान्य होने की जांच करने का एल्गोरिथ्म इस प्रकार है:
- जाँचें कि ब्लॉक द्वारा संदर्भित पिछला ब्लॉक मौजूद है या नहीं और मान्य है या नहीं।
- जाँचें कि ब्लॉक का टाइमस्टैम्प पिछले ब्लॉकfn2 से बड़ा है और आने वाले समय में 2 घंटे से कम है
- जाँचें कि ब्लॉक पर काम का सबूत मान्य है या नहीं।
- मान लें
S[0]पिछले ब्लॉक के अंत में स्टेट है। - मान लें
TXब्लॉक कीnलेनदेन वाली लेनदेन सूची है।0...n-1में सभीiके लिए,S[i+1] = APPLY(S[i],TX[i])सेट करें। यदि कोई भी अनुप्रयोग त्रुटि लौटाता है, तो बाहर निकलें और false लौटाएं। - true लौटाएं, और इस ब्लॉक के अंत में स्टेट के रूप में
S[n]को पंजीकृत करें।
अनिवार्य रूप से, ब्लॉक में हर लेनदेन को लेनदेन के निष्पादन से पहले की प्रामाणिक स्थिति से लेकर किसी नई स्थिति तक एक मान्य स्टेट ट्रांज़िशन प्रदान करना होगा। ध्यान दें कि स्टेट को किसी भी तरह से ब्लॉक में एनकोड नहीं किया गया है; यह पूरी तरह से एक अमूर्तता है जिसे सत्यापन नोड द्वारा याद रखा जाना चाहिए और इसे किसी भी ब्लॉक के लिए केवल उत्पत्ति स्थिति से शुरू करके और प्रत्येक ब्लॉक में प्रत्येक लेनदेन को क्रम के हिसाब से लागू करके (सुरक्षित रूप से) गणना की जा सकती है। इसके अतिरिक्त, ध्यान दें कि जिस क्रम में माइनर ब्लॉक में लेनदेन शामिल करता है वह मायने रखता है; अगर किसी ब्लॉक में दो लेनदेन A और B हैं, जिससे B, A द्वारा बनाए गए UTXO को खर्च करता है, तो ब्लॉक तभी मान्य होगा जब A, B से पहले आएगा और किसी मामले में नहीं।
उपरोक्त सूची में एक वैधता शर्त मौजूद है जो अन्य सिस्टम में नहीं पाई जाती है, वह है "काम का सबूत" की आवश्यकता। सटीक शर्त यह है कि हर ब्लॉक का डबल-SHA256 हैश, जिसे 256-बिट संख्या माना जाता है, गतिशील रूप से एडजस्ट किए गए लक्ष्य से कम होना चाहिए, जो इस लेखन के समय लगभग 2187 है। इसका उद्देश्य ब्लॉक बनाने की प्रोसेस को कम्प्यूटेशनल रूप से "मुश्किल" बनाना है, जिससे सिबिल हमलावरों को पूरे ब्लॉकचेन को अपने पक्ष में बनाने से रोका जा सके। क्योंकि SHA256 को पूरी तरह से अप्रत्याशित छद्म-यादृच्छिक फ़ंक्शन (pseudo-random function) के रूप में डिज़ाइन किया गया है, एक वैध ब्लॉक बनाने का एकमात्र तरीका केवल परीक्षण और त्रुटि है, नॉन्स को बार-बार बढ़ाना और यह देखना कि क्या नया हैश मेल खाता है।
वर्तमान लक्ष्य ~2187 पर, मान्य ब्लॉक मिलने से पहले नेटवर्क को औसतन ~269 प्रयास करने होंगे; सामान्य तौर पर, नेटवर्क द्वारा हर 2016 ब्लॉक पर लक्ष्य का पुनर्निर्धारण किया जाता है, ताकि औसतन हर दस मिनट में नेटवर्क में किसी नोड द्वारा एक नया ब्लॉक तैयार किया जा सके। इस कम्प्यूटेशनल काम के लिए खनिकों को मुआवज़ा देने के लिए, हर ब्लॉक के खनिक को एक लेनदेन शामिल करने का अधिकार है, जिससे उन्हें कहीं से भी 25 BTC हासिल हो। इसके अलावा, अगर किसी लेनदेन में इनपुट का कुल मूल्य उसके आउटपुट की तुलना में अधिक है, तो यह अंतर भी "लेनदेन शुल्क" के रूप में खनिक को जाता है। संयोग से, यह इकलौता तरीका है जिसकी मदद से BTC जारी किया जाता है; उत्पत्ति अवस्था में कोई भी सिक्का नहीं था।
खनन के उद्देश्य को बेहतर ढंग से समझने के लिए, आइए देखें कि दुर्भावनापूर्ण हमलावर की स्थिति में क्या होता है। चूंकि बिटकॉइन में शामिल क्रिप्टोग्राफ़ी सुरक्षित मानी जाती है, इसलिए हमलावर बिटकॉइन सिस्टम के उस हिस्से को सीधे निशाना बनाएगा जो क्रिप्टोग्राफ़ी द्वारा सुरक्षित नहीं है: लेनदेन का क्रम। हमलावर की रणनीति सरल है:
- किसी उत्पाद (अधिमान के हिसाब से तेज़ डिलीवरी वाला डिजिटल सामान) के बदले में किसी व्यापारी को 100 BTC भेजें
- उत्पाद की डिलीवरी का इंतज़ार करें
- खुद को वही 100 BTC भेजकर दूसरा लेनदेन करें
- नेटवर्क को यह समझाने की कोशिश करें कि उसका लेन-देन खुद के लिए था एक जो पहले आया था।
एक बार चरण (1) हो जाने के बाद, कुछ मिनटों के बाद कुछ खनिक एक ब्लॉक में लेनदेन को शामिल करेंगे, जैसे ब्लॉक संख्या 270000। लगभग एक घंटे के बाद, उस ब्लॉक के बाद चेन में पाँच और ब्लॉक जुड़ जाएँगे, जिनमें से हर ब्लॉक सीधे तौर पर लेन-देन की ओर इशारा करेगा और इस प्रकार इसकी "पुष्टि" करेगा। इस बिंदु पर, व्यापारी भुगतान को अंतिम रूप से स्वीकार कर लेगा और उत्पाद वितरित कर देगा; चूंकि हम यह मान रहे हैं कि यह एक डिजिटल चीज़ है, इसलिए वितरण तत्काल होगा। अब, हमलावर 100 BTC को खुद को भेजते हुए एक और लेनदेन बनाता है। यदि हमलावर इसे बस यूँ ही जारी कर देता है, तो लेनदेन को संसाधित नहीं किया जाएगा; माइनर्स APPLY(S,TX) चलाने का प्रयास करेंगे और देखेंगे कि TX एक ऐसे UTXO का उपभोग करता है जो अब स्टेट में नहीं है। इसलिए इसके बजाय, हमलावर ब्लॉकचेन का एक "फ़ोर्क" बनाता है, जो ब्लॉक 270000 के दूसरे वर्जन की माईनिंग करके शुरू होता है और मूल ब्लॉक 269999 को दर्शाता है, लेकिन पुराने के स्थान पर नया लेनदेन होता है। चूँकि ब्लॉक डेटा अलग है, इसलिए इसके लिए काम के सबूत को दोबारा करने की आवश्यकता होती है। इसके अलावा, हमलावर के ब्लॉक 270000 के नए वर्जन का हैश अलग है, इसलिए मूल ब्लॉक 270001 से 270005 इसकी ओर "इशारा" नहीं करते हैं; इस प्रकार, मूल चेन और हमलावर की नई चेन पूरी तरह से अलग हैं। नियम यह है कि किसी फ़ोर्क में सबसे लंबे ब्लॉकचेन को सत्य माना जाता है, और इसलिए मान्य माईनर 270005 चेन पर काम करेंगे, जबकि हमलावर अकेले 270000 चेन पर काम कर रहा होगा। हमलावर को अपनी ब्लॉकचेन को सबसे लंबा बनाने के लिए, उसे शेष नेटवर्क की तुलना में अधिक कम्प्यूटेशनल क्षमता की आवश्यकता होगी (इसलिए, "51% हमला")।
मर्कल ट्री
बाएं: एक शाखा की वैधता का प्रमाण देने के लिए मर्कल ट्री में केवल कुछ ही नोड्स प्रस्तुत करना पर्याप्त है।
दाएं: मर्कल ट्री के किसी भी हिस्से को बदलने का कोई भी प्रयास अंततः श्रृंखला में कहीं न कहीं एक विसंगति की ओर ले जाएगा।
बिटकॉइन की एक महत्वपूर्ण स्केलेबिलिटी विशेषता यह है कि ब्लॉक को कई लेवल के हिसाब से डेटा संरचना में स्टोर किया जाता है। किसी ब्लॉक का "हैश" असल में केवल ब्लॉक हेडर का हैश होता है, जो लगभग 200-बाइट का डेटा होता है, जिसमें टाइमस्टैम्प, नॉन्स, पिछले ब्लॉक का हैश और मर्कल ट्री नाम के डेटा स्ट्रक्चर का रूट हैश शामिल होता है, जो ब्लॉक में सभी लेनदेन को स्टोर करता है। मर्कल ट्री एक तरह का बाइनरी ट्री है, जो नोड्स के एक ग्रुप से बना होता है, जिसमें ट्री के निचले भाग में बड़ी संख्या में लीफ़ नोड्स होते हैं, जिनमें शामिल डेटा होता है, मध्यवर्ती नोड्स का एक ग्रुप होता है, जहां हर नोड अपने दो संतानों का हैश होता है, तथा आखिर में एक सिंगल रूट नोड होता है, जो अपने दो संतानों के हैश से बना होता है, और ट्री के "शीर्ष" को दर्शाता है। मर्कल ट्री का उद्देश्य एक ब्लॉक में डेटा को अलग-अलग हिस्सों में वितरित करने की अनुमति देना है: एक नोड एक स्रोत से केवल ब्लॉक के हेडर को डाउनलोड कर सकता है, दूसरे स्रोत से उनके लिए प्रासंगिक ट्री का छोटा हिस्सा, और फिर भी आश्वस्त हो सकता है कि सारा डेटा सही है। यह इसलिए काम करता है, क्योंकि हैश ऊपर की ओर फैलता है: अगर कोई दुर्भावनापूर्ण यूज़र मर्कल ट्री के निचले भाग में नकली लेनदेन को स्वैप करने की कोशिश करता है, तो यह बदलाव ऊपर के नोड में बदलाव का कारण बनेगा, और फिर उसके ऊपर के नोड में बदलाव करेगा, आखिर में वृक्ष के मूल में बदलाव करेगा और इस प्रकार ब्लॉक के हैश में भी बदलाव करेगा, जिसके कारण प्रोटोकॉल इसे पूरी तरह से अलग ब्लॉक के रूप में पंजीकृत करेगा (लगभग पक्के तौर पर अमान्य काम के सबूत के साथ)।
मर्कल ट्री प्रोटोकॉल दीर्घकालिक स्थिरता के लिए निश्चित रूप से आवश्यक है। बिटकॉइन नेटवर्क में एक "फ़ुल नोड", जो हर ब्लॉक की संपूर्णता को स्टोर और प्रोसेस करता है, अप्रैल 2014 तक बिटकॉइन नेटवर्क में लगभग 15 GB डिस्क स्थान लेता है, और हर माह एक गीगाबाइट से अधिक बढ़ रहा है। वर्तमान में, यह कुछ डेस्कटॉप कम्प्यूटरों के लिए ही योग्य है, न कि फ़ोन के लिए, और बाद में भविष्य में केवल व्यवसाय और शौकिया लोग ही इसमें भाग ले पाएंगे। "आसान बनाया गया भुगतान सत्यापन" (SPV) के रूप में जाना जाने वाला एक प्रोटोकॉल नोड्स के एक अन्य वर्ग की मौजूदगी की अनुमति देता है, जिसे "लाइट नोड्स" कहा जाता है, जो ब्लॉक हेडर को डाउनलोड करते हैं, ब्लॉक हेडर पर काम के सबूत को सत्यापित करते हैं, और फिर केवल उन लेनदेन से जुड़ी "शाखाओं" को डाउनलोड करते हैं जो उनके लिए प्रासंगिक हैं। इससे लाइट नोड्स को सुरक्षा की मज़बूत गारंटी के साथ यह पता लगाने की अनुमति मिलती है कि किसी भी बिटकॉइन लेनदेन की स्थिति क्या है, और उनका मौजूदा शेष क्या है, जबकि वे पूरी ब्लॉकचेन का केवल एक बहुत छोटा हिस्सा ही डाउनलोड करते हैं।
वैकल्पिक ब्लॉकचेन अनुप्रयोग
ब्लॉकचेन से संबंधित विचार को अन्य अवधारणाओं पर लागू करने के विचार का भी एक लंबा इतिहास है। 2005 में, निक स्ज़ाबो "मालिक के अधिकार के साथ सुरक्षित संपत्ति शीर्षक (opens in a new tab)" की अवधारणा के साथ आए, एक दस्तावेज़ जिसमें बताया गया है कि कैसे "प्रतिकृति डेटाबेस प्रौद्योगिकी में नई प्रगति" एक ब्लॉकचेन-आधारित प्रणाली के लिए अनुमति देगी जो यह रजिस्ट्री करती है कि कौन किस भूमि का मालिक है, जिसमें होमस्टेडिंग, प्रतिकूल कब्जा और जॉर्जियाई भूमि कर जैसी अवधारणाओं सहित एक विस्तृत ढांचा तैयार किया गया है। हालाँकि, दुर्भाग्य से उस समय कोई प्रभावी कॉपी किया गया या डाटाबेस सिस्टम उपलब्ध नहीं था, और इसलिए प्रोटोकॉल को व्यवहार में कभी लागू नहीं किया गया। हालाँकि, 2009 के बाद, जब बिटकॉइन की विकेन्द्रीकृत सर्वसम्मति विकसित हो गई, तो कई वैकल्पिक एप्लिकेशन तेजी से सामने आने लगे।
- नेमक्वाइन - 2010 में बनाया गया, नेमक्वाइन (opens in a new tab) को विकेन्द्रीकृत नाम पंजीकरण डेटाबेस के रूप में सबसे अच्छी तरह वर्णित किया गया है। Tor, बिटकॉइन और BitMessage जैसे विकेन्द्रीकृत प्रोटोकॉल में, खातों की पहचान करने का कोई तरीका होना चाहिए ताकि अन्य लोग उनके साथ इंटरैक्ट कर सकें, लेकिन सभी मौजूदा समाधानों में उपलब्ध एकमात्र पहचानकर्ता
1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWyजैसा एक छद्म-यादृच्छिक हैश है। आदर्श रूप से, कोई "जॉर्ज" जैसे नाम के साथ एक खाता रखने में सक्षम होना चाहेगा। हालांकि, समस्या यह है कि अगर एक व्यक्ति "जॉर्ज" नाम से अकाउंट बना सकता है, तो कोई अन्य व्यक्ति उसी प्रक्रिया का उपयोग करके अपने लिए भी "जॉर्ज" को पंजीकृत कर सकता है और उसकी नकल कर सकता है। इसका इकलौता समाधान फ़र्स्ट-टू-फ़ाइल प्रतिमान है, जहां पहला रजिस्टर सफल होता है और दूसरा विफल - यह समस्या बिटकॉइन सर्वसम्मति प्रोटोकॉल के लिए बिल्कुल उपयुक्त है। नेमक्वाइन इस तरह के विचार का उपयोग करते हुए नाम पंजीकरण सिस्टम का सबसे पुराना और सबसे सफल कार्यान्वयन है। - कलर्ड कॉइन्स - कलर्ड कॉइन्स (opens in a new tab) का उद्देश्य एक प्रोटोकॉल के रूप में काम करना है जो लोगों को अपनी डिजिटल करेंसी बनाने की अनुमति देता है - या, एक इकाई वाली करेंसी के महत्वपूर्ण तुच्छ मामले में, बिटकॉइन ब्लॉकचेन पर डिजिटल टोकन। रंगीन सिक्कों के प्रोटोकॉल में, एक खास बिटकॉइन UTXO को सार्वजनिक रूप से रंग प्रदान करके एक नई मुद्रा "जारी" की जाती है, और प्रोटोकॉल पुनरावर्ती रूप से अन्य UTXO के रंग को उन इनपुट के रंग के समान परिभाषित करता है, जो उन्हें बनाने वाले लेनदेन ने खर्च किए हैं (मिश्रित-रंग इनपुट के मामले में कुछ खास नियम लागू होते हैं)। इससे उपयोगकर्ताओं को केवल एक खास रंग के UTXO वाले वॉलेट को बनाए रखने और उन्हें नियमित bitcoin की तरह भेजने की अनुमति मिलती है, जो उन्हें प्राप्त होने वाले किसी भी UTXO का रंग निर्धारित करने के लिए ब्लॉकचेन के माध्यम से बैकट्रैकिंग करता है।
- मेटाकॉइन्स - एक मेटाकॉइन के पीछे का विचार एक ऐसा प्रोटोकॉल होना है जो बिटकॉइन के शीर्ष पर रहता है, मेटाकॉइन लेनदेन को संग्रहीत करने के लिए बिटकॉइन लेनदेन का उपयोग करता है लेकिन एक अलग स्टेट ट्रांजिशन फ़ंक्शन,
APPLY'होता है। क्योंकि मेटाकॉइन प्रोटोकॉल बिटकॉइन ब्लॉकचेन में अमान्य मेटाकॉइन लेनदेन को प्रदर्शित होने से नहीं रोक सकता है, एक नियम जोड़ा गया है कि यदिAPPLY'(S,TX)एक त्रुटि लौटाता है, तो प्रोटोकॉल डिफ़ॉल्ट रूप सेAPPLY'(S,TX) = Sहो जाता है। यह एक मनमाना क्रिप्टोकरेंसी प्रोटोकॉल बनाने के लिए एक आसान सिस्टम उपलब्ध कराता है, जिसमें शायद बेहतरीन विशेषताएं होंगी जिन्हें बिटकॉइन के अंदर लागू नहीं किया जा सकता है, लेकिन बहुत कम विकास की लागत के साथ क्योंकि खनन और नेटवर्किंग की समस्याओं को पहले से ही बिटकॉइन प्रोटोकॉल द्वारा नियंत्रित किया जाता है। Metacoin का उपयोग कुछ प्रकार के वित्तीय अनुबंधों, नाम पंजीकरण और विकेन्द्रीकृत विनिमयों को लागू करने के लिए किया गया है।
इस प्रकार, सामान्य तौर पर, सर्वसम्मति प्रोटोकॉल को तौयार करने के लिए दो दृष्टिकोण हैं: एक स्वतंत्र नेटवर्क को तैयार करना, और बिटकॉइन के सबसे ऊपर एक प्रोटोकॉल तैयार करना। पहला दृष्टिकोण, नेमक्वाइन जैसे एप्लिकेशन के मामले में उचित तरीके से सफल होते हुए भी, लागू करने में समस्या होती है; हर व्यक्तिगत कार्यान्वयन के लिए एक स्वतंत्र ब्लॉकचेन को बूटस्ट्रैप करने की आवश्यकता होती है, साथ ही सभी आवश्यक स्टेट ट्रांज़िशन और नेटवर्किंग कोड का निर्माण और परीक्षण भी करना होता है। इसके अतिरिक्त, हम भविष्यवाणी करते हैं कि विकेन्द्रीकृत सर्वसम्मति प्रौद्योगिकी के लिए एप्लिकेशन का ग्रुप एक शक्ति कानून वितरण का पालन करेगा, जहां ज़्यादातर अनुप्रयोग अपने स्वयं के ब्लॉकचेन की गारंटी देने के लिए बहुत छोटे होंगे, और हम देखते हैं कि विकेन्द्रीकृत एप्लिकेशन के बड़े वर्ग मौजूद हैं, विशेष रूप से विकेन्द्रीकृत स्वायत्त संगठन, जिन्हें एक दूसरे के साथ बातचीत करने की आवश्यकता है।
दूसरी ओर, बिटकॉइन-आधारित दृष्टिकोण में यह गड़बड़ी है कि इसमें बिटकॉइन की सरलीकृत भुगतान सत्यापन सुविधाएं नहीं हैं। SPV, बिटकॉइन के लिए काम करता है, क्योंकि यह वैधता के लिए प्रॉक्सी के रूप में ब्लॉकचेन की गहराई का उपयोग कर सकता है; किसी बिंदु पर, जब पिछले लेनदेन किए हुए काफी समय हो जाता है, तो यह कहना सुरक्षित है कि वे मान्य रूप से स्टेट का हिस्सा थे। दूसरी ओर, ब्लॉकचेन-आधारित मेटा-प्रोटोकॉल ब्लॉकचेन को उन लेनदेन को शामिल न करने के लिए बाध्य नहीं कर सकते जो उनके अपने प्रोटोकॉल के मामले में मान्य नहीं हैं। इसलिए, एक पूरी तरह सुरक्षित SPV मेटा-प्रोटोकॉल कार्यान्वयन को बिटकॉइन ब्लॉकचेन की शुरुआत तक पीछे की ओर स्कैन करने की आवश्यकता होगी, ताकि यह निर्धारित किया जा सके कि कुछ लेनदेन वैध हैं या नहीं। वर्तमान में, बिटकॉइन-आधारित मेटा-प्रोटोकॉल के सभी "हल्के" कार्यान्वयन डेटा प्रदान करने के लिए एक विश्वसनीय सर्वर पर निर्भर करते हैं, जो यकीनन एक अत्यधिक उप-इष्टतम परिणाम है, खासकर जब क्रिप्टोकरेंसी का एक प्राथमिक उद्देश्य विश्वास की आवश्यकता को समाप्त करना है।
स्क्रिप्टिंग
किसी भी विस्तार के बिना भी, बिटकॉइन प्रोटोकॉल असल में "स्मार्ट कॉन्ट्रैक्ट्स" की अवधारणा के एक कमजोर वर्जन को सुविधाजनक बनाता है। बिटकॉइन में UTXO का मालिकाना हक न केवल सार्वजनिक कुंजी के द्वारा हो सकता है, बल्कि एक सरल स्टैक-आधारित प्रोग्रामिंग भाषा में व्यक्त एक अधिक जटिल स्क्रिप्ट द्वारा भी हो सकता है। इस प्रतिमान में, लेनदेन से जुड़े व्यय जो UTXO को स्क्रिप्ट को संतुष्ट करने वाला डेटा प्रदान करना चाहिए। असल में, यहां तक कि बुनियादी सार्वजनिक कुंजी के मालिकाना हक वाले सिस्टम को भी एक स्क्रिप्ट के माध्यम से लागू किया जाता है: स्क्रिप्ट एक दीर्घवृत्तीय वक्र हस्ताक्षर को इनपुट के रूप में लेती है, उसे लेनदेन और UTXO के मालिकाना हक वाले पते के विरुद्ध सत्यापित करती है, और सत्यापन सफल होने पर 1 और अन्यथा 0 लौटाती है। अलग-अलग अतिरिक्त उपयोग मामलों के लिए अन्य, अधिक जटिल, स्क्रिप्ट मौजूद हैं। उदाहरण के लिए, कोई ऐसी स्क्रिप्ट बना सकता है जिसमें सत्यापन के लिए दिए गए तीन निजी कुंजियों में से दो के हस्ताक्षर की आवश्यकता होती है ("मल्टीसिग"), यह सेटअप कॉर्पोरेट खातों, सुरक्षित बचत खातों और कुछ व्यापारी एस्क्रो स्टेट के लिए उपयोगी है। स्क्रिप्ट का उपयोग कम्प्यूटेशनल समस्याओं के समाधान के लिए इनाम का भुगतान करने के लिए भी किया जा सकता है, और यहां तक कि एक स्क्रिप्ट भी बनाई जा सकती है जो कुछ इस तरह कहती है "यह बिटकॉइन UTXO आपका है अगर आप एक SPV प्रमाण प्रदान कर सकते हैं कि आपने इस मूल्यवर्ग का एक डॉगकॉइन लेनदेन मुझे भेजा है", अनिवार्य रूप से विकेन्द्रीकृत क्रॉस-क्रिप्टोकरेंसी एक्सचेंज की अनुमति देता है।
हालाँकि, बिटकॉइन में लागू की गई स्क्रिप्टिंग भाषा में कई महत्वपूर्ण सीमाएं हैं:
- ट्यूरिंग-पूर्णता का अभाव - यानी, जबकि बिटकॉइन स्क्रिप्टिंग भाषा द्वारा समर्थित गणना का एक बड़ा उपसमूह है, यह लगभग हर चीज का समर्थन नहीं करता है। मुख्य श्रेणी जो गायब है वह है लूप्स। यह लेन-देन सत्यापन के दौरान अनंत लूप से बचने के लिए किया जाता है; सैद्धांतिक रूप से यह स्क्रिप्ट प्रोग्रामरों के लिए एक पार करने योग्य बाधा है, क्योंकि किसी भी लूप को केवल एक if स्टेटमेंट के साथ अंतर्निहित कोड को कई बार दोहराकर अनुकरण किया जा सकता है, लेकिन यह उन स्क्रिप्टों की ओर ले जाता है जो बहुत जगह-अपर्याप्त हैं। उदाहरण के लिए, एक वैकल्पिक अण्डाकार वक्र हस्ताक्षर एल्गोरिथ्म को लागू करने के लिए संभवतः 256 बार-बार गुणा दौर की आवश्यकता होगी, जो सभी व्यक्तिगत रूप से कोड में शामिल हैं।
- मूल्य-अंधापन - एक UTXO स्क्रिप्ट के लिए निकाली जा सकने वाली राशि पर सूक्ष्म-नियंत्रण प्रदान करने का कोई तरीका नहीं है। उदाहरण के लिए, एक ओरैकल कॉन्ट्रैक्ट का उपयोग का एक बेहतरीन मामला एक हेजिंग कॉन्ट्रैक्ट होगा, जहाँ A और B $1000 मूल्य के BTC जमा करते हैं और 30 दिनों के बाद स्क्रिप्ट $1000 मूल्य के BTC को A को भेजती है और शेष राशि को B को भेजती है। इसके लिए 1 BTC का USD में मूल्य निर्धारित करने के लिए एक ओरैकल की आवश्यकता होगी, लेकिन तब भी यह वर्तमान में उपलब्ध पूरी तरह से केंद्रीकृत समाधानों की तुलना में विश्वास और बुनियादी ढांचे की आवश्यकता के मामले में एक बहुत बड़ा सुधार है। हालाँकि, चूँकि UTXO ऑल-ऑर-नथिंग हैं, इसे प्राप्त करने का एकमात्र तरीका विभिन्न मूल्यवर्ग के कई UTXO (जैसे, 30 तक के प्रत्येक k के लिए 2k का एक UTXO) रखने के बहुत ही अकुशल हैक के माध्यम से है और ओरेकल से यह चुनवाना है कि कौन सा UTXO A को भेजना है और कौन सा B को।
- स्टेट का अभाव - UTXO को या तो खर्च किया जा सकता है या नहीं खर्च किया जा सकता है; बहु-चरणीय अनुबंधों या स्क्रिप्टों के लिए कोई अवसर नहीं है जो इससे परे किसी अन्य आंतरिक स्टेट को बनाए रखते हैं। यह बहु-स्तरीय विकल्प अनुबंध, विकेंद्रीकृत विनिमय प्रस्ताव या दो-चरण क्रिप्टोग्राफ़िक प्रतिबद्धता प्रोटोकॉल (सुरक्षित गणना पुरस्कारों के लिए आवश्यक) बनाना मुश्किल बना देता है। इसका मतलब यह भी है कि UTXO का उपयोग केवल साधारण, एकमुश्त अनुबंध बनाने के लिए किया जा सकता है और अधिक जटिल "स्टेटफ़ुल" अनुबंध, जैसे विकेंद्रीकृत संगठन, नहीं बनाए जा सकते हैं, और मेटा-प्रोटोकॉल्स को लागू करना कठिन बना देता है। बाइनरी स्टेट और वैल्यू-ब्लाइंडनेस का संयोजन यह भी दर्शाता है कि एक और महत्वपूर्ण एप्लिकेशन, निकासी सीमाएं, असंभव हैं।
- ब्लॉकचेन-अंधापन - UTXO, नॉन्स, टाइमस्टैम्प और पिछले ब्लॉक हैश जैसे ब्लॉकचेन डेटा से अनजान होते हैं। इससे जुए तथा कई अन्य श्रेणियों में अनुप्रयोगों की संख्या गंभीर रूप से सीमित हो जाती है, क्योंकि इससे स्क्रिप्टिंग भाषा को सियुडोरैंडम के संभावित मूल्यवान स्रोत से वंचित कर दिया जाता है।
इस प्रकार, हम शीर्ष पर उन्नत एप्लिकेशन के निर्माण के लिए तीन दृष्टिकोण देखते हैं क्रिप्टोकरेंसी का: शीर्ष पर स्क्रिप्टिंग का उपयोग करके एक नया ब्लॉकचेन बनाना बिटकॉइन, और बिटकॉइन के शीर्ष पर एक मेटा-प्रोटोकॉल का निर्माण। एक नया निर्माण ब्लॉकचेन फीचर सेट के निर्माण में असीमित स्वतंत्रता की अनुमति देता है, लेकिन विकास के समय, बूटस्ट्रैपिंग प्रयास और सुरक्षा की कीमत पर। स्क्रिप्टिंग का उपयोग करना कार्यान्वयन और मानकीकरण के लिए आसान है, लेकिन इसकी क्षमताएं बहुत सीमित हैं, और मेटा-प्रोटोकॉल, आसान होते हुए भी, मापनीयता से जुड़ी सम्सयाओं से प्रभावित हैं। एथेरियम के साथ, हम एक वैकल्पिक ढांचा बनाने का इरादा रखते हैं जो विकास की आसानी के साथ-साथ और भी मजबूत लाइट क्लाइंट गुणों में और भी अधिक लाभ प्रदान करता है, जबकि एक ही समय में एप्लिकेशन को आर्थिक वातावरण और ब्लॉकचेन सुरक्षा साझा करने की अनुमति देता है।
एथेरियम
एथेरियम का उद्देश्य विकेन्द्रीकृत एप्लिकेशन के निर्माण के लिए एक वैकल्पिक प्रोटोकॉल बनाना है, जो विभिन्न प्रकार के समझौतों को उपलब्ध कराता है, जिनके बारे में हमारा मानना है कि वे विकेन्द्रीकृत एप्लिकेशन के एक बड़े वर्ग के लिए बहुत उपयोगी होंगे, तथा उन स्थितियों पर विशेष जोर दिया जाएगा जहां तेजी से विकास का समय, छोटे और कम उपयोग किए जाने वाले एप्लिकेशन के लिए सुरक्षा, तथा विभिन्न एप्लिकेशन की बहुत कुशलतापूर्वक मिलकर काम करने की क्षमता महत्वपूर्ण है। एथेरियम ऐसा एक अमूर्त आधारभूत परत का निर्माण करके करता है: एक ब्लॉकचेन जिसमें ट्यूरिंग-पूर्ण प्रोग्रामिंग भाषा अंतर्निहित होती है, जो किसी को भी स्मार्ट अनुबंध और विकेन्द्रीकृत एप्लिकेशन लिखने की अनुमति देती है, जहां वे स्वामित्व, लेनदेन प्रारूप और स्टेट ट्रांज़िशन संबंधी कामों के लिए अपने स्वयं के मनमाने नियम बना सकते हैं। नेमक्वाइन का एक बुनियादी वर्जन दो पंक्तियों के कोड में लिखा जा सकता है, और अन्य प्रोटोकॉल जैसे मुद्राएं और प्रतिष्ठा वाले सिस्टम बीस पंक्तियों से कम मे बनाए जा सकते है। स्मार्ट अनुबंध, क्रिप्टोग्राफ़िक "बॉक्स" जिसमें मूल्य शामिल होता है तथा जो केवल कुछ निश्चित शर्तों के पूरा होने पर ही खुलता है, उसे भी प्लेटफॉर्म के शीर्ष पर बनाया जा सकता है, तथा इसमें बिटकॉइन स्क्रिप्टिंग की तुलना में कहीं अधिक शक्ति होती है, क्योंकि इसमें ट्यूरिंग-पूर्णता, मूल्य-जागरूकता, ब्लॉकचेन-जागरूकता और स्थिति की अतिरिक्त शक्तियां होती हैं।
एथेरियम खाते
एथेरियम में, स्थिति "खातों" नामक वस्तुओं से बनी होती है, प्रत्येक खाते का 20-बाइट पता होता है और स्थिति परिवर्तन सीधे खातों के बीच मूल्य और जानकारी के स्थानांतरण होते हैं। एक एथेरियम खाता चार क्षेत्रों में बाँटा गया होता है:
- नॉन्स, एक काउंटर जिसका उपयोग यह सुनिश्चित करने के लिए किया जाता है कि प्रत्येक लेनदेन को केवल एक बार संसाधित किया जा सकता है
- खाते का वर्तमान ईथर बैलेंस
- खाते का अनुबंध कोड, यदि मौजूद हो
- खाते का स्टोरेज (डिफ़ॉल्ट रूप से खाली)
"एथर" एथेरियम का मुख्य आंतरिक क्रिप्टो-ईंधन है, और इसका उपयोग लेनदेन शुल्क चुकाने के लिए किया जाता है। सामान्य तौर पर, दो प्रकार के खाते होते हैं: बाहरी स्वामित्व वाले खाते, जो निजी कुंजियों द्वारा नियंत्रित होते हैं, और अनुबंध खाते, जो उनके अनुबंध कोड द्वारा नियंत्रित होते हैं। बाहरी रूप से स्वामित्व वाले खाते में कोई कोड नहीं होता है, तथा कोई व्यक्ति लेनदेन बनाकर और उस पर हस्ताक्षर करके बाहरी स्वामित्व वाले खाते से संदेश भेज सकता है; अनुबंध खाते में, जब भी अनुबंध खाते को कोई संदेश प्राप्त होता है, तो उसका कोड चालू हो जाता है, जिससे वह आंतरिक स्टोरेज को पढ़ और लिख सकता है तथा अन्य संदेश भेज सकता है या बदले में अनुबंध बना सकता है।
ध्यान दें कि एथेरियम में "अनुबंधों" को ऐसी चीज़ के रूप में नहीं देखा जाना चाहिए जिसे "पूरा" किया जाना चाहिए या "अनुपालन" किया जाना चाहिए; बल्कि, वे "स्वायत्त एजेंट" की तरह हैं जो एथेरियम निष्पादन वातावरण के अंदर रहते हैं, हमेशा एक संदेश या लेनदेन द्वारा "पोक" किए जाने पर कोड के एक विशिष्ट टुकड़े को निष्पादित करते हैं, और अपने खुद के ईथर बैलेंस और अपने खुद के कुंजी/मूल्य स्टोर पर सीधा नियंत्रण रखते हैं ताकि लगातार चर का ट्रैक रखा जा सके।
संदेश और लेनदेन
"लेन-देन" शब्द का उपयोग एथेरियम में हस्ताक्षरित डेटा पैकेज को संदर्भित करने के लिए किया जाता है जो बाहरी स्वामित्व वाले खाते से भेजे जाने वाले संदेश को संग्रहीत करता है। लेन-देन में शामिल है:
- संदेश का प्राप्तकर्ता
- प्रेषक की पहचान करने वाला एक हस्ताक्षर
- प्रेषक से प्राप्तकर्ता को स्थानांतरित करने के लिए एथर की मात्रा
- एक वैकल्पिक डेटा फ़ील्ड
- एक
STARTGASमान, जो उन कम्प्यूटेशनल चरणों की अधिकतम संख्या का प्रतिनिधित्व करता है जिन्हें लेनदेन निष्पादन ले सकता है - एक
GASPRICEमान, जो प्रेषक द्वारा प्रति कम्प्यूटेशनल चरण में भुगतान किए जाने वाले शुल्क का प्रतिनिधित्व करता है
पहले तीन किसी भी क्रिप्टोकरेंसी में अपेक्षित मानक क्षेत्र हैं। डेटा फ़ील्ड में डिफ़ॉल्ट रूप से कोई काम नहीं होता है, लेकिन वर्चुअल मशीन में एक ऑपकोड होता है जिसका उपयोग करके एक अनुबंध डेटा तक पहुंच सकता है; एक उदाहरण के उपयोग के मामले के रूप में, अगर कोई अनुबंध एक ऑन-ब्लॉकचेन डोमेन पंजीकरण सेवा के रूप में काम कर रहा है, तो यह दो "फ़ील्ड" वाले डेटा के बारे में जानकारी देना चाह सकता है, पहला फ़ील्ड पंजीकरण के लिए एक डोमेन है और दूसरा फ़ील्ड इसे पंजीकृत करने के लिए IP एड्रेस है। अनुबंध संदेश डेटा से इन मूल्यों को पढ़ेगा और उन्हें उचित रूप से स्टोरेज में रखेगा।
STARTGAS और GASPRICE फ़ील्ड एथेरियम के सेवा-से-इनकार-रोधी मॉडल के लिए महत्वपूर्ण हैं। कोड में आकस्मिक या शत्रुतापूर्ण लंबे समय तक रहने वाले लूप या अन्य कम्प्यूटेशनल अपव्यय को रोकने के लिए, हर लेनदेन को एक सीमा निर्धारित करने की आवश्यकता होती है कि वह कोड निष्पादन के कितने कम्प्यूटेशनल स्टेप का उपयोग कर सकता है। गणना की मौलिक इकाई "गैस" है; आमतौर पर, एक कम्प्यूटेशनल स्टेप की लागत 1 गैस होती है, लेकिन कुछ संचालनों में गैस की मात्रा अधिक होती है क्योंकि वे अधिक कम्प्यूटेशनल रूप से महंगे होते हैं, या डेटा की मात्रा को बढ़ाते हैं जिसे स्टेट के हिस्से के रूप में स्टोर किया जाना चाहिए। लेन-देन डेटा में प्रत्येक बाइट के लिए 5 गैस का शुल्क भी है। शुल्क वाले सिस्टम का उद्देश्य हमलावर को उनके द्वारा उपभोग किए जाने वाले प्रत्येक संसाधन के लिए आनुपातिक रूप से भुगतान करने के लिए बाध्य करना है, जिसमें संगणन, बैंडविड्थ और स्टोरेज शामिल हैं; इसलिए, कोई भी लेनदेन जिसके कारण नेटवर्क इन संसाधनों में से किसी की भी अधिक मात्रा का उपभोग करता है, उस पर गैस शुल्क लगभग बढ़ोतरी के समानुपातिक होना चाहिए।
संदेश
अनुबंधों में अन्य अनुबंधों को "संदेश" भेजने की क्षमता होती है। संदेश आभासी वस्तुएँ हैं जो कभी क्रमबद्ध नहीं होती हैं और केवल एथेरियम निष्पादन वातावरण में मौजूद होती हैं। एक संदेश में शामिल है:
- संदेश भेजने वाला (अनिहित)
- संदेश का प्राप्तकर्ता
- संदेश के साथ स्थानांतरित करने के लिए ईथर की मात्रा
- एक वैकल्पिक डेटा फ़ील्ड
- एक
STARTGASमान
मूल रूप से, संदेश एक लेन-देन की तरह होता है, सिवाय इसके कि यह किसी बाहरी कर्ता द्वारा नहीं बल्कि एक अनुबंध द्वारा तैयार किया जाता है। एक संदेश तब उत्पन्न होता है जब वर्तमान में कोड निष्पादित करने वाला एक अनुबंध CALL ओपकोड निष्पादित करता है, जो एक संदेश उत्पन्न और निष्पादित करता है। लेन-देन की तरह, एक संदेश प्राप्तकर्ता के खाते में अपना कोड चलाता है। इस प्रकार, अनुबंधों के अन्य अनुबंधों के साथ ठीक उसी तरह संबंध हो सकते हैं जैसे बाहरी कर्ता के होते हैं।
ध्यान दें कि किसी लेन-देन या अनुबंध द्वारा आवंटित गैस भत्ता उस लेन-देन द्वारा खपत की गई कुल गैस और सभी उप-निष्पादनों पर लागू होता है। उदाहरण के लिए, अगर एक बाहरी कर्ता A, B को 1000 गैस के साथ एक लेनदेन भेजता है, और B C को संदेश भेजने से पहले 600 गैस का उपयोग करता है, और C का आंतरिक निष्पादन वापस लौटने से पहले 300 गैस का उपयोग करता है, तो B गैस समाप्त होने से पहले और 100 गैस खर्च कर सकता है।
एथेरियम स्टेट ट्रांज़िशन फ़ंक्शन
एथेरियम स्टेट ट्रांज़िशन फ़ंक्शन, APPLY(S,TX) -> S' को इस प्रकार परिभाषित किया जा सकता है:
- जाँच करें कि क्या लेनदेन अच्छी तरह से बनाया गया है (यानी, मानों की सही संख्या है), हस्ताक्षर मान्य है, और नॉन्स प्रेषक के खाते में नॉन्स से मेल खाता है। अगर नहीं, तो एक गड़बड़ी वापस करें।
- लेनदेन शुल्क की गणना
STARTGAS * GASPRICEके रूप में करें, और हस्ताक्षर से भेजने का पता निर्धारित करें। प्रेषक के खाते की शेष राशि से शुल्क घटाएं और प्रेषक की राशि बढ़ाएं। अगर खर्च करने के लिए पर्याप्त शेष राशि नहीं है, तो एक गड़बड़ी वापस करें। GAS = STARTGASको प्रारंभ करें, और लेनदेन में बाइट्स के भुगतान के लिए प्रति बाइट गैस की एक निश्चित मात्रा लें।- लेन-देन मूल्य को प्रेषक के खाते से प्राप्तकर्ता खाते में स्थानांतरित करें। अगर प्राप्तकर्ता खाता अभी तक मौजूद नहीं है, तो उसे बनाएँ। अगर प्राप्तकर्ता खाता एक अनुबंध है, तो अनुबंध का कोड या तो पूरा होने तक या जब तक निष्पादन गैस समाप्त नहीं हो जाता, तब तक चलाएं।
- अगर मूल्य अंतरण विफल हो जाता है, क्योंकि प्रेषक के पास पर्याप्त पैसा नहीं था, या कोड निष्पादन गैस से बाहर हो गया, तो शुल्क के भुगतान को छोड़कर स्टेट से जुड़े सभी बदलावों को वापस करें, और शुल्क को माईनर के खाते में जोड़ें।
- नहीं तो, शेष गैस के लिए शुल्क भेजने वाले को वापस कर दें और गैस की खपत के लिए भुगतान शुल्क माईनर को भेज दें।
उदाहरण के लिए, मान लीजिए कि अनुबंध का कोड है:
if !self.storage[calldataload(0)]:
self.storage[calldataload(0)] = calldataload(32)
ध्यान दें कि असल में अनुबंध कोड निम्न-स्तरीय EVM कोड में लिखा जाता है; यह उदाहरण स्पष्टता के लिए हमारी उच्च-स्तरीय भाषाओं में से एक, सर्पेंट में लिखा गया है, और इसे EVM कोड में इकट्ठा किया जा सकता है। मान लीजिए कि अनुबंध का स्टोरेज खाली शुरू होता है, और एक लेनदेन 10 ईथर मूल्य, 2000 गैस, 0.001 ईथर गैसप्राइस, और 64 बाइट डेटा के साथ भेजा जाता है, जिसमें बाइट्स 0-31 संख्या 2 का प्रतिनिधित्व करते हैं और बाइट्स 32-63 स्ट्रिंग CHARLIE का प्रतिनिधित्व करते हैं। इस मामले में स्टेट ट्रांज़िशन फ़ंक्शन के लिए प्रक्रिया निम्नानुसार है:
- जाँच करें कि लेनदेन मान्य और सही तरीके से बनाया गया है।
- जाँच करें कि लेनदेन भेजने वाले के पास कम से कम 2000 * 0.001 = 2 ईथर है। अगर ऐसा है, तो भेजने वाले के खाते से 2 ईथर घटा दें।
- गैस = 2000 शुरू करें; यह मानते हुए कि लेनदेन 170 बाइट लंबा है और बाइट-शुल्क 5 है, 850 घटाएं ताकि 1150 गैस बचा रहे।
- भेजने वाले के खाते से 10 और ईथर घटाएं, और इसे अनुबंध के खाते में जोड़ें।
- कोड चलाएं। इस मामले में, यह सरल है: यह जांचता है कि अनुबंध का इंडेक्स
2पर स्टोरेज उपयोग किया गया है या नहीं, यह नोटिस करता है कि नहीं किया गया है, और इसलिए यह इंडेक्स2पर स्टोरेज कोCHARLIEमान पर सेट करता है। मान लीजिए कि इसमें 187 गैस लगता है, तो शेष गैस की मात्रा 1150 - 187 = 963 है - भेजने वाले के खाते में 963 * 0.001 = 0.963 ईथर वापस जोड़ें, और परिणामी स्थिति लौटाएं।
यदि लेनदेन के प्राप्तकर्ता छोर पर कोई अनुबंध नहीं था, तो कुल लेनदेन शुल्क केवल प्रदान किए गए GASPRICE को बाइट्स में लेनदेन की लंबाई से गुणा करने के बराबर होगा, और लेनदेन के साथ भेजा गया डेटा अप्रासंगिक होगा।
ध्यान दें कि संदेश वापसी के संदर्भ में लेनदेन के समान काम करते हैं: अगर कोई संदेश निष्पादन गैस से बाहर हो जाता है, तो उस संदेश का निष्पादन, और उस निष्पादन द्वारा ट्रिगर किए गए अन्य सभी निष्पादन वापस हो जाते हैं, लेकिन मूल निष्पादन को वापस होने की आवश्यकता नहीं होती। इसका मतलब है कि एक अनुबंध के लिए दूसरे अनुबंध को कॉल करना "सुरक्षित" है, क्योंकि अगर A, B को G गैस के साथ कॉल करता है तो A के निष्पादन को अधिकतम G गैस खोने की गारंटी है। अंत में, ध्यान दें कि एक ओपकोड, CREATE है, जो एक अनुबंध बनाता है; इसकी निष्पादन यांत्रिकी आम तौर पर CALL के समान है, इस अपवाद के साथ कि निष्पादन का आउटपुट एक नए बनाए गए अनुबंध के कोड को निर्धारित करता है।
कोड निष्पादन
एथेरियम अनुबंधों में कोड एक निम्न-स्तरीय, स्टैक-आधारित बाइटकोड भाषा में लिखा जाता है, जिसे "एथेरियम वर्चुअल मशीन कोड" या "EVM कोड" के रूप में जाना जाता है। कोड बाइट्स की एक सीरीज़ से बना होता है, जहां प्रत्येक बाइट एक ऑपरेशन का प्रतिनिधित्व करता है। सामान्य तौर पर, कोड निष्पादन एक अनंत लूप है जिसमें वर्तमान प्रोग्राम काउंटर (जो शून्य से शुरू होता है) पर ऑपरेशन को बार-बार करना और फिर प्रोग्राम काउंटर को एक से बढ़ाना शामिल है, जब तक कि कोड का अंत नहीं हो जाता या कोई त्रुटि या STOP या RETURN निर्देश का पता नहीं चल जाता। ऑपरेशंस के पास डेटा स्टोर करने के लिए तीन प्रकार के स्थान तक पहुंच होती है:
- स्टैक, एक लास्ट-इन-फर्स्ट-आउट कंटेनर जिसमें मानों को पुश और पॉप किया जा सकता है
- मेमोरी, एक असीम रूप से विस्तार योग्य बाइट ऐरे
- अनुबंध का दीर्घकालिक स्टोरेज, एक की/वैल्यू स्टोर। स्टैक और मेमोरी के विपरीत, जो कंप्यूटेशन समाप्त होने के बाद रीसेट हो जाते हैं, स्टोरेज लंबे समय तक बना रहता है।
कोड आने वाले संदेश के मूल्य, भेजने वाले और डेटा के साथ-साथ ब्लॉक हेडर डेटा तक भी पहुंच सकता है, और कोड आउटपुट के रूप में डेटा की एक बाइट ऐरे भी लौटा सकता है।
EVM कोड के औपचारिक निष्पादन मॉडल आश्चर्यजनक रूप से सरल है। जब एथेरियम वर्चुअल मशीन चल रही हो, तो इसकी पूर्ण कम्प्यूटेशनल स्टेट को टपल (block_state, transaction, message, code, memory, stack, pc, gas) द्वारा परिभाषित किया जा सकता है, जहां block_state वैश्विक स्टेट है जिसमें सभी खाते शामिल हैं और इसमें बैलेंस और स्टोरेज शामिल हैं। निष्पादन के प्रत्येक दौर की शुरुआत में, वर्तमान निर्देश code के pcवें बाइट को लेकर पाया जाता है (या 0 यदि pc >= len(code)), और प्रत्येक निर्देश की अपनी परिभाषा होती है कि यह टपल को कैसे प्रभावित करता है। उदाहरण के लिए, ADD स्टैक से दो आइटम पॉप करता है और उनके योग को पुश करता है, gas को 1 से कम करता है और pc को 1 से बढ़ाता है, और SSTORE स्टैक से शीर्ष दो आइटम पॉप करता है और दूसरे आइटम को अनुबंध के स्टोरेज में पहले आइटम द्वारा निर्दिष्ट इंडेक्स पर डालता है। हालांकि, जस्ट-इन-टाइम कंपाइलेशन की मदद से एथेरियम वर्चुअल मशीन निष्पादन को अनुकूलित करने के कई तरीके हैं, एथेरियम का एक बुनियादी कार्यान्वयन कोड की कुछ सौ पंक्तियों में किया जा सकता है।
ब्लॉकचेन और माइनिंग
एथेरियम ब्लॉकचेन कई मायनों में बिटकॉइन ब्लॉकचेन के समान है, हालांकि इसमें कुछ अंतर हैं। ब्लॉकचेन आर्किटेक्चर के संबंध में एथेरियम और बिटकॉइन के बीच मुख्य अंतर यह है कि बिटकॉइन के विपरीत, एथेरियम ब्लॉक में लेनदेन सूची और सबसे हाल की स्थिति दोनों की एक कॉपी होती है। इसके अलावा, दो अन्य मूल्य, ब्लॉक संख्या और कठिनाई, भी ब्लॉक में संग्रहीत किए जाते हैं। एथेरियम में बुनियादी ब्लॉक सत्यापन एल्गोरिथ्म निम्नानुसार है:
- जांचें कि संदर्भित पिछला ब्लॉक मौजूद है और मान्य है।
- जांचें कि ब्लॉक का टाइमस्टैम्प संदर्भित पिछले ब्लॉक से अधिक है और भविष्य में 15 मिनट से कम है
- जांचें कि ब्लॉक संख्या, कठिनाई, लेनदेन रूट, अंकल रूट और गैस सीमा (अलग-अलग निम्न-स्तरीय एथेरियम-विशिष्ट अवधारणाएं) मान्य हैं।
- जाँचें कि ब्लॉक पर काम का सबूत मान्य है या नहीं।
- मान लें
S[0]पिछले ब्लॉक के अंत में स्टेट है। - मान लें
TXब्लॉक की लेनदेन सूची है, जिसमेंnलेनदेन हैं।0...n-1में सभीiके लिए,S[i+1] = APPLY(S[i],TX[i])सेट करें। यदि कोई भी अनुप्रयोग त्रुटि लौटाता है, या यदि इस बिंदु तक ब्लॉक में खपत की गई कुल गैसGASLIMITसे अधिक हो जाती है, तो एक त्रुटि लौटाएं। - मान लें
S_FINALS[n]है, लेकिन माइनर को भुगतान किए गए ब्लॉक पुरस्कार को जोड़कर। - जाँच करें कि क्या स्टेट
S_FINALका मर्कल ट्री रूट ब्लॉक हेडर में प्रदान किए गए अंतिम स्टेट रूट के बराबर है। अगर ऐसा है, तो ब्लॉक मान्य है; नहीं तो, यह मान्य नहीं है।
पहली नज़र में दृष्टिकोण बहुत ज़्यादा अक्षम लग सकता है, क्योंकि इसे प्रत्येक ब्लॉक के साथ पूरी स्थिति को संग्रहीत करने की आवश्यकता होती है, लेकिन वास्तविकता में दक्षता बिटकॉइन के समान होनी चाहिए। कारण यह है कि स्थिति ट्री संरचना में संग्रहीत की जाती है, और प्रत्येक ब्लॉक के बाद ट्री का केवल एक छोटा हिस्सा बदलने की आवश्यकता होती है। इस प्रकार, सामान्य तौर पर, दो आसन्न ब्लॉकों के बीच पेड़ का विशाल बहुमत समान होना चाहिए, और इसलिए डेटा को एक बार संग्रहीत किया जा सकता है और पॉइंटर्स (यानी, सबट्री के हैश) का उपयोग करके दो बार संदर्भित किया जा सकता है। इस काम को पूरा करने के लिए एक विशेष प्रकार के ट्री "पेट्रिसिया ट्री" का उपयोग किया जाता है, जिसमें मेरकल वृक्ष की अवधारणा में बदलाव किया गया है, जिससे नोड्स को कुशलता से जोड़ा और हटाया जा सके, न केवल बदला जा सके। इसके अतिरिक्त, क्योंकि स्टेट की सभी जानकारी अंतिम ब्लॉक का हिस्सा है, इसलिए पूरे ब्लॉकचेन इतिहास को संग्रहीत करने की कोई आवश्यकता नहीं है - एक रणनीति जो, अगर इसे बिटकॉइन पर लागू किया जा सकता है, तो अंतरिक्ष में 5-20x बचत प्रदान करने के लिए गणना की जा सकती है।
एक आम तौर पर पूछा जाने वाला प्रश्न भौतिक हार्डवेयर के संदर्भ में अनुबंध कोड को "कहाँ" निष्पादित किया जाता है। इसका एक सरल उत्तर है: अनुबंध कोड को निष्पादित करने की प्रक्रिया स्टेट ट्रांजिशन फ़ंक्शन की परिभाषा का हिस्सा है, जो ब्लॉक सत्यापन एल्गोरिथ्म का हिस्सा है, इसलिए यदि कोई लेनदेन ब्लॉक B में जोड़ा जाता है, तो उस लेनदेन से उत्पन्न कोड निष्पादन उन सभी नोड्स द्वारा, अभी और भविष्य में, निष्पादित किया जाएगा जो ब्लॉक B को डाउनलोड और सत्यापित करते हैं।
अनुप्रयोग
आम तौर पर, एथेरियम के तीन प्रकार के एप्लिकेशन होते हैं। पहली श्रेणी वित्तीय एप्लिकेशन है, जिससे उपयोगकर्ताओं को अपने पैसे का उपयोग करके अनुबंधों का प्रबंधन करने और उनमें प्रवेश करने के लिए अधिक बेहतरीन तरीके प्रदान करती है। इसमें उप-मुद्राएं, वित्तीय डेरिवेटिव, हेजिंग अनुबंध, बचत वॉलेट, वसीयत और अंततः पूर्ण पैमाने के रोज़गार संबंधी अनुबंधों के कुछ वर्ग भी शामिल हैं। दूसरी श्रेणी अर्ध-वित्तीय अनुप्रयोगों की है, जहां पैसा शामिल है लेकिन जो किया जा रहा है उसका एक भारी गैर-मौद्रिक पक्ष भी है; एक सही उदाहरण कम्प्यूटेशनल समस्याओं के समाधान के लिए खुद लागू होने वाले इनाम हैं। आखिर में, ऐसे एप्लिकेशन हैं जैसे ऑनलाइन मतदान और विकेंद्रीकृत शासन जो बिल्कुल भी वित्तीय नहीं हैं।
टोकन सिस्टम
ऑन-ब्लॉकचेन टोकन सिस्टम के कई एप्लिकेशन हैं जो USD या सोने जैसी संपत्तियों का प्रतिनिधित्व करने वाली उप-मुद्राओं से लेकर कंपनी के स्टॉक, स्मार्ट संपत्ति को दर्शाने वाले व्यक्तिगत टोकन, सुरक्षित अप्रतिकृत कूपन, और यहां तक कि पारंपरिक मूल्य से बिना किसी संबंध के टोकन सिस्टम तक फैले हुए हैं, जिनका उपयोग प्रोत्साहन के लिए पॉइंट सिस्टम के रूप में किया जाता है। एथेरियम में टोकन सिस्टम को लागू करना आश्चर्यजनक रूप से आसान है। समझने वाली मुख्य बात यह है कि एक मुद्रा, या टोकन सिस्टम, मूल रूप से एक डेटाबेस है जिसमें एक ऑपरेशन है: A से X इकाइयाँ घटाएँ और B को X इकाइयाँ दें, इस शर्त के साथ कि (i) लेनदेन से पहले A के पास कम से कम X इकाइयाँ थीं और (2) लेनदेन A द्वारा स्वीकृत है। एक टोकन सिस्टम को लागू करने के लिए इस तर्क को एक अनुबंध में लागू करना ही काफ़ी है।
सर्पेंट में एक टोकन सिस्टम को लागू करने का बुनियादी कोड इस प्रकार दिखता है:
def send(to, value):
if self.storage[msg.sender] >= value:
self.storage[msg.sender] = self.storage[msg.sender] - value
self.storage[to] = self.storage[to] + value
यह अनिवार्य रूप से इस दस्तावेज़ में ऊपर वर्णित "बैंकिंग सिस्टम" स्टेट ट्रांजीशन फंक्शन का एक शाब्दिक कार्यान्वयन है। कोड की कुछ अतिरिक्त पंक्तियाँ जोड़ने की आवश्यकता है, ताकि पहले स्थान पर मुद्रा इकाइयों के वितरण के प्रारंभिक चरण और कुछ अन्य सीमांत मामलों के लिए प्रावधान किया जा सके, और आदर्श रूप से एक फ़ंक्शन जोड़ा जाएगा जो अन्य अनुबंधों को किसी पते के शेष की जांच करने की अनुमति देगा। हालांकि, बस इतना ही है। सैद्धांतिक रूप से, उप-करेंसी के रूप में कार्य करने वाले एथेरियम-आधारित टोकन सिस्टम में संभावित रूप से एक और महत्वपूर्ण विशेषता शामिल हो सकती है जो ऑन-चेन बिटकॉइन-आधारित मेटा-करेंसी में नहीं होती है: उस करेंसी में सीधे लेनदेन शुल्क का भुगतान करने की क्षमता। इसे इस तरह से लागू किया जाएगा कि अनुबंध एक ईथर शेष बनाए रखेगा जिससे वह शुल्क का भुगतान करने के लिए उपयोग किए गए ईथर को प्रेषक को वापस कर देगा, और यह शुल्क में ली जाने वाली आंतरिक मुद्रा इकाइयों को एकत्र करके और उन्हें एक निरंतर चलने वाली नीलामी में फिर से बेचकर इस शेष को दोबारा भर देगा। इस प्रकार उपयोगकर्ताओं को अपने खातों को ईथर के साथ "सक्रिय" करने की आवश्यकता होगी, लेकिन एक बार ईथर वहां होने के बाद यह फिर से उपयोग योग्य होगा, क्योंकि अनुबंध हर बार इसे वापस कर देगा।
वित्तीय डेरिवेटिव और स्थिर-मूल्य वाली करेंसियां
वित्तीय डेरिवेटिव "स्मार्ट अनुबंध" के सबसे आम एप्लिकेशन हैं, और कोड में लागू करने के लिए सबसे सरल में से एक हैं। वित्तीय अनुबंधों को लागू करने में मुख्य चुनौती यह है कि उनमें से ज़्यादातर को एक बाहरी मूल्य टिकर के संदर्भ की आवश्यकता होती है; उदाहरण के लिए, एक बहुत वांछनीय एप्लिकेशन एक स्मार्ट अनुबंध है जो अमेरिकी डॉलर के संबंध में ईथर (या किसी अन्य क्रिप्टोकरेंसी) की अस्थिरता के खिलाफ बचाव करता है, लेकिन ऐसा करने के लिए अनुबंध को यह जानने की आवश्यकता होती है कि ETH/USD का मूल्य क्या है। ऐसा करने का सबसे सरल तरीका एक विशिष्ट पार्टी (जैसे, NASDAQ) द्वारा बनाए गए एक "डेटा फ़ीड" अनुबंध के माध्यम से है, जिसे इस तरह से डिज़ाइन किया गया है कि उस पार्टी के पास आवश्यकतानुसार अनुबंध को अपडेट करने की क्षमता हो, और एक इंटरफ़ेस प्रदान करता है जो अन्य अनुबंधों को उस अनुबंध को एक संदेश भेजने और एक प्रतिक्रिया वापस पाने की अनुमति देता है जो मूल्य प्रदान करती है।
उस महत्वपूर्ण घटक को देखते हुए, हेजिंग अनुबंध इस प्रकार दिखेगा:
- पार्टी A के 1000 ईथर इनपुट करने की प्रतीक्षा करें।
- पार्टी B के 1000 ईथर इनपुट करने की प्रतीक्षा करें।
- डेटा फीड अनुबंध से पूछताछ करके गणना किए गए 1000 ईथर के USD मूल्य को स्टोरेज में रिकॉर्ड करें, मान लें कि यह $x है।
- 30 दिनों के बाद, A या B को अनुबंध को "फिर से चालू" करने की अनुमति दें ताकि A को $x मूल्य का ईथर (नई कीमत प्राप्त करने के लिए डेटा फ़ीड अनुबंध से फिर से पूछताछ करके गणना की गई) और शेष B को भेजा जा सके।
ऐसे अनुबंध की क्रिप्टो-वाणिज्य में महत्वपूर्ण संभावना होगी। क्रिप्टोकरेंसी के बारे में बताई जाने वाली मुख्य समस्याओं में से एक यह तथ्य है कि यह अस्थिर है; हालांकि, कई उपयोगकर्ता और व्यापारी क्रिप्टोग्राफिक संपत्तियों के साथ व्यवहार करने की सुरक्षा और सुविधा चाहते हैं, वे एक ही दिन में अपने फ़ंड के मूल्य का 23% खोने की संभावना का सामना नहीं करना चाहते। अब तक, सबसे अधिक प्रस्तावित समाधान जारीकर्ता-समर्थित संपत्तियां रही हैं; विचार यह है कि एक जारीकर्ता एक उप-करेंसी बनाता है जिसमें उन्हें इकाइयों को जारी करने और रद्द करने का अधिकार होता है, और किसी भी व्यक्ति को करेंसी की एक इकाई प्रदान करता है जो उन्हें (ऑफ़लाइन) एक निर्दिष्ट अंतर्निहित संपत्ति (जैसे, सोना, USD) की एक इकाई प्रदान करता है। फिर जारीकर्ता किसी भी व्यक्ति को अंतर्निहित संपत्ति की एक इकाई प्रदान करने का वादा करता है जो क्रिप्टो-संपत्ति की एक इकाई वापस भेजता है। यह तरीका किसी भी गैर-क्रिप्टोग्राफिक संपत्ति को एक क्रिप्टोग्राफिक संपत्ति में "बेहतरीन" करने की अनुमति देता है, बशर्ते कि जारीकर्ता पर भरोसा किया जा सके।
व्यवहार में, हालांकि, जारीकर्ता हमेशा विश्वसनीय नहीं होते हैं, और कुछ मामलों में बैंकिंग बुनियादी ढांचा बहुत कमजोर है, या ऐसी सेवाओं के मौजूद होने के लिए बहुत प्रतिकूल है। वित्तीय डेरिवेटिव एक विकल्प प्रदान करते हैं। यहां, एक संपत्ति का समर्थन करने के लिए धन प्रदान करने वाले एक एकल जारीकर्ता के बजाय, सट्टेबाजों का एक विकेंद्रीकृत बाजार, जो यह शर्त लगाता है कि एक क्रिप्टोग्राफिक संदर्भ संपत्ति (जैसे, ETH) की कीमत बढ़ेगी, वह भूमिका निभाता है। जारीकर्ताओं के विपरीत, सट्टेबाजों के पास सौदे के अपने हिस्से पर चूक करने का कोई विकल्प नहीं होता है, क्योंकि हेजिंग अनुबंध उनके फ़ंड को एस्क्रो में रखता है। ध्यान दें कि यह दृष्टिकोण पूरी तरह से विकेंद्रीकृत नहीं है, क्योंकि मूल्य टिकर प्रदान करने के लिए अब भी एक विश्वसनीय स्रोत की आवश्यकता होती है, हालांकि तर्क दिया जा सकता है कि यह अब भी बुनियादी ढांचे की आवश्यकताओं को कम करने के मामले में एक बड़ा सुधार है (जारीकर्ता होने के विपरीत, मूल्य फ़ीड जारी करने के लिए किसी लाइसेंस की आवश्यकता नहीं होती है और इसे शायद मुक्त भाषण के रूप में वर्गीकृत किया जा सकता है) और धोखाधड़ी की संभावना को कम करता है।
पहचान और प्रतिष्ठा प्रणाली
सभी की सबसे पहली वैकल्पिक क्रिप्टोकरेंसी, नेमक्वाइन (opens in a new tab) ने एक नाम पंजीकरण प्रणाली प्रदान करने के लिए एक बिटकॉइन-जैसे ब्लॉकचेन का उपयोग करने का प्रयास किया, जहां यूज़र अपने नामों को अन्य डेटा के साथ एक सार्वजनिक डेटाबेस में पंजीकृत कर सकते हैं। प्रमुख उद्धृत उपयोग मामला एक DNS (opens in a new tab) प्रणाली के लिए है, जो "bitcoin.org" (या, नेमक्वाइन के मामले में, "bitcoin.bit") जैसे डोमेन नामों को एक IP पते पर मैप करता है। अन्य उपयोग मामलों में ईमेल प्रमाणीकरण और संभावित रूप से अधिक उन्नत प्रतिष्ठा प्रणालियाँ शामिल हैं। यहाँ एथेरियम पर नेमक्वाइन जैसी नाम पंजीकरण प्रणाली प्रदान करने के लिए बुनियादी अनुबंध है:
def register(name, value):
if !self.storage[name]:
self.storage[name] = value
अनुबंध बहुत सरल है; यह एथेरियम नेटवर्क के अंदर एक डेटाबेस है जिसमें कुछ जोड़ा तो जा सकता है, लेकिन संशोधित किया या हटाया नहीं जा सकता। कोई भी किसी मूल्य वाला एक नाम पंजीकृत कर सकता है, और वह पंजीकरण तब हमेशा के लिए रहता है। एक अधिक परिष्कृत नाम पंजीकरण अनुबंध में एक "फ़ंक्शन क्लॉज" भी होगा जो अन्य अनुबंधों को इससे क्वेरी करने की अनुमति देता है, साथ ही एक नाम के "मालिक" (यानी, पहले पंजीकरणकर्ता) के लिए डेटा बदलने या स्वामित्व स्थानांतरित करने का एक तंत्र भी होगा। कोई भी इसके ऊपर प्रतिष्ठा और विश्वास-का-वेब कार्यक्षमता जोड़ सकता है।
विकेन्द्रीकृत फ़ाइल स्टोरेज
पिछले कुछ वर्षों में, कई लोकप्रिय ऑनलाइन फ़ाइल भंडारण स्टार्टअप सामने आए हैं, जिनमें सबसे प्रमुख ड्रॉपबॉक्स है, जो यूज़र को अपनी हार्ड ड्राइव का बैकअप अपलोड करने और सेवा को बैकअप संग्रहित करने और यूज़र को मासिक शुल्क के बदले में इसे एक्सेस करने की अनुमति देता है। हालांकि, इस बिंदु पर फ़ाइल संग्रहण बाजार कभी-कभी अपेक्षाकृत अकुशल होता है; विभिन्न मौजूदा समाधानों पर एक सरसरी नज़र से पता चलता है कि, विशेष रूप से "अनकैनी वैली" 20-200 GB स्तर पर जहां न तो मुफ्त कोटा और न ही उद्यम-स्तरीय छूट लागू होती है, मुख्यधारा के फ़ाइल स्टोरेज लागत के लिए मासिक कीमतें ऐसी हैं कि आप एक महीने में पूरी हार्ड ड्राइव की लागत से अधिक का भुगतान कर रहे हैं। एथेरियम अनुबंध एक विकेंद्रीकृत फ़ाइल भंडारण पारिस्थितिकी तंत्र के विकास की अनुमति दे सकते हैं, जहां व्यक्तिगत यूज़र अपनी खुद की हार्ड ड्राइव को किराए पर देकर कम मात्रा में पैसे कमा सकते हैं और अप्रयुक्त स्थान का उपयोग फ़ाइल भंडारण की लागत को और कम करने के लिए किया जा सकता है।
ऐसे उपकरण का मुख्य आधार टुकड़ा वह होगा जिसे हमने "विकेंद्रीकृत ड्रॉपबॉक्स अनुबंध" कहा है। यह अनुबंध इस प्रकार काम करता है। सबसे पहले, वांछित डेटा को ब्लॉकों में विभाजित किया जाता है, निजता के लिए प्रत्येक ब्लॉक को एन्क्रिप्ट किया जाता है और उसमें से एक मर्कल ट्री बनाया जाता है। फिर एक अनुबंध बनाया जाता है जिसमें नियम यह है कि, हर N ब्लॉक के बाद, अनुबंध मर्कल ट्री में एक रैंडम इंडेक्स चुनेगा (पिछले ब्लॉक हैश का उपयोग करके, जिसे अनुबंध कोड से एक्सेस किया जा सकता है, रैंडमनेस के स्रोत के रूप में), और ट्री में उस विशेष इंडेक्स पर ब्लॉक के स्वामित्व के सरलीकृत भुगतान सत्यापन जैसे प्रमाण के साथ लेनदेन की आपूर्ति करने वाली पहली इकाई को X ईथर देगा। जब कोई यूज़र अपनी फ़ाइल को फिर से डाउनलोड करना चाहता है, तो वे फ़ाइल को पुनर्प्राप्त करने के लिए एक माइक्रोपेमेंट चैनल प्रोटोकॉल (जैसे, प्रति 32 किलोबाइट पर 1 स्ज़ाबो का भुगतान) का उपयोग कर सकते हैं; सबसे अधिक शुल्क-कुशल तरीका यह है कि भुगतानकर्ता अंत तक लेनदेन प्रकाशित न करे, इसके बजाय हर 32 किलोबाइट के बाद लेनदेन को उसी नॉन्स के साथ थोड़े अधिक आकर्षक लेनदेन से बदल दे।
प्रोटोकॉल की एक महत्वपूर्ण विशेषता यह है कि, हालांकि ऐसा लग सकता है कि कोई कई रैंडम नोड्स पर भरोसा कर रहा है कि वे फ़ाइल को भूलने का निर्णय नहीं लेंगे, कोई भी इस जोखिम को गुप्त साझाकरण के माध्यम से फ़ाइल को कई टुकड़ों में विभाजित करके और अनुबंधों पर नज़र रखकर इस जोखिम को लगभग शून्य तक कम किया जा सकता है कि प्रत्येक टुकड़ा अभी भी किसी नोड के कब्जे में है। यदि कोई अनुबंध अभी भी पैसे का भुगतान कर रहा है, तो यह एक क्रिप्टोग्राफिक प्रमाण प्रदान करता है कि कोई अभी भी फ़ाइल को संग्रहित कर रहा है।
विकेन्द्रीकृत स्वायत्त संगठन
एक "विकेंद्रीकृत स्वायत्त संगठन" की सामान्य अवधारणा एक आभासी इकाई की है जिसमें सदस्यों या शेयरधारकों का एक निश्चित समूह होता है, जो शायद 67% बहुमत के साथ, इकाई के फंड खर्च करने और उसके कोड को संशोधित करने का अधिकार रखता है। सदस्य सामूहिक रूप से यह तय करेंगे कि संगठन को अपने फंड का आवंटन कैसे करना चाहिए। एक डीएओ के फंड आवंटित करने के तरीके इनाम, वेतन से लेकर काम को पुरस्कृत करने के लिए आंतरिक मुद्रा जैसे अधिक अजीब तंत्रों तक हो सकते हैं। यह अनिवार्य रूप से एक पारंपरिक कंपनी या गैर-लाभकारी संस्था के कानूनी पहलुओं को दोहराता है लेकिन केवल प्रवर्तन के लिए क्रिप्टोग्राफिक ब्लॉकचेन तकनीक का उपयोग करता है। अब तक डीएओ के बारे में बहुत सी बातें लाभांश प्राप्त करने वाले शेयरधारकों और व्यापार योग्य शेयरों वाले "विकेंद्रीकृत स्वायत्त निगम" (DAC) के "पूंजीवादी" मॉडल के बारे में रही हैं; एक विकल्प, जिसे शायद "विकेंद्रीकृत स्वायत्त समुदाय" के रूप में वर्णित किया जा सकता है, में सभी सदस्यों की निर्णय लेने में समान भागीदारी होगी और किसी सदस्य को जोड़ने या हटाने के लिए 67% मौजूदा सदस्यों की सहमति की आवश्यकता होगी। यह आवश्यकता कि एक व्यक्ति की केवल एक सदस्यता हो सकती है, तब समूह द्वारा सामूहिक रूप से लागू की जानी होगी।
एक डाओ को कोड करने के लिए एक सामान्य रूपरेखा इस प्रकार है। सबसे सरल डिज़ाइन बस एक स्व-संशोधित कोड का टुकड़ा है जो बदल जाता है यदि दो-तिहाई सदस्य एक परिवर्तन पर सहमत होते हैं। हालांकि सैद्धांतिक रूप से कोड अपरिवर्तनीय होता है, कोई भी इससे आसानी से बच सकता है और कोड के टुकड़ों को अलग-अलग अनुबंधों में रखकर, और जिन अनुबंधों को कॉल करना है उनके पते को संशोधन योग्य स्टोरेज में संग्रहित करके वास्तविक परिवर्तनशीलता प्राप्त कर सकता है। ऐसे डाओ अनुबंध के एक सरल कार्यान्वयन में, तीन प्रकार के लेनदेन होंगे, जो लेनदेन में प्रदान किए गए डेटा द्वारा अलग किए जाते हैं:
- स्टोरेज इंडेक्स
Kपर पते कोVमान में बदलने के लिए इंडेक्सiके साथ एक प्रस्ताव पंजीकृत करने के लिए[0,i,K,V] - प्रस्ताव
iके पक्ष में एक वोट पंजीकृत करने के लिए[1,i] - यदि पर्याप्त वोट किए गए हैं तो प्रस्ताव
iको अंतिम रूप देने के लिए[2,i]
अनुबंध में तब इनमें से प्रत्येक के लिए खंड होंगे। यह सभी खुले भंडारण परिवर्तनों का एक रिकॉर्ड बनाए रखेगा, साथ ही इसकी एक सूची भी रखेगा कि उनके लिए किसने वोट दिया। इसमें सभी सदस्यों की एक सूची भी होगी। जब कोई भी भंडारण परिवर्तन दो-तिहाई सदस्यों के वोट तक पहुंच जाता है, तो एक अंतिम लेनदेन परिवर्तन को निष्पादित कर सकता है। एक अधिक परिष्कृत कंकाल में लेनदेन भेजने, सदस्यों को जोड़ने और सदस्यों को हटाने जैसी सुविधाओं के लिए अंतर्निहित मतदान क्षमता भी होगी, और यहां तक कि लिक्विड डेमोक्रेसी (opens in a new tab)-शैली के वोट प्रतिनिधिमंडल (यानी, कोई भी किसी को अपने लिए वोट करने के लिए सौंप सकता है, और सौंपना सकर्मक है इसलिए यदि A, B को सौंपता है और B, C को सौंपता है तो C, A का वोट निर्धारित करता है) के लिए भी प्रावधान कर सकता है। यह डिज़ाइन डीएओ को एक विकेंद्रीकृत समुदाय के रूप में जैविक रूप से विकसित होने देगा, लोगों को अंततः यह फ़िल्टर करने का कार्य विशेषज्ञों को सौंपने देगा कि कौन सदस्य है, हालांकि "वर्तमान प्रणाली" के विपरीत विशेषज्ञ समय के साथ आसानी से अस्तित्व में आ और जा सकते हैं क्योंकि व्यक्तिगत समुदाय के सदस्य अपने संरेखण बदलते हैं।
एक वैकल्पिक मॉडल विकेंद्रीकृत निगम के लिए है, जहां किसी भी खाते के पास शून्य या उससे अधिक शेयर हो सकते हैं, और निर्णय लेने के लिए दो तिहाई शेयरों की आवश्यकता होती है। एक पूर्ण ढांचे में परिसंपत्ति प्रबंधन कार्यक्षमता, शेयर खरीदने या बेचने का प्रस्ताव देने की क्षमता और प्रस्तावों को स्वीकार करने की क्षमता शामिल होगी (अनुबंध के अंदर एक आदेश-मिलान तंत्र के साथ, यदि संभव हो)। प्रतिनिधि का अस्तित्व भी लिक्विड डेमोक्रेसी-शैली में होगा, "बोर्ड ऑफ डायरेक्टर्स" की अवधारणा का सामान्यीकरण करते हुए।
अतिरिक्त अनुप्रयोग
1. बचत वॉलेट**। मान लीजिए कि एलिस अपने फंड को सुरक्षित रखना चाहती है, लेकिन चिंतित है कि वह अपनी निजी चाबी खो देगी या कोई उसे हैक कर लेगा। वह ईथर को बॉब, एक बैंक के साथ एक अनुबंध में डालती है, जो इस प्रकार है:
- एलिस अकेले प्रतिदिन अधिकतम 1% फंड निकाल सकती है।
- बॉब अकेले प्रतिदिन अधिकतम 1% फंड निकाल सकता है, लेकिन एलिस के पास अपनी चाबी से एक लेनदेन करने की क्षमता है जो इस क्षमता को बंद कर देती है।
- एलिस और बॉब मिलकर कुछ भी निकाल सकते हैं।
सामान्यतः, एलिस के लिए प्रतिदिन 1% पर्याप्त है, और यदि एलिस अधिक निकालना चाहती है तो वह मदद के लिए बॉब से संपर्क कर सकती है। अगर एलिस की चाबी हैक हो जाती है, तो वह धनराशि को नए अनुबंध में स्थानांतरित करने के लिए बॉब के पास जाती है। यदि वह अपनी चाबी खो देती है, तो बॉब अंततः फंड निकाल लेगा। यदि बॉब दुर्भावनापूर्ण साबित होता है, तो वह उसकी निकासी की क्षमता को बंद कर सकती है।
2. फसल बीमा**। कोई भी किसी भी मूल्य सूचकांक के बजाय मौसम के डेटा फीड का उपयोग करके आसानी से एक वित्तीय डेरिवेटिव अनुबंध बना सकता है। यदि आयोवा में एक किसान एक डेरिवेटिव खरीदता है जो आयोवा में वर्षा के आधार पर विपरीत रूप से भुगतान करता है, तो यदि सूखा पड़ता है, तो किसान को स्वचालित रूप से पैसा मिलेगा और यदि पर्याप्त बारिश होती है तो किसान खुश होगा क्योंकि उनकी फसलें अच्छी होंगी। इसे सामान्य रूप से प्राकृतिक आपदा बीमा में विस्तारित किया जा सकता है।
3. एक विकेंद्रीकृत डेटा फीड। वित्तीय अंतर अनुबंधों के लिए, "SchellingCoin" (opens in a new tab) नामक एक प्रोटोकॉल के माध्यम से डेटा फीड को विकेंद्रीकृत करना वास्तव में संभव हो सकता है। SchellingCoin मूल रूप से इस प्रकार काम करता है: N पक्ष सभी सिस्टम में एक दिए गए डेटम का मूल्य डालते हैं (उदाहरण के लिए ETH/USD मूल्य), मूल्यों को क्रमबद्ध किया जाता है, और 25वें और 75वें प्रतिशतक के बीच सभी को पुरस्कार के रूप में एक टोकन मिलता है। हर किसी के पास वह उत्तर प्रदान करने का प्रोत्साहन होता है जो हर कोई प्रदान करेगा, और एकमात्र मूल्य जिस पर बड़ी संख्या में खिलाड़ी वास्तव में सहमत हो सकते हैं वह स्पष्ट डिफ़ॉल्ट है: सत्य। यह एक विकेंद्रीकृत प्रोटोकॉल बनाता है जो सैद्धांतिक रूप से किसी भी संख्या में मूल्य प्रदान कर सकता है, जिसमें ETH/USD मूल्य, बर्लिन में तापमान या यहां तक कि किसी विशेष कठिन गणना का परिणाम भी शामिल है।
4. स्मार्ट मल्टीसिग्नेचर एस्क्रो। बिटकॉइन मल्टीसिग्नेचर लेनदेन अनुबंधों की अनुमति देता है जहां, उदाहरण के लिए, दी गई पांच चाबियों में से तीन फंड खर्च कर सकती हैं। एथेरियम अधिक परिष्कार की अनुमति देता है; उदाहरण के लिए, पांच में से चार सब कुछ खर्च कर सकते हैं, पांच में से तीन प्रतिदिन 10% तक खर्च कर सकते हैं, और पांच में से दो प्रतिदिन 0.5% तक खर्च कर सकते हैं। इसके अतिरिक्त, एथेरियम मल्टीसिग असिंक्रोनस है - दो पक्ष अलग-अलग समय पर ब्लॉकचेन पर अपने हस्ताक्षर पंजीकृत कर सकते हैं और अंतिम हस्ताक्षर स्वचालित रूप से लेनदेन भेज देगा।
5. क्लाउड कंप्यूटिंग। EVM तकनीक का उपयोग एक सत्यापन योग्य कंप्यूटिंग वातावरण बनाने के लिए भी किया जा सकता है, जो उपयोगकर्ताओं को दूसरों से गणना करने के लिए कहने और फिर वैकल्पिक रूप से कुछ यादृच्छिक रूप से चुने गए चेकपॉइंट्स पर गणना सही ढंग से की गई थी, इसके प्रमाण मांगने की अनुमति देता है। यह एक क्लाउड कंप्यूटिंग बाजार के निर्माण की अनुमति देता है जहां कोई भी यूज़र अपने डेस्कटॉप, लैपटॉप या विशेष सर्वर के साथ भाग ले सकता है, और सुरक्षा जमा के साथ स्पॉट-चेकिंग का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि सिस्टम भरोसेमंद है (यानी, नोड्स लाभप्रद रूप से धोखा नहीं दे सकते)। हालांकि यह सिस्टम सभी कार्यों के लिए उपयुक्त नहीं हो सकता है। उदाहरण के लिए, जिन कार्यों में उच्च स्तर की अंतर-प्रक्रिया संचार की आवश्यकता होती है, उन्हें नोड्स के बड़े क्लाउड पर आसानी से नहीं किया जा सकता। हालांकि, दूसरे टास्क को समानांतर करना बहुत आसान है; SETI@home, folding@home और जेनेटिक एल्गोरिदम जैसे प्रोजेक्ट ऐसे किसी प्लेटफ़ॉर्म पर आसानी से लागू किए जा सकते हैं।
6. पीयर-टू-पीयर जुआ। फ्रैंक स्टजानो और रिचर्ड क्लेटन के साइबरडाइस (opens in a new tab) जैसे कई पीयर-टू-पीयर जुआ प्रोटोकॉल, एथेरियम ब्लॉकचेन पर लागू किए जा सकते हैं। सबसे सरल जुआ प्रोटोकॉल वास्तव में अगले ब्लॉक हैश पर एक अंतर का अनुबंध है और इससे आगे और उन्नत प्रोटोकॉल बनाए जा सकते हैं, इससे लगभग शून्य शुल्क वाली जुआ सेवाएं बनाई जा सकती हैं जिनमें धोखा देने की क्षमता नहीं होती।
7. भविष्यवाणी बाज़ार. एक ओरेकल या SchellingCoin प्रदान किए जाने पर, भविष्यवाणी बाजारों को भी लागू करना आसान होता है, और SchellingCoin के साथ भविष्यवाणी बाजार विकेंद्रीकृत संगठनों के लिए एक शासन प्रोटोकॉल के रूप में फ्यूटार्की (opens in a new tab) का पहला मुख्यधारा का अनुप्रयोग साबित हो सकते हैं।
8. ऑनचेन विकेंद्रीकृत बाज़ार, पहचान और प्रतिष्ठा प्रणाली को आधार के रूप में उपयोग करते हुए।
विविध और चिंताएँ
संशोधित GHOST कार्यान्वयन
"ग्रीडी हेविएस्ट ऑब्जर्व्ड सबट्री" (GHOST) प्रोटोकॉल एक नवाचार है जिसे पहली बार योनातन सोम्पोलिंस्की और अवीव ज़ोहर द्वारा दिसंबर 2013 (opens in a new tab) में पेश किया गया था। GHOST के पीछे का विचार यह है कि तेज पुष्टि समय वाली ब्लॉकचेन वर्तमान में उच्च पुराने दर के कारण कम सुरक्षा से पीड़ित हैं, ऐसा इसलिए है क्योंकि ब्लॉक को नेटवर्क में फैलने में कुछ समय लगता है, अगर माईनर A एक ब्लॉक खोदता है और फिर माईनर B दूसरा ब्लॉक खोद लेता है, इससे पहले कि A का ब्लॉक B तक पहुंचे, तो B का ब्लॉक बेकार हो जाएगा और नेटवर्क सुरक्षा में योगदान नहीं देगा। इसके अलावा, एक केंद्रीकरण मुद्दा है: यदि माईनर A 30% हैशपावर वाला एक खनन पूल है और B में 10% हैशपावर है, तो A के लिए 70% समय पुराने ब्लॉक का उत्पादन करने का जोखिम होगा (क्योंकि अन्य 30% समय A ने अंतिम ब्लॉक का उत्पादन किया और इसलिए तुरंत खनन डेटा प्राप्त होगा) जबकि B के लिए 90% समय में पुराने ब्लॉक का उत्पादन करने का जोखिम होगा। इसलिए, अगर ब्लॉक अंतराल इतना छोटा है कि पुरानी दर उच्च हो, तो A अपने आकार के कारण काफी अधिक कुशल होगा। इन दोनों प्रभावों के मिलने से, जो ब्लॉकचेन जल्दी ब्लॉक बनाती हैं, उनमें एक माईनिंग पूल के पास नेटवर्क हैशपावर का बड़ा हिस्सा होने की संभावना अधिक होती है, जिससे वह माईनिंग प्रक्रिया पर वास्तविक नियंत्रण रख सकता है।
सोम्पोलिन्स्की और ज़ोहर के अनुसार, GHOST नेटवर्क सुरक्षा के नुकसान की पहली समस्या को हल करता है, यह पुराने ब्लॉकों को भी शामिल करके यह गणना करता है कि कौन सी श्रृंखला "सबसे लंबी" है, यानी, न केवल एक ब्लॉक के पैरेंट और पूर्वज, बल्कि ब्लॉक के पूर्वज के पुराने वंशज (एथेरियम की भाषा में, "अंकल") भी इस गणना में जोड़े जाते हैं कि किस ब्लॉक के पीछे सबसे बड़ा कुल काम का सबूत है। केंद्रीकरण पूर्वाग्रह की दूसरी समस्या को हल करने के लिए, हम सोम्पोलिन्स्की और ज़ोहर द्वारा वर्णित प्रोटोकॉल से आगे बढ़ते हैं, और हम पुराने को भी ब्लॉक इनाम देते हैं: एक पुराना ब्लॉक अपने मूल इनाम का 87.5% प्राप्त करता है, और जो भतीजा पुराने ब्लॉक को शामिल करता है वह शेष 12.5% प्राप्त करता है। हालांकि, लेनदेन शुल्क अंकल को नहीं दिया जाता है।
एथेरियम GHOST का एक सरलीकृत संस्करण लागू करता है जो केवल सात स्तर तक जाता है। विशेष रूप से, इसे इस प्रकार परिभाषित किया गया है:
- एक ब्लॉक को एक पैरेंट निर्दिष्ट करना चाहिए, और यह 0 या अधिक अंकल निर्दिष्ट कर सकता है
- ब्लॉक B में शामिल एक अंकल के पास निम्नलिखित गुण होने चाहिए:
- यह B के kवें पीढ़ी के पूर्वज का एक सीधा वंशज होना चाहिए, जहाँ
2 <= k <= 7। - यह B का पूर्वज नहीं हो सकता
- अंकल एक वैध ब्लॉक हेडर होना चाहिए, लेकिन पहले से सत्यापित या वैध ब्लॉक होने की आवश्यकता नहीं है
- अंकल को पिछले ब्लॉकों में शामिल सभी अंकल और एक ही ब्लॉक में शामिल अन्य सभी अंकल (गैर-डबल-समावेशन) से अलग होना चाहिए
- यह B के kवें पीढ़ी के पूर्वज का एक सीधा वंशज होना चाहिए, जहाँ
- ब्लॉक B में प्रत्येक अंकल U के लिए, B के माईनर को अपने कॉइनबेस इनाम में अतिरिक्त 3.125% मिलता है और U के माईनर को मानक कॉइनबेस इनाम का 93.75% मिलता है।
GHOST का यह सीमित वर्जन, जिसमें केवल 7 पीढ़ियों तक अंकल शामिल किए जा सकते हैं, दो कारणों से उपयोग किया गया था। पहला, असीमित GHOST किसी दिए गए ब्लॉक के लिए वैध अंकल की गणना में बहुत सारी जटिलताएं शामिल करेगा। दूसरा, एथेरियम में उपयोग किए जाने वाले मुआवजे के साथ असीमित GHOST मुख्य श्रृंखला पर माइन करने के लिए एक माईनर के लिए प्रोत्साहन को हटा देता है न कि किसी सार्वजनिक हमलावर की श्रृंखला पर।
शुल्क
क्योंकि ब्लॉकचेन में प्रकाशित हर लेनदेन नेटवर्क पर डाउनलोड और सत्यापित करने की लागत लगाता है, दुरुपयोग को रोकने के लिए कुछ नियामक मैकेनिज्म की आवश्यकता होती है, जिसमें आमतौर पर लेनदेन शुल्क शामिल होता है। बिटकॉइन में उपयोग किया जाने वाला डिफ़ॉल्ट दृष्टिकोण पूरी तरह से स्वैच्छिक शुल्क रखना है, जो माईनर पर गेटकीपर के रूप में कार्य करने और डायनामिक न्यूनतम निर्धारित करने पर निर्भर करता है। इस दृष्टिकोण को बिटकॉइन समुदाय में बहुत पसंद किया गया है, विशेष रूप से क्योंकि यह "बाजार-आधारित" है, जो माईनर और लेनदेन भेजने वालों के बीच आपूर्ति और मांग को कीमत निर्धारित करने की अनुमति देता है। हालांकि, इस तर्क की समस्या यह है कि लेनदेन की प्रोसेसिंग एक बाजार नहीं है; यह आकर्षक लगता है कि लेनदेन की प्रोसेसिंग को एक सेवा के रूप में देखा जाए जो माईनर प्रेषक को प्रदान कर रहा है, वास्तविकता में एक माईनर द्वारा शामिल किए गए प्रत्येक लेनदेन को नेटवर्क में हर नोड द्वारा प्रोसेस किया जाना होगा, इसलिए, लेनदेन प्रोसेसिंग की अधिकांश लागत तृतीय पक्षों द्वारा वहन की जाती है, न कि उस माईनर द्वारा जो इसे शामिल करने या न करने का निर्णय ले रहा है। इसलिए, आम लोगों की त्रासदी की समस्याएं होने की बहुत संभावना है।
हालांकि, जैसा कि पता चलता है, बाजार-आधारित तंत्र में यह खामी, जब एक विशेष अनुचित सरलीकरण मान्यता दी जाती है, तो जादुई रूप से खुद को रद्द कर देती है। तर्क इस प्रकार है। मान लीजिए कि:
- एक लेनदेन
kऑपरेशनों की ओर ले जाता है, जो इसे शामिल करने वाले किसी भी माइनर कोkRपुरस्कार प्रदान करता है जहांRप्रेषक द्वारा निर्धारित किया जाता है औरkऔरR(मोटे तौर पर) माइनर को पहले से दिखाई देते हैं। - एक ऑपरेशन की किसी भी नोड के लिए
Cकी प्रसंस्करण लागत होती है (यानी, सभी नोड्स की समान दक्षता होती है) Nमाइनिंग नोड्स हैं, जिनमें से प्रत्येक के पास बिल्कुल समान प्रसंस्करण शक्ति है (यानी, कुल का1/N)- कोई नॉन-माईनिंग फुल नोड मौजूद नहीं है।
एक माईनर लेनदेन को तब प्रोसेस करने के लिए तैयार होगा अगर अपेक्षित इनाम लागत से अधिक है। इस प्रकार, अपेक्षित इनाम kR/N है क्योंकि माइनर के पास अगले ब्लॉक को संसाधित करने का 1/N मौका है, और माइनर के लिए प्रसंस्करण लागत केवल kC है। इसलिए, माइनर्स उन लेनदेनों को शामिल करेंगे जहाँ kR/N > kC, या R > NC है। ध्यान दें कि R प्रेषक द्वारा प्रदान किया गया प्रति-ऑपरेशन शुल्क है, और इस प्रकार यह उस लाभ की निचली सीमा है जो प्रेषक लेनदेन से प्राप्त करता है, और NC एक ऑपरेशन को संसाधित करने के लिए पूरे नेटवर्क की एक साथ लागत है। इसलिए, माईनरों के पास केवल उन लेनदेन को शामिल करने का प्रोत्साहन है जिनके लिए कुल उपयोगितावादी लाभ लागत से अधिक है।
हालांकि, वास्तविकता में उन मान्यताओं से कई महत्वपूर्ण विचलन हैं:
- माईनर लेनदेन को प्रोसेस करने के लिए अन्य सत्यापन नोड्स की तुलना में अधिक लागत चुकाता है, क्योंकि अतिरिक्त सत्यापन समय ब्लॉक प्रसार में देरी करता है और इस प्रकार ब्लॉक के पुराना होने की संभावना बढ़ जाती है।
- नॉन-माईनिंग फुल नोड्स मौजूद हैं।
- माईनिंग पावर वितरण व्यवहार में बहुत असमान हो सकता है।
- सट्टेबाज, राजनीतिक दुश्मन और सनकी लोग जिनके उपयोगिता फंक्शन में नेटवर्क को नुकसान पहुंचाना शामिल है, मौजूद हैं और वे चतुराई से ऐसे अनुबंध स्थापित कर सकते हैं जहां उनकी लागत अन्य सत्यापन नोड्स द्वारा भुगतान की गई लागत से बहुत कम है।
(1) माइनर के लिए कम लेनदेन शामिल करने की प्रवृत्ति प्रदान करता है, और
(2) NC बढ़ाता है; इसलिए, ये दो प्रभाव कम से कम आंशिक रूप से
एक दूसरे को रद्द कर देते हैं।कैसे? (opens in a new tab)
(3) और (4) प्रमुख मुद्दे हैं; उन्हें हल करने के लिए हम बस एक फ्लोटिंग कैप स्थापित करते हैं: किसी भी ब्लॉक में दीर्घकालिक घातांकीय चलती औसत के BLK_LIMIT_FACTOR गुना से अधिक ऑपरेशन नहीं हो सकते हैं।
विशेष रूप से:
blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) +
floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR)
BLK_LIMIT_FACTOR और EMA_FACTOR स्थिरांक हैं जो फिलहाल 65536 और 1.5 पर सेट किए जाएंगे, लेकिन आगे के विश्लेषण के बाद इनमें बदलाव की संभावना है।
बिटकॉइन में बड़े ब्लॉक आकारों को हतोत्साहित करने वाला एक और कारक है: बड़े ब्लॉक को प्रसारित करने में अधिक समय लगेगा, और इस प्रकार पुराना बनने की संभावना अधिक होती है। एथेरियम में, उच्च गैस खपत वाले ब्लॉक भी प्रसारित होने में अधिक समय ले सकते हैं क्योंकि वे भौतिक रूप से बड़े होते हैं और लेनदेन स्थिति परिवर्तनों को मान्य करने के लिए प्रोसेस करने में अधिक समय लगता है। यह देरी का हतोत्साहन बिटकॉइन में एक महत्वपूर्ण विचार है, लेकिन GHOST प्रोटोकॉल के कारण एथेरियम में कम है; इसलिए, नियंत्रित ब्लॉक सीमाओं पर निर्भर रहना एक अधिक स्थिर आधार रेखा प्रदान करता है।
गणना और ट्यूरिंग-पूर्णता
एक महत्वपूर्ण नोट यह है कि एथेरियम वर्चुअल मशीन ट्यूरिंग-कम्प्लीट है; इसका मतलब है कि EVM कोड किसी भी गणना को एनकोड कर सकता है जो संभवतः की जा सकती है, जिसमें अनंत लूप भी शामिल हैं। EVM कोड दो तरीकों से लूपिंग की अनुमति देता है। सबसे पहले, एक JUMP निर्देश है जो प्रोग्राम को कोड में पिछले स्थान पर वापस जाने की अनुमति देता है, और सशर्त जंपिंग करने के लिए एक JUMPI निर्देश है, जो while x < 27: x = x * 2 जैसे कथनों की अनुमति देता है। दूसरा, अनुबंध अन्य अनुबंधों को कॉल कर सकते हैं, संभवतः रिकर्शन के माध्यम से लूपिंग की अनुमति देते हैं। यह स्वाभाविक रूप से एक समस्या की ओर ले जाता है: क्या दुर्भावनापूर्ण उपयोगकर्ता माईनरों और पूर्ण नोड्स को एक अनंत लूप में प्रवेश करने के लिए मजबूर करके अनिवार्य रूप से बंद कर सकते हैं? यह मुद्दा कंप्यूटर विज्ञान में ज्ञात हाल्टिंग समस्या के कारण उत्पन्न होता है: सामान्य मामले में यह बताने का कोई तरीका नहीं है कि क्या कोई दिया गया प्रोग्राम कभी रुकेगा या नहीं।
जैसा कि स्टेट ट्रांजिशन सेक्शन में वर्णित है, हमारा समाधान एक लेनदेन को अनुमति प्राप्त अधिकतम कम्प्यूटेशनल चरणों की संख्या निर्धारित करने की आवश्यकता के द्वारा काम करता है, और यदि निष्पादन लंबे समय तक चलता है तो कम्प्यूटेशन वापस कर दिया जाता है लेकिन शुल्क का भुगतान अभी भी किया जाता है। संदेश उसी तरह काम करते हैं। हमारे समाधान के पीछे की प्रेरणा दिखाने के लिए, निम्नलिखित उदाहरणों पर विचार करें:
- एक हमलावर एक अनुबंध बनाता है जो एक अनंत लूप चलाता है, और फिर उस लूप को सक्रिय करने वाला एक लेनदेन माईनर को भेजता है। माईनर लेनदेन को प्रोसेस करेगा, अनंत लूप चलाएगा और इसकी गैस समाप्त होने का इंतजार करेगा। हालांकि निष्पादन गैस से बाहर हो जाता है और बीच में रुक जाता है, लेनदेन अभी भी मान्य है और माईनर अभी भी हमलावर से प्रत्येक कम्प्यूटेशनल चरण के लिए शुल्क का दावा करता है।
- एक हमलावर एक बहुत लंबा अनंत लूप बनाता है जिसका उद्देश्य माईनर को इतने लंबे समय तक कम्प्यूटिंग करने के लिए मजबूर करना है कि जब तक कम्प्यूटेशन समाप्त होगा तब तक कुछ और ब्लॉक आ चुके होंगे और माईनर के लिए शुल्क का दावा करने के लिए लेनदेन को शामिल करना संभव नहीं होगा। हालांकि, हमलावर को निष्पादन द्वारा लिए जा सकने वाले कम्प्यूटेशनल चरणों की संख्या को सीमित करने वाले
STARTGASके लिए एक मान प्रस्तुत करना होगा, इसलिए माइनर को पहले से ही पता चल जाएगा कि गणना में अत्यधिक बड़ी संख्या में चरण लगेंगे। - एक हमलावर
send(A,contract.storage[A]); contract.storage[A] = 0जैसे किसी रूप के कोड वाले एक अनुबंध को देखता है, और पहले चरण को चलाने के लिए बस पर्याप्त गैस के साथ एक लेनदेन भेजता है लेकिन दूसरे को नहीं (यानी, निकासी करना लेकिन शेष राशि को कम नहीं होने देना)। अनुबंध लेखक को ऐसे हमलों से बचाव करने की चिंता करने की आवश्यकता नहीं है, क्योंकि यदि निष्पादन बीच में रुक जाता है तो परिवर्तन वापस कर दिए जाते हैं। - एक वित्तीय अनुबंध जोखिम को कम करने के लिए नौ स्वामित्व डेटा फीड के मध्यमान को लेकर काम करता है। एक हमलावर एक डेटा फीड पर कब्जा कर लेता है, जो डीएओ के खंड में वर्णित वेरिएबल-एड्रेस-कॉल मैकेनिज्म के माध्यम से संशोधन योग्य होने के लिए डिजाइन किया गया है, और इसे एक अनंत लूप चलाने के लिए परिवर्तित करता है, इस प्रकार वित्तीय अनुबंध से धन का दावा करने के किसी भी प्रयास की गैस खत्म करने के लिए मजबूर करने का प्रयास करता है। हालांकि, वित्तीय अनुबंध इस समस्या को रोकने के लिए संदेश पर एक गैस सीमा सेट कर सकता है।
ट्यूरिंग-पूर्णता का विकल्प ट्यूरिंग-अपूर्णता है, जहां JUMP और JUMPI मौजूद नहीं होते हैं और किसी भी समय कॉल स्टैक में प्रत्येक अनुबंध की केवल एक प्रति मौजूद रहने की अनुमति होती है। इस प्रणाली के साथ, वर्णित शुल्क प्रणाली और हमारे समाधान की प्रभावशीलता के बारे में अनिश्चितताएं आवश्यक नहीं हो सकती हैं, क्योंकि एक अनुबंध को निष्पादित करने की लागत उसके आकार से ऊपर सीमित होगी। इसके अलावा, ट्यूरिंग-इनकम्प्लीटनेस इतनी बड़ी सीमा भी नहीं है; हमने आंतरिक रूप से अनुबंध के सभी उदाहरणों की कल्पना की है, अब तक केवल एक के लिए लूप की आवश्यकता थी और उस लूप को भी एक पंक्ति के कोड को 26 बार दोहराने से हटाया जा सकता था। ट्यूरिंग-कम्प्लीटनेस के गंभीर निहितार्थ और सीमित लाभ को देखते हुए, बस एक ट्यूरिंग-इनकम्प्लीट भाषा क्यों न रखें? वास्तविकता में, ट्यूरिंग-इनकम्प्लीटनेस समस्या के एक स्वच्छ समाधान से बहुत दूर है। यह समझने के लिए, निम्नलिखित अनुबंधों पर विचार करें:
C0: call(C1); call(C1);
C1: call(C2); call(C2);
C2: call(C3); call(C3);
...
C49: call(C50); call(C50);
C50: (एक प्रोग्राम का एक चरण चलाएं और स्टोरेज में बदलाव को रिकॉर्ड करें)
अब, A को एक लेनदेन भेजें। इस प्रकार, 51 लेनदेनों में, हमारे पास एक अनुबंध है जो 250 कम्प्यूटेशनल चरण लेता है। माईनर प्रत्येक अनुबंध के साथ एक मूल्य बनाए रखकर समय से पहले ऐसे तर्क बमों का पता लगाने की कोशिश कर सकते हैं, जिसमें अधिकतम कम्प्यूटेशनल चरणों की संख्या निर्दिष्ट की जा सकती है, और अन्य अनुबंधों को पुनरावर्ती रूप से कॉल करने वाले अनुबंधों के लिए इसकी गणना की जा सके, लेकिन इसके लिए माईनरों को ऐसे अनुबंधों को प्रतिबंधित करना होगा जो अन्य अनुबंध बनाते हैं (क्योंकि उपरोक्त सभी 26 अनुबंधों का निर्माण और निष्पादन आसानी से एक ही अनुबंध में समेटा जा सकता है)। एक और समस्याग्रस्त बिंदु यह है कि किसी संदेश का पता फ़ील्ड एक वेरिएबल है, इसलिए सामान्य तौर पर यह बताना भी संभव नहीं हो सकता है कि किसी दिए गए अनुबंध को समय से पहले कौन से अन्य अनुबंध कॉल करेंगे। इसलिए, परिणाम आश्चर्यजनक है: ट्यूरिंग-पूर्णता को प्रबंधित करना आश्चर्यजनक रूप से आसान है, और ट्यूरिंग-पूर्णता की कमी को प्रबंधित करना भी आश्चर्यजनक रूप से उतना ही कठिन है, जब तक कि वही सटीक नियंत्रण मौजूद न हों - लेकिन उस मामले में प्रोटोकॉल को ट्यूरिंग-पूर्ण क्यों न होने दें?
करेंसी और जारी करना
एथेरियम नेटवर्क में अपनी खुद की बिल्ट-इन मुद्रा, ईथर शामिल है, जो दोहरे उद्देश्य की पूर्ति करती है, विभिन्न प्रकार की डिजिटल संपत्तियों के बीच कुशल विनिमय की अनुमति देने के लिए एक प्राथमिक तरलता परत प्रदान करती है और अधिक महत्वपूर्ण रूप से लेनदेन शुल्क का भुगतान करने के लिए एक मैकेनिज्म प्रदान करती है। सुविधा के लिए और भविष्य के तर्क से बचने के लिए (बिटकॉइन में वर्तमान mBTC/uBTC/सातोशी बहस देखें), मूल्यवर्ग पहले से लेबल किए जाएंगे:
- 1: wei
- 1012: स्जाबो
- 1015: फिन्नी
- 1018: ईथर
इसे "डॉलर" और "सेंट" या "BTC" और "सातोशी" की अवधारणा का विस्तारित संस्करण माना जाना चाहिए। निकट भविष्य में, हम उम्मीद करते हैं कि सामान्य लेनदेन के लिए "ईथर", सूक्ष्म लेनदेन के लिए "फिन्नी" और शुल्क और प्रोटोकॉल कार्यान्वयन के आसपास तकनीकी चर्चाओं के लिए "स्जाबो" और "वेई" का उपयोग किया जाएगा; शेष मूल्यवर्ग बाद में उपयोगी हो सकते हैं और इस बिंदु पर क्लाइंट में शामिल नहीं किए जाने चाहिए।
जारी करने का मॉडल निम्नानुसार होगा:
- ईथर को एक मुद्रा बिक्री में 1000-2000 ईथर प्रति BTC की कीमत पर जारी किया जाएगा, एक मैकेनिज्म जिसका उद्देश्य एथेरियम संगठन को वित्त पोषित करना और विकास के लिए भुगतान करना है जो अन्य प्लेटफार्मों जैसे मास्टरकॉइन और NXT द्वारा सफलतापूर्वक उपयोग किया गया है। पहले के खरीदारों को बड़े छूट से लाभ होगा। बिक्री से प्राप्त BTC का उपयोग पूरी तरह से डेवलपर को वेतन और बाउंटी का भुगतान करने और एथेरियम और क्रिप्टोकरेंसी पारिस्थितिकी तंत्र में विभिन्न लाभकारी और गैर-लाभकारी प्रोजेक्ट में निवेश करने के लिए किया जाएगा।
- कुल बेची गई राशि का 0.099x (60102216 ETH) संगठन को आवंटित किया जाएगा ताकि शुरुआती योगदानकर्ताओं को मुआवजा दिया जा सके और जेनेसिस ब्लॉक से पहले ETH-मूल्यवर्ग वाले खर्चों का भुगतान किया जा सके।
- कुल बेची गई राशि का 0.099x एक दीर्घकालिक रिजर्व के रूप में बनाए रखा जाएगा।
- कुल बेची गई राशि का 0.26x उस बिंदु के बाद हमेशा के लिए प्रति वर्ष माइनरों को आवंटित किया जाएगा।
| समूह | लॉन्च के समय | 1 साल बाद | 5 साल बाद |
|---|---|---|---|
| मुद्रा इकाइयाँ | 1.198X | 1.458X | 2.498X |
| खरीदार | 83.5% | 68.6% | 40.0% |
| बिक्री से पहले खर्च किया रिजर्व | 8.26% | 6.79% | 3.96% |
| बिक्री के बाद इस्तेमाल किया गया रिजर्व | 8.26% | 6.79% | 3.96% |
| माईनर | 0% | 17.8% | 52.0% |
दीर्घकालिक आपूर्ति वृद्धि दर (प्रतिशत में)
रैखिक करेंसी जारी करने के बावजूद, बिटकॉइन की तरह ही, समय के साथ आपूर्ति वृद्धि दर फिर भी शून्य की ओर जाती है।
उपरोक्त मॉडल में दो मुख्य विकल्प हैं (1) एंडोमेंट पूल का अस्तित्व और आकार, और (2) बिटकॉइन की तरह सीमित आपूर्ति के विपरीत एक स्थायी रूप से बढ़ती रैखिक आपूर्ति का होना। एंडोमेंट पूल का औचित्य इस प्रकार है। यदि एंडोमेंट पूल मौजूद नहीं होता, और रैखिक निर्गम को समान इन्फ्लेशन दर प्रदान करने के लिए 0.217x तक कम कर दिया जाता, तो ईथर की कुल मात्रा 16.5% कम होती और इसलिए प्रत्येक इकाई 19.8% अधिक मूल्यवान होती। अतः, संतुलन में 19.8% अधिक ईथर की सेल में खरीद होती, इसलिए प्रत्येक इकाई फिर से पहले की तरह ठीक उतनी ही मूल्यवान होती। संगठन के पास भी 1.198x अधिक BTC होता, जिसे दो हिस्सों में विभाजित माना जा सकता है: मूल BTC और अतिरिक्त 0.198x। इसलिए, यह स्थिति बंदोबस्ती के बिल्कुल समकक्ष है, लेकिन एक महत्वपूर्ण अंतर के साथ: संगठन केवल BTC रखता है, और इसलिए उसे ईथर इकाई के मूल्य का समर्थन करने के लिए प्रोत्साहित नहीं किया जाता है।
स्थायी रैखिक आपूर्ति वृद्धि मॉडल बिटकॉइन में कुछ लोगों द्वारा देखे जाने वाले अत्यधिक धन केंद्रीकरण के जोखिम को कम करता है और वर्तमान और भविष्य के युगों में रहने वाले व्यक्तियों को मुद्रा इकाइयाँ प्राप्त करने का उचित अवसर देता है, जबकि साथ ही ईथर प्राप्त करने और रखने के लिए एक मजबूत प्रोत्साहन बनाए रखता है क्योंकि "आपूर्ति वृद्धि दर" प्रतिशत के रूप में समय के साथ शून्य की ओर प्रवृत्त होती है। हम यह भी सिद्धांत देते हैं कि चूंकि सिक्के हमेशा लापरवाही, मृत्यु, आदि के कारण समय के साथ खो जाते हैं, और सिक्के के नुकसान को प्रति वर्ष कुल आपूर्ति के प्रतिशत के रूप में मॉडल किया जा सकता है, कि प्रचलन में कुल करेंसी आपूर्ति वास्तव में अंततः वार्षिक जारी करने की दर को हानि दर से विभाजित करने के बराबर एक मूल्य पर स्थिर हो जाएगी (उदाहरण के लिए, 1% की हानि दर पर, एक बार आपूर्ति 26X तक पहुंचने पर, 0.26X का खनन किया जाएगा और हर साल 0.26X खो जाएगा, जिससे एक संतुलन बनेगा)।
ध्यान दें कि भविष्य में, एथेरियम सुरक्षा के लिए एक प्रूफ-ऑफ-स्टेक मॉडल पर स्विच करने की संभावना है, जो निर्गम आवश्यकता को प्रति वर्ष शून्य से 0.05X के बीच कहीं कम कर देगा। इस स्थिति में कि एथेरियम संगठन फंडिंग खो देता है या किसी अन्य कारण से गायब हो जाता है, हम एक "सामाजिक अनुबंध" खुला छोड़ते हैं: किसी को भी एथेरियम का भविष्य का उम्मीदवार संस्करण बनाने का अधिकार है, एकमात्र शर्त यह है कि ईथर की मात्रा अधिकतम 60102216 * (1.198 + 0.26 * n) के बराबर होनी चाहिए, जहां n जेनेसिस ब्लॉक के बाद के वर्षों की संख्या है। निर्माता विकास के लिए भुगतान करने के लिए PoS-संचालित आपूर्ति विस्तार और अधिकतम अनुमेय आपूर्ति विस्तार के बीच के अंतर के कुछ या सभी को क्राउड-सेल या अन्यथा असाइन करने के लिए स्वतंत्र हैं। सामाजिक अनुबंध का पालन न करने वाले उम्मीदवार अपग्रेड को न्यायोचित रूप से अनुपालन वाले संस्करणों में फोर्क किया जा सकता है।
माइनिंग का केंद्रीकरण
बिटकॉइन माईनिंग एल्गोरिथम, माईनर द्वारा ब्लॉक हेडर के थोड़े संशोधित संस्करणों पर SHA256 की गणना बार-बार लाखों बार करने के द्वारा काम करता है, जब तक कि अंततः एक नोड एक ऐसा संस्करण नहीं निकाल लेता जिसका हैश लक्ष्य (वर्तमान में लगभग 2192) से कम होता है। हालांकि, यह माईनिंग एल्गोरिथम, केंद्रीकरण के दो रूपों के प्रति कमजोर है। पहला, माईनिंग पारिस्थितिकी तंत्र ASIC (एप्लिकेशन-स्पेसिफिक इंटीग्रेटेड सर्किट) द्वारा प्रभुत्व में आ गया है, जो बिटकॉइन माईनिंग के विशिष्ट कार्य के लिए डिज़ाइन किए गए कंप्यूटर चिप हैं, और इसलिए हजारों गुना अधिक कुशल हैं। इसका मतलब है कि बिटकॉइन माईनिंग अब एक अत्यधिक विकेंद्रीकृत और समतावादी गतिविधि नहीं रह गई है, प्रभावी ढंग से भाग लेने के लिए लाखों डॉलर की पूंजी की आवश्यकता होती है। दूसरा, अधिकांश बिटकॉइन माईनर वास्तव में स्थानीय स्तर पर ब्लॉक सत्यापन नहीं करते हैं; इसके बजाय, वे ब्लॉक हेडर प्रदान करने के लिए एक केंद्रीकृत माईनिंग पूल पर निर्भर करते हैं। यह समस्या शायद और भी बदतर है: इस लेख के समय तक, शीर्ष तीन माईनिंग पूल अप्रत्यक्ष रूप से बिटकॉइन नेटवर्क में लगभग 50% प्रोसेसिंग पावर को नियंत्रित करते हैं, हालांकि यह इस तथ्य से कम हो जाता है कि यदि कोई पूल या गठबंधन 51% हमले का प्रयास करता है तो माईनर अन्य माईनिंग पूलों में स्विच कर सकते हैं।
एथेरियम में वर्तमान इरादा एक ऐसे माईनिंग एल्गोरिथम का उपयोग करने का है जहां माईनर को राज्य से रैंडम डेटा प्राप्त करना आवश्यक है, ब्लॉकचेन में पिछले N ब्लॉकों से कुछ रैंडम रूप से चयनित लेनदेन की गणना करना और परिणाम का हैश वापस करना होता है। इसके दो महत्वपूर्ण लाभ हैं। सबसे पहले, एथेरियम अनुबंधों में किसी भी प्रकार की गणना शामिल हो सकती है, इसलिए एक एथेरियम ASIC अनिवार्य रूप से सामान्य गणना के लिए एक ASIC होगा - यानी, एक बेहतर CPU। दूसरा, माईनिंग के लिए पूरे ब्लॉकचेन तक पहुंच की आवश्यकता होती है, जो माईनर को पूरे ब्लॉकचेन को संग्रहित करने और कम से कम प्रत्येक लेनदेन को सत्यापित करने में सक्षम होने के लिए मजबूर करता है। यह केंद्रीकृत माईनिंग पूलों की आवश्यकता को समाप्त कर देता है; हालांकि माईनिंग पूल अभी भी पुरस्कार वितरण की रैंडमनेस को समान करने की वैध भूमिका निभा सकते हैं, यह कार्य बिना किसी केंद्रीय नियंत्रण के पीयर-टू-पीयर पूलों द्वारा समान रूप से किया जा सकता है।
इस मॉडल की जांच नहीं की गई है और माईनिंग एल्गोरिथम के रूप में अनुबंध निष्पादन का उपयोग करते समय कुछ चतुर अनुकूलन से बचने में कठिनाइयाँ हो सकती हैं। हालांकि, इस एल्गोरिथम की विशेष रूप से दिलचस्प एक विशेषता यह है कि यह किसी को भी "प्रतिष्ठा को नुकसान पहुंचाने" की अनुमति देता है, जिसमें ब्लॉकचेन में बड़ी संख्या में अनुबंधों को शामिल किया जाता है जो विशेष रूप से कुछ ASIC को बाधित करने के लिए डिजाइन किए गए हैं। ASIC निर्माताओं के लिए एक-दूसरे पर हमला करने के लिए ऐसी चाल का उपयोग करने के लिए आर्थिक प्रोत्साहन मौजूद हैं। इसलिए, हम जिस समाधान का विकास कर रहे हैं, वह अंततः एक अनुकूलजन मानवीय आर्थिक समाधान है, पूरी तरह से तकनीकी नहीं।
स्केलेबिलिटी
एथेरियम के बारे में एक सामान्य चिंता मापनीयता का मुद्दा है। बिटकॉइन की तरह, एथेरियम भी उस दोष से पीड़ित है कि प्रत्येक लेनदेन को नेटवर्क में प्रत्येक नोड द्वारा प्रोसेस किया जाना चाहिए। बिटकॉइन के साथ, वर्तमान ब्लॉकचेन का आकार लगभग 15 GB पर है, जो प्रति घंटे लगभग 1 MB बढ़ रहा है। यदि बिटकॉइन नेटवर्क, वीज़ा के 2000 लेनदेन प्रति सेकंड को प्रोसेस करता, तो यह प्रति तीन सेकंड में 1 MB (प्रति घंटे 1 GB, प्रति वर्ष 8 TB) से बढ़ता। एथेरियम को भी इसी तरह के विकास पैटर्न का सामना करना पड़ सकता है, जो इस तथ्य से बदतर हो जाता है कि बिटकॉइन की तरह एथेरियम ब्लॉकचेन के शीर्ष पर केवल एक मुद्रा के बजाय कई एप्लिकेशन होंगे, लेकिन इस तथ्य से भी स्थिति बेहतर हो जाएगी कि एथेरियम के पूर्ण नोड्स को संपूर्ण ब्लॉकचेन इतिहास के बजाय केवल राज्य को संग्रहित करने की आवश्यकता होगी।
इतने बड़े ब्लॉकचेन आकार की समस्या केंद्रीकरण का जोखिम है। यदि ब्लॉकचेन का आकार बढ़कर, मान लीजिए, 100 TB हो जाता है, तो संभावित परिदृश्य यह होगा कि केवल बहुत कम संख्या में बड़े व्यवसाय पूर्ण नोड चलाएंगे, जबकि सभी नियमित उपयोगकर्ता हल्के SPV नोड का उपयोग करेंगे। ऐसी स्थिति में, यह संभावित चिंता उत्पन्न होती है कि पूर्ण नोड्स एकजुट हो सकते हैं और सभी किसी लाभदायक तरीके से धोखा देने के लिए सहमत हो सकते हैं (जैसे, ब्लॉक पुरस्कार बदलना, खुद को BTC देना)। हल्के नोड इसका तुरंत पता नहीं लगा पाएंगे। बेशक, कम से कम एक ईमानदार पूर्ण नोड की संभावना होगी, और कुछ घंटों के बाद धोखाधड़ी की जानकारी रेडिट जैसे चैनलों के माध्यम से बाहर आ जाएगी, लेकिन उस समय तक बहुत देर हो चुकी होगी: यह साधारण उपयोगकर्ताओं पर निर्भर होगा कि वे दिए गए ब्लॉकों को ब्लैकलिस्ट करने का प्रयास करें, जो एक विशाल और संभवतः अव्यवहार्य समन्वय संबंधी समस्या होगी, जो एक सफल 51% हमले को अंजाम देने के समान स्तर पर होगी। बिटकॉइन के मामले में, यह वर्तमान में एक समस्या है, लेकिन पीटर टॉड द्वारा सुझाया गया (opens in a new tab) एक ब्लॉकचेन संशोधन मौजूद है जो इस मुद्दे को कम करेगा।
निकट भविष्य में, इस समस्या से निपटने के लिए एथेरियम दो अतिरिक्त रणनीतियों का उपयोग करेगा। पहला, ब्लॉकचेन-आधारित माईनिंग एल्गोरिथम के कारण, कम से कम प्रत्येक माईनर को एक पूर्ण नोड होने के लिए मजबूर किया जाएगा, जो पूर्ण नोड्स की संख्या पर एक निचली सीमा बनाएगा। दूसरा और अधिक महत्वपूर्ण, हालांकि, हम प्रत्येक लेनदेन को प्रोसेस करने के बाद ब्लॉकचेन में एक मध्यवर्ती स्थिति ट्री रूट शामिल करेंगे। यहां तक कि अगर ब्लॉक सत्यापन केंद्रीकृत है, जब तक एक ईमानदार सत्यापन नोड मौजूद है, केंद्रीकरण की समस्या को एक सत्यापन प्रोटोकॉल के माध्यम से दरकिनार किया जा सकता है। यदि कोई माइनर एक अमान्य ब्लॉक प्रकाशित करता है, तो वह ब्लॉक या तो बुरी तरह से स्वरूपित होना चाहिए, या स्टेट S[n] गलत है। चूँकि S[0] सही माना जाता है, इसलिए कोई पहली स्टेट S[i] होनी चाहिए जो गलत है जहाँ S[i-1] सही है। सत्यापन करने वाला नोड इंडेक्स i प्रदान करेगा, साथ ही एक "अमान्यता का प्रमाण" जिसमें APPLY(S[i-1],TX[i]) -> S[i] को संसाधित करने के लिए आवश्यक पेट्रीसिया ट्री नोड्स का सबसेट शामिल होगा। नोड्स गणना के उस हिस्से को चलाने के लिए उन नोड्स का उपयोग करने में सक्षम होंगे, और देखेंगे कि उत्पन्न S[i] प्रदान किए गए S[i] से मेल नहीं खाता है।
एक और, अधिक परिष्कृत हमला, दुर्भावनापूर्ण माईनरों द्वारा अपूर्ण ब्लॉक प्रकाशित करने से संबंधित होगा, ताकि यह निर्धारित करने के लिए पूरी जानकारी भी मौजूद न हो कि ब्लॉक मान्य हैं या नहीं। इसका समाधान एक चुनौती-प्रतिक्रिया प्रोटोकॉल है: सत्यापन नोड्स लक्षित लेनदेन सूचकांकों के रूप में "चुनौतियाँ" जारी करते हैं, और एक नोड प्राप्त करने पर एक हल्का नोड ब्लॉक को अविश्वसनीय मानता है जब तक कि कोई अन्य नोड, चाहे वह माईनर हो या कोई अन्य सत्यापनकर्ता, वैधता के प्रमाण के रूप में पैट्रिशिया नोड्स का एक सबसेट प्रदान नहीं करता।
निष्कर्ष
एथेरियम प्रोटोकॉल को मूल रूप से एक क्रिप्टोकरेंसी के उन्नत संस्करण के रूप में माना गया था, जो एक अत्यधिक सामान्यीकृत प्रोग्रामिंग भाषा के माध्यम से ब्लॉकचेन पर एस्क्रो, निकासी सीमा, वित्तीय अनुबंध, जुआ बाजार और इसी तरह की उन्नत सुविधाएं प्रदान करता है। एथेरियम प्रोटोकॉल किसी भी एप्लिकेशन का सीधे "समर्थन" नहीं करेगा, लेकिन एक ट्यूरिंग-कंप्लीट प्रोग्रामिंग भाषा का अस्तित्व का मतलब है कि सैद्धांतिक रूप से किसी भी लेनदेन प्रकार या एप्लिकेशन के लिए मनमाने अनुबंध बनाए जा सकते हैं। हालांकि, एथेरियम के बारे में जो अधिक दिलचस्प है, वह यह है कि एथेरियम प्रोटोकॉल केवल मुद्रा से कहीं आगे निकल जाता है। विकेंद्रीकृत फ़ाइल भंडारण, विकेंद्रीकृत गणना और विकेंद्रीकृत भविष्यवाणी बाजारों के आसपास के प्रोटोकॉल, दर्जनों अन्य ऐसी अवधारणाओं के बीच, कम्प्यूटेशनल उद्योग की दक्षता को काफी बढ़ाने की क्षमता रखते हैं, और पहली बार एक आर्थिक परत जोड़कर अन्य पीयर-टू-पीयर प्रोटोकॉल को बड़ा बढ़ावा देते हैं। अंत में, ऐसे एप्लिकेशन की एक पर्याप्त श्रृंखला भी है जिनका पैसे से कोई लेना-देना नहीं है।
एथेरियम प्रोटोकॉल द्वारा लागू किए गए एक मनमाने राज्य संक्रमण फंक्शन की अवधारणा एक अद्वितीय क्षमता वाला प्लेटफॉर्म प्रदान करती है; डेटा भंडारण, जुआ या वित्त में अनुप्रयोगों की एक विशिष्ट श्रृंखला के लिए अभिप्रेत एक बंद-सिरे वाला, एकल-उद्देश्य प्रोटोकॉल होने के बजाय, एथेरियम डिजाइन से खुले-सिरे वाला है, और हमारा मानना है कि यह आने वाले वर्षों में बहुत बड़ी संख्या में वित्तीय और गैर-वित्तीय प्रोटोकॉल के लिए एक आधारभूत परत के रूप में सेवा करने के लिए बेहद उपयुक्त है।
नोट्स और अतिरिक्त पठन
नोट्स
- एक परिष्कृत पाठक यह ध्यान दे सकता है कि वास्तव में एक बिटकॉइन पता दीर्घवृत्ताकार वक्र सार्वजनिक कुंजी का हैश है, न कि स्वयं सार्वजनिक कुंजी। हालांकि, वास्तव में पबकी हैश को स्वयं एक सार्वजनिक कुंजी के रूप में संदर्भित करना पूरी तरह से वैध क्रिप्टोग्राफिक शब्दावली है। ऐसा इसलिए है क्योंकि बिटकॉइन की क्रिप्टोग्राफी को एक कस्टम डिजिटल हस्ताक्षर एल्गोरिथम माना जा सकता है, जहां सार्वजनिक कुंजी ECC पबकी के हैश से बनी होती है, हस्ताक्षर ECC पबकी और ECC हस्ताक्षर के संयोजन से बना होता है, और सत्यापन एल्गोरिथम में सार्वजनिक कुंजी के रूप में प्रदान किए गए ECC पबकी हैश के खिलाफ हस्ताक्षर में ECC पबकी की जांच करना और फिर ECC पबकी के खिलाफ ECC हस्ताक्षर का सत्यापन करना शामिल है।
- तकनीकी रूप से, पिछले 11 ब्लॉकों का मध्यमान।
- आंतरिक रूप से, 2 और "CHARLIE" दोनों संख्याएँ हैं fn3, जहाँ बाद वाला बड़े-एंडियन आधार 256 प्रतिनिधित्व में है। संख्याएँ कम से कम 0 और अधिकतम 2256-1 हो सकती हैं।
अतिरिक्त पठन
- आंतरिक मूल्य (opens in a new tab)
- स्मार्ट प्रॉपर्टी (opens in a new tab)
- स्मार्ट कॉन्ट्रैक्ट्स (opens in a new tab)
- B-money (opens in a new tab)
- पुन: प्रयोज्य प्रूफ-ऑफ-वर्क (opens in a new tab)
- मालिक के अधिकार के साथ सुरक्षित संपत्ति शीर्षक (opens in a new tab)
- बिटकॉइन श्वेतपत्र (opens in a new tab)
- नेमक्वाइन (opens in a new tab)
- ज़ूको का त्रिकोण (opens in a new tab)
- कलर्ड कॉइन्स श्वेतपत्र (opens in a new tab)
- Mastercoin श्वेतपत्र (opens in a new tab)
- विकेन्द्रीकृत स्वायत्त निगम, बिटकॉइन पत्रिका (opens in a new tab)
- सरलीकृत भुगतान सत्यापन (opens in a new tab)
- मर्कल ट्री (opens in a new tab)
- पेट्रीसिया ट्री (opens in a new tab)
- GHOST (opens in a new tab)
- StorJ and Autonomous Agents, जेफ़ गार्ज़िक (opens in a new tab)
- ट्यूरिंग फेस्टिवल में स्मार्ट प्रॉपर्टी पर माइक हर्न (opens in a new tab)
- एथेरियम RLP
- एथेरियम मर्कल पेट्रीसिया ट्री
- मर्कल सम ट्री पर पीटर टॉड (opens in a new tab)
श्वेतपत्र के इतिहास के लिए, इस विकि (opens in a new tab) को देखें।
_Ethereum, कई समुदाय-संचालित, ओपन-सोर्स सॉफ्टवेयर परियोजनाओं की तरह, अपनी प्रारंभिक स्थापना के बाद से विकसित हुआ है। Ethereum के नवीनतम विकासों, और प्रोटोकॉल में परिवर्तन कैसे किए जाते हैं, के बारे में जानने के लिए, हम इस गाइड की अनुशंसा करते हैं।
पेज का अंतिम अपडेट: 26 फ़रवरी 2026





