Skip to content

chore(eth): update Erigon 3.5.2->3.5.5 - #1724

Open
cranycrane wants to merge 1 commit into
masterfrom
chore/erigon-3.5.5
Open

chore(eth): update Erigon 3.5.2->3.5.5#1724
cranycrane wants to merge 1 commit into
masterfrom
chore/erigon-3.5.5

Conversation

@cranycrane

Copy link
Copy Markdown
Contributor

Updates the Erigon pin in all six Ethereum configs (mainnet, mainnet archive, Sepolia, Sepolia archive, Hoodi, Hoodi archive) from 3.5.2 to 3.5.5: version, both binary_urls (amd64 and the arm64 entry under platforms), and both verification_source hashes.

Why 3.5.2 needs to go

Blockbook builds its ERC20 transfer index from eth_getLogs, so an Erigon bug that misnumbers or invents logs is written straight into RocksDB and stays there. 3.5.2 is exposed to both known variants, and the fixes for both are in 3.5.5 only:

  • #23064 (cherry-pick of #23061 into release/3.5) — receipt domains were never rolled back on an in-RAM reorg unwind: GetDiffset built a [kv.DomainLen] array but filled only the four domains that existed before ReceiptDomain was added, so ReceiptDomain/RCacheDomain came back nil. Small reorgs near the tip then leave eth_getLogs serving phantom logs with the wrong logIndex while eth_getBlockReceipts for the same block stays correct. The corruption survives restarts and gets frozen into the snapshot files. See erigontech/erigon#23062 — the first reported occurrence was on v3.5.2.
  • #22951 — wrong logIndex on archive nodes, from receipt-domain reads bypassing the overlay DomainReader. Affects v3.5.1–v3.5.4.

Picked up on the way through 3.5.3/3.5.4:

  • #22459 — JSON-RPC handleBatch deadlock; a filtered batch could wedge on wg.Wait() and time out. Blockbook batches heavily via BatchCallContext (token balances/metadata in bchain/coins/eth/contract.go).
  • #22700 — native (C-allocated) memory leak in the RPC gzip path, ~9–15 GiB/day on an archive node with response compression enabled.

Notes

🤖 Generated with Claude Code

3.5.2 is exposed to two receipt/log correctness bugs that both land wrong
data in Blockbook's index, since ERC20 transfers are built from eth_getLogs:

- #23064: receipt domains were never rolled back on an in-RAM reorg unwind,
  because GetDiffset filled only the four domains that existed before
  ReceiptDomain was added. Small reorgs near the tip leave eth_getLogs
  serving phantom logs with wrong logIndex while eth_getBlockReceipts stays
  correct; the damage survives restarts and is frozen into snapshot files
  (erigontech/erigon#23062, observed on 3.5.2).
- #22951: wrong logIndex on archive nodes from receipt-domain reads
  bypassing the overlay DomainReader. Affects 3.5.1-3.5.4.

Also picked up on the way: the JSON-RPC handleBatch deadlock (#22459),
which Blockbook can hit through BatchCallContext, and a ~9-15 GiB/day
native memory leak in the RPC gzip path on archive nodes (#22700).

Drop-in at every hop, no re-sync. Checksums taken from the release's own
erigon_v3.5.5_checksums.txt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant