210 commits, 1137 file changed
Major highlights
Holesky Pectra hard fork
The Holesky Pectra hard fork is scheduled on Monday, February 24, 2025, 9:55:12 PM UTC (epoch 115968)
Sepolia Pectra hard fork
The Sepolia Pectra hard fork is scheduled on Wednesday, March 5, 2025 7:29:36 AM (epoch 222464)
World chain support
Added support for World chain and its testnet. To start with these networks, run Nethermind process using --config
flag which accepts now two new values:
worldchain-mainnet
worldchain-sepolia
Note: World chain also requires op-node
to function properly.
For more details please check PR: #8044
Added support for 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 via:
- CLI flags:
-Era.ImportDirectory "path" --Era.From 0 --Era.To 0 --Era.TrustedAccumulatorFile "somefile"
From
,To
andTrustedAccumulatorFile
is optional. Will import everything when range is set to 0. Will trust the era directory ifTrustedAccumulatorFile
is not specified.
-Era.ExportDirectory "path" --Era.From 0 --Era.To 0
From
,To
is optional. Will export everything when set to 0.accumulators.txt
andchecksums.txt
will be created.
- RPC endpoints:
-
admin_importHistory
andadmin_exportHistory
-
Example:
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 details please check the above PR: #6547
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
Various bug fixes and stability improvements that improve Nethermind sta
- 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 #8062
- Change more children derivation on snap sync by @damian-orzechowski in #8034
- feat: standardized error responses for payload validation by @merklefruit in #7939
Other changes
- Add filter for max transaction size by @marcindsobczak in #7925
- Use non-allocating split by @benaadams in #7837
- Remove resolved Windows workaround by @benaadams in #7872
- Use new Json Pipeline overloads by @benaadams in #7838
- Remove Nethermind.Mev remnants by @rubo in #7911
- Fix verify trie starter not set by @asdacap in #8086
- Add
curl
as an explicit dependency by @rubo in #8041 - update ethereum tests by @rjnrohit in #8045
- Feature/end to end synctest by @asdacap in #8055
- Make sure prewarming and pruning trie store is running on ethereum tests by @asdacap in #8076
- Pin FluentAssertions versions by @rubo in #8073
- Account access gas 7702 tests by @ak88 in #8021
- Add gas prices to grafana by @benaadams in #7935
- Add GasLimit to NewPayoad log by @benaadams in #7955
- Add StateMerkleizationTime Metrics by @LukaszRozmej in #7858
- Remove mekong by @MarekM25 in #8087
- [JsonRPC] Remove
transactionLogIndex
field from eth_getLogs by @brbrr in #7942 - Distinguish by fields by @flcl42 in #8081
- Move lowest inserted body number out of blocktree by @asdacap in #7830
- Hardcode C# version by @LukaszRozmej in #7875
- Change/Dont BinarySearch before SyncPivot to initialize numbers. by @asdacap in #7851
- Implement admin_dataDir for admin module by @richardgreg in #7857
- Change/use persisted pointer for fast header by @asdacap in #7855
- Exclude empty outputs in requests by @rjnrohit in #7720
- Add additional block lag for better sync mode switching for chain with shorter block processing time by @damian-orzechowski in #7892
- Refactor/move prewarm out of tx env base by @asdacap in #7963
- Ssz encoding generator by @flcl42 in #7299
- Dont charge double account access gas for ext op by @ak88 in #7993
New Contributors
- @richardgreg made their first contribution in #7857
- @merklefruit made their first contribution in #7939
- @StevenChongHuo made their first contribution in #8066
Full Changelog: 1.30.3...1.31.0-rc