# EVM

The Ethereum Virtual Machine *(EVM)* is a decentralized virtual environment that executes code consistently and securely across all Ethereum nodes. Nodes run the EVM to execute smart contracts, using ***"gas"*** to measure the computational effort required for operations, ensuring efficient resource allocation and network security.

### Prerequisites <a href="#prerequisites" id="prerequisites"></a>

Some basic familiarity with common terminology in computer science, such as bytes, memory, and a stack, is necessary to understand the EVM. It would also be helpful to be comfortable with cryptography/blockchain concepts like hash functions and the Merkle tree.&#x20;

### From ledger to state machine <a href="#from-ledger-to-state-machine" id="from-ledger-to-state-machine"></a>

The analogy of a ***'distributed ledger'*** is often used to describe blockchains like Bitcoin, which enable a decentralized currency using fundamental tools of cryptography. The ledger maintains a record of activity, which must adhere to a set of rules that govern what someone can and cannot do to modify the ledger. \
For example, a Bitcoin address cannot spend more Bitcoin than it has previously received. These rules underpin all transactions on Bitcoin and many other blockchains.

While Ethereum has its native cryptocurrency *(ETH)* that follows almost the same intuitive rules, it also enables a much more powerful function of smart contracts For this more complex feature, a more sophisticated analogy is required. Instead of a distributed ledger, Ethereum is a distributed state machine. Ethereum's state is a large data structure that holds not only all accounts and balances but also a *machine state*, which can change from block to block according to a pre-defined set of rules and which can execute arbitrary machine code. The specific rules of changing state from block to block are defined by the EVM.
