Erigon v3.4.0 — Splashing Saga
The Erigon team is happy to announce the release of Erigon 3.4.0 "Splashing Saga" — a major update for node operators and validators, focused on stability, performance, and efficiency at ChainTip.
3.4.0 brings together months of work on making Erigon faster to start, cheaper to run, and lighter on disk: a 4x smaller Chaindata (~20 GB), non-blocking startup, persistent historical downloads in Caplin, historical eth_getProof leaving experimental, a fresh set of RPC endpoints, and a long list of correctness and reliability fixes across execution, the consensus layer, RPC, and the snapshot subsystem. It is a drop-in upgrade for 3.3.x users — no data migration or re-sync required.
This release would not exist without the wider Erigon community: external contributors, validators, testnet operators, and everyone who ran release candidates, reported bugs, and sent patches. Thank you.
Key Features
- Fast restart on ChainTip: no more blocking indexing or pruning at startup; Caplin doesn't lose its download progress.
- 4x smaller Chaindata (~20 GB): improves ChainTip speed. Available via re-sync, or by running
./build/bin/erigon seg step-rebase --datadir=<your_path> --new-step-size=390625(takes ~10 seconds). - Historical
eth_getProof: is no longer experimental. Recommended: 32 GB+ RAM. Re-sync with--prune.include-commitment-historyto apply the latest data fixes. - New RPC endpoints:
trace_rawTransaction,eth_getStorageValues,admin_addTrustedPeer,admin_removeTrustedPeer, flat tracers,engine_getBlobsV3. - Reduced impact on ChainTip performance: from RPC, background file merging, pruning, and optional heavy flags (
--persist.receipts,--prune.include-commitment-history).
Breaking Changes
- Minimum Go version: 1.25
--rpc.blockrange.limit=1_000new limit.Maximum block range (end - begin) allowed for range queries over RPC. 0 - means unlimited. Default: 1_000--rpc.logs.maxresults=20_000new limit.Maximum number of logs returned by eth_getLogs, erigon_getLogs, erigon_getLatestLogs. 0 - means unlimited. Default: 20_000--rpc.max.concurrency=0new limit.Maximum number of concurrent HTTP RPC requests (HTTP admission control). 0 = use db.read.concurrency, -1 = unlimited (no admission control). Default: 0p2p: switched todiscv5.discv4disabled by default.
How to Upgrade
Erigon 3.4 is a drop-in upgrade. No data migration or re-sync is required.
Docker
docker pull erigontech/erigon:v3.4.0Changes
RPC Reliability
eth_getBlockReceipts: limit over-concurrency — prevents latency growth and out-of-memory (OOM) at high request rates. (#19725)debug_traceCallMany: fix globalBlockOverridesandStateOverridesnot being applied. (#19547)debug_traceCall: fix state and block overrides interaction. (#18480)eth_blobBaseFee: fix incorrect value returned. (#18506)eth_getBalanceand others: fix block-not-found error for certain historical queries. (#18457)- Block-hash canonicality check: added to APIs that accept a block hash and state. (#19356)
rpc: fix batch limit exceeded error to comply with the JSON-RPC spec. (#18260)trace_replayTransaction(): add stack info forTLOADopcode. (#19550)eth_feeHistory: performance optimisation and pending block support. (#19526, #19455)debug_trace*: zero-alloc memory word encoding inJsonStreamLogger— eliminates per-word heap allocations and prevents OOM on large block traces. (#20754)prestateTracer: fix diff mode missing deleted accounts to match geth behaviour (resolves flakyrpc-compat test_42). (#20775)rpc/mcp: fixtools/callhanging indefinitely under DB load by switching the SSE context to non-blocking read-tx acquire. (#20778)
New RPC Endpoints
trace_rawTransaction: execute and trace a raw signed transaction without broadcasting it. (#19524)eth_getStorageValues: batch fetch of multiple storage slots in a single call. (#19442)admin_addTrustedPeer/admin_removeTrustedPeer: manage trusted peers at runtime. (#19413)- Call flat tracers (
trace_callfamily): flat trace output format support. (#18556) engine_getBlobsV3: Engine API blob retrieval v3. (#18512)trace_call:StateOverridesprecompile support. (#18401, #18492)
TxPool
- Zombie queued transactions: transactions exceeding
MaxNonceGapare now evicted. (#19449) txnprovider/shutter: fix premature encrypted txn pool cleanup and peer drops. (#18351)txpool: cachependingBaseFeefor queue comparisons to reduce recomputation. (#18341)
Protocol
- Fusaka scheduled for Chiado (Gnosis Chain testnet) at slot 21 651 456, epoch 1 353 216, timestamp 1 773 653 580 (Mon 16 Mar 2026 09:33:00 UTC). (#19682)
- Chiado bootstrap nodes updated to match the Lighthouse built-in Chiado network config. (#19693)
- Balancer hard fork for Gnosis Chain mainnet. (#18122)
- Amsterdam signer support and BAL non-determinism fix. (#19434)
- BAL selfdestruct net-zero fix. (#19528)
- Parallel execution fixes for block-access-list (BAL) workloads. (#17319)
execution/vm: EIP-8024 (SWAPN,DUPN,EXCHANGE) opcodes implemented. (#18670)- Pectra requests-hash validation: fix partial block receipt reconstruction when execution resumes from a snapshot boundary mid-block — resolves
invalid requests root hash in headeron mainnet re-sync at block 24966723. (#20452)
Consensus Layer (Caplin)
- Persistent historical download — Caplin now persists and resumes historical beacon block downloads across restarts. (#18320)
- Discovery v5 enabled by default —
discv5is now the default peer discovery protocol. (#18578) cl/p2p,cl/sentinel: fix DISCV5 ENR missing IP when the discovery address is unspecified. (#19585)- Fix missing attestations by using GossipSub for subnet peer coverage. (#19523)
cl/gossip: fix conditions forwarding, ENR lifecycle, and epoch-mismatch — prevents false peer banning, reduces log flooding from redundant ENR updates, and guards against stale RANDAO committee computation. (#20777)cl/beacon: addsingle_attestationevent topic support. (#18142)cl/beacon: setEth-Consensus-Versionheader when versioned. (#18377)
P2P
p2p/sentry: fix wrong OR in case statement forwitprotocol messages. (#19580)p2p: better handling of RLP errors inwit. (#19569)discv4disabled by default on mainnet (discv5 preferred). (#18640)
Snapshot & Storage
merge: prioritize Domain merge over History — 2x less disk space required, and less impact to ChainTip from history-merge. (#19441)merge: fix O(n²) InvertedIndex re-merge — eliminates quadratic time complexity during re-merge. (#19680)SequenceBuilder: avoids an intermediate Elias-Fano representation during sequence building and merge. (#19552, #19567)- Faster startup: state-file index building deferred to reduce restart latency. (#19583, #19407)
- Graceful restart in history download:
SpawnStageHistoryDownloadnow honours the stage context, so Ctrl+C during history download exits promptly instead of waiting for the download to finish. (#20766) - DB integrity checks: time budget added so checks no longer run unbounded. (#20714)
- Commitment-history integrity: skip the integrity check when commitment history is disabled. (#20835)
seg ls: report dictionary size and memory usage in the output. (#20790)anacrolix/torrent: fix peerconn panic on bad reads while serving peer requests. (#20748)
Security
github.com/buger/jsonparser: bump 1.1.1 → 1.1.2 to address CVE-2026-32285 (HIGH, CVSS 7.5 — out-of-bounds read). (#20018)