Ethereum Classic maintains a global "world state" — a mapping from every account address to its current state. Understanding this data model is key to understanding how the EVM works.
Two Types of Accounts
Externally Owned Accounts (EOAs)
Controlled by private keys. EOAs have:
- Balance: Amount of ETC held
- Nonce: Number of transactions sent (prevents replay)
- No code, no storage
Contract Accounts
Controlled by their deployed code. Contract accounts have:
- Balance: Amount of ETC held
- Nonce: Number of contracts created by this contract
- Code hash: Hash of the EVM bytecode
- Storage root: Root of the account's storage trie
The World State
The world state is a mapping: address → {nonce, balance, storageRoot, codeHash}.
This mapping is stored in a Modified Merkle Patricia Trie. The root hash of this trie is included in every block header as the stateRoot. This single 32-byte hash cryptographically commits to the entire state of every account on the network.
State Transitions
Every transaction modifies the world state:
- Sender's nonce increments by 1
- Sender's balance decreases by (gas used × gas price) + value transferred
- Recipient's balance increases by the value transferred
- Miner's balance increases by gas used × gas price
- Contract storage may change if the transaction calls a contract
The new state root after applying all transactions in a block becomes the block's stateRoot.
State Growth
Every new account and every new storage slot adds to the state that full nodes must maintain. As of 2024, the ETC state contains millions of accounts and billions of storage entries. State growth management is an ongoing challenge for all EVM chains.
State Proofs
Because the state is stored in a Merkle trie, anyone can construct a proof that a specific account has a specific balance at a specific block. This enables light clients and cross-chain verification without trusting the data provider.