github erigontech/erigon v3.4.0

8 hours ago

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-history to 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_000 new limit. Maximum block range (end - begin) allowed for range queries over RPC. 0 - means unlimited. Default: 1_000
  • --rpc.logs.maxresults=20_000 new limit. Maximum number of logs returned by eth_getLogs, erigon_getLogs, erigon_getLatestLogs. 0 - means unlimited. Default: 20_000
  • --rpc.max.concurrency=0 new limit. Maximum number of concurrent HTTP RPC requests (HTTP admission control). 0 = use db.read.concurrency, -1 = unlimited (no admission control). Default: 0
  • p2p: switched to discv5. discv4 disabled 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.0

Changes

RPC Reliability

  • eth_getBlockReceipts: limit over-concurrency — prevents latency growth and out-of-memory (OOM) at high request rates. (#19725)
  • debug_traceCallMany: fix global BlockOverrides and StateOverrides not being applied. (#19547)
  • debug_traceCall: fix state and block overrides interaction. (#18480)
  • eth_blobBaseFee: fix incorrect value returned. (#18506)
  • eth_getBalance and 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 for TLOAD opcode. (#19550)
  • eth_feeHistory: performance optimisation and pending block support. (#19526, #19455)
  • debug_trace*: zero-alloc memory word encoding in JsonStreamLogger — 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 flaky rpc-compat test_42). (#20775)
  • rpc/mcp: fix tools/call hanging 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_call family): flat trace output format support. (#18556)
  • engine_getBlobsV3: Engine API blob retrieval v3. (#18512)
  • trace_call: StateOverrides precompile support. (#18401, #18492)

TxPool

  • Zombie queued transactions: transactions exceeding MaxNonceGap are now evicted. (#19449)
  • txnprovider/shutter: fix premature encrypted txn pool cleanup and peer drops. (#18351)
  • txpool: cache pendingBaseFee for 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 header on 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 defaultdiscv5 is 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: add single_attestation event topic support. (#18142)
  • cl/beacon: set Eth-Consensus-Version header when versioned. (#18377)

P2P

  • p2p/sentry: fix wrong OR in case statement for wit protocol messages. (#19580)
  • p2p: better handling of RLP errors in wit. (#19569)
  • discv4 disabled 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: SpawnStageHistoryDownload now 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)

Changelog

View full changelog on GitHub

Don't miss a new erigon release

NewReleases is sending notifications on new releases.