इस लेख में, हम आपको बता रहे हैं कि यह कैसे काम करता है।
यह आलेख मेरे द्वारा मार्च के अंत में लीनक्लाउड पर साझा किए गए टेक्नोलॉजी के आधार पर तैयार किया गया है, और यह मान लिया गया है कि पाठकों के पास क्रिप्टोलॉजी का बुनियादी ज्ञान है और बिटकॉइन के कार्यान्वयन के बारे में प्रारंभिक जानकारी है।
ब्लॉकचेन को ब्लॉकचेन भी कहा जाता है, और इसे हैशट्री के रूप में देखा जा सकता है, और इसलिए इसमें हैशट्री के समान गुण हैंः

तस्वीर साभारः<http://happypeter.github.io/bitcoin_basics/book/017_merkle_tree.html
अर्थात्, एक पेड़ के ढांचे में, प्रत्येक टर्मिनल नोड में एक छिद्रण मूल्य होता है, जबकि गैर-टर्मिनल नोड के छिद्रण मूल्य इसके सभी प्रत्यक्ष उप-नोडों के छिद्रण मूल्य से आते हैं, इसलिए प्रत्येक नोड में सीधे या परोक्ष रूप से इसके सभी उप-नोडों की जानकारी होती है। इसलिए, जब भी किसी टर्मिनल नोड के छिद्रण मूल्य में परिवर्तन होता है, तो इसके सभी मूल नोडों के छिद्रण मूल्य में परिवर्तन होता है, और रूट नोड भी बदलना चाहिए।
मैं HashTree के बारे में एक एप्लिकेशन दे सकता हूंः “100% रिजर्व प्रूफ”, जो “शून्य-ज्ञान प्रमाण” की श्रेणी में आता है। हम एक परिदृश्य पर विचार कर सकते हैं, जहां Bitcion के धारकों को लेनदेन करने के लिए बिटकॉइन को एक्सचेंज में जमा करना पड़ता है, और सैद्धांतिक रूप से एक्सचेंज इस पैसे का उपयोग कर सकता है (सभी उपयोगकर्ताओं के जमा खाते के शेष) जो कि उपयोगकर्ता नहीं देखना चाहते हैं, लेकिन एक्सचेंज खुद को स्पष्ट करना चाहता हैः एक्सचेंज पहले अपने पास मौजूद बिटकॉइन का एक पता प्रकाशित करता है, और हम पुष्टि करते हैं कि एक्सचेंज के पास वास्तव में इतनी बिटकॉइन हैं रिजर्व के रूप में, लेकिन यह कैसे साबित होता है कि यह राशि वास्तव में सभी उपयोगकर्ताओं के शेष राशि से अधिक है? दूसरे शब्दों में, प्रत्येक उपयोगकर्ता को अपने स्वयं के शेष राशि को इस राशि में शामिल करने के लिए कैसे स्वीकार किया जाए, जब तक कि प्रत्येक उपयोगकर्ता के शेष राशि को सार्वजनिक नहीं किया जाता है (जो उपयोगकर्ता की गोपनीयता को उजागर करता है)?

तस्वीर साभारः<http://blog.bifubao.com/2014/03/16/proof-of-reserves
हम एक हैश ट्री बना सकते हैं, जहां सभी नोड्स एक उपयोगकर्ता का प्रतिनिधित्व करते हैं, जिसमें उपयोगकर्ता का शेष होता है।Σ) और यूजर आइडेंटिफिकेशन (जैसे डाकघर का पता) का एक टुकड़ा (h), और माता-पिता के नोड्स में उनके बच्चों के नोड्स का कुल योग होता है (sum) और सभी उप-नोडों की जानकारी का सारण ((hash) । प्रत्येक उपयोगकर्ता के लिए, उसे केवल अपने स्वयं के अंत नोड और भाई नोड, उसके सभी पिता नोड और पिता नोड के भाई नोड दिखाने की आवश्यकता है, क्योंकि वह उपयोगकर्ता अपने शेष को पिता नोड में शामिल होने की पुष्टि कर सकता है, और अंत में जड़ नोड में शामिल होने के लिए, पिता नोड से क्रमिक रूप से पीछे हटने के तरीके से।
इस प्रकार, प्रत्येक उपयोगकर्ता को केवल अपनी जानकारी और कुछ एकत्रित जानकारी दिखाई देती है, और प्रत्येक उपयोगकर्ता अपने शेष को रूट नोड में शामिल किए जाने की पुष्टि कर सकता है, बिना किसी अन्य शेष राशि के बारे में बताए। ऊपर दिए गए चित्र में एक छोटी सी त्रुटि है, लेकिन यह स्पष्ट है कि इस तरह की जानकारी के साथ, प्रत्येक उपयोगकर्ता को अपने शेष को रूट नोड में शामिल किया गया है।hके लिएe4df9d12का नोड उपयोगकर्ता का प्रतिनिधित्व करने वाला अंतिम नोड नहीं होना चाहिए, बल्कि एक संचयी सूचना नोड होना चाहिए (यह नोड एक उपयोगकर्ता को 3333 शेष राशि के साथ, और एक 0 शेष राशि के साथ आभासी उपयोगकर्ता को शामिल कर सकता है) किसी उपयोगकर्ता की गोपनीयता जानकारी को लीक करने से बचने के लिए।
अब हम गिट पर एक नज़र डालते हैं, जो कि एक बहुत ही विशिष्ट ब्लॉकचेन एप्लिकेशन है:

तस्वीर साभारःhttp://gitbook.liuhui998.com/1_2.html (GPL v2)
गिट में, चाहे वह फाइल हो, ब्लोब हो, इंडेक्स हो, ट्री हो या कमिट हो, एक हैश होता है जो इसकी सामग्री द्वारा निर्धारित किया जाता है, यदि दो ऑब्जेक्ट्स में समान सामग्री है, तो एक ही हैश है। गिट में, पूरे रिपॉजिटरी का इतिहास एक ब्लॉकचेन है, प्रत्येक कमिट एक ब्लॉक के बराबर है, कमिट में पिछले कमिट का हैश और इस बार संबंधित ऑब्जेक्ट्स का हैश शामिल है, कमिट स्वयं हैश इसकी सामग्री और इन तत्वों से निर्धारित होता है।
गिट ने ब्लॉकचेन का उपयोग करके रिपॉजिटरी के लिए एक अद्वितीय इतिहास निर्धारित किया है यदि एक प्रतिबद्धता को संशोधित किया जाता है, तो उसके बाद के सभी प्रतिबद्धताओं के हैश बदल जाते हैं। बेशक, क्योंकि गिट केवल एक संस्करण नियंत्रण उपकरण है, यह आपको इतिहास को संशोधित करने से नहीं रोकता है।push --force), लेकिन यह बदलाव सभी सह-लेखकों द्वारा देखा जाएगा।
एक और क्लासिक ब्लॉकचेन एप्लिकेशन बिटकॉइन है, और यह बिटकॉइन है जिसने ब्लॉकचेन शब्द का प्रसार किया है (हालांकि यह अवधारणा हमेशा से मौजूद है):

तस्वीर साभारःhttps://commons.wikimedia.org/wiki/File:Bitcoin_Block_Data.png(CC-BY-SA-3.0)
बिटकॉइन में, प्रत्येक ब्लॉक में एक श्रृंखला होती है लेनदेन और पिछले ब्लॉक का हैश, जबकि पूरी ब्लॉकचेन एक विकेन्द्रीकृत एकल खाता बनाता है। चूंकि एक नया ब्लॉक हर दस मिनट में उत्पन्न होता है, और एक बार ब्लॉक उत्पन्न होने के बाद ब्लॉक हमेशा ब्लॉकचेन पर रहता है, इसलिए ब्लॉकचेन लेनदेन के क्रम को स्थिर करता है, लेनदेन के पूर्ववर्ती क्रम को बनाए रखता है, और यह निर्धारित करता है कि क्या एक खाते में पर्याप्त शेष राशि है या नहीं लेनदेन शुरू करने के लिए।
इस शेयर के पहले भाग में हम बिटकॉइन पर एक संक्षिप्त नज़र डालेंगे।
बिटकॉइन में ब्लॉक का निर्माण “कार्य-प्रमाण” के माध्यम से किया जाता है, अर्थात, “खनन” में भाग लेने वाले सभी “खननकर्ताओं” को एक कंप्यूटिंग शक्ति से संबंधित, यादृच्छिक प्रकृति की एक कतरन गणना करनी होती है, जब तक कि एक विशिष्ट शर्तों को पूरा करने वाले यादृच्छिक संख्या की गणना नहीं की जाती है, एक ब्लॉक जारी करने का अधिकार प्राप्त करने के लिए।
प्रत्येक खनिक हमेशा “सबसे लंबी श्रृंखला” पर भरोसा करता है और अगले ब्लॉक की गणना करने के लिए सबसे लंबी ज्ञात श्रृंखला के आधार पर काम करता है जो नियमों को पूरा करता है, अन्यथा आपकी गणना शक्ति व्यर्थ में बर्बाद हो जाएगी क्योंकि अन्य खनिक हमेशा सबसे लंबी श्रृंखला को स्वीकार करते हैं, और यदि आप सबसे लंबी श्रृंखला के आधार पर काम शुरू नहीं करते हैं, तो यह अन्य सभी खनिकों की गणना शक्ति के खिलाफ है।
बिटकॉइन को हर 10 मिनट में एक नया ब्लॉक बनाने के लिए डिज़ाइन किया गया है, यह समय पिछले कुछ ब्लॉकों के अंतराल को देखने के लिए सभी के द्वारा प्राप्त किया जाता है, ताकि अगले ब्लॉक के निर्माण की कठिनाई को समायोजित किया जा सके। जब पिछले कुछ ब्लॉकों की उत्पादन गति अपेक्षित से अधिक होती है, तो यह माना जाता है कि अगले ब्लॉक का निर्माण अधिक कठिन होना चाहिए।
सामान्य तौर पर, प्रत्येक बिटकॉइन नोड को एक पूर्ण ब्लॉकचेन डेटा संग्रहीत करने की आवश्यकता होती है ताकि यह सुनिश्चित किया जा सके कि कोई लेनदेन वैध है या नहीं। लेकिन अब एक पूर्ण ब्लॉकचेन 66 जी है और यह लगभग 0.1 जी प्रति दिन की दर से बढ़ रहा है। यदि बिटकॉइन के प्रत्येक उपयोगकर्ता को एक पूर्ण ब्लॉकचेन संग्रहीत करने की आवश्यकता नहीं है, तो यह बहुत कठोर नहीं है, इसलिए बिटकॉइन के पास एक “सरलीकृत भुगतान सत्यापन (एसपीवी) ” तंत्र है, जिसे “हल्का ग्राहक” कहा जाता है।

तस्वीर साभारः<https://github.com/ethereum/wiki/wiki/White-Paper
वास्तव में, हम बिटकॉइन के ब्लॉकचेन को एक “स्टेटस मशीन” के रूप में कल्पना कर सकते हैं, पूरा ब्लॉकचेन एक स्टेटस “बहीखाता” है, जिसमें प्रत्येक लेनदेन रिकॉर्ड संग्रहीत किया जाता है, इन लेनदेन रिकॉर्डों के आधार पर पूरे खाते की “स्टेटस” की गणना की जा सकती है, यानी बिटकॉइन नेटवर्क में प्रत्येक खाते में किसी भी समय कितना बैलेंस है। प्रत्येक लेनदेन राज्य में एक परिवर्तन है, और प्रत्येक ब्लॉक पूरे बिटकॉइन नेटवर्क के खनिकों की वर्तमान स्थिति के लिए एक “सहमति” है, क्योंकि बिटकॉइन हर 10 मिनट में एक नया ब्लॉक उत्पन्न करता है, जो हर 10 मिनट में सभी खातों के बैलेंस पर एक आम सहमति के बराबर है, जबकि इन दस मिनटों के बीच, बहीखाता की स्थिति वास्तव में एक “अराजकता” है।
बिटकॉइन के आधार पर कई अन्य क्रिप्टोक्यूरेंसी भी उत्पन्न हुई हैं, जिन्हें अक्सर “अल्ट कॉइन” कहा जाता है, और आमतौर पर दो प्रकार के कार्यान्वयन होते हैंः
पहले, यह अपने स्वयं के नेटवर्क का उपयोग करता है, जो बिटकॉइन से अलग है, और इसका लाभ यह है कि सिक्का अपने स्वयं के प्रोटोकॉल और नियमों को डिजाइन करने के लिए बहुत लचीला है, लेकिन क्योंकि उपयोगकर्ताओं की संख्या बिटकॉइन के बराबर होना मुश्किल है, इसलिए यह दुर्भावनापूर्ण हमलों के खिलाफ बहुत कमजोर होगा।
दूसरा, बिटकॉइन के नेटवर्क को लागू करने के लिए “मेटा प्रोटोकॉल” का उपयोग करना है, जो बिटकॉइन के लेनदेन के ऊपर अनुकूलित जानकारी को लागू करने के लिए अपने स्वयं के तर्क को लागू करता है। इसका लाभ यह है कि बिटकॉइन के कंप्यूटिंग शक्ति का उपयोग करके हमलों से बचाव किया जा सकता है, लेकिन साथ ही बिटकॉइन नेटवर्क पर निर्भर होने के कारण, सभी खनिक नकली मुद्रा के नियमों का पालन नहीं करेंगे, इसलिए ब्लॉक ब्लॉकचेन में प्रवेश करने से रोक नहीं सकते हैं जो नियमों का पालन नहीं करते हैं, केवल क्लाइंट पर अनुपालन नहीं करने वाले लेनदेन को फ़िल्टर कर सकते हैं, और पहले से उल्लिखित बिटकॉइन द्वारा प्रदान की गई सरल पुष्टि सुविधा का उपयोग नहीं कर सकते हैं।
इन सिक्कों के लिए, बिटकॉइन एक ब्लॉकचेन प्रदान कर सकता है जिसमें बड़ी संख्या में खनिक शामिल हैं, जो बड़े पैमाने पर दुर्भावनापूर्ण हमलों से बचने में सक्षम हैं, और बिटकॉइन के लेनदेन पर कस्टम डेटा भी हो सकता है, जिससे सिक्कों के कार्यान्वयन के लिए कुछ जगह बची है।
Bitocin ने भी एक प्रस्ताव दिया है।Bitcoin Scriptलेकिन चूंकि यह बिटकॉइन का मुख्य कार्य नहीं है, इसलिए केवल अपेक्षाकृत सरल परिचालन किया जा सकता है, केवल ब्लॉकचेन पर डेटा को बहुत सीमित रूप से पढ़ा जा सकता है, और चक्रीय तंत्र की कमी के कारण, सामान्य, ट्यूरिन-पूर्ण तर्क लिखना मुश्किल है।

तस्वीर साभारःhttps://www.ethereum.org/assets (CC 3.0)
Ethereum एक ब्लॉकचेन-आधारित, विकेन्द्रीकृत एप्लिकेशन प्लेटफ़ॉर्म है जो बिटकॉइन के बुनियादी ढांचे और क्रिप्टोग्राफिक-आधारित ब्लॉकचेन तकनीक को एक सार्वभौमिक प्लेटफ़ॉर्म के रूप में बनाता है और बिटकॉइन नेटवर्क की कुछ लापता सुविधाओं को पूरा करता है ताकि डेवलपर्स अपने स्वयं के विकेन्द्रीकृत एप्लिकेशन को ब्लॉकचेन पर चला सकें।
एथेरियम के बारे में विस्तार से बताने से पहले, मैं आपको बताता हूं कि विकेन्द्रीकृत नेटवर्क के दो मुख्य आधार क्या हैं: क्रिप्टोग्राफी और गेमिंग। क्रिप्टोग्राफी, ज़ाहिर है, केवल सार्वजनिक कुंजी एन्क्रिप्शन, डिजिटल हस्ताक्षर, छिद्रण और सारांश एल्गोरिदम के माध्यम से गणितीय रूप से सुरक्षा सुनिश्चित करने के लिए है। गेमिंग का मतलब है कि विकेन्द्रीकृत नेटवर्क में, कोई भी व्यक्ति, जो जानबूझकर नेटवर्क पर हमला करना चाहता है, शामिल हो सकता है। विकेन्द्रीकृत नेटवर्क को डिजाइन करते समय, प्रत्येक प्रतिभागी के हितों के संबंध के बारे में सोचना आवश्यक है, यह सुनिश्चित करना कि नियमों का पालन करते समय लाभ अधिकतम हो और नियमों का उल्लंघन करते समय नुकसान या जोखिम उठाया जाए।
हालांकि, डिजिटल दुनिया में, डेटा का एक टुकड़ा जारी करने के लिए कोई लागत नहीं है, कोई “लाभ” और “नुकसान” नहीं है, इसलिए “लाभ” को परिभाषित करने के लिए भौतिक दुनिया के साथ किसी प्रकार का संबंध स्थापित करना होगा। उदाहरण के लिए, बिटोसिन नेटवर्क में, यदि हमलावर कृत्रिम रूप से ब्लॉकचैन की दिशा को बदलना चाहता है, तो सभी अन्य खनिकों की तुलना में अधिक कंप्यूटिंग शक्ति की आवश्यकता होती है, जबकि भौतिक दुनिया में, कंप्यूटिंग उपकरण की आवश्यकता होती है, जबकि कंप्यूटिंग उपकरण को भौतिक दुनिया से खरीदना पड़ता है।
इसलिए, विकेंद्रीकृत नेटवर्क में, सभी समस्याओं को “प्रौद्योगिकी” द्वारा हल नहीं किया जाता है, और जो कुछ प्रौद्योगिकी तक नहीं पहुंचता है, उसे लाभ के माध्यम से, आर्थिक प्रोत्साहन के माध्यम से हल करना होगा। “आर्थिक प्रोत्साहन” की आवश्यकता के कारण, एथेरियम में एक वॉलेट सिस्टम (आर्थिक इकाई “एथर” कहा जाता है) है, प्रत्येक उपयोगकर्ता के पास एक वॉलेट पता है जो इसकी एकमात्र पहचान है। इस बिंदु पर Bitcion के समान है।
“अनुबंध” एथेरियम द्वारा पेश की गई सबसे महत्वपूर्ण अवधारणा है। बिटकॉइन में, सभी पते एक उपयोगकर्ता के हैं। जब हम “उपयोगकर्ता” कहते हैं, तो हम वास्तव में सार्वजनिक कुंजी और निजी कुंजी की एक जोड़ी के बारे में बात कर रहे हैं। लेकिन एथेरियम में, एक कुंजी जोड़ी के स्वामित्व वाले पते के अलावा, “कोड” के स्वामित्व वाला एक और पता है, जो अनुबंध है। अनुबंध उपयोगकर्ता द्वारा जारी किया जाता है, जो मूल रूप से एक कोड है, जिसे जारी करने के बाद संशोधित नहीं किया जा सकता है।
एक उदाहरण के रूप में, Ethereum के आधिकारिक क्लाइंट में एक बहु-उपयोगकर्ता वॉलेट बनाने की सुविधा हैः

जैसा कि चित्र में दिखाया गया है, इस फ़ंक्शन के माध्यम से एक वॉलेट पता बनाया जा सकता है जो 2 अन्य लोगों के साथ साझा किया जाता है, और प्रत्येक व्यक्ति प्रति दिन 100 ईथर तक का उपयोग कर सकता है, यदि यह सीमा से अधिक है, तो एक और व्यक्ति की सहमति के साथ।
यह फ़ंक्शन वास्तव में एक अनुबंध बनाता है, और उपरोक्त तर्क अनुबंध में कोड द्वारा वर्णित है। जब आप इस साझा बटुए से भुगतान करना चाहते हैं, तो आपको इस साझा बटुए को एक संदेश भेजने की आवश्यकता होती है ((लेन-देन एक संदेश है, लेन-देन की राशि शून्य हो सकती है, केवल डेटा ले जा सकती है), और फिर साझा बटुए में कोड निष्पादित किया जाता है, यदि यह भुगतान अनुरोध उपरोक्त तर्क के अनुरूप है, तो वास्तविक भुगतान लेनदेन शुरू किया जाता है, अन्यथा यह अनुरोध खारिज कर दिया जाता है ((वास्तविक रूप से कोई भुगतान नहीं किया गया)) ।
एक अन्य उदाहरण “बचत अनुबंध” है, जो हमेशा के बारे में बात करता है बिटकॉइन एक डिजिटल मुद्रा के रूप में इसकी मुद्रा मूल्य (और कानूनी मुद्रा के विनिमय दर) अस्थिर है, अक्सर एक दिन में मुद्रा मूल्य में दो गुना वृद्धि या गिरावट होती है, लेकिन यदि आप अनुबंध का उपयोग करते हैं, तो यह समस्या कुछ हद तक हल हो सकती है।
हम एक व्यक्ति को “जोखिम से बचने वाला” कहेंगे जो मुद्रा के मूल्य को स्थिर रखना चाहता है, और एक अन्य व्यक्ति जो मुद्रा के मूल्य में उतार-चढ़ाव का जोखिम उठाने के लिए तैयार है और इससे लाभ उठाता है, उसे “जोखिम उठाने वाला” कहा जाएगा, इसलिए वे एक राशि (जैसे 1000 CNY) और एक समय विंडो (जैसे एक महीने) पर अनुबंध कर सकते हैं, और एक अनुबंध बना सकते हैं। निम्न तर्क को निष्पादित करेंः
यदि ईथर का मूल्य बढ़ता है, तो जोखिम लेने वाले को लाभ होता है, और यदि ईथर का मूल्य गिरता है, तो जोखिम लेने वाले को नुकसान होता है, लेकिन जोखिम से बचने वाले को हमेशा कोई नुकसान नहीं होता है। बेशक, जोखिम से बचने वाले और जोखिम लेने वाले पहले से सहमत हो सकते हैं कि जोखिम से बचने वाले को “बीमा” का भुगतान करने की आवश्यकता होगी, और यह भी तय किया जा सकता है कि जोखिम लेने वाले को 1000 CNY से कई गुना अधिक सुरक्षा प्रदान करने की आवश्यकता होगी (जिसकी दोगुनी दर अधिक है, वह अधिक जोखिम ले सकता है) ।
उपरोक्त उदाहरण में एक और समस्या है जो अच्छी तरह से हल नहीं हुई है, यह है कि ईथर और क्रिप्टोक्यूरेंसी के बीच विनिमय दर कैसे निर्धारित की जाए, जैसा कि हमने पहले उल्लेख किया था, अनुबंध केवल ब्लॉकचेन पर डेटा तक पहुंच सकता है, जबकि क्रिप्टोक्यूरेंसी भौतिक दुनिया में मौजूद डेटा है, न कि क्रिप्टोक्यूरेंसी दुनिया में, हमें इस तरह के “गैर-क्रिप्टोक्यूरेंसी दुनिया से डेटा” को ब्लॉकचेन में लाने के लिए किसी तरह के तंत्र की आवश्यकता है।
हम एक और अनुबंध डिजाइन कर सकते हैं जो इस तरह के तर्क को निर्दिष्ट करता है, जो वास्तविक दुनिया से एथेरम और फिक्स्ड मुद्रा के बीच विनिमय दरों को हर समय विंडो (जैसे एक घंटे) में एकत्र करता हैः
किसी भी प्रतिभागी के लिए, एक वास्तविक विनिमय दर प्रस्तुत करने के लिए पुरस्कार प्राप्त करने की अधिक संभावना है, क्योंकि वह अन्य लोगों के प्रस्तावों को नहीं जानता है, जबकि एक बहुत ही असामान्य विनिमय दर प्रस्तुत करने के लिए वारंटी खोने की अधिक संभावना होगी।
बेशक इस नियम में कुछ खामियां हैं, उदाहरण के लिए यदि किसी व्यक्ति के पास बहुत अधिक गारंटी है, तो वह औसत मूल्य को वास्तविक विनिमय दर से अधिक या कम कीमत पर खींच सकता है और साथ ही साथ पुरस्कार प्राप्त कर सकता है, और अन्य लोगों को गारंटी खो देता है जो सटीक विनिमय दर प्रदान करते हैं। लेकिन वास्तव में वास्तविक दुनिया में भी यही है, यदि आपके पास बहुत अधिक पैसा है तो आप एक वस्तु की कीमत को बढ़ा सकते हैं या दबा सकते हैं, केवल वास्तविक दुनिया की तुलना में, इलेक्ट्रॉनिक मुद्रा की मात्रा बहुत छोटी है, और बहुत अधिक धन की आवश्यकता नहीं है। लेकिन वास्तव में इस तरह की दुर्भावनापूर्ण वृद्धि या दबाव भी बहुत जोखिम भरा है, क्योंकि आप यह सुनिश्चित नहीं कर सकते हैं कि आपके द्वारा भुगतान की गई गारंटी पर्याप्त है, और यदि यह विफल हो जाता है तो सभी गारंटी खो दी जाएगी।
एक और कमजोरी यह है कि “हर कोई अनुबंध के लिए जमा कर सकता है और एक विनिमय दर प्रदान कर सकता है” यह कदम लेनदेन के निर्माण के माध्यम से किया जाता है, और सभी लेनदेन ब्लॉकचेन पर लिखे जाते हैं, इसलिए आपके द्वारा प्रस्तुत विनिमय दर वास्तव में दूसरों के लिए दिखाई देती है, और आगे दुर्भावनापूर्ण हमलावरों के लिए अवसर पैदा करती है, और मैं एक उदाहरण के साथ “रैंडम नंबर” उत्पन्न करने के बारे में बात करूंगा।
हमने पहले कहा था कि अनुबंध ब्लॉकचेन पर डेटा पढ़ सकता है, लेकिन ब्लॉकचेन पर डेटा निश्चित है, अगर हम एक जुआ-जैसे अनुप्रयोग को लागू करना चाहते हैं, तो हम एक यादृच्छिक संख्या कहां से प्राप्त कर सकते हैं?
एक यादृच्छिक संख्या स्रोत के बारे में सोचने के लिए अगले ब्लॉक का हैश है, और ज्यादातर मामलों में, इस स्तर की यादृच्छिकता पर्याप्त है। लेकिन वास्तव में, खनिक इस यादृच्छिक संख्या को कुछ हद तक नियंत्रित कर सकते हैं, यह मानते हुए कि एक खनिक एक जुआ में भाग लेता है, और जुआ का लाभ एक ब्लॉक खोदने से अधिक होता है, तो यदि खनिक एक ब्लॉक खो देता है जो खुद को खो देगा, तो यह स्पष्ट है कि खनिक इस नए ब्लॉक को प्रकाशित नहीं करना चुनता है, यह एक एकल खनिक की गणना शक्ति के मामले में अधिक स्पष्ट है।
इसलिए हमें एक ऐसा तंत्र पेश करने की आवश्यकता है जो विनिमय दरों को एकत्रित करने के समान है, जो कि यादृच्छिक संख्याओं को एकत्रित करता है, और फिर प्रत्येक समय खिड़की के अंत में इन बीजों का उपयोग करके एक यादृच्छिक संख्या की गणना करता है और। लेकिन विनिमय दरों को एकत्रित करने की तरह, क्योंकि प्रतिभागी विनिमय दरों को प्रस्तुत करने के लिए लेनदेन का निर्माण करते हैं, इसलिए एक समय खिड़की के बीच, प्रत्येक व्यक्ति द्वारा प्रस्तुत यादृच्छिक संख्या अन्य लोगों के लिए दिखाई देती है, इसलिए एक व्यक्ति जो पहले से ही एक जुआ में भाग ले रहा है, वह ध्यान से एक यादृच्छिक संख्या के बीज को चुन सकता है ताकि अन्य लोगों द्वारा प्रस्तुत किए गए बीज के अतिरिक्त नए बीज के परिणामस्वरूप यादृच्छिक संख्या उसकी अपेक्षाओं के अनुरूप हो।
इसलिए यह आवश्यक है कि हम बीज संग्रह की खिड़की को दो भागों में विभाजित करें ताकि हम एक यादृच्छिक संख्या प्राप्त कर सकें जिसे कोई भी भविष्यवाणी और हस्तक्षेप नहीं कर सकता हैः
पहले चरण में आप केवल अन्य लोगों द्वारा प्रस्तुत किए गए बीज के सारण मानों को जानते हैं, वास्तविक बीज को नहीं जानते हैं, और इसलिए परिणामों में हस्तक्षेप करने के लिए एक बीज का निर्माण नहीं कर सकते हैं; जबकि दूसरे चरण में, सभी केवल पहले चरण में प्रस्तुत किए गए बीज की पुष्टि कर रहे हैं, नए को प्रस्तुत नहीं कर सकते हैं, और न ही दूसरों को प्रस्तुत करने से रोक सकते हैं।
हमने पहले उल्लेख किया है कि बिटकॉइन स्क्रिप्ट में कोई चक्र, पुनरावृत्ति, और कूदने की क्षमता नहीं है, शायद बिटकॉइन बिटकॉइन स्क्रिप्ट के निष्पादन समय को नियंत्रित करने के लिए है, क्योंकि ट्यूरिन के “स्टॉप थ्योरी” के अनुसार, ट्यूरिन-सम्पन्न प्रोग्रामिंग भाषाओं द्वारा लिखी गई प्रक्रियाएं हमेशा केवल स्थैतिक विश्लेषण के दृष्टिकोण से यह निर्धारित नहीं कर सकती हैं कि क्या यह सीमित चरणों के बाद समाप्त हो जाएगी, इस प्रकार एक दुर्भावनापूर्ण हमलावर खनिकों के सामान्य काम को बाधित करने के लिए एक लेनदेन का निर्माण कर सकता है जो एक मृत चक्र का कारण बनता है।
और Ethereum फिर से “आर्थिक प्रोत्साहन” के माध्यम से इस समस्या को दूर करता है, अनुबंध एक वर्चुअल मशीन पर संचालित होता है जिसे ईवीएम (एथेरियम वर्चुअल मशीन) कहा जाता है। ईवीएम एक स्वयं-भुगतान वाली वर्चुअल मशीन है, जो ईवीएम के मानक में संचालित होने के लिए आवश्यक मेमोरी और सीपीयू समय के आधार पर प्रत्येक ओपकोड द्वारा खपत गैस को परिभाषित करता है, जो कि ईथर द्वारा खरीदा गया एक कंप्यूटिंग संसाधन है। जैसा कि ऊपर उल्लेख किया गया है, जब एक लेनदेन का लक्ष्य अनुबंध होता है, तो अनुबंध कोड निष्पादित होता है, लेनदेन के प्रवर्तक को अनुबंध निष्पादन के दौरान खपत गैस के लिए भुगतान करने की आवश्यकता होती है, जबकि यह कहते हुए कि “एक अधिक�