Releases: NethermindEth/nethermind
v1.36.0
Release notes
This release brings over 416 improvements across 1821 files; focusing on operator ergonomics, and RPC / execution correctness hardening, plus a steady stream of performance improvements. It also includes a couple of intentional breaking changes via the removal of obsolete configs/modules.
Breaking changes
Config migrations removed (obsolete config cleanup)
The old config-migration path was removed as part of an “obsolete config” cleanup (#9435):
Config.IsMiningConfig.StoreReceiptsConfig.ReceiptsMigrationMining.TargetBlockGasLimitMining.MinGasPriceMining.RandomizedBlocksMining.ExtraDataMining.BlocksConfig
Nethermind.Analytics removed
The obsolete Nethermind.Analytics component was removed (#9683)
Highlights
Build & release engineering
.NET 10 migration
This version of Nethermind runs on .NET 10. If you build it from source, you need to update your build configuration accordingly (#9391)
Safer failure mode on database corruption
A node crash path was adjusted from Environment.FailFast to Environment.Exit when encountering DB corruption scenarios, to avoid “hard failfast” behavior (#9365)
Execution, RPC & correctness hardening
estimateGas compatibility adjustments
eth_estimateGas behavior was adjusted to better match Geth response patterns.
What's Changed
- XDC : QuorumCertificate Manager by @Demuirgos in #9294
- Reset code filter per block by @benaadams in #9415
- Update Surge Hoodi Chainspec by @dipkakwani in #9420
- Refactor RPC comparison workflow for clarity and efficiency by @kamilchodola in #9418
- Add timestamp to simulate logs & blob gas & remove total difficulty by @deffrian in #9406
- Remove quick fail when running Hive tests by @deffrian in #9426
- Enable Osaka on Chiado by @Marchhill in #9395
- Add interval for history pruning by @Marchhill in #9424
- Use proper blob proofs version by @flcl42 in #9423
- Update OP Superchain chains by @emlautarom1 in #9422
- Fix excess blob gas by @deffrian in #9429
- Make builds reproducible by @rubo in #9365
- Fix/Era import by @asdacap in #9431
- Fix bulkset edge case by @asdacap in #9430
- Xdc TimeoutCertificateManager - Timeout Certificate Validation by @cicr99 in #9381
- Feature/sorted key value store by @asdacap in #9434
- Remove Config migrations by @LukaszRozmej in #9435
- Fix logs in eth_simulate by @deffrian in #9437
- Rename
Nethermind.Era.TesttoNethermind.Era1.Testby @rubo in #9444 - Update OP Superchain chains by @core-repository-dispatch-app[bot] in #9446
- Fix concurrent tree read by @asdacap in #9447
- Should correctly broadcast light transactions by @LukaszRozmej in #9448
- Set Ethereum mainnet default gaslimit to 60M by @benaadams in #9132
- Adjusting execution reverted code. Fixes #9329 by @mrzeszutko in #9428
- Remove redundant
-lock-file-pathoption by @rubo in #9455 - Kute code quality cleanup by @emlautarom1 in #9317
- Add ChainId to legacy transactions in RPC responses derived from signature by @Copilot in #9453
- Better message when eth_getFilterChanges is out of bounds by @LukaszRozmej in #9451
- Add Blocktest Tracing Support to nethtest Tool by @LukaszRozmej in #9432
- Update Dockerfiles automatically by @rubo in #9445
- Disable IIS assets by @rubo in #9464
- Change Environment.FailFast -> Environment.Exit for db corruption by @LukaszRozmej in #9469
- Fix/hunting flaky tests by @LukaszRozmej in #9470
- Place access list deserialization guards by @LukaszRozmej in #9466
- Adding [CLAUDE.md](http://claude.md/) based on [copilot-instructions.md](http://copilot-instructions.md/) by @mrzeszutko in #9468
- Update Dockerfiles by @github-actions[bot] in #9467
- Fix/more flaky tests by @LukaszRozmej in #9474
- Update packages by @rubo in #9478
- Try fixing leak in ProtocolsManager._sessions by @LukaszRozmej in #9410
- Move Claude instructions by @rubo in #9480
- Update System.CommandLine package by @rubo in #9479
- Use RawTrieStore in StatelessEnv by @asdacap in #9471
- Fix MovePrecompile in eth_simulate by @deffrian in #9452
- Revert "Move Claude instructions (#9480)" by @mrzeszutko in #9482
- Harden RLP limits on allocations by @LukaszRozmej in #9465
- Adjusting estimateGas response to match geth responses for execution … by @mrzeszutko in #9485
- Check bytes left before checking the limit by @LukaszRozmej in #9483
- Fix: do not decompress keys in CompressingDb.GetAllKeys by @phrwlk in #9487
- Fix genesis post processor have no allocations by @asdacap in #9488
- feat: implement proper block validation in BlockchainTestBase to mimic sync manager behavior by @DeVikingMark in #9438
- Fix delegation in eth_simulate by @deffrian in #9490
- Remove passing eth_getBlockByNumber hive tests by @MarekM25 in #9462
- fix: Use correct Docker Hub secrets across workflows by @derrix060 in #9495
- Fix batched trie visitor missed storage by @asdacap in #9496
- Move static/trusted nodes file to the data dir by @rubo in #9477
- Update Dockerfiles by @github-actions[bot] in #9497
- Fix: Blocktest exception handling logic by @LukaszRozmej in #9491
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #9500
- Improve Hive RPC compat. by @smartprogrammer93 in #9489
- Update send blobs tool by @flcl42 in #9472
- Make AuthorizationListForRpc.JsonConverter public for attribute-based activation by @Galoretka in #9506
- Add CancelAfter to Maintain_correct_pointers_for_beacon_sync_in_archi… by @LukaszRozmej in #9507
- Disable osaka chiado hardfork by @Marchhill in #9486
- Feature/xdc block sealer by @ak88 in #9505
- Use correct Bmi2 intrinsic support check by @benaadams in #9510
- Fix nonce handling in eth_simulate by @deffrian in #9499
- Replace GitHub token by @rubo in #9515
- Fix fast sync settings workflow by @rubo in #9519
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #9522
- fix/crypto-random-secure-rng by @sashaodessa in #9513
- Slight logging change by @asdacap in #9520
- Remove overseer tests by @rubo in #9527
- fix: CompositeTxTracer aggregates IsTracingLogs and gates ReportLog correctly by @Forostovec in #9511
- Log index (preparation) by @alexb5dh in #9481
- Persist genesis state after genesis loader to prevent unclean shutdown i...
v1.35.8
Release Notes
Overview
- Optimized
getProofsRPC endpoints for better performance and efficiency. - Added build-time signing of release artifacts to improve release security and authenticity.
Full Changelog
https://github.com/NethermindEth/nethermind/compare/1.35.7…1.35.8
What's Changed
- Fix/limit get proof by @LukaszRozmej in #9967
- Sign release builds by @rubo in #9937
Build signatures
The packages are signed with the following OpenPGP key: AD12 7976 5093 C675 9CD8 A400 24A7 7461 6F1E 617E
For verification instructions, see the docs.
v1.35.7
Release notes
Important
This release is intended only for Gnosis Operators. No actions for other chains.
Overview
- Upcoming Balancer Hardfork - Spec (https://github.com/gnosischain/specs/pull/87/files)
- This hard fork aims to recover hacked funds following an exploit that affected Balancer-managed contracts on Gnosis Chain.
- Removes temporary freeze on hackers' accounts.
Full Changelog
https://github.com/NethermindEth/nethermind/compare/1.35.4…1.35.7
v1.35.4
Release notes
Important
Update required for OP Stack operators. It's not needed for other chains.
Overview
This release fixes some issues detected on OP-Stack-based chains after the Jovian fork.
What's Changed
- Fix Jovian fork id by @LukaszRozmej in #9877
Full Changelog
https://github.com/NethermindEth/nethermind/compare/1.35.3…1.35.4
v1.35.3
Release notes
Important
Update required for OP Stack operators ahead of the Jovian fork. It's not needed for other chains.
Overview
This release activates the Jovian hard fork on selected OP-Stack-based chains.
What's Changed
Full Changelog
https://github.com/NethermindEth/nethermind/compare/1.35.2…1.35.3
v1.35.2
Release notes
Important
This release replaces v1.35.1 and is mandatory for all node operators.
It includes the Ethereum Mainnet Fusaka hard fork configuration (Osaka, BPO1, and BPO2 upgrades).
All nodes must upgrade to this version before the Fusaka hard fork activation on December 3, 2025 at 9:49:11 PM to stay in sync.
Overview
This release activates the Ethereum Mainnet Fusaka hard fork, which introduces the Osaka, BPO1, and BPO2 upgrades.
What's Changed
- Mainnet Osaka, BPO1, BPO2 forks by @Marchhill in #9615
Full Changelog
https://github.com/NethermindEth/nethermind/compare/1.35.1…1.35.2
v1.35.1
Caution
This release has block production and sync issues. Use v1.35.2 instead.
Release notes
Important
This release is mandatory for all node operators.
It includes the Ethereum Mainnet Fusaka hard fork (Osaka, BPO1, and BPO2 forks) and critical improvements that ensure network stability and compatibility.
All nodes must upgrade to this version before the Fusaka hard fork activation on December 3, 2025 at 9:49:11 PM to stay in sync.
Overview
This release continues the performance and reliability improvements introduced in v1.35.0 while activating the key Ethereum Mainnet Fusaka hard fork and strengthening node stability across networks.
This update focuses on network readiness and state consistency. It also resolves multiple edge cases affecting trie storage, block range updates, and protocol session handling.
Upgrading to this version ensures seamless operation through the Fusaka hard fork and reduces the risk of shutdowns or state inconsistencies during execution.
What's Changed
- Use correct Bmi2 intrinsic support check by @benaadams in #9510
- Update Dockerfiles by @rubo in #9497
- Fix incorrect
BlockRangeUpdateMessage.EarliestBlockin some edge cases by @LukaszRozmej in #9505 - Try fixing leak in
ProtocolsManager._sessionsby @LukaszRozmej in #9410 - Allow longer state check by @asdacap in #9570
- Fix Arb
TrieExceptionby @asdacap in #9555 - Improve block-related caching by @benaadams in #9571
- Fix batched trie visitor missed storage by @asdacap in #9496
- Place access list deserialization guards by @LukaszRozmej in #9466
- Better message when
eth_getFilterChangesis out of bounds by @LukaszRozmej in #9451 - Harden RLP limits on allocations by @LukaszRozmej in #9465
- Persist genesis state after genesis loader to prevent unclean shutdowns by @asdacap in #9599
- Mainnet Osaka, BPO1, BPO2 forks by @Marchhill in #9615
- Check bytes left before checking the limit by @LukaszRozmej in #9483
- Change RLP limits and add logs by @LukaszRozmej in #9631
Full Changelog:
1.35.0...1.35.1
Signatures
For signatures verification, see Nethermind docs.
v1.35.0
Release notes
This version introduces important updates and optimizations across multiple components, improving network stability, performance, and test coverage.
It includes several fixes and enhancements to ensure smoother operation for all supported networks, including the Ethereum Mainnet.
Key improvements include:
- Updated default Ethereum mainnet gas limit to 60M
- Hardened code DB and trie persistence mechanisms
- Optimizations for RPC workflows, pruning, and snap sync reliability
- Enhancements to blob proofs, gas estimation, and network configuration updates
- Reproducible Nethermind builds
These changes are strongly recommended for all operators to maintain compatibility and ensure optimal stability with the latest network parameters.
What's Changed
- Refactor CalculateValueHash for header by @ak88 in #9276
- Fix inconsistent test. by @asdacap in #9279
- Fix extra-params when empty by @stdevMac in #9286
- XDC : Interfaces and Dependencies (To Discuss) by @Demuirgos in #9268
- Cleanup/Simplify CodeInfoRepository registration. by @asdacap in #9243
- Fix recovery queue size by @damian-orzechowski in #9288
- Reduce use of IWorldStateManager in test by @asdacap in #9292
- Remove
IWorldStateManager.InitializeNetworkby @asdacap in #9298 - Update packages by @rubo in #9302
- Revert "Update packages (#9302)" by @rubo in #9307
- Select proper block by @flcl42 in #9289
- evm changes to integrate stylus execution by @tanishqjasoria in #9301
- Add XDC tests by @rubo in #9304
- Update GitHub Actions by @rubo in #9311
- Fix empty slots error in SnapSync - return error status instead of throwing exception by @Copilot in #9313
- Change method signatures on Epoch manager by @ak88 in #9315
- Re-create empty account by @damian-orzechowski in #9180
- Update packages by @rubo in #9310
- PluginOrder Refactoring by @svlachakis in #9308
- Fix: ArrayPool buffer leak in PatriciaTree Get methods by @gitToki in #9322
- Fix uninstall filter by @MarekM25 in #9325
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #9327
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #9328
- Make expected to fail hive tests list & fix gas accounting in eth_simulate by @deffrian in #9274
- Fix Taiko Chains Default Config by @dipkakwani in #9309
- Xdc header validator by @ak88 in #9293
- Fix MCL memory leak by @rubo in #9336
- Fix Issues in Taiko Fee Handling by @dipkakwani in #9314
- Fix hanging sepolia snap sync by @asdacap in #9338
- Fix hive check script by @deffrian in #9337
- Feature/cap estimate gas to 7825 by @LukaszRozmej in #9331
- Osaka testnet forks by @Marchhill in #9321
- Fix blockhash related random invalid block by @asdacap in #9340
- Fix selfdestruct missed between transaction by @asdacap in #9343
- Make eth_getBlobsV1 return UnsupportedFork post Osaka by @LukaszRozmej in #9341
- Xdc genesis spec by @cicr99 in #9245
- Implement EIP 2681 validation by @LukaszRozmej in #9352
- Fix state error messages to include both block number and hash by @Copilot in #9278
- Remove Focal from PPA by @rubo in #9358
- Exclude
runtimeconfig.template.jsonby @rubo in #9359 - Don't pollute ValidationResult with additional stuff by @LukaszRozmej in #9354
- Add debug_traceCallMany RPC method with Geth compatibility by @LukaszRozmej in #9333
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #9370
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #9369
- Fix BloBaseFee for calculation in RPC by @LukaszRozmej in #9376
- Fix beneficiary & blob base fee in eth_simulate by @deffrian in #9371
- Don't rule peer removal by discovery v5 by @flcl42 in #9361
- Bump version to 1.35.0 by @stdevMac in #9377
- Move pruning boundry 192->256 on networks that might need it by @LukaszRozmej in #9347
- Disconnect on BlockRangeUpdateMessage with empty hash by @LukaszRozmej in #9384
- Drop BlockReceiptsTracer._otherTracer on EndBlockTrace by @LukaszRozmej in #9387
- Disable
Flashbotsmodule by default by @emlautarom1 in #9380 - Fix ArrayPoolList disposal warning in Block.AccountChanges by @bshastry in #9385
- feat: Make gas available for evm calculation overridable by @hudem1 in #9392
- Use improved ckzg version by @flcl42 in #9393
- Fix estimate gas & add timestamp to logs by @deffrian in #9379
- Harden Orphaned Block validations by @LukaszRozmej in #9389
- Better Isolate trie store during pruning by @asdacap in #9346
- Make txpool test run faster by @asdacap in #9382
- Safer types for a one of case by @flcl42 in #9398
- Fix
eth_getProofsbug with inline storage nodes by @JereSalo in #9367 - XDC : Snapshot Manager by @Demuirgos in #9318
- Add transaction params checks in rpc by @deffrian in #9349
- Fix simple transfer test by @benaadams in #9405
- StatelessExecution tool by @deffrian in #9324
- Make ExecutePrecompile overridable instead of RunPrecompile by @hudem1 in #9396
- Fix StatelessBlockProcessingEnv by @benaadams in #9407
- Apply ValueRlpStream optimizations to RlpStream and ValueDecoderContext by @Copilot in #9208
- Refactoring HasState by @MarekM25 in #9414
- Fix/eth69 correct lower bound by @LukaszRozmej in #9409
- Thething by @asdacap in #9416
- Update Dockerfiles by @rubo in #9467
- Set Ethereum mainnet default gaslimit to 60M by @benaadams in #9132
- Disable IIS assets by @rubo in #9464
- Fix concurrent tree read by @asdacap in #9447
- Use proper blob proofs version by @flcl42 in #9423
- Fix bulkset edge case by @asdacap in #9430
- Fix/Era import by @asdacap in #9431
- Make builds reproducible by @rubo in #9365
- chore: update Directory.Build.props by @stdevMac in 90c20ed
- Enable Osaka on Chiado by @Marchhill in #9395
- Remove quick fail when running Hive tests by @deffrian in #9426
- Add timestamp to simulate logs & blob gas & remove total difficulty by @deffrian in #9406
- Refactor RPC comparison workflow for...
v1.34.1
Release notes
Important
This release is mandatory for all node operators.
It addresses the issue with nodes stuck at a certain block in Hoodi network, causing an issue:
Code 0x93c9d3b83e1711754119e36d3a33fa26ed814a0d17f47b67b7acfa8ced63bad5 is missing from the database.
and generally hardens the implementation around code DB data persistence.
If you have encountered the code missing issue, operators will need to update and resync their nodes. This fix should prevent it from happening in the future.
To resync your node, follow the guide at this link.
Changelog
- Reset code filter per block by @benaadams in #9415
Full Changelog: 1.34.0...1.34.1
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...