Releases: NethermindEth/nethermind
Release list
v1.37.0-alpha
Release notes
Important
This is an alpha pre-release. It is intended for testing and early feedback only. Some features may be incomplete, unstable, or subject to change before the final 1.37.0 release. Do not run this in production.
Breaking changes
eth66 and eth67 protocol support dropped; eth69 added as default
The deprecated eth/66 and eth/67 devp2p protocol versions have been removed. eth/69 is now enabled as a default protocol. Peers that only support eth66/eth67 will no longer be able to connect. (#9938)
Highlights
Performance
- Optimized transaction processing via encoded-tx trie root and fast block re-encode (#10435)
KeccakCacheoptimized; public-key-to-address recovery now cached (#10391, #10003)SeqlockCacheadded for hot-path caching (#10415)- Improved
FastHashquality (#10082) - EVM:
EXPstays inUInt256domain (#10060),MODshort-circuits on zero (#10061), skip cache for identity precompile (#10366) - Pruning: default cache +512MB (#10247), skip GC during pruning (#10230), inline prunes (#10112), schedule largest storage changes first (#10236)
- JSON requests parsed in chunks (#10207), hex parsing optimized (#10389),
eth_gasPricekth algorithm (#10100) - Numerous allocation reductions across
RetryCache, nibble keys,ConcurrentDict,CREATE/EOFCREATE,DbOnTheRocksiterators,ColumnDb.MultiGet, and more
State management & storage
- World state backend refactor enabling pluggable storage backends (#9089)
- RocksDB snapshot support including column DB snapshots (#10080, #10262)
- Discv5 nodes moved to a separate database (#10027)
EVM extensibility
- Policy-based gas tracking in the VM for custom gas metering (#9846)
- External tracer registration and VM inheritance (#10228)
- Extensible block processing statistics and metrics (#10420, #10429, #10076)
RPC & correctness
eth_estimateGasfurther adjusted for correctness (#10559)eth_getBlockByNumberenforces canonical block retrieval (#10024)eth_getLogsperformance improved (#9923)engine_getBlobsV3added (#9942)engine_getPayloadV4adapted for Optimism (#10328)debug_calls support overriding block fields (#10405)- Hardened RPC transaction validations (#10395)
Networking
- Faster protocol handshake parsing; Ethrex added as recognized client (#9935)
- Discovery v5 optimized (#10081)
What's Changed
- Disable publishing to Downloads by @stdevMac in #9910
- Fix hive getLogs by @deffrian in #9889
- fix: remove duplicate gRPC host validation in GrpcClient by @VolodymyrBg in #9922
- Move ExecutionEnvironment to Rentable sealed class by @LukaszRozmej in #9916
- fix: align BlockHashes dictionary to use nullable Hash256 by @aso20455 in #9900
- Only pool pure Transaction objects, not subclasses by @tanishqjasoria in #9884
- Adjust JOC testnet Bootnodes according to recent changes by @anhnhx131 in #9940
- fix: Remove redundant BlockHeader field reassignments in StatelessExecution by @anim001k in #9928
- test: add Eip2565Transition check for posdao chain spec by @PivasDesant in #9920
- Fixes #9606: DebugTracerTests thread synchronization issue by @igladun in #9875
- Faster protocol parsing, add Ethrex by @benaadams in #9935
- Precompiles names fix by @svlachakis in #9944
- Update packages by @rubo in #9907
- Fix hanging scenario if persisted node not able to be pruned by @asdacap in #9931
- Separate wrong nonce errors by @flcl42 in #9941
- Add engine_getBlobsV3 by @flcl42 in #9942
- fix: only touch coinbase after successful transaction in state tests by @bshastry in #9865
- Gnosis Balancer permanent changes by @Marchhill in #9946
- Sign release builds by @rubo in #9937
- Increase default rlp collection limit to 4MB by @LukaszRozmej in #9957
- Fix/limit get proof by @LukaszRozmej in #9967
- feat(merkle): remove unused RootOfNull to avoid dead code and startup allocation by @Forostovec in #9898
- Fix/rlp decode array checks by @LukaszRozmej in #9968
- fix: dispose IEraStore when EraImporter.Import fails early by @phrwlk in #9978
- Remove rpc from hive workflow by @deffrian in #9971
- Elevate access for ABI decode override more easily by @damian-orzechowski in #9977
- Run all tests on master by @deffrian in #9979
- Remove parsing Uint256 from statics by @LukaszRozmej in #9980
- perf: Remove redundant ToArray() allocation in TrieStore warning log by @0xxFloki in #9969
- Optimise MemDb for ZK by @LukaszRozmej in #9952
- feat(evm): generify VirtualMachine with policy-based gas tracking by @AnkushinDaniil in #9846
- refactor: Remove redundant try-catch in SszProperty.StaticLength by @Aleksandr1732 in #9976
- fix: correct NSubstitute argument types in AuraWithdrawalProcessorTests by @hawkadrian in #9966
- perf: avoid LINQ allocations in GetStorageRangesMessageSerializer by @VolodymyrBg in #9951
- refactor: cache blob and proof counts in BlobProofsManagerV1 by @marukai67 in #9983
- fix: replace unused mock logger with LimboTraceLogger in EnrDiscoveryTests by @CreeptoGengar in #9993
- fix: replace empty exception with informative BlockchainException in ExtractSigners by @mattvaux in #9986
- perf(tests): Remove redundant ToList() calls in PatriciaTreeBulkSetterTests by @0xxFloki in #9981
- Use correct HardwareAcceleration checks for Vector by @benaadams in #10007
- Optimize ColumnDb MultiGet allocations by @0xxFloki in #9908
- fix: correct type name in TimeoutDecoder error message by @reallesee in #9948
- perf: reduce allocations in TypeExtensions by @0xxFloki in #9994
- refactor(trie): remove redundant condition check in IsValidWithOneNodeLess by @0xlupin in #9982
- fix: return correct count when no peer was dropped in DropWorstPeer by @Fallengirl in #10001
- Consider type boundaries by @flcl42 in #10000
- Taiko Shasta Changes - II by @dipkakwani in #9998
- Set release target commit explicitly by @rubo in #10009
- Fix/json converters exception type by @Galoretka in #9984
- refactor(tests): Remove unused variables in Enode exception tests by @marukai67 in #9991
- test: replace Task.Delay with After() in ContractDataStoreTests by @forkfury in #9985
- fix: delegate raw converters read to base converters by @ANtutov in #10006
- fix: remove duplicate HasSignedRecently checks in sealer clique by @Bashmunta in #10011
- Make Nethermind UI SSE endpoint relative by @rubo in #10008
- fix: use IHttpClient from DI in MergePlugin instead of creating HttpClient directly by @PivasDesant in #9995
- Validate blobs lengths by @flcl42 in #9999
- refactor(AuRa): remove redundant Create override by @kurahin in #10014
- Feature/Worldstate backend by @asdacap in #9089
- fix: use ArgumentNullException for null logManager in EthStatsClient by @PivasDesant in #10018
- fix: correct BlobTxMissingBlobs error message by @eeemmmmmm in #10015
- Change KzgPolynomialCommitments.BlsModulus to new instead of parse by @LukaszRozmej in #10032
- Fix/isStorageEmpty check does not get reflected until after commit by @asdacap in https://git...
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