Skip to content

eth_getProof fails with state root mismatch on official archive snapshot #256

@artemrootman

Description

@artemrootman

System information

Erigon version: erigon version 0.09.2-unstable
Commit hash: unknown (image: testinprod/op-erigon:v2.61.3-0.9.4)
OS & Version: Linux (container, Debian-based)

Erigon Command (with flags/config):

erigon \
  --chain=base-mainnet \
  --datadir=/home/erigon/.local/share/erigon \
  --port=30303 \
  --private.api.addr=localhost:9090 \
  --private.api.ratelimit=318720 \
  --http.addr=0.0.0.0 \
  --http.port=8545 \
  --http.corsdomain=* \
  --http.vhosts=* \
  --http.api=eth,debug,net,web3,trace,txpool,engine \
  --ws \
  --ws.port=8545 \
  --authrpc.addr=0.0.0.0 \
  --authrpc.port=8551 \
  --authrpc.vhosts=* \
  --authrpc.jwtsecret=/jwtsecret \
  --nat=extip:XXX.XXX.XXX.XXX \
  --metrics \
  --metrics.addr=0.0.0.0 \
  --metrics.port=6060 \
  --rollup.sequencerhttp=https://mainnet-sequencer.base.org \
  --txpool.gossip.disable=true \
  --rpc.gascap=60000000 \
  --downloader.disable.ipv6=true \
  --torrent.download.rate=100mb \
  --db.size.limit=8TB

Consensus Layer:

op-node

Version: v1.13.2

Chain/Network:

Base Mainnet (archive mode)


Expected behaviour

eth_getProof should return a valid Merkle proof that matches the block header’s stateRoot.


Actual behaviour

Requesting a proof for address 0x0000000000000000000000000000000000000000 on block 0x1cf9035 fails with the following error:

{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"mismatch in expected state root computed 0x40a2650ab0bdbc75a5ab4ff938e3fa10346a307336939dc6e78f264335988a56 vs 0x30c839df1e8d647d915b1e175667b2d42061d1feb39f0ec6ea154676c6cb3312 indicates bug in proof implementation"}}

No pruning flags were used, and the node was restored using the official snapshot from:

https://datadirs.testinprod.io/base-mainnet-db-30380596.zst

SHA256 verified:
d33825df71c8347bbe79fb1d6656762f869e89793c52dea52ed9151df70f2446

The node is otherwise fully synced and functional for regular RPC usage.


Steps to reproduce the behaviour

  1. Deploy Erigon using the official Base snapshot (2025-05-18, 1.94TB)
  2. Start node with full archive mode (no --prune)
  3. Ensure node is fully synced and healthy
  4. Run this RPC:
curl -s -X POST http://localhost:8545 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_getProof","params":["0x0000000000000000000000000000000000000000",[], "0x1cf9035"]}'
  1. Observe the mismatch error.

Backtrace

{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"mismatch in expected state root computed 0x40a2650ab0bdbc75a5ab4ff938e3fa10346a307336939dc6e78f264335988a56 vs 0x30c839df1e8d647d915b1e175667b2d42061d1feb39f0ec6ea154676c6cb3312 indicates bug in proof implementation"}}

Let me know if you'd like a full node dump or additional blocks affected by the issue.
Happy to assist in isolating or reproducing it further.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions