
When you hear "blockchain," you probably picture a chain of blocks, each containing a list of transactions. That's accurate — but it's only half the picture. Transactions are instructions. State is the result.
State is the current snapshot of everything that's true on a blockchain at this moment: every account balance, every contract's stored data, every address that exists. Transactions don't just get recorded — they change the state. Each block defines a new state that supersedes the previous one. The blockchain isn't fundamentally a log of transactions; it's a sequence of state snapshots, with transactions as the instructions between them.
This distinction matters because a lot of how blockchains work — from light clients to scaling debates to storage costs — only makes sense once you understand what state actually is.
In Ethereum's account-based model, state is a mapping. Every address points to a data structure with four fields: the account's ether balance, a nonce (transaction count), the hash of the account's code (empty for externally owned accounts, non-empty for smart contracts), and the root of a storage trie — a separate key-value database unique to each contract.
The entire state — every account combined — is encoded in a single cryptographic structure called a Merkle Patricia Trie. The root hash of this trie appears in every block header as the state root. It's a commitment to the complete state at that moment. Change anything in state — one wei transferred, one storage slot updated — and the state root changes entirely.
This property is what makes light clients possible. Light clients store only block headers, not the full state. But they can request a Merkle proof from a full node to verify a specific fact ("does account X have at least Y ether?") without downloading everything. The proof traces a path down the trie; if it terminates at the correct leaf and connects back to the state root, the fact is verified.
State transitions happen per transaction. Take the pre-state at the start of a block, apply each transaction in sequence, arrive at the post-state. The new state root gets committed to the block header. That's what validation actually checks: does applying these transactions to the previous state produce this state root?
Bitcoin uses a UTXO model — Unspent Transaction Outputs. Bitcoin's state is the set of all UTXOs: discrete "coins" of specific amounts owned by specific addresses. Spending a UTXO removes it from state; a transaction creates new UTXOs as outputs. The total set of unspent outputs at any moment is Bitcoin's state.
The UTXO set is smaller and simpler than Ethereum's state — no contract storage, just coin ownership. That makes it somewhat more manageable. But the model is less expressive. Writing smart contracts with persistent storage is natural in Ethereum's account model; the UTXO model requires workarounds.
Some UTXO-based systems (like Cardano) have extended the model to support contracts, so this comparison is a simplification at the base level — but it holds for Bitcoin specifically.
Here's where it gets practically important. Ethereum's state has been growing since genesis, and it doesn't shrink automatically. Every new contract deployed, every new token recipient written to storage, every new variable set in a contract — all of it adds to state and stays there until explicitly zeroed out. Most contracts never clean up.
The problem this creates: full nodes must maintain the complete state to validate new blocks without trusting anyone. Higher state means higher hardware requirements. As of 2025, Ethereum's state is hundreds of gigabytes and growing. This creates gradual pressure on who can afford to run a full node.
The economics are also misaligned. Writing to a storage slot costs gas once, at write time. But storing that slot is a perpetual obligation for every full node globally. The person who wrote the data doesn't bear the ongoing cost — node operators do. This is the core of the state growth problem, and it's why the Ethereum community has spent years debating state rent and expiry schemes.
Two significant efforts are in progress at different horizons.
Verkle trees are the planned replacement for Ethereum's Merkle Patricia Trie structure. The key improvement is proof size: Merkle proofs for current Ethereum state can be large; Verkle proofs cover more state in much smaller witnesses. This enables stateless clients — nodes that don't store state at all, instead receiving a witness alongside each block containing all the state needed to validate that block's transitions. Verkle trees have been in development and testnet validation through 2024-2025.
State expiry is the harder long-term proposal: automatically archiving state that hasn't been accessed in some defined period (tentatively around a year). Expired state would still be resurrectable — you'd need to provide a proof — but it wouldn't be stored by every full node indefinitely. This would bound state growth. It remains technically complex (which expiry scheme works without breaking dormant contracts?) and unscheduled beyond "later in the Ethereum roadmap."
History expiry (EIP-4444) is a related but distinct proposal targeting old block data, not state itself. Both address node storage burden from different angles.
Verkle tree upgrade shipping on mainnet without incident. Stateless client implementations completing full test coverage. Ethereum full node disk requirements declining year over year rather than growing. State expiry reaching an EIP with a specific implementation timeline.
A vulnerability discovered in Verkle trees late in implementation would force a significant delay or alternative approach. If L2s absorb enough activity that L1 state growth slows materially, the urgency of expiry proposals diminishes — not invalidation, but a change in priority. A state expiry design that breaks long-dormant contracts in ways the community can't accept would fail to reach consensus.
Now: State is growing; full nodes require hundreds of gigabytes. The mechanism is stable. Stateless client research is active and Verkle trees are in testnet.
Next: Verkle tree upgrade targeting mainnet 2025-2026; history expiry expected around the same window.
Later: State expiry is unscheduled and technically complex. Full stateless operation — nodes requiring no persistent state storage — is a multi-year target.
This covers the definition and structure of blockchain state in Ethereum and Bitcoin's models. It doesn't address specific smart contract storage patterns, state rent as an economic mechanism, or the distinction between execution-layer state and consensus-layer state in Ethereum's current architecture. Whether state growth creates meaningful centralization risk depends on hardware cost trajectories outside this scope.




