Skip to content

Archive reads

Use archive RPC access for historical EVM state and logs without unbounded scans.

Know when a request depends on historical data, so you can check coverage before you build on it and keep large historical jobs within timeouts and response limits. A request is an archive read when it asks for state, storage, code, balances, or event logs from older blocks.

Archive coverage varies by network; check the Archive column in Supported networks. When a network shows Yes, you can read historical state at past blocks, such as eth_call against an older block, and fetch historical event logs with eth_getLogs. On a Bitcoin network, archive access means getblock returns any block since genesis. For example, reading a USDC balance on Ethereum Mainnet at block 18000000 is an archive read; Read contract state walks through that request.

Archive requests are heavier than current-state reads and more likely to reach response-size, timeout, or organization limits. Credits follow the method's cost class, not the block's age, so an archive eth_call uses the same credits as a current one.

Archive-sensitive methods

MethodArchive use
eth_getLogsHistorical event backfills over explicit block ranges.
eth_callHistorical contract reads with an explicit block number or hash.
eth_getBalanceHistorical account balances.
eth_getStorageAtHistorical storage-slot reads.
eth_getCodeHistorical contract bytecode reads.
eth_getProofHistorical account and storage proof reads.

Range strategy

Reads of older blocks need archive data and are heavier than current-state reads. Backfill history in narrow, deterministic ranges and persist progress after every successful range, so a retry repeats only one range.

Split historical work into narrow, deterministic ranges instead of one unbounded fromBlock to latest scan:

  • Filter by contract address and topic whenever possible.
  • Widen ranges only after observing response size and latency.
  • Persist progress after every successful range.
  • Retry a smaller range after a timeout or response-size error.

Backfill historical events applies this model to a resumable USDC Transfer backfill.

Next steps

Last updated