You are reading an excerpt from our free but shortened abridged report! While still packed with incredible research and data, for just $20/month you can upgrade to our FULL library of 50+ reports (including this one) and complete industry-leading analysis on the top crypto assets.
Becoming a Premium member means enjoying all the perks of a Basic membership PLUS:
- Full-length CORE Reports: More technical, in-depth research, actionable insights, and potential market alpha for serious crypto users
- Early access to future CORE ratings: Being early is sometimes just as important as being right!
- Premium Member CORE+ Reports: Coverage on the top issues pertaining to crypto users like bridge security, layer two solutions, DeFi plays, and more
- CORE report Audio playback: Don’t want to read? No problem! Listen on the go.
Ethereum Virtual Machine (EVM)
In the context of Ethereum, a virtual machine is a software-based computing environment (consisting of clients) that replicates the capabilities of a single computer but can be globally accessed. The Ethereum Virtual Machine, specifically, is the computing environment in which Ethereum transactions are carried out, defined in the Ethereum Yellow Paper and later revised through a series of Ethereum Improvement Proposals (EIPs). It consists of:
- A standard machine for executing programs, temporary memory for each transaction, and permanent storage that transactions can write to
- Approximately 140 opcodes that perform state changes for a cost
An EVM program is a series of these opcodes and arguments. When these programs are combined into a single block of code, the result is known as "bytecode," typically represented as a long hexadecimal string. By putting a large number of these opcodes together in a specific order, any program can be created.
Rules within the EVM include:
- Every operation incurs a cost in order to prevent abuse/spam
- Every operation must be deterministic, as all nodes must agree on the state after transaction execution
- Transactions must be isolated with no access to I/O or external state.
Any entity participating in the Ethereum network must run the EVM to compute state transitions. If all nodes run the same EVM (same rules), all nodes are aware of global state changes.
The EVM keeps state using a data structure known as a "Merkle Patricia tree." Merkle Trees are generated through multiple rounds of hashing. The initial data begins at the bottom (of the image) and is combined with the other data and hashed together to create the parent hash on the rung above. These hashes are pooled (of the same size) and hashed again until a single (root) node remains. A Merkle tree's aim is to enable Merkle proofs, which prove a piece of data exists in the underlying dataset without requiring the broadcasting of the complete dataset.
Merkle trees can store all key-value pairs for all Ethereum addresses. The keys relate to both public and smart contract addresses, and their respective values describe their current state.
EVM and Solidity Have Become the Smart Contract Standard
Ethereum is a decentralized blockchain platform for building and running autonomous, Turing-complete smart contracts over a global network of permissionless nodes. The most popular implementation of the protocol (Geth) is written in Go, and the most widely-used smart contract language on the platform is Solidity.
Having Solidity become the de facto "standard" language for writing smart contracts (image below) enables more composability for dApps on Ethereum. Because smart contracts are deployed as open-source code in Solidity on Ethereum, anyone can build on top of these smart contracts by forking the code, incorporating their Solidity code, and creating an entirely new dApp.
Solidity contracts hold 90%+ of DeFi TVL. Source
In addition to Solidity becoming ubiquitous across the industry, there are several other key specifications that originated on Ethereum and have become widely accepted as global standards. These include:
- ERC20/ERC721, Ethereum token standards
- Ethereum's JSON-RPC Client API, a specification for communicating with Ethereum nodes
- Ethers.js, a web library for working with Ethereum
- Ethereum cryptography, such as the Keccak256 hash function and ECDSA signatures over Secp256k1
While it's possible to have an EVM-compatible chain without supporting all of these standards, conforming to them makes development and the user experience much easier. This is because with standardization comes composability, meaning devs can leverage one or more of the following:
- Ethereum's Social Graph: addresses are the same across EVM chains, meaning that any new project or chain can leverage the metadata associated with a user/address to solve cold-start problems
- Tooling and infrastructure: Some tools include Gnosis Safe, WalletConnect, Zerion, Metamask, and Etherscan. There are many open-source toolkits like OpenZeppelin, Hardhat, and Foundry
- Interoperability: Cross-chain governance, ERC-20 token trading identical address system, etc.
- 8 of the top 20 blockchain ecosystems are running EVM.