As the world’s most popular blockchain for smart contracts, Ethereum owes much of its success to the Ethereum Virtual Machine (EVM). From gas fees to smart contract execution, the Ethereum Virtual Machine is responsible for much of the magic behind the Ethereum blockchain. EVM also powers the ecosystem of other leading blockchains like Polygon, Binance Smart Chain, etc.
But what is the Ethereum Virtual Machine, and how does it work?
Let’s find out all together what it does in this article.
Defining the Ethereum Virtual Machine
Ethereum Virtual Machine is software that executes programmable code on the blockchain (smart contracts) and determines the state of Ethereum after each successful block.
As a virtual machine, EVM doesn’t have a central computer or cloud — it distributes and executes information across hundreds of computers participating in the network, also called nodes. These nodes all run the same EVM code, which makes it easier to build software on Ethereum.
Brief History of the Ethereum Virtual Machine
Before diving deep into what EVM does, let’s first understand how it came to be. Vitalik Buterin introduced the idea of Ethereum in 2013 — creating a decentralized platform for building applications. Vitalik’s idea eventually became the Ethereum network, and at the heart of that network is the EVM.
Interestingly, Vitalik claims that BitTorrent was the first decentralized app (or dApp) ever created in 2001. BitTorrent and the EVM are similar in that they are both peer-to-peer networks with no central authority, but they serve different purposes.
For instance, BitTorrent is great for a singular purpose i.e, sharing files. But EVM goes beyond just file sharing with decentralized applications (dApps).
The EVM provides a secure and reliable environment for running dApps, which is crucial, particularly while handling sensitive data or financial transactions.
What Does the Ethereum Virtual Machine Do?
Ethereum Virtual machine primarily functions as a runtime environment for smart contracts.
You can think of EVM as the “brain” behind the Ethereum network: It executes code and ensures the entire network agrees on the outcome of the code.
EVM powers many decentralized applications and NFTs on the Ethereum blockchain. Due to the flexibility and security of smart contracts, these dApps range from play-to-earn games to crypto lending and borrowing applications. With EVM, you can build these dApps in any programming language and execute timely transactions.
Further, EVM is capable of Turing completeness, which means that smart contracts can perform any combination of code and complex calculations. This includes complex computations like AI and cryptography, allowing for a wide range of use cases and applications.
Therefore, Ethereum dApps benefit from the security of a decentralized network, plus the flexibility of performing complex computations.
How the Ethereum Virtual Machine Works
The Ethereum Virtual Machine can implement smart contract logic and validate ownership of funds. To do so, it uses a stack-based architecture, which means the nodes come in a particular order. Having a strict pre-defined order helps Ethereum resist hacker attacks and increase efficiency. Further, a stack-based architecture is very versatile, and easily supports different types of instructions.
EVM supports different programming languages, but the most popular ones for developers are Vyper and Solidity. This is because developers write smart contracts and decentralized applications using these languages.
However, since EVM cannot understand English like humans, the network must translate the code before deploying it. This is where compilers come into play — software that acts as a translator between the machine and the developer.
Compilers convert human-readable Solidity code to the computer-friendly version in two components: an instruction format called “bytecode” and a specification technique called Contract ABI.
While Bytecode is the common language that the entire Ethereum network understands, Contract ABI defines how other applications can interact with each smart contract. Let’s understand how this works in the Ethereum blockchain.
First, each smart contract on the Ethereum blockchain goes through the Ethereum compiler, translating it to bytecode and Contract ABI.
Next, the bytecode and Contract ABI is deployed to the EVM, distributing it across the entire Ethereum network. Each node on the network receives and stores a copy of the bytecode, making it tamper-proof.
Now, the EVM has the job of simplifying the bytecode further for the computer. Each computer has pre-defined sets of instructions known as opcodes. Bytecode sequences correspond to and trigger these opcodes. Next the EVM executes all of the requests represented by the opcode.
Advantages of the EVM
Blockchains using the Ethereum Virtual machine are very developer-friendly, and therefore quite popular. EVM allows for a range of capabilities but here are some of the most prominent ones:
Cross Blockchain Support
The Ethereum Virtual Machine can support any blockchain with bytecode-compatible smart contracts. Therefore, several blockchains, such as Polygon and Avalanche, use EVM to power their ecosystems.
Isolated Sandbox
Although the EVM uses the same computer network for all applications, it can execute each code separately. There is no impact on the underlying blockchain or other data stored by the node computers. This allows for fast and efficient development.
Flexible Development
EVM can easily execute complex and customized smart contracts, such as those used for transactions on dApps, DeFi, games, and NFTs. It also has a large developer community that makes building software easier.
Cross-functional Across Operating Systems
Blockchains have a large number of computers participating in their network, each with different operating systems like MacOS, Windows etc. These operating systems are vastly different from the others, which makes it challenging to develop software. However, EVM allows us to standardize and run programs on multiple operating systems without writing separate code.
Disadvantages of the EVM
While building on Ethereum has many benefits, all good things come at a price. And in Ethereum, that price is high crypto gas fees.
The EVM has scalability limitations, meaning it can only handle a limited number of transactions per second. As a result, when the network is too crowded, the gas fees can shoot up very quickly.
Due to the popularity of Ethereum, it can become expensive to deploy custom smart contracts or bulky applications. You need to optimize your contracts for speed and efficiency, removing repetitive code or unnecessary functions. You also need to account for the fact that storage costs on Ethereum can be equally expensive.
Another disadvantage of EVM is that once you deploy a smart contract on the blockchain, you can’t change it. This can be a major problem if you discover a bug or vulnerability after deployment. In such cases, you’ll need to redeploy the entire contract, and the extra fees can add up quickly.
The Future of EVM
The future of EVM is bright, with growing adoption and exciting developments on the horizon.
For instance, with other blockchains using a common base such as EVM, interoperability is becoming easier. For instance, developers can easily create dApps compatible with multiple blockchains at once. Further, it’s easier to transfer funds between EVM-compatible blockchains, so new blockchains can scale faster.
Another exciting development for the EVM is the EOF upgrade in 2023. To explain, EOF stands for EVM Object Format and it will be the first upgrade to the Ethereum Virtual Machine since its inception in 2015. To learn more about the details, make sure you read the EOF documentation. But to give you a basic overview: EOF will significantly change how EVM works, allowing for cheaper and faster smart contracts and an overall increase in security.
All Comments