What’s hot about VMs in 2023?
Smart contract VMs have mostly stayed the same since Ethereum was first created. All popular smart contract chains use the same VM implementation as Ethereum (EVM). As layer 2 scaling solutions and DA solutions are being improved, the cost of posting rollup transaction data to L1 will no longer be the main barrier to scaling Ethereum. The next frontier of change will be the EVM. In a future where bandwidth is cheap, the bottleneck will fall down to computational throughput: how fast a system can execute transactions while keeping hardware & resource requirements low enough for decentralization.
Index
The Ethereum Virtual Machine (EVM)
How the EVM Works
EVM Dominance
Drawbacks of the EVM - A Case for Other VMs
FuelVM
WASM
VMs on the Move
Conclusion
The Ethereum Virtual Machine (EVM)
The EVM is a Turing-complete virtual machine that is responsible for the deployment and execution of smart contracts on the Ethereum blockchain. The EVM maintains the state of the Ethereum blockchain by updating the blockchain state after executing each smart contract. The blockchain state records all the balances, contracts, and other data on the blockchain. The EVM updates the blockchain state by adding or removing data as specified by the smart contract. As a radically new system, the EVM required a new programming language that could directly “speak” to it; that language is Solidity.
How the EVM Works
When a transaction is submitted to the Ethereum network, the EVM executes the smart contract associated with the transaction. It does this by reading the EVM code from the Virtual ROM and executing the instructions in the EVM code (Bytecode). The EVM uses the stack, memory, and storage to store the data needed to execute the EVM code.
The EVM uses the program counter to track which smart contract instruction is currently being executed. It uses the stack to store data needed by the instructions and the memory to store data too large to fit on the stack. The Virtual ROM stores the EVM code, and the storage stores the state of the blockchain.
Gas fee is also an important component of the EVM. The amount of gas required for a transaction is determined by the complexity of the transaction. More complex transactions require more gas. Every instruction executed has a cost in gas, so the EVM’s gas supply is reduced as the EVM steps through the program. Before each operation, the EVM checks enough gas to pay for the operation’s execution. If there isn’t enough gas, execution is halted, and the transaction is reverted.
The EVM continues to execute the EVM code until it reaches an instruction that tells it to stop. When the EVM stops executing the EVM code, it returns the transaction results to the user.

EVM Dominance
There are over 20 EVM implementations across several layer 1s and layer 2s. Looking at the top projects built on Ethereum, it takes them several times longer to migrate to a non-EVM chain than an EVM one for the following reasons:
Developer familiarity: Developers can use their existing knowledge and skills to build on new platforms.
Smart contract interoperability: Smart contracts can be easily migrated and integrated across multiple platforms.
Code reuse: Developers can reuse existing smart contracts and dApps, accelerating development cycles.
Security and auditing standards: The EVM has been thoroughly reviewed and battle-tested, which can reduce the risk of vulnerabilities.
Ecosystem compatibility: New ecosystems can seamlessly integrate with existing DeFi protocols and tap into the liquidity and user base of the Ethereum ecosystem.
EVM compatibility can be a successful strategy for bootstrapping an ecosystem. Avalanche and Celo have used this strategy to bootstrap their ecosystems of developers. Solutions like Celestia consider these network effects by allowing Ethereum and other EVM chains to function as the settlement layer. This will retain EVM composability while also providing more optionality and scalable security.
Recently, the Bitcoin ecosystem has seen several new developments with its layer 2 scaling solutions such as Lightning Network and Stacks. Rollkit, a modular framework for rollups developed by Celestia, launched an integration on Bitcoin that allows the EVM to be run as a sovereign rollup on Bitcoin, with data availability and consensus options.
Drawbacks of the EVM - A Case for Other VMs
The Ethereum community is relatively smaller with only over 5,700 active EVM developers compared to other developer ecosystems beyond crypto (IOS with >20M). Other Wasm-based VMs and smart contract languages such as Move, and Sway are also in a position to bootstrap their developer ecosystems and have been tackling inherent issues within the EVM, such as:
Reentrancy is an attack that allows an external contract to call a function in a smart contract multiple times, leading to unexpected behavior and security vulnerabilities. The EVM does not have any in-built protection against reentrancy attacks. In April of 2020, a defi project, DForce lost over $25M, 99% of its funds, through a Reentrancy attack.
The EVM does not use Objects. The lack of objects in the EVM can make developing and maintaining smart contracts more challenging. This is because, without objects, developers need to duplicate code used in multiple places, leading to errors and making it difficult to understand the code. Additionally, smart contracts written without objects can be less efficient in terms of memory usage, leading to higher gas costs and slower execution times.
The EVM can only execute transactions sequentially. The sequential execution of transactions is one of the main bottlenecks to the network’s throughput. First, it leads to a longer execution time of the transactions in a block, limiting block time. It limits the number of transactions that can be added to the block to allow nodes to execute and confirm the block. In periods of high activity, validators cannot process all the transactions and a fee-bidding war ensues to ensure priority execution pushing the transaction fees higher and resulting in further inconveniences for the users.
FuelVM
Fuel Labs announced its virtual machine, the Fuel VM. It is a custom VM that is UTXO-based and has its own Domain Specific Language, Sway. FuelVM is a simplified version of the EVM that is compatible with it. This makes it easier for developers familiar with the EVM to learn how to use FuelVM. This can help to onboard developers to the Fuel ecosystem more quickly and easily.
Parallel processing: Parallelization is the act of running multiple tasks simultaneously. The FuelVM can parallelize transactions that are not contentious. This means it can execute multiple transactions simultaneously, significantly increasing throughput.
Fraud-provable: The FuelVM is designed to be fraud-provable. This means it is possible to prove that a transaction is fraudulent, even if the fraud is not detected until after the transaction has been executed.
Native Assets: The EVM allows for only one native asset, ETH, whereas FuelVM can allow developers to implement assets in smart contracts and allows the FuelVM to handle those smart contracts natively. With native assets, users can send and receive assets more quickly and cheaply. They can also use assets in a wider range of applications, given the flexibility that native assets offer developers.
Native Account Abstraction: FuelVM supports account abstraction using a predicates system. This allows for more flexibility and innovation in how accounts are implemented. Predicates can be used to implement various account schemes, such as multi-sig accounts, threshold accounts, and delegated accounts.
WASM
WebAssembly (WASM) is a binary instruction format for a stack-based virtual machine. It is designed to be as efficient and portable across different platforms. WASM is being used in blockchains to enable the development of more complex and sophisticated smart contracts.
WASM is also more versatile than EVM. This is because WASM can run a broader range of programming languages, including C++, Rust, and Go. This makes it possible to develop more complex and sophisticated smart contracts that can be used for a wider range of applications.
Cosmos uses CosmWasm, and Polkadot uses Wasmi, their respective runtimes based on their framework. WASM makes it easier for developers to create interoperable smart contracts deployed to multiple parachains on Polkadot and zones on Cosmos.
Ewasm was set to replace the EVM as a part of Ethereum 2.0. Ewasm was supposed to enhance VM performance by tackling EVM’s resource inefficiency. it would also support smart contract development across a wider range of languages and tooling i.e. incorporating LLVM, C, C++, Rust, JavaScript. Ewasm was being developed until Dec of 2020 and is no longer being actively maintained.
Several Layer 2 scaling solution on Ethereum launched ZkEVMs. ZkEVMs use zero-knowledge proofs to prove programs are executed correctly and require that smart contracts are written in solidity to execute them. it gives most web3 developers the familiarity they have with EVM and solidity, but Solidity is not known for being user-friendly and has a steep learning curve.
More recently, projects such as Blockless & Delphinus Labs, ZkCross, Hyper Oracle, Ankr, Dfinity (ICP), Filecoin, Near and Wasm0 have been building ZkWasm. ZkWASM is a trustless, portable, and versatile virtual machine that can be used to create a wide variety of applications on the blockchain. It is trustless because it allows any computation to be performed off-chain without needing a trusted third party. It is portable because it can be run on any platform that supports WebAssembly. Developers can use (Rust, C/C++, AssemblyScript, GO, Swift, or any language that can be converted into WebAssembly. And it is versatile because it can be used to create a wide variety of applications, including oracles, off-chain computation, automation, web2 meets web3, and proofs for machine learning models or data processing. EVM and non-EVM chains alike are currently adopting Wasm.
VMs on the Move
The Diem team at Meta created Move, a programming language for writing smart contracts on blockchains. Diem was a high-performance, permissioned blockchain built for payments. Unfortunately, the project was ultimately abandoned in late 2021 due to strong regulatory pressure. The Diem team examined existing solutions, including the EVM, and determined they could develop superior technology. The outcome was Move and the MoveVM.
Move has two key advantages: greater safety and greater expressiveness. Greater safety implies that Move can help developers create exploit-free smart contract code. Greater expressiveness implies that Move makes it simpler to implement certain features than other languages. For instance, developers can quickly create programs combining, splitting, or destroying NFTs for complex crypto-gaming applications.
Blockchain such as Aptos and Sui that utilize Move in their VMs have raised +$700M in funding and are in a position to incentivize developers familiar with Move to come on board and build infrastructure and tooling in support of their ecosystems.
Conclusion
EVM has built our strong network effects over the years in the form of additional tooling, infrastructure and also liquidity. However, the blockchain developer community as a whole is still in its early days, and there is scope for other VMs and languages to come into the picture and solve EVM’s inefficiencies.
WASM could revolutionize the way smart contracts are developed and used. Several blockchain projects are already adopting it, and further tooling and infrastructure are being built to support it.
Rust-based languages such as Move and Sway (Fuel VM) have the potential to scale their network effects and consolidate strong developer communities. Move has been gaining traction in the blockchain community, with projects like Aptos and Sui raising significant funding to support the Movement.