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

इथेरियम वर्चुअल मशीन (EVM)

इथेरियम वर्चुअल मशीन (EVM) एक विकेंद्रीकृत वर्चुअल वातावरण है जो सभी इथेरियम नोड्स पर लगातार और सुरक्षित रूप से कोड निष्पादित करता है। नोड्स स्मार्ट अनुबंधों को निष्पादित करने के लिए EVM चलाते हैं, संचालन के लिए आवश्यक कम्प्यूटेशनल प्रयास को मापने के लिए "गैस" का उपयोग करते हैं, जिससे कुशल संसाधन आवंटन और नेटवर्क सुरक्षा सुनिश्चित होती है।

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

EVM को समझने के लिए कंप्यूटर विज्ञान की सामान्य शब्दावली जैसे बाइट्स (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) जैसी क्रिप्टोग्राफी/ब्लॉकचेन अवधारणाओं के साथ सहज होना भी मददगार होगा।

लेजर से स्थिति मशीन तक

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

जबकि इथेरियम की अपनी मूल क्रिप्टोकरेंसी (ईथर) है जो लगभग उन्हीं सहज नियमों का पालन करती है, यह एक बहुत अधिक शक्तिशाली कार्य को भी सक्षम करती है: स्मार्ट अनुबंध। इस अधिक जटिल विशेषता के लिए, एक अधिक परिष्कृत उपमा की आवश्यकता है। एक वितरित लेजर के बजाय, इथेरियम एक वितरित स्थिति मशीन (opens in a new tab) है। इथेरियम की स्थिति एक बड़ी डेटा संरचना है जो न केवल सभी खातों और शेष राशि को रखती है, बल्कि एक मशीन स्थिति (machine state) भी रखती है, जो पूर्व-निर्धारित नियमों के एक सेट के अनुसार ब्लॉक दर ब्लॉक बदल सकती है, और जो मनमाना मशीन कोड निष्पादित कर सकती है। ब्लॉक दर ब्लॉक स्थिति बदलने के विशिष्ट नियम EVM द्वारा परिभाषित किए गए हैं।

A diagram showing the make up of the EVM आरेख Ethereum EVM illustrated (opens in a new tab) से अनुकूलित

इथेरियम स्थिति संक्रमण फ़ंक्शन

EVM एक गणितीय फ़ंक्शन की तरह व्यवहार करता है: एक इनपुट दिए जाने पर, यह एक नियतात्मक (deterministic) आउटपुट उत्पन्न करता है। इसलिए इथेरियम को अधिक औपचारिक रूप से एक स्थिति संक्रमण फ़ंक्शन (state transition function) के रूप में वर्णित करना काफी मददगार है:

Y(S, T)= S'

एक पुरानी वैध स्थिति (S) और वैध लेन-देन (T) का एक नया सेट दिए जाने पर, इथेरियम स्थिति संक्रमण फ़ंक्शन Y(S, T) एक नई वैध आउटपुट स्थिति S' उत्पन्न करता है।

स्थिति

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

लेन-देन

लेन-देन खातों से क्रिप्टोग्राफ़िक रूप से हस्ताक्षरित निर्देश हैं। लेन-देन दो प्रकार के होते हैं: वे जिनके परिणामस्वरूप संदेश कॉल होते हैं और वे जिनके परिणामस्वरूप अनुबंध निर्माण होता है।

अनुबंध निर्माण के परिणामस्वरूप संकलित स्मार्ट अनुबंध बाइटकोड युक्त एक नया कॉन्ट्रैक्ट खाता बनता है। जब भी कोई अन्य खाता उस अनुबंध पर संदेश कॉल करता है, तो वह अपना बाइटकोड निष्पादित करता है।

EVM निर्देश

EVM 1024 आइटम की गहराई के साथ एक स्टैक मशीन (opens in a new tab) के रूप में निष्पादित होता है। प्रत्येक आइटम एक 256-बिट शब्द है, जिसे 256-बिट क्रिप्टोग्राफी (जैसे केकाक-256 हैश या secp256k1 हस्ताक्षर) के साथ उपयोग में आसानी के लिए चुना गया था।

निष्पादन के दौरान, EVM एक क्षणिक मेमोरी (एक शब्द-संबोधित बाइट सरणी के रूप में) बनाए रखता है, जो लेन-देन के बीच बनी नहीं रहती है।

क्षणिक स्टोरेज

क्षणिक स्टोरेज (Transient storage) एक प्रति-लेन-देन कुंजी-मूल्य (key-value) स्टोर है जिसे TSTORE और TLOAD ऑपकोड के माध्यम से एक्सेस किया जाता है। यह एक ही लेन-देन के दौरान सभी आंतरिक कॉल में बना रहता है लेकिन लेन-देन के अंत में साफ़ हो जाता है। मेमोरी के विपरीत, क्षणिक स्टोरेज को निष्पादन फ्रेम के बजाय EVM स्थिति के हिस्से के रूप में मॉडल किया गया है, फिर भी यह वैश्विक स्थिति के लिए प्रतिबद्ध नहीं है। क्षणिक स्टोरेज एक लेन-देन के दौरान आंतरिक कॉल में गैस-कुशल अस्थायी स्थिति साझाकरण को सक्षम बनाता है।

स्टोरेज

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

ऑपकोड

संकलित स्मार्ट अनुबंध बाइटकोड कई EVM ऑपकोड के रूप में निष्पादित होता है, जो XOR, AND, ADD, SUB आदि जैसे मानक स्टैक संचालन करते हैं। EVM कई ब्लॉकचेन-विशिष्ट स्टैक संचालन भी लागू करता है, जैसे ADDRESS, BALANCE, BLOCKHASH आदि। ऑपकोड सेट में TSTORE और TLOAD भी शामिल हैं, जो क्षणिक स्टोरेज तक पहुंच प्रदान करते हैं।

A diagram showing where gas is needed for EVM operations आरेख Ethereum EVM illustrated (opens in a new tab) से अनुकूलित

EVM कार्यान्वयन

EVM के सभी कार्यान्वयनों को इथेरियम येलो पेपर में वर्णित विनिर्देश का पालन करना चाहिए।

इथेरियम के दस साल के इतिहास में, EVM में कई संशोधन हुए हैं, और विभिन्न प्रोग्रामिंग भाषाओं में EVM के कई कार्यान्वयन हैं।

इथेरियम निष्पादन क्लाइंट में एक EVM कार्यान्वयन शामिल है। इसके अतिरिक्त, कई स्टैंडअलोन कार्यान्वयन हैं, जिनमें शामिल हैं:

आगे की पढ़ाई

ट्यूटोरियल: इथेरियम वर्चुअल मशीन (EVM) / इथेरियम पर ऑपकोड