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=0
and--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_trace
support - 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
type
foreth_*
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
.slnx
by @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-mainnet
configuration totaiko-alethia
by @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 #8250
- Use rocksdb_get_pinned by @benaadams in #8247
- Capture block stats per log (no block stats bleed) by @benaadams in #8251
- Configurable fast sync lag by @asdacap in #8253
- Remove Flashbots from Holesky config by @kamilchodola in #8262
- Fix deposit contract address by @MarekM25 in #8265
- Trie visitor adjustment by @asdacap in #8221
- Add factory logic for block producer runner initialization by @jmederosalvarado in #8243
- secp256r1 improvements by @alexb5dh in #8252
- Disable satellite resources by @rubo in #8270
- Improved tree visitor parallelism and efficiency. by @asdacap in #8267
- Perf/faster state sync test by @asdacap in #8266
- Return empty logs for future blocks by @flcl42 in #8241
- Improve BlockchainProcessor exception messages by @benaadams in #8273
- Revert secp256r1 tweaks by @alexb5dh in #8272
- Handle orphaned blocks better by @benaadams in #8274
- Disconnect on message size exceed by @VolodymyrBg in #8244
- Request Hash calculation no allocations by @LukaszRozmej in #8264
- hash casting cleanup by @LukaszRozmej in #8269
- BLS fix: don't return 1 because of infinity point by @Marchhill in #8277
- Chiado Pectra by @MarekM25 in #8276
- bls precompiles test vectors by @LukaszRozmej in #8279
- Disable warmup by default in StateTestRunner by @Antrikshgwal in #8285
- Add admin_removeTrustedPeer RPC endpoint by @richardgreg in #8288
- Update OP Superchain chains by @core-repository-dispatch-app in #8287
- Add GitHub Discussions badge by @rubo in #8291
- Remove goerli remnants by @MarekM25 in #8239
- Shutter: add gas limit check by @Marchhill in #8296
- Fix Json tracer tests on Windows by @benaadams in #8297
- fix txValidator for State test, fix PragueGnosis spec by @yerke26 in #8290
- Fail chainspec loading when EIP dependent params are missing by @LukaszRozmej in #8268
- Secp256r1 precompile optimization & tests by @alexb5dh in #8284
- Fix request hash calculations by @LukaszRozmej in #8302
- match on deposit contract log topic v2 by @LukaszRozmej in #8305
- Add status codes when rejecting and output error on lack of ContentType by @LukaszRozmej in #8301
- Fix should_bring_back_reorganized_blob_txs test by @asdacap in #8299
- BLS precompile: refactor, add comments by @Marchhill in #8307
- Refactor/refactor metric controller by @asdacap in #8293
- Feature/detailed rpc metric by @asdacap in #8294
- Fix runner test by @asdacap in #8312
- Align debug_traceBlock/Transaction with geth by @wurdum in #8186
- fix shutter test execute engine tests by @asdacap in #8313
- Increase Holesky & Sepolia gaslimit by 66% to 60M by @benaadams in #8263
- Decrease the tree dump Warn->Trace on Load genesis issue by @LukaszRozmej in #8317
- rpc compat get block remove author by @LukaszRozmej in #8314
- Feature/unified plugin Enabled flag by @asdacap in #8077
- Fix random runner test failure in CI by @asdacap in #8322
- A potential fix to raw typed tx encoding by @MarekM25 in #8259
- Fic randomly failing tx priority contract test by @asdacap in #8325
- Feature/detailed metric by @asdacap in #8321
- Refactor: Remove unused code in Shutter Plugin by @Marchhill in #8328
- Revert secp256r1 optimization by @alexb5dh in #8326
- Make EthereumJsonSerializer MaxDepth configurable by @LukaszRozmej in #8323
- Use Taiko's Transaction Executors for RPC modules by @smartprogrammer93 in #8311
- Perf/Faster SynchronizerTests by @asdacap in #8324
- Fix/TrieException after full pruning by @asdacap in #8333
- Fix/random debug rpc module test failure by @asdacap in #8334
- Logs/trace tx processor by @MarekM25 in #8335
- Return raw txs in mempool form if possible by @flcl42 in #8330
- Perf/Improved pruning cache efficiency by @asdacap in #8309
- Perf/concurrent processing jsonrpc socket by @asdacap in #8292
- Fix BLS on old CPUs by @Marchhill in #8337
- Update OP Superchain chains by @core-repository-dispatch-app in #8329
- Add percentiles 100 limit by @LukaszRozmej in #8338
- Add
engine_signalSuperchainV1
by @emlautarom1 in #7693 - Remove hive.json by @LukaszRozmej in #8343
- Double check pruning cache key memory usage by @asdacap in #8346
- Fix 7702 metrics by @MarekM25 in #8341
- adding more bls test vectors by @LukaszRozmej in #8357
- Fix handling local pending delegations by @marcindsobczak in #8351
- TxTypeExtensions refactoring by @MarekM25 in #8354
- Add client id privacy option by @octogene in #8310
- Feature/Load ISteps with a container. by @asdacap in #8332
- Taiko pacaya support by @smartprogrammer93 in #8331
- fix Trace leak by @LukaszRozmej in #8353
- Kzg correct arg ordering by @mralj in #8363
- Fix flashbots prewarmer not wired correctly by @asdacap in #8359
- More explicit jump name by @ak88 in #8362
- Only replace candidate block when more profitable and improve production logs by @benaadams in #8365
- Small refactor to make ExecuteEvmCall error handling clearer. by @ak88 in #8366
- Change loglevel on invalid websocket state by @asdacap in #8360
- Fix/block improvement test inconsistencies by @asdacap in #8364
- 4444-ish: Cleanup/disable header only forward sync by @asdacap in #8209
- Output Blockgas limit at startup by @benaadams in #8368
- Fix: order memdb by @Marchhill in #8369
- Give bigger machine for base-mainnet as seems not to fit anymore by @kamilchodola in #8370
- Minor fee collector optimisation by @Marchhill in #8376
- Skipping execution requests processor in genesis by @MarekM25 in #8375
- Improve UInt256 multiply performance x2 on AVX512 platforms by @rubo in #8379
- Feature/disable storage range split flag by @asdacap in #8356
- Update OP Superchain chains by @core-repository-dispatch-app in #8372
- Hoodi initial config by @brbrr in #8377
- Accept tx with same nonce when pending or is delegated by @ak88 in #8352
- State/remove past path hashes by @asdacap in #8374
- 4444-ish: Refactor/forward header provider by @asdacap in #8254
- Remove redundant
authorizationTuple.Nonce == ulong.MaxValue
check by @LukaszRozmej in #8340 - Rename and unify log filenames by @rubo in #8387
- Fix 2935 - fetch trimmed hashes correctly by @tanishqjasoria in #8344
- Fix Hoodi archive config by @brbrr in #8393
- Include blob count in block production logs by @benaadams in #8396
- Disable static web assets by @rubo in #8395
- Refactor #8254, fix missing using by @LukaszRozmej in #8397
- refactor eth_simulate and add support for trace simulate endpoints by @rjnrohit in #8347
- Fix Taiko alethia sync issues on actions + various minor fixes by @kamilchodola in #8398
- Pack blobs optimally by aggregate fees by @benaadams in #8400
- Debug RPC for 7702, potential fix by @MarekM25 in #8349
- Refactor/move sync pivot to blocktree by @asdacap in #8390
- Fix cpu detection on Windows by @benaadams in #8403
- Remove redundant check for delegations by @ak88 in #8402
- Update OP Superchain chains by @core-repository-dispatch-app in #8405
- RBuilder rpc by @asdacap in #7985
- Add message with exact error to
AcceptTxResult.Invalid
by @marcindsobczak in #8240 - Return txs from pool in form with network wrapper in special case by @flcl42 in #8406
- Reduce getPayload timeout on empty block by @Marchhill in #8408
- Feature/allow plugins to specify module by @asdacap in #8358
- Perf/batched header insert by @asdacap in #8391
- Add Hoodi support by @brbrr in #8385
- AlwaysPoS did not set final total difficulty by @asdacap in #8413
- Feature/Configurable dirty node shard count by @asdacap in #8410
- Only write to tree net changes at end of block by @benaadams in #7406
- Fix hive test. by @asdacap in #8414
- Warm up both beacon root slots by @benaadams in #8415
- Fix wrong key encoding in multi load level by @asdacap in #8416
- Shutter: fix shutdown dispose by @Marchhill in #8418
- Auto-update fast sync settings by @core-repository-dispatch-app in #8422
- Feature/movable sync pivot by @asdacap in #8401
- Just fixing the clique test script by @ak88 in #8424
- Remove HashAndTinyPathAndHash by @benaadams in #8425
- Peers ignore self and recent ips by @benaadams in #8426
- Check enode format in constructor by @ak88 in #8434
- Update ethereum tests by @MarekM25 in #8409
- Lookup TxDecoder once per block by @benaadams in #8438
- Fix taiko DI by @flcl42 in #8436
- Auto-update fast sync settings by @core-repository-dispatch-app in #8444
- Add prewarm cache to TransactionProcessorTests by @Marchhill in #8447
- Clarify missing messages are Fork Choice by @benaadams in #8441
- Use different tags for Hekla and Alethia by @kamilchodola in #8411
- Fix: use gnosis forks consistently by @Marchhill in #8448
- Shrink Netty page size 16MB => 8MB (Save 64MB) by @benaadams in #8439
- Increase hot code in PruneCache by @benaadams in #8446
- Fix spaceneth by @MarekM25 in #8450
- Update OP Superchain chains by @core-repository-dispatch-app in #8443
- Rlp.Encode skip second array creation for length by @benaadams in #8440
- Minor refactoring and optimisations by @Marchhill in #8451
- Secp256r1 precompile: switch to BoringSSL by @alexb5dh in #8437
- Correct timestamp in
eth_simulateV1
by @emlautarom1 in #8423 - NewPayload error message by @Marchhill in #8453
- Differentiate Pruning metrics by @benaadams in #8456
- Remove branch from Purning Metrics by @benaadams in #8457
- Fix bump up version workflow by @stdevMac in #8117
- Cleanup: Remove ISynchronizationPlugin. by @asdacap in #8458
- Update base and op oneClick by @stdevMac in #8460
- Volta bootnodes adjusted by @kamilchodola in #8463
- Deserialize JSON of a decimal number > MAX_UINT64 by @flcl42 in #8461
- Activate Pacaya fork on Hekla by @flcl42 in #8466
- [Hoodi] Increase gas limit to 60M by @brbrr in #8386
- Fix benchmark missing any writes by @asdacap in #8468
- Fix broken Engine API documentation link in error message by @Hopium21 in #8476
- Auto-update fast sync settings by @core-repository-dispatch-app in #8472
- Update OP Superchain chains by @core-repository-dispatch-app in #8473
- Use ArgumentNullException.ThrowIfNull by @benaadams in #8477
- Build up to +50% more profitable (local) blocks by @benaadams in #8462
- Perf/More accurate request limit. by @asdacap in #8474
- Refactor/Move some TestBlockchain code to DI. by @asdacap in #8465
- Update chain sizes test by @benaadams in #8478
- Skip block build until new tx have been added by @benaadams in #8481
- Add timeout to node filter by @benaadams in #8483
- Include version number in default extra data by @benaadams in #8492
- Fix: dispose ArrayPoolList in SyncStatusList by @Marchhill in #8485
- Cap block build size in bytes by @benaadams in #8486
- Fix FCU result in simulated block production scenarios by @marcindsobczak in #8494
- Dial back JsonRpc log spam by @benaadams in #8497
- Don't include too much version in extradata by @benaadams in #8499
- Isolated commit and hash benchmark by @asdacap in #8505
- Don't catch all exceptions on ExecutionPayload.TryGetBlock by @LukaszRozmej in #8498
- Handle tx reorged blocks better by @benaadams in #8507
- Always trace invalid block even if succeeds on trace by @benaadams in #8131
- Prefer mev reward tx value when calculating mev by @benaadams in #8512
- Feature/era configurable import blocks buffer by @asdacap in #8510
- Cleanup/Remove InitializeNodeStats by @asdacap in #8511
- Auto-update fast sync settings by @core-repository-dispatch-app in #8518
- Update OP Superchain chains by @core-repository-dispatch-app in #8519
- Limit time any single block can be produced for by @benaadams in #8523
- Feature/Allow multiple class for the same rpc module. by @asdacap in #8524
- Add Eof Execution EIP-7692 (EIP-663, EIP-3540, EIP-3670, EIP-4200, EIP-4750, EIP-5450, EIP-6206, EIP-7069, EIP-7480, EIP-7620, EIP-7698, EIP-7756) by @benaadams in #8176
- Add metrics for
engine_getBlobsV1
full and partial responses by @marcindsobczak in #8495 - OP CL Derivation by @deffrian in #8005
- Safely cast Optimism subtypes by @emlautarom1 in #8516
- Added gnosis pectra support by @dmitriy-b in #8500
- Feature/better dicovery metrics by @asdacap in #8531
- CodeDB writes in a batch by @LukaszRozmej in #8527
- Include
OptimismCL
parameters in OP chainspecs by @emlautarom1 in #8491 - Update OP Superchain chains by @core-repository-dispatch-app in #8535
- Auto-update fast sync settings by @core-repository-dispatch-app in #8545
- Fix GasEstimator TODO by cloning Transaction instead of mutating original by @Pronoss in #8513
- EIP-4444: Add RPC errors for pruned blocks. Take 2 by @brbrr in #8521
- Mainnet Pectra config by @Marchhill in #8502
- Set ancient barriers for Sepolia post merge by @brbrr in #8469
- Refactor/move worldstate to DI by @asdacap in #8543
- ci: bump actions/checkout to v4 by @dizer-ti in #8549
- Add additional block production logs by @benaadams in #8555
- Fix/double update main chain by @asdacap in #8553
- Refactor/move discovery to di by @asdacap in #8554
- Improve estimateGas and call gas limits by @Marchhill in #8514
- Update OP Superchain chains by @core-repository-dispatch-app in #8560
- Auto-update fast sync settings by @core-repository-dispatch-app in #8561
- Skip reloads of accounts for txpool delegations by @benaadams in #8564
- Commit state according to the regular spec, before system tx spec usage by @flcl42 in #8567
- Add EVM tests for 2537 by @Marchhill in #8566
- Update Nethermind.Numerics.Int256 package by @rubo in #8570
- Maybe fix incorrect total difficulty by @asdacap in #8557
- Perf/parallel block downloader by @asdacap in #8255
- Revert "Perf/parallel block downloader" by @kamilchodola in #8574
- Fix minimum gas limit when producing blocks by @LukaszRozmej in #8580
- Auto-update fast sync settings by @core-repository-dispatch-app in #8583
- Update OP Superchain chains by @core-repository-dispatch-app in #8584
- Adjust names of engine_getBlobs metrics by @marcindsobczak in #8589
- Consider dependency chains in optimal blob packing by @benaadams in #8582
- Fix StateTestTxTracer top-level precompile calls tracing by @Hyodar in #8577
- Fix unexpected nethtest log output and refactor test logging by @Hyodar in #8578
- Delay resolving to full blob when picking by @benaadams in #8591
- Use faster span enumerator for ArrayPoolList by @benaadams in #8592
- Double check other client limits by @richardgreg in #8530
- Remove Nethermind.Cli by @rubo in #8575
- Update dependencies by @benaadams in #8594
- Cap snappy output span by @benaadams in #8596
- Optimism - Isthmus by @Scooletz in #8260
- Update OP Superchain chains by @core-repository-dispatch-app in #8597
- Refactor/separate pruning trieestore by @asdacap in #8593
- Fix E2ESyncTest by @asdacap in #8602
- Trie node encode by @Scooletz in #8599
- Use all tx types in pending delegation test by @ak88 in #8605
- Pass PruningConfig to triestore by @asdacap in #8598
- Fix/parallel block downloader by @asdacap in #8587
- Update OP Superchain chains by @core-repository-dispatch-app in #8611
- Fix trie tests by @asdacap in #8614
- Auto-update fast sync settings by @core-repository-dispatch-app in #8612
- Refactor/Explicit message serializer registration by @asdacap in #8604
- Fix editorconfig not applied to C# file. by @asdacap in #8620
- Update libp2p package by @Marchhill in #8534
- HealthChecks: Track CL calls from fcu & np methods by @deffrian in #8603
- Cleanup/remove upgreadable peer allocation by @asdacap in #8572
- Safely cast Optimism subtypes (2) by @emlautarom1 in #8619
New Contributors
Thanks to our first-time contributors:
- @AnavarKh made their first contribution in #8169
- @VolodymyrBg made their first contribution in #8244
- @Antrikshgwal made their first contribution in #8285
- @wurdum made their first contribution in #8186
- @octogene made their first contribution in #8310
- @mralj made their first contribution in #8363
- @Hopium21 made their first contribution in #8476
- @dmitriy-b made their first contribution in #8500
- @Pronoss made their first contribution in #8513
- @dizer-ti made their first contribution in #8549
- @Hyodar made their first contribution in #8577
Full Changelog:
1.31.0...1.32.0