Releases: NethermindEth/nethermind
v1.31.4
Release notes
This release is a mandatory update for Chiado and Sepolia validators. It contains a fix for EIP-6110 addressing differences between Sepolia and Mainnet deposit contracts.
- Sepolia coordinated upgrade: Scheduled on Wednesday, March 5, 2025 2:00 PM UTC.
- Pectra hard fork for Chiado: Scheduled on Thursday, March 6, 2025, 09:43:40 AM UTC (slot 15171584)
Full Changelog: 1.31.3...1.31.4
v1.31.3
Release notes
This release is a mandatory update for Chiado validators prior to the hard fork. It can be skipped for validators operating on other networks.
Major highlights
- Pectra hard fork for Chiado: Scheduled on Thursday, March 6, 2025, 09:43:40 AM UTC (slot 15171584)
- Minor Shutter improvements
Full Changelog: 1.31.2...1.31.3
v1.31.2
Release notes
Major highlights
Pectra hard fork for Sepolia
- The hard fork of Sepolia is scheduled on Wednesday, March 5, 2025 7:29:36 AM UTC (epoch 222464)
Pectra hard fork for Chiado
- The hard fork of Chiado is scheduled on Thursday, March 6, 2025, 09:43:40 AM UTC (slot 15171584)
Full Changelog: 1.31.1...1.31.2
v1.31.1
Release notes
- Fixed the deposit contract address for Holesky and Sepolia Pectra hard-fork
- Switched the default sync type for Holesky from snap sync to full sync
Full Changelog: 1.31.0...1.31.1
v1.31.0
Release notes
Major highlights
Pectra hard fork for testnets
- The hard fork of Holesky is scheduled on Monday, February 24, 2025, 9:55:12 PM UTC (epoch 115968)
- The hard fork of Sepolia is scheduled on Wednesday, March 5, 2025 7:29:36 AM UTC (epoch 222464)
World Chain support
Nethermind now supports the World Chain. For more details, check out docs.
Era1 format import/export
As part of our work to reduce disk requirements for running a node (EIP-4444), we added Era1 import/export functionality that allows the import and export of historical data:
- CLI:
--era-importdirectory path/to/dir --era-from 0 --era-to 0 --era-trustedaccumulatorfile path/to/file
--era-from
,--era-to
, and--era-trustedaccumulatorfile
are optional. Imports everything when the range is set to 0. Trusts the era directory if--era-trustedaccumulatorfile
is not specified.
--era-exportdirectory path/to/dir --era-from 0 --era-to 0
--era-from
and--era-to
are optional. Exports everything when set to 0.accumulators.txt
andchecksums.txt
will be created.
- RPC endpoints:
-
admin_importHistory
andadmin_exportHistory
:curl localhost:8545 \ -X POST \ -H "Content-Type: application/json" \ --data '{ "jsonrpc": "2.0", "id": 0, "method": "admin_importHistory", "params": ["/data/era-import", 0, 0, "/data/era-import/accumulators.txt"] }'
-
For more, see #6547
Changelog
Features
- Optimism CL P2P by @deffrian in #7297
- Shutter: P2P Agent version by @Marchhill in #8079
- Add Inbound field to admin_peers rpc call response by @obasekiosa in #7443
- Feature/verifytrie admin rpc by @asdacap in #7962
- Add SnapSync=true to EnergyWeb and Volta by @kamilchodola in #8000
Performance
- Only accept txs once synced by @benaadams in #7788
- SyncPeerPool to Channels by @benaadams in #7844
- Optimize EvmStack by @benaadams in #7843
- Reduce objects in ClockCache by @benaadams in #7847
- Mark non-capturing lambdas static by @benaadams in #7934
- CliqueBlockProducer to Channels by @benaadams in #7846
- GC: Clear references in ArrayPoolList before returning to pool by @benaadams in #7852
- ParallelUnbalancedWork for efficient unbalanced parallel loops by @benaadams in #7787
- Remove branch values by @benaadams in #7866
- Use Channels rather than BlockingCollection for block processing by @benaadams in #7790
- Use Ordinal rather than InvariantCulture by @benaadams in #7898
- TrieStore to Channels by @benaadams in #7845
- Shrink Trienodes by @benaadams in #7915
- Reduce enumerator boxing in CollectionExtensions by @benaadams in #7950
- Shrink tx hash cache from 512k to 130k by @benaadams in #7951
- Allocate single byte keys once by @benaadams in #7952
- Change ValueRlpStream to be Span based by @benaadams in #7961
- Remove some closure allocations by @benaadams in #7953
- Reduce guard checks and interface calls when using ArrayPoolList by @benaadams in #7960
- Move prewarming as early as possible by @benaadams in #8001
- Back signature by Vector512 rather than byte[] by @benaadams in #8008
- Back Bloom with inline array rather than byte[] by @benaadams in #8009
- Faster Keccak Xor by @benaadams in #7998
- Reduce per tx execution allocations by @benaadams in #7990
- Reuse thread state when prewarming addresses in parallel by @benaadams in #7984
- Reduce parallel prewarming overwork by @benaadams in #7983
- Share stack pool between threads by @benaadams in #7972
- Remove array allocation when waiting for visiting tree node children by @LukaszRozmej in #8092
- Bls Pairing check optimisation: skip exp for infinity by @Marchhill in #7883
- Slight db adjustment for snap sync perf by @asdacap in #7919
Bug fixes and stability
- Don't fail when stats can't retrieve beneficiary by @benaadams in #7839
- Improve event clean up on disconnected peers by @benaadams in #7841
- Add TxLookupLimit 0 for all missing archive nodes configs by @kamilchodola in #8039
- Add missing Discv5 support for archive op/base nodes by @kamilchodola in #7870
- Fix
logIndex
in filter changes by @alexb5dh in #7853 - Prevent file logging before configuration initialization by @rubo in #7896
- Fix empty value handling of configuration options by @rubo in #8010
- Snap: Extension Rlp value index is 1 by @benaadams in #7923
- Fix/error on shutdown by @asdacap in #7873
- [Json RPC] Catch Trie exception on eth_getStorage call by @brbrr in #7878
- Fix op-mainnet snapshot by @deffrian in #7881
- Fix full pruning crash on hash. by @asdacap in #7907
- Fix/fastheader stackoverflow by @asdacap in #7908
- Fix missed bloom filter by @asdacap in #7893
- Optimism post-bedrock Legacy transaction validation by @emlautarom1 in #7887
- fix tracing posdao blocks by @LukaszRozmej in #7921
- Fixes for GetTrieNodesRequest disposing - debug check on ArrayPoolList by @damian-orzechowski in #7862
- fix s and r values in AuthorizationListForRpc by @smartprogrammer93 in #8013
- Fix ChargeAccountAccessGas logic by @smartprogrammer93 in #7997
- Fix spammy log during snap sync by @asdacap in #7977
- Fix error on fetching header without total difficulty by @asdacap in #7948
- fix memory expansion to support up to uint.max instead of int.max by @smartprogrammer93 in #8030
- Fix missing tx index on reorg by @asdacap in #8027
- Fix state pivot update on state sync feed not working by @asdacap in #8059
- fix zero value withdrawals by @tanishqjasoria in #8061
- Fix/cannot serve hash from nonarchive nethermind by @asdacap in #8058
- Fix verifytrie does not block processing. by @asdacap in #8070
- Fix reorg boundary not set on dispose by @asdacap in #8084
- Fix/fast header initialization by @asdacap in #8083
- Fix Gnosis blob fee collection by @Marchhill in #8091
- Fix/unspent gas 7623 master by @Marchhill in #8017
- Fix unbounded memory usage with era imported node during old heders by @asdacap in #7941
- Set minimum state pivot to be at least the block after by @asdacap in #7949
- update ring buffer size for eip-2935 by @tanishqjasoria in #8018
- Override empty state scope with the state of the current block by @flcl42 in #8067
- remove precompiles by @tanishqjasoria in https://github.com/NethermindEth/netherm...
v1.30.3
Release notes
⚠️ This release is a mandatory upgrade for all nodes operating on the OP Mainnet and Base Mainnet.
Please update your node to this version to ensure correct node functionality.
Major highlights
Holocene network upgrade
The Holocene hardfork on OP Mainnet and Base Mainnet is scheduled on Jan 9, 2025 at 18:00:01 UTC.
Please ensure to upgrade to Nethermind v1.30.3 and op-node v1.10.2.
Changelog
Optimism
Add Holocene timestamps for OP and Base by @emlautarom1 in #8002
Full Changelog: 1.30.2...1.30.3
v1.30.2
Release Notes
⚠️ Important update for Optimism stack users
Major highlights
OP Holocene support
Fixed various issues in preparation for the Holocene hardfork in Optimism.
Full Changelog: 1.30.1...1.30.2
v1.30.1
Release Notes
⚠️ Important update for Linux systemd users
Major highlights
Startup logger fix
Fixed an issue when Nethermind crashes on startup if the Nethermind process doesn't have write access to its own directory.
Improved handling of JsonRpc.EnabledModules
Fixed an issue with trailing commas in JsonRpc.EnabledModules
values. For instance, --JsonRpc.EnabledModules [eth,net,]
that has been working previously, caused a failure because of the .NET 9 upgrade. To maintain compatibility and avoid disruption, adjustments have been made to continue supporting these cases, although it's highly recommended not adding trailing commas in array values.
Full Changelog: 1.30.0...1.30.1
v1.30.0
This release contains 235 improvements since the prior release 129.1
Release Notes
⚠️ We highly recommend using v1.30.1 instead
Major Highlights
Gas limit increase
The recent update increases the default gas limit from 30MGas to 36MGas, reflecting the current pre-Pectra safe limit; as identified by EF Research1 and tested on the Sepolia testnet, while ensuring compatibility with consensus layer clients. This adjustment is designed to improve transaction throughput and overall network efficiency.
To ensure the new default value is applied, do one of these:
- Remove the
Blocks.TargetBlockGasLimit
configuration option if any - Explicitly set it to 36000000.
If maintaining the previous gas limit is necessary, you can override the default by setting the following configuration option:
--Blocks.TargetBlockGasLimit 30000000
This approach provides flexibility while optimizing for evolving network demands and the rising asset price for the gas token.
Gnosis shutterized transactions
Shutter, a cutting-edge privacy solution leveraging threshold cryptography, is now officially supported in Nethermind 1.30.0. Initially enabled for a selected group of validators, it is now available for everyone. Shutter encrypts transactions in the mempool, keeping transaction details private until finalized on-chain. This ensures protection against frontrunning and supports fair and secure transaction execution on the Gnosis Chain.
Enabling Shutter in Nethermind:
-
Update to Nethermind 1.30.0
-
Generate validator registration files by following the instructions in Shutter Validator Registration repository
-
Configure Nethermind as follows:
--Shutter.Enabled true --Shutter.ValidatorInfoFile /data/execution/validatorInfo.json
-
Run Nethermind with the updated configuration to enable Shutter functionality.
Gigagas performance
We introduced several significant performance enhancements that substantially boosted tip-of-chain processing times. These improvements enabled us to achieve an impressive average processing throughput of 1 Gigagas/s, as recorded on the Base Mainnet chain.
One of the most impactful changes was optimizing and parallelizing in-memory pruning. This process is now significantly faster and no longer interferes with the block processing thread, reducing the likelihood of block processing spikes.
New supported chains
We added support for two new L2 networks: Taiko and Linea. To start with these networks, use the command below configurations:
taiko-mainnet
taiko-hekla
linea-mainnet
linea-sepolia
Additionally, as part of the preparation for Pectra hard-fork, we added support for the Mekong testnet. To run it, use -c mekong
and ensure the respective consensus client version is running alongside.
Optimism improvements
For the Optimism implementation, we introduced support for the new hard-fork, Holocene, which took place on the Sepolia chains.
Additionally, we enabled our AutoPivot mechanism for new nodes starting synchronization. This significantly reduces the duration of the initial sync stage for OP and Base nodes, cutting the total sync time by approximately 30–60 minutes.
CLI updates
As a part of our efforts following Posix CLI conventions for our command line options, we introduced all lowercase dash-separated alternatives for all Nethermind command line options. For instance, --JsonRpc.JwtSecretFile
can be spelled as --jsonrpc-jwtsecretfile
or --Metrics.Enabled
as --metrics-enabled
.
Some option names have been deprecated (while still supported with a warning) in favor of new ones. For instance, -dd, --datadir
is deprecated in favor of --data-dir
.
Also, Nethermind configuration files now have a .json
extension instead of the previous .cfg
one. While this should not cause any issues for our users, we highly recommend not using extensions when specifying config names – always prefer -c mainnet
over -c mainnet.json
, or -c mainnet.cfg
. Note that this does not apply to the cases when the -c
option specifies a path, e.g. -c path/to/mainnet.json
.
For more info, see configuration docs.
Changelog
New features
- Gnosis Shutter by @Marchhill in #7414
- Support for state override parameter in some RPC methods by @alexb5dh in #7362
Pectra
- Pectra EIPs 6110, 7002, 7685 by @MarekM25 in #7421
- Pectra payload bodies by @MarekM25 in #7429
- EIP-4844-Pectra: Blob gas fee collection for Gnosis by @Marchhill in #6866
- EIP-7702 and EIP-7251 by @ak88 in #7459
- Changes for EIP7685, 7002 & 6110: Flat Encoding of requests by @rjnrohit in #7670
New chains
- Add Linea L2 by @jmederosalvarado in #7555
- Taiko by @jmederosalvarado in #7326
- Add configs for mekong testnet by @ak88 in #7713
Performance
- Keccak avx512 by @benaadams in #7660
- fix casting when tracing by @LukaszRozmej in #7464
- Move txPool work from Processing loop event to txPool thread by @benaadams in #7469
- Remove 5 flow control exceptions by @benaadams in #7537
- Perf/Parallelize Pruning by @asdacap in #7541
- 7553 get elapsed time refactoring by @ssonthal in #7558
- Perf/skip commit queue by @asdacap in #7571
- Re Add Malloc Trim by @benaadams in #7587
- Disable txpool if SequencerUrl is set by @benaadams in #7513
- Skip committing state during warmup by @benaadams in #7595
- Reduce branches in HexPrefix.FromBytes by @benaadams in #7596
- Perf/parallelize storage commit by @asdacap in #7605
- Feature/FlushWAL on flush. by @asdacap in #7642
- Optimization/pre warm intra block cache fix nonce collisions by @LukaszRozmej in #7089
- Vectorize Keccak state copy, remove temp array use by @benaadams in #7663
- Avoid expensive Stelem_Ref covariant checks in Trie by @benaadams in #7675
- Perf/faster full tree visit by @asdacap in #7692
- Switch off Response Compression for loopback by @benaadams in #7782
- Perf/statesync use treepath by @asdacap in #7783
- Bls Signature refactoring & performance by @Marchhill in #7678
- Feature/Dont download existing block by @asdacap in #7665
4444
Shutter
- Shutter: P2P improvements by @Marchhill in #7545
- Shutter: validator registry V1 by @Marchhill in #7682
- Shutter: Validator registry v0 backwards compatibility by @Marchhill in #7724
- Shutter: refactor & increase disconnection log timeout by @Marchhill in #7722
- Shutter: p2p logging by @Marchhill in #7735
- Shutter: increase BlockUpToDateCutoff by @Marchhill in #7856
Optimism
- Remove barriers from OP/BASE mainnet by @kamilchodola in #7624
- Add pivot updator for optimism by @marcindsobczak in #7586
- Add OP Holocene fork by @emlautarom1 in #7761
- Enable Networking on OP/Base archive nodes by @kamilchodola in #7778
- Add missing Discv5 support for archive op/base nodes by @kamilchodola in #7870
- Fix op-mainnet snapshot by @deffrian in #7881
- Optimism post-bedrock Legacy transaction validation by @emlautarom1 in #7887
Bug fixes and stab...
v1.29.1
Release Notes
Major Highlights
Improved memory usage on Linux
In this version, we fixed a regression issue that caused Linux machines to slowly consume more memory than expected.
In 95% of situations, it did not cause any OOMs; in some specific situations, it restarted a node periodically.
Fixed and improved OP Stack sync
This version also addresses problems with the OP Mainnet sync and makes it faster by removing the snapshot download capability and improving snap sync performance. Now, OP Stack networks are syncing well.
In the meantime, we discovered a few potential further optimizations that will be added to an upcoming release.
Fixed an edge-case block production issue
On the Gnosis chain, we discovered an edge-case scenario in which an incorrect block could be built due to a bug in handling certain rare combinations of transactions. The issue has been fixed, and we can confirm that everything is working well now.
Full Changelog: 1.29.0...1.29.1