RPC errors · eth_getBalance, eth_call, eth_getStorageAt at a past block

missing trie node (state at a past block is pruned)

What it means

You asked for state (a balance, storage slot or eth_call) at a block whose state the node no longer keeps. Full nodes keep recent state only; geth-family clients report the gap as "missing trie node" because the trie root for that block is gone. Cosmos-SDK EVM chains (Cronos, Kava, HAQQ) report it as a lowest available height or an IAVL version that no longer exists.

How far back state goes varies enormously by node. On 2026-09-23 our measurements found state readable a million blocks back on some chains and fewer than 100 blocks back on others (Cronos).

The exact messages, and where we saw them

Returned by real upstream nodes when we triggered this error on 2026-09-24 through our endpoint on each chain we serve.

missing trie node <hash> (path ) state …
Code -32000. Seen on 9 chains: 0G, Arbitrum, Blast, Core, Ethereum Classic, Flare, opBNB, PulseChain, Syscoin.
state at block #2 is pruned
Code -32603. Seen on 2 chains: Fraxtal, Ink.
height 1 is not available, lowest height is …
Code -32000. Seen on 3 chains: Cronos, HAQQ, Kava.
version mismatch on immutable IAVL tree; version does not exist. Version has either been pruned, or is for a future block height
Code -32000. Seen on 1 chain: Cronos.

How to fix it

  • Query recent state, or reconstruct history from events instead of reading old state directly.
  • Use an archive node for genuinely historical reads. Check the measured state depth for your chain first so you know which one you need.
  • Pin every call in a sequence to the same block number, and keep that block recent, so a slow job does not drift past the pruning window halfway through.

Related