---
title: "इथेरियम व्हर्च्युअल मशीन (EVM)"
description: "इथेरियम व्हर्च्युअल मशीनची ओळख आणि त्याचा स्थिती, व्यवहार आणि स्मार्ट कॉन्ट्रॅक्ट्सशी कसा संबंध आहे."
lang: mr
---

इथेरियम व्हर्च्युअल मशीन (EVM) हे एक विकेंद्रित व्हर्च्युअल वातावरण आहे जे सर्व [इथेरियम](/) नोड्सवर सातत्याने आणि सुरक्षितपणे कोड कार्यान्वित करते. नोड्स स्मार्ट कॉन्ट्रॅक्ट्स कार्यान्वित करण्यासाठी EVM चालवतात, [ऑपरेशन्ससाठी](/developers/docs/evm/opcodes/) आवश्यक असलेल्या संगणकीय प्रयत्नांचे मोजमाप करण्यासाठी "[गॅस](/developers/docs/gas/)" वापरतात, ज्यामुळे कार्यक्षम संसाधन वाटप आणि नेटवर्क सुरक्षा सुनिश्चित होते.

## पूर्वअटी {#prerequisites}

EVM समजून घेण्यासाठी संगणक विज्ञानातील सामान्य संज्ञा जसे की [बाइट्स](https://wikipedia.org/wiki/Byte), [मेमरी](https://wikipedia.org/wiki/Computer_memory), आणि [स्टॅक](<https://wikipedia.org/wiki/Stack_(abstract_data_type)>) यांची काही मूलभूत माहिती असणे आवश्यक आहे. तसेच [हॅश फंक्शन्स](https://wikipedia.org/wiki/Cryptographic_hash_function) आणि [मर्कल ट्री](https://wikipedia.org/wiki/Merkle_tree) यांसारख्या गूढलेखन/ब्लॉकचेन संकल्पनांची माहिती असणे देखील उपयुक्त ठरेल.

## लेजरपासून स्टेट मशीनपर्यंत {#from-ledger-to-state-machine}

'डिस्ट्रिब्युटेड लेजर' (वितरित खातेवही) ची उपमा अनेकदा बिटकॉइनसारख्या ब्लॉकचेनचे वर्णन करण्यासाठी वापरली जाते, जे गूढलेखनाच्या मूलभूत साधनांचा वापर करून विकेंद्रित चलन सक्षम करतात. लेजर क्रियाकलापांची नोंद ठेवते ज्याने लेजरमध्ये बदल करण्यासाठी कोणी काय करू शकते आणि काय करू शकत नाही हे नियंत्रित करणाऱ्या नियमांच्या संचाचे पालन केले पाहिजे. उदाहरणार्थ, बिटकॉइन पत्ता त्याने पूर्वी प्राप्त केलेल्या बिटकॉइनपेक्षा जास्त बिटकॉइन खर्च करू शकत नाही. हे नियम बिटकॉइन आणि इतर अनेक ब्लॉकचेनवरील सर्व व्यवहारांचा आधार आहेत.

इथेरियमची स्वतःची मूळ क्रिप्टोकरन्सी (इथर) असली तरी ती जवळजवळ तशाच अंतर्ज्ञानी नियमांचे पालन करते, ती एक अधिक शक्तिशाली कार्य देखील सक्षम करते: [स्मार्ट कॉन्ट्रॅक्ट्स](/developers/docs/smart-contracts/). या अधिक जटिल वैशिष्ट्यासाठी, अधिक अत्याधुनिक उपमा आवश्यक आहे. वितरित लेजर ऐवजी, इथेरियम हे एक वितरित [स्टेट मशीन](https://wikipedia.org/wiki/Finite-state_machine) आहे. इथेरियमची स्थिती ही एक मोठी डेटा रचना आहे जी केवळ सर्व खाती आणि शिल्लकच ठेवत नाही, तर एक _मशीन स्थिती_ देखील ठेवते, जी पूर्व-परिभाषित नियमांच्या संचानुसार एका ब्लॉकवरून दुसऱ्या ब्लॉकमध्ये बदलू शकते आणि जी अनियंत्रित मशीन कोड कार्यान्वित करू शकते. एका ब्लॉकवरून दुसऱ्या ब्लॉकमध्ये स्थिती बदलण्याचे विशिष्ट नियम EVM द्वारे परिभाषित केले जातात.

![A diagram showing the make up of the EVM](./evm.png)
_आकृती [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) वरून रूपांतरित_

## इथेरियम स्टेट ट्रान्झिशन फंक्शन {#the-ethereum-state-transition-function}

EVM एका गणितीय फंक्शनप्रमाणे वागते: इनपुट दिल्यास, ते एक निश्चित आउटपुट तयार करते. त्यामुळे इथेरियमला **स्टेट ट्रान्झिशन फंक्शन** (स्थिती संक्रमण कार्य) आहे असे अधिक औपचारिकपणे वर्णन करणे खूप उपयुक्त ठरते:

```
Y(S, T)= S'
```

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

### स्थिती {#state}

इथेरियमच्या संदर्भात, स्थिती ही एक प्रचंड डेटा रचना आहे ज्याला [सुधारित मर्कल पॅट्रिशिया ट्राय](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) म्हणतात, जी सर्व [खाती](/developers/docs/accounts/) हॅशद्वारे जोडलेली ठेवते आणि ब्लॉकचेनवर संग्रहित केलेल्या एकाच रूट हॅशमध्ये कमी करण्यायोग्य असते.

### व्यवहार {#transactions}

व्यवहार हे खात्यांमधून गूढलेखनाद्वारे स्वाक्षरी केलेले निर्देश आहेत. व्यवहारांचे दोन प्रकार आहेत: ज्यांचा परिणाम संदेश कॉलमध्ये होतो आणि ज्यांचा परिणाम कॉन्ट्रॅक्ट निर्मितीमध्ये होतो.

कॉन्ट्रॅक्ट निर्मितीचा परिणाम संकलित [स्मार्ट कॉन्ट्रॅक्ट](/developers/docs/smart-contracts/anatomy/) बाइटकोड असलेल्या नवीन कॉन्ट्रॅक्ट खात्याच्या निर्मितीमध्ये होतो. जेव्हा जेव्हा दुसरे खाते त्या कॉन्ट्रॅक्टला संदेश कॉल करते, तेव्हा ते त्याचा बाइटकोड कार्यान्वित करते.

## EVM निर्देश {#evm-instructions}

EVM 1024 आयटमच्या खोलीसह [स्टॅक मशीन](https://wikipedia.org/wiki/Stack_machine) म्हणून कार्यान्वित होते. प्रत्येक आयटम हा 256-बिट शब्द आहे, जो 256-बिट गूढलेखनासह (जसे की केकाक-256 हॅश किंवा secp256k1 स्वाक्षऱ्या) वापरण्याच्या सुलभतेसाठी निवडला गेला होता.

अंमलबजावणी दरम्यान, EVM एक क्षणिक _मेमरी_ (वर्ड-अॅड्रेस्ड बाइट अॅरे म्हणून) राखते, जी व्यवहारांदरम्यान टिकून राहत नाही.

### ट्रान्झिएंट स्टोरेज {#transient-storage}

ट्रान्झिएंट स्टोरेज हे प्रति-व्यवहार की-व्हॅल्यू स्टोअर आहे ज्यामध्ये `TSTORE` आणि `TLOAD` ऑपकोड्सद्वारे प्रवेश केला जातो. हे एकाच व्यवहारादरम्यान सर्व अंतर्गत कॉल्समध्ये टिकून राहते परंतु व्यवहाराच्या शेवटी साफ केले जाते. मेमरीच्या विपरीत, ट्रान्झिएंट स्टोरेज हे एक्झिक्यूशन फ्रेमऐवजी EVM स्थितीचा भाग म्हणून मॉडेल केले जाते, तरीही ते जागतिक स्थितीसाठी कमिट केले जात नाही. ट्रान्झिएंट स्टोरेज एका व्यवहारादरम्यान अंतर्गत कॉल्समध्ये गॅस-कार्यक्षम तात्पुरती स्थिती सामायिक करण्यास सक्षम करते.

### स्टोरेज {#storage}

कॉन्ट्रॅक्ट्समध्ये मर्कल पॅट्रिशिया _स्टोरेज ट्राय_ (वर्ड-अॅड्रेसेबल वर्ड अॅरे म्हणून) असते, जे संबंधित खात्याशी जोडलेले असते आणि जागतिक स्थितीचा भाग असते. हे कायमस्वरूपी स्टोरेज ट्रान्झिएंट स्टोरेजपेक्षा वेगळे आहे, जे केवळ एकाच व्यवहाराच्या कालावधीसाठी उपलब्ध असते आणि खात्याच्या कायमस्वरूपी स्टोरेज ट्रायचा भाग बनत नाही.

### ऑपकोड्स {#opcodes}

संकलित स्मार्ट कॉन्ट्रॅक्ट बाइटकोड अनेक EVM [ऑपकोड्स](/developers/docs/evm/opcodes) म्हणून कार्यान्वित होतो, जे `XOR`, `AND`, `ADD`, `SUB` इत्यादींसारखी मानक स्टॅक ऑपरेशन्स करतात. EVM अनेक ब्लॉकचेन-विशिष्ट स्टॅक ऑपरेशन्स देखील लागू करते, जसे की `ADDRESS`, `BALANCE`, `BLOCKHASH` इत्यादी. ऑपकोड सेटमध्ये `TSTORE` आणि `TLOAD` देखील समाविष्ट आहेत, जे ट्रान्झिएंट स्टोरेजमध्ये प्रवेश प्रदान करतात.

![A diagram showing where gas is needed for EVM operations](../gas/gas.png)
_आकृत्या [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf) वरून रूपांतरित_

## EVM अंमलबजावणी {#evm-implementations}

EVM च्या सर्व अंमलबजावणींनी इथेरियम येलो पेपरमध्ये वर्णन केलेल्या तपशीलांचे पालन केले पाहिजे.

इथेरियमच्या दहा वर्षांच्या इतिहासात, EVM मध्ये अनेक सुधारणा झाल्या आहेत आणि विविध प्रोग्रामिंग भाषांमध्ये EVM च्या अनेक अंमलबजावणी आहेत.

[इथेरियम एक्झिक्यूशन क्लायंट्समध्ये](/developers/docs/nodes-and-clients/#execution-clients) EVM अंमलबजावणीचा समावेश आहे. याव्यतिरिक्त, अनेक स्टँडअलोन अंमलबजावणी आहेत, ज्यामध्ये खालील समाविष्ट आहेत:

- [Py-EVM](https://github.com/ethereum/py-evm) - _Python_
- [evmone](https://github.com/ethereum/evmone) - _C++_
- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_
- [revm](https://github.com/bluealloy/revm) - _Rust_

## अधिक वाचन {#further-reading}

- [इथेरियम येलो पेपर](https://ethereum.github.io/yellowpaper/paper.pdf)
- [जेलोपेपर उर्फ KEVM: K मधील EVM चे सिमेंटिक्स](https://jellopaper.org/)
- [द बेजपेपर](https://github.com/chronaeon/beigepaper)
- [इथेरियम व्हर्च्युअल मशीन ऑपकोड्स](https://www.ethervm.io/)
- [इथेरियम व्हर्च्युअल मशीन ऑपकोड्स इंटरएक्टिव्ह रेफरन्स](https://www.evm.codes/)
- [Solidity च्या दस्तऐवजीकरणामध्ये एक छोटी ओळख](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6)
- [मास्टरिंग इथेरियम - द इथेरियम व्हर्च्युअल मशीन](https://github.com/ethereumbook/ethereumbook/blob/openedition/13evm.asciidoc)

## संबंधित विषय {#related-topics}

- [गॅस](/developers/docs/gas/)

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

- [येलो पेपरचे EVM तपशील समजून घेणे](/developers/tutorials/yellow-paper-evm/) _– इथेरियम येलो पेपरमधील औपचारिक EVM तपशीलाचे मार्गदर्शित वॉकथ्रू._
- [कॉन्ट्रॅक्टचे रिव्हर्स इंजिनिअरिंग](/developers/tutorials/reverse-engineering-a-contract/) _– EVM ऑपकोड्स वापरून संकलित स्मार्ट कॉन्ट्रॅक्टचे रिव्हर्स-इंजिनिअरिंग कसे करावे._

<QuizWidget quizKey="evm" />
