freecoding.school100% FREE · NO SIGNUP
The EVM CoreISSUE #11 of 48

statelessness · the verkle transition

SoliaVSThe Reentrancy Reaper
Solia saysStatelessness lets clients verify blocks using witnesses that come with the block — no state database — paving the way for ultra-light Ethereum nodes once verkle trees ship.

Today every full node stores all of Ethereum's state — about 100 GB and growing. Statelessness turns that on its head: blocks carry witnesses (proofs of the state cells they touch), and verifiers check the block against the witnesses without needing the state. The current Merkle-Patricia trie makes witnesses too big to ship inline; verkle trees (bc-102) shrink them enough.

The payoff is a node that boots in minutes from any peer, holds kilobytes of RAM, and validates without a database. The trade-off is bandwidth: every block now carries hundreds of KB of witness data. The demo compares stateful storage to stateless witness traffic over a year.

Power-ups you unlock

The Reentrancy Reaper attacks — common mistakes

Boss battleCompare stateful node storage (~100 GB growing) to stateless witness traffic per year and compute the trade-off.

Example code

<!doctype html><html><head><meta charset="utf-8"></head>
<body style="background:#06040d;color:#e6e0ff;font-family:monospace;padding:20px"><pre id="o"></pre>
<script>
const STATE_KEYS = 250000000;
const FULL_NODE_STATE_GB = 100;
const VERKLE_WITNESS_KB = 0.5;
const ACCESSES_PER_BLOCK = 1000;
const witnessPerBlockKB = ACCESSES_PER_BLOCK * VERKLE_WITNESS_KB;
const blocksPerYear = (365 * 24 * 3600) / 12;
const witnessPerYearGB = (witnessPerBlockKB / (1024*1024)) * blocksPerYear;
document.getElementById('o').textContent = [
  'STATEFUL clients store full state:',
  '  ~' + STATE_KEYS.toLocaleString() + ' state keys',
  '  ~' + FULL_NODE_STATE_GB + ' GB on disk, growing every block',
  '',
  'STATELESS clients verify with witnesses (no state DB):',
  '  per-block witness:  ' + witnessPerBlockKB.toFixed(0) + ' KB (' + ACCESSES_PER_BLOCK + ' accesses × ' + VERKLE_WITNESS_KB + ' KB)',
  '  per-year bandwidth: ~' + witnessPerYearGB.toFixed(1) + ' GB (disk stays flat)',
  '',
  'verkle trees make this feasible: small witnesses + bundled openings'
].join('\n');
</script></body></html>
▶ Open the interactive comic issue
‹ Proposer-Builder Separation · In-Protocol PbsHistory Expiry · Eip-4444 · The Purge ›