Releases: NethermindEth/nethermind
Release list
v1.34.0
Release notes
Important
This release is mandatory for all testnet operators for the upcoming Fusaka hard fork.
It includes protocol changes and fixes required to remain in consensus on testnets.
- Holesky: Wednesday, October 1, 2025 at 8:48:00 AM UTC
- Sepolia: Tuesday, October 14, 2025 at 7:36:00 AM UTC
- Hoodi: Tuesday, October 28, 2025 at 6:53:12 PM UTC
Fusaka Testnets Support
- Implemented Osaka testnet forks (#9321).
- Updated RPC behavior:
eth_getBlobsV1now returnsUnsupportedForkpost-Osaka (#9341). - Fixed
eth_config: ensured ForkInfo is always initialized (#9233).
Stability and Sync Improvements
- Fixed snap sync edge cases and hanging on Sepolia (#9166, #9338).
- Corrected blockhash handling and rare invalid block cases (#9340).
- Improved cancellation handling and graceful shutdown for peers and sync dispatcher (#9173, #9174, #9175).
- Fixed concurrent storage root issues and reduced reliance on storage root reads (#9209, #9255).
- Ensured consistent receipts handling and transaction processed counters (#9231, #9270).
- Fixed issues in Taiko fee handling and default chains config (#9314, #9309).
- Fixed missed
SELFDESTRUCTbetween transactions (#9343).
Node Improvements
- Reduced log noise from misbehaving peers and improved shutdown logging (#9156, #9177).
- Improved logging and config autocompletion (#9159).
- CLI now displays default values in help output (#9152).
- Improved deposit request validation (#9199).
- Enhanced Prometheus metrics in Kute tool (#9077).
- Better RPC alignment with Geth (#8951).
- Various performance optimizations: bloom filters, Patricia trie, TrieNode navigation, gas estimation (#9191, #9220, #9221, #9195, #9064, #9210).
These changes strengthen node stability, improve operator experience, and ensure readiness for the Fusaka fork on testnets.
What's Changed
- Correctly Wrap PrepareRequest exeception by @benaadams in #9144
- Only update metrics if not already updating metrics by @benaadams in #9142
- fix: BlockReceiptsTracer not forwarding stateRoot to inner tracers by @radik878 in #9129
- Make CLI show default values in help output by @Copilot in #9152
- Don't serialize UI events when no subscribers by @benaadams in #9150
- Fix storage range not retried on wrong order by @asdacap in #9154
- Reduce log noise from bad behaving peers by @benaadams in #9156
- Don't crash process in debug for Disposal warning messages by @benaadams in #9157
- Base mainnet bigger machine by @kamilchodola in #9158
- Improve logs and config autocompletion by @flcl42 in #9159
- Add a EIP and remove genesis number in superchain.py by @flcl42 in #9143
- Add Vector256 nibble conversion by @benaadams in #9153
- Use multi-arch vectors for Or and Xor; and expand to 512 bits by @benaadams in #9164
- Fix snap sync edge case due to unnecessary proof by @asdacap in #9166
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #9147
- Use single event subscription for NewPayload by @benaadams in #9107
- Always output logs for processed blocks by @benaadams in #9170
- Handle Cancellation in SyncPeerPool.Allocate by @benaadams in #9173
- Extra validation in case
IForwardHeaderProviderskip header. by @asdacap in #9171 - Cancel sync dispatcher loop on cancellation by @benaadams in #9174
- Handle peers shutdown more gracefully by @benaadams in #9175
- Remove unsupported Rlpx channel option by @benaadams in #9172
- More graceful shutdown logs by @benaadams in #9177
- Support OP Isthmus at the Genesis block by @emlautarom1 in #9163
- Explicitly pass parent header in header validator by @asdacap in #9168
- Cleanup/remove MaybeParent. by @asdacap in #9169
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #9148
- Align/refactor RPC output with geth by @ak88 in #8951
- Optimize Blooms by @benaadams in #9191
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #9193
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #9194
- Per contract state by @asdacap in #9088
- Use genesis as the parent for the first block by @flcl42 in #9203
- Improve deposit request fields validation by @flcl42 in #9199
- Refactor/move main blockprocessing to di by @asdacap in #9130
- Start XDC project by @ak88 in #9206
- Optimize TrieNode.SeekChild by @benaadams in #9195
- Fix concurrent storage root issue by @asdacap in #9209
- Incorrect Gas Estimation by @svlachakis in #9064
- GasEstimator refactor post #9064 by @LukaszRozmej in #9210
- Added basic spec classes by @ak88 in #9212
- Await db blocks sync inside ReviewBlockTree by @deffrian in #9196
- Remove hardcoded AuRa release spec decorator to plugin module by @asdacap in #9167
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #9217
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #9218
- Precompiles Extensibility through IReleaseSpec by @svlachakis in #9222
- feat: improve kute tool prometheus metrics by @cbermudez97 in #9077
- Hive to load blocks before RPC start by @flcl42 in #9224
- Refactor/move blocktree to di by @asdacap in #9230
- Admin Get Peers by @svlachakis in #9003
- Fix receipts deletion by @Marchhill in #9231
- ENR Support on admin_peers by @svlachakis in #9228
- Ensure ForkInfo is initialized by @flcl42 in #9233
- feat(block-validator): add debug logging message for MaxRlpBlockSize by @0xMushow in #9236
- Implement Xdc Header Decoder by @cicr99 in #9214
- Remove unused references for XDC by @ak88 in #9237
- Corrected sealing encoding XDC by @ak88 in #9238
- Removed xdc ref in core by @ak88 in #9242
- XDC : add extra needed types by @Demuirgos in #9219
- implement eth_getAccountInfo by @smartprogrammer93 in #9241
- Added filename in accumulator.txt and checksums.txt by @ndatta-nethermind in #9211
- Cleanup/remove nodecommit info by @asdacap in #9155
- Fix Nethermind UI when the app is run from non-app directory by @wurdum in #9248
- Fix simulate gas by @deffrian in #9244
- Cleanup/remove unnecessary method by @asdacap in #9249
- Tests for #9244 by @deffrian in #9250
- Perf/Patricia set by @asdacap in #9220
- Perf/Update Patricia.Get by @asdacap in #9221
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #9252
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #9253
- Bump up the version to 1.34.0-unstable by @core-repository-dispatch-app[bot] in https://github.com/Nether...
v1.33.1
Release notes
Important
This release replaces v1.33.0 and addresses important issues reported for that version, specifically around eth_config and Receipts handling.
- Receipts fix: Corrects an issue where receipts were removed for blocks beyond
TxLookupLimiteven when History pruning was disabled. See #9231. eth_configfix: Resolves a configuration issue reported by the EF Testing team. See #9233.
These changes improve stability and consistency for users relying on long-term history and accurate transaction receipts.
Note
If you were affected by the missing receipts from running v1.33.0 and require full historical receipts, the two workarounds are:
- Run Nethermind with
Sync.FixReceiptsset totruefor offline patching of missing receipts - Delete the
receiptsfolder in the Nethermind database directory (by default,nethermind_db/<network>) for a full download of all receipts while online
For further details, please review the full changelog and linked PRs below.
Full Changelog: 1.33.0...1.33.1
v1.33.0
Release notes
This release brings over 340 improvements across 2012 files, ranging from performance enhancements, protocol upgrades, and node-runner improvements.
Nethermind UI (initial release)
This version introduces the first iteration of the Nethermind UI (#9090), providing an integrated interface to interact with and monitor your node. This marks the beginning of a more user-friendly experience for running Nethermind.
The UI is enabled when UI health check is enabled: --healthchecks-enabled
If you wish to expose only the UI and not RPC externally, then you can do this using capabilities on HTTP endpoints with the JsonRpc.AdditionalRpcUrls parameter.
For example, if your consensus client is running locally (running in the same instance) and your external IP is 10.4.0.4, then you can expose only the UI using just the http|health capabilities on the external IP binding and want it enabled at HTTP port 80, then binding the other capabilities needed by the consensus client to localhost:
--jsonrpc-additionalrpcurls "[http://10.4.0.4:80|http|health,http://localhost:8551|http;ws|net;eth;subscribe;engine;web3;client]"
This ensures you don't additionally enable your node as a public RPC endpoint while also enabling the UI.
Historical data live pruning
We’ve added automatic history pruning capabilities (#8040), giving operators the ability to keep disk usage under control by pruning historical chain data as the node runs. This feature is disabled by default but can be enabled via configuration. It is an experimental feature, not yet recommended for use on production nodes.
History pruning can be enabled by passing the flag --history-pruning UseAncientBarriers. This will automatically prune any blocks older than the ancient barriers cutoff.
Alternatively, pruning can be enabled in rolling window mode with the flag --history-pruning Rolling. This will prune any blocks older than 82125 epochs, which is around 1 year on the Ethereum Mainnet. The specific number of epochs can be configured with the flag --history-retentionepochs <value> -- the number of epochs must be a minimum of 82125.
History pruning can be disabled with the flag --history-pruning disabled -- currently this is the default behavior, but this may change in the future.
Peering improvements for OP Stack
Several improvements were made to Optimism and OP Stack, including:
- better handling of finalized/safe blocks #8658
- a dedicated
optimismRPC namespace #8667 - refined peer management to improve stability and sync performance #8684, #8960
Performance improvements
A wide range of EVM and networking optimizations were introduced, including:
- Reduced allocations in opcode execution #8687, #8740 and transaction sender recovery #8781, #8824.
- Warmup and precomputation improvements for EVM instructions #8699, #8836.
- Faster logging and RPC handling #8879, #8976.
- RocksDB upgrades and optimizations #8640, #9059.
These changes collectively reduce CPU and memory usage while improving throughput and responsiveness.
Other improvements
Additionally, this release includes important fixes and feature updates:
- EIP implementations:
- EIP-7823: Gas accounting #8649
- EIP-7825: Transaction gas limit cap #8663
- EIP-7883: ModExp changes #8489, #8964
- EIP-7907: Contract code size metering #8845
- EIP-7910:
eth_config#8956 - EIP-7918: Blob base fee updates (#8656, #8935
- EIP-7934: Execution block size limit #8815
- EIP-7939: CLZ instruction #8759
- EIP-7951: RIP-7212 renamed & enabled in Osaka #8753
- Consensus layer & OP-CL: Split finalized/safe blocks #8658, new RPC methods for Taiko and OP #8874, and refined health checks #8755.
- Discovery & peering: Faster removal of inactive peers #9037, improved gossip prioritization for peers on the same fork #9043, and fixes for discv4/discv5 edge cases #9046, #9113.
- Testing & tooling: Revamped Hive/Assertoor test integrations #8711, #8862, new worldstate benchmarks #9051, and initial support for HTML and Grafana reporting #9074, #8960.
What's Changed
- Fix infinite loop in tx pool by @asdacap in #8632
- Fix filter timeouts, set to 15m by @LukaszRozmej in #8633
- Update System.CommandLine package by @rubo in #8639
- Remove SkipLocalsInit to avoid garbage in first bytes of hash by @wurdum in #8634
- add surge hoodi chainspec by @smartprogrammer93 in #8643
- Fix for
Block.AccountChangesnot being disposed in some cases by @alexb5dh in #8647 - taiko alethia pacaya fork activation by @smartprogrammer93 in #8642
- Revert wrong code on missing receipt by @LukaszRozmej in #8653
- Set default
LegacyTransactionForRpcgas price to zero by @Hyodar in #8630 - Fix #8648 - eth_getTransactionByBlockNumberAndIndex out of bounds by @LukaszRozmej in #8654
- Update RocksDB package by @rubo in #8640
- Kute: order by filename by @benaadams in #8657
- PatriciaTree ignoreMissingDelete is not used by @MarekM25 in #8646
- Implement Eip7823 by @benaadams in #8649
- Sync OP chains after Isthmus by @emlautarom1 in #8638
- Use RocksDB PinnableSlice when available by @benaadams in #8661
- Optimize RlpStream.Encode(ulong) by @benaadams in #8660
- Slight discovery refactor. by @asdacap in #8664
- Mild performance tweaks by @benaadams in #8674
- Remove TD based peer allocation strategy by @asdacap in #8670
- Improve WebSocketMessageStream by @benaadams in #8676
- Optimism CL: Split finalized/safe blocks by @deffrian in #8658
- Fix ClockCache.Set by @benaadams in #8679
- Implement EIP-7825: Transaction Gas Limit Cap by @Marchhill in #8663
- Implement OP CL
optimismRPC namespace by @emlautarom1 in #8667 - Hide OP-CL specific options by @emlautarom1 in #8684
- Reduce
Forward header starting block number did not changed.exception to log. by @asdacap in #8683 - Refactor/Reduce
AuraNethermindApiusage. by @asdacap in #8686 - Optimize 12 x 20byte & 32byte OpCodes by @benaadams in #8687
- Perform stack writes as single 32 byte vector by @benaadams in #8691
- Reintroduce Jit time branch elimination by @benaadams in #8692
- Fixes one discv5 test by @ak88 in #8635
- Migrate to Microsoft.Testing.Platform by @rubo in #8190
- Fix/aura hive startup by @asdacap in https://github.com/NethermindEth/nethermind/pull/...
v1.32.4
Release notes
Fixed the peer discovery issue
After the Geth v1.16.0 release, there was a sudden drop in discovered Nethermind nodes in network crawlers. This version exposed one edge-case issue, which was much more likely to happen, and is now addressed.
Other improvements
Additionally, a few extra improvements were added to the general discovery phase of finding new peers and ensuring a high peer count can be achieved:
- #9046: Ensures we reuse the original request identifier when replying, fixing mismatches in ENR messages.
- #8712: Fixes corrupt snappy message when disconnecting fast due to too many peers.
- #9037: Speeds up how quickly inactive or problematic peers are dropped.
- #9043: Prefers peers on the same blockchain fork for gossiping to improve message propagation.
- #9040: Fixes an issue that could miss some transaction receipts during syncing.
- #9054: Optimizes peer-distance calculations for faster network operations.
Full Changelog: 1.32.3...1.32.4
v1.32.3
Release notes
Important
This release is a mandatory upgrade for all node operators of the Energy Web Chain.
The Zurich hard-fork of EWC is set to the block number 36871000, which is expected to occur in the UTC afternoon of August 5, 2025.
Major highlights
Addressed OOM issues during full and archive sync
More resilient syncing of Archive nodes with better memory management thanks to #8975
Fixed the issue with broken block processing thread when a block is suggested out of order
This is an edge case scenario, but with some consensus clients and under very rare circumstances, it tends to break the processing in #8683
Improved the general performance of a node and its stability
Improved peering and validation performance under heavy P2P demand (snapserving, mempool txs, etc) in #8968
Few extra changes which are improving overall node performance, like #8926, #8947, #8927
Additionally, whenever a node breaks via random database corruption, now Nethermind will shut down to ensure no further corruption of the database is happening, and with proper setup (via Docker, systemd, or in systems like DappNode), it may self-recover in a few minutes; in #8986
Full Changelog: 1.32.2...1.32.3
v1.31.13
Release notes
Important
This release is a mandatory upgrade for all node operators of the Energy Web Chain.
The Zurich hard-fork of EWC is set to the block number 36871000, which is expected to occur in the UTC afternoon of August 5, 2025.
Full Changelog: 1.31.12...1.31.13
v1.32.2
Release notes
Note
This release replaces v1.32.0 and v1.32.1 and addresses Linux and CPU compatibility issues reported for those versions.
Full Changelog: 1.32.1...1.32.2
v1.32.1
Release notes
Warning
Use v1.32.2 instead. This release replaces v1.32.0 and addresses compatibility issues with some Linux distros. However, it still has compatibility issues with some older or low-end CPUs.
Full Changelog: 1.32.0...1.32.1
v1.32.0
Release notes
Warning
Use v1.32.2 instead. This release has compatibility issues with older or low-end CPUs, Ubuntu 22.04, and some other Linux distros.
This release brings over 300 performance enhancements, protocol improvements, and developer-focused upgrades:
- Increase Ethereum Mainnet Gas Limit to 45MGas
- Drop the pre-merge history for Ethereum Mainnet (around 300GB smaller DB)
- Faster block production, sync, and pruning
- New admin RPCs and richer metrics for tracing and debugging
- EIP-4444 and EIP-2935 fixes, plus extended snapshot handling
- Refactors improving stability, modularity, and test coverage
Major highlights
Protocol
- Drop pre-merge history from Ethereum Mainnet
- It gives about 300GB in disk space
- Requires a full resync of a node to have an effect of that
- To preserve them on fresh sync add flags
--Sync.AncientReceiptsBarrier=0and--Sync.AncientBodiesBarrier=0
- RPC error support for EIP-4444 (pruned blocks)
- Fixes for EIP-2935 edge cases
Performance
- A lot of performance improvements which allows now to bump safely gas limit of Ethereum Mainnet to 45 MGas
- Significantly improved local block building and profitability logic
- State sync, pruning, blob fee calc
- Improved memory use by networking and Trie cache
- Parallel block downloading (with rollback safety)
- AVX512 and ARM64-specific boost for 256-bit integer arithmetic
JSON-RPC & metrics
- New JSON-RPC methods:
admin_addTrustedPeer,admin_removeTrustedPeer,admin_peerEvents - More granular metrics:
engine_getBlobsV1, pruning, block stats - Improved Geth-compatible
debug_tracesupport - Default extradata for local building includes Nethermind version (as per Besu, Erigon, Geth)
Chain support
- Updates to OP Superchain, World Chain, Hoodi, Taiko Pacaya
- Snap sync support for Energy Web
- Configuration fixes: deposit contracts, gas limits, ancient block barriers
CLI improvements
Shortened boolean command line option notation. For example, --metrics-enabled true can now be written as --metrics-enabled, omitting the value part. If the value is false, it still must be explicitly specified.
nethermind-cli
nethermind-cli is retired as deprecated. See the docs for suggested replacements.
Other improvements
- Major refactors: pruning, sync, metrics, plugins, discovery
- Plugin system enhancements and modular debug features
Changelog
- Cleanup/move more sync integration tests to DI by @asdacap in #8144
- Update sepolia chain size by @LukaszRozmej in #8155
- Auto-update fast sync settings by @core-repository-dispatch-app in #8149
- standardize BlobTxMissingBlobs error message by @yerke26 in #8129
- Merge eth_simulate_v1 to master by @rjnrohit in #8153
- Fix PivotTotalDifficulty in update configs action by @kamilchodola in #8161
- New filter restricting delegations in txpool by @ak88 in #8022
- Fix wrong parent block due to reorg by @flcl42 in #8159
- Regression test for BLS precompile caching consensus issue by @Marchhill in #8164
- requests validation hotfix by @rjnrohit in #8156
- No warnings with Engine Capabilites from V1 and V2 by @MarekM25 in #8125
- EIP-2935 Contract deployment fix by @MarekM25 in #8166
- Less Prewarmer work per tx (share scope for thread) by @benaadams in #8172
- check requests type validity by @rjnrohit in #8175
- Optimize TryCalculateFeePerBlobGas by @benaadams in #8173
- Proper Transaction
typeforeth_*calls when running Optimism by @emlautarom1 in #8157 - Added Additional Terms section in [Readme.md](http://readme.md/) by @AnavarKh in #8169
- Fix state override accessing state by @LukaszRozmej in #8168
- Make test more reliable by @asdacap in #8177
- Add SnapSync=true to EnergyWeb and Volta by @kamilchodola in #8000
- Cleanup exosoma by @MarekM25 in #8181
- Holesky & Sepolia Pectra by @MarekM25 in #8115
- Fix some unit test by @asdacap in #8184
- Add World Chain to README by @rubo in #8189
- Fix debug module wrong configuration by @asdacap in #8185
- Add Nimbus-eth1 & EthereumJS to client types by @benaadams in #8192
- Cleanup/remove last seen map by @asdacap in #8183
- Automate Superchain Registry chain support by @emlautarom1 in #8105
- Update libp2p by @Marchhill in #7916
- Implement admin_peerEvents for rpc module by @StevenChongHuo in #7999
- Migrate to
.slnxby @rubo in #8195 - Feature/filter setcode tx by @ak88 in #8167
- Init OP deployer account before setting the code by @flcl42 in #8193
- Fix workflow flags for "Update OP Superchain chains" by @emlautarom1 in #8198
- Auto-update fast sync settings by @core-repository-dispatch-app in #8180
- Fix Fast Sync settings in "Update OP Superchain chains" worflow by @emlautarom1 in #8200
- Update OP Superchain chains by @core-repository-dispatch-app in #8201
- Rename
taiko-mainnetconfiguration totaiko-alethiaby @rubo in #8188 - Add github actions scanning to CodeQL workflow by @yevh in #8165
- Cleanup/Deduplicate blockdownloader code by @asdacap in #8147
- Add worldchain to sync supported chains by @stdevMac in #8060
- Various fixes to sync tests by @kamilchodola in #8206
- Implement admin_addTrustedPeer rpc endpoint by @richardgreg in #7891
- Refactor IsBetterThanHead by @LukaszRozmej in #8207
- Fix trusted nodes by @benaadams in #8211
- Shorten boolean command line option notation by @rubo in #8179
- Fix eth stats by @benaadams in #8215
- Update OP Superchain chains by @core-repository-dispatch-app in #8212
- feature: Add support for block validation (flashbots_validateBuilderSubmissionV3) by @rjnrohit in #7335
- Minor fixes for SyncSupported chains by @kamilchodola in #8217
- fix gnosis state / blockchain tests runner by @yerke26 in #8216
- Blockchainprocessor channel use by @benaadams in #8218
- Fix persist cache remove node by @asdacap in #8229
- AuthTuple ChainId 64->256 in test setup by @MarekM25 in #8226
- Split storage ranges to parallelize execution by @damian-orzechowski in #7733
- Reintroduce missing 4844 RPC fields (GasPrice and V) by @LukaszRozmej in #8232
- Refactor ShutterTime to SlotTime by @Marchhill in #8233
- Limit task count in tests by @asdacap in #8231
- Refactor/isolate main transaction processor by @asdacap in #8196
- Fix/initsteps race condition by @ak88 in #8145
- Accept local tx even when syncing by @benaadams in #8242
- Optimise: make SlotTime a class by @Marchhill in #8245
- Skip SLOAD and SSTORE lookups on empty storage by @benaadams in #8248
- Update OP Superchain chains by @core-repository-dispatch-app in #8246
- Fix RecoveryQueueSize Metric (off by 1) by @benaadams in https://github.com/NethermindEt...
v1.31.12
Release notes
Important
This release is a mandatory upgrade for all node operators of the Volta chain.
The Zurich hard-fork of Volta is set to the block number 32597900, which is expected to occur in the UTC afternoon of July 8, 2025.
Changes
Full Changelog: 1.31.11...1.31.12