Release notes
This release improves node robustness, restart safety, RPC compatibility, and runtime performance, especially for Flat DB users, RPC-heavy workloads, and chains relying on upcoming hardfork or EIP support.
Overview
Full diff: https://github.com/NethermindEth/nethermind/compare/1.37.2…release/1.38.0
372 changes since 1.37.2. Highlights include the Taiko Unzen hardfork, parallel transaction execution with Block-level Access Lists (EIP-7928), new EIPs (EIP-7981 access-list token floor pricing, EIP-7976 calldata floor cost, EIP-4444 EraE history expiry), Flat DB layout persistence, a large round of JSON-RPC correctness fixes, and EVM/state hot-path optimizations.
Highlights
Consensus & EIPs
- Taiko Unzen hardfork implemented (#11281)
- Parallel transaction execution with BALs (#9182), additional BAL hive tests (#11285)
- EIP-7981 — Access list token floor pricing (#11311)
- EIP-7976 — Increase calldata floor cost (#11293)
- EIP-4444 EraE support (#10812)
- Enforce EIP-3675 uncle ban at the spec level (#11302)
- Gnosis Osaka (#10906)
State & storage
- Persist FlatLayout and refuse mismatched restarts (#11271)
- Flat-state storage cleanup and snapshot fixes (#11133, #11401, #11414)
- Reduce dirty nodes lock contention (#11297)
- StateComposition plugin — real-time state metrics (#10995)
Performance
- Embed Address bytes inline to remove secondary allocation (#11469)
- Optimize EVM stack (#11230) and EvmMemory (#11247)
- Optimise parallel execution: reduce worldstate / txprocessor allocations (#11318)
- More optimizations for precompile caching (#11373, #11309)
RPC & correctness
admin_*peer-management endpoints improvements (#11489)- Numerous
eth_simulateV1,eth_call,eth_estimateGaserror-code and gas-cap fixes txpool_content/txpool_contentFrom/txpool_statusfixes (#11305, #11417)/healthendpointClUnavailableregression fix (#11474)
Networking & sync
- Upgrade discv5 (#11419)
- Lock-free sync allocation slots per peer (#11361)
- Remove NodeData satellite protocol (#11359) and long-range catch-up sync (#11123)
Chain-specific
- XDC: forensics processor, epoch switch manager, subnet block building, and multiple fixes
- Taiko: batch lookup RPC methods (#11021), Shasta fork on Alethia (#10984)
- Add new Anchor Transaction Type for Surge realtime (#10320)
What’s Changed
- Bal devnet 3 by @Marchhill in #10697
- Restore Taiko FCU timestamp validation allowing equal timestamps by @jmadibekov in #10810
- refactor: comprehensive test and code deduplication by @LukaszRozmej in #10815
- chore: Update packages by @rubo in #10827
- refactor(specs): flatten fork inheritance into parent-based Apply chain by @LukaszRozmej in #10825
- Make state available if not pruned by @flcl42 in #10822
- Update OP Superchain chains by @core-repository-dispatch-app [bot] in #10837
- Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #10836
- Kch/sync supported fix by @kamilchodola in #10823
- chore: Revise spell checking by @rubo in #10838
- fix(rlp): pass ValueDecoderContext by ref in DecodeStorageRootOnly by @reject-i in #10842
- fix(db): return null for missing key in SimpleFilePublicKeyDb.Get by @reject-i in #10843
- Simplify releasing & fix
IByteBufferleaks in tests by @alexb5dh in #10814 - fix: IByteBuffer leak in ZeroSnappyEncoder.Encode by @newmanifold in #10833
- fix(ci): free disk space for Pyspec test jobs by @benaadams in #10845
- fix(ssz): Uint128 decode method swapped upper and lower halves by @kevaundray in #10794
- fix(ssz): Merkleizer list Feed now uses correct chunk limit and actual length for mixin by @kevaundray in #10795
- fix(ssz): Add validation checks for BitList and BitVector by @kevaundray in #10796
- fix(ssz): Container decode logic for BitVector and validation fixes for container input by @kevaundray in #10797
- fix: dispose IncrementalHash in E2StoreWriter by @ninastef in #10847
- feat: Add Codex review workflow by @rubo in #10832
- fix: Update Trivy scanner workflow by @rubo in #10852
- fix(ssz): mix in count=0 (not limit) for null/empty lists in MerkleizeList templates by @MarekM25 in #10828
- fix: remove unreachable code in ModExpPrecompile by @Fallengirl in #10826
- BALs remove unneeded delegation check by @Marchhill in #10860
- fix: rpc-compat hive tests by @deffrian in #10846
- fix: prevent torn reads of TrieNode._rlp using seqlock pattern by @benaadams in #10857
- Fix event handler leaks, reduce allocations, and refactor Network layer by @benaadams in #10753
- Re-enable ReadyToRun AOT compilation by @benaadams in #10848
- fix: handle tuple disposal in TryDispose to prevent resource leaks by @newmanifold in #10839
- fix: IByteBuffer leak in EnrResponseMsgSerializer & ArrayPoolSpan OOB by @newmanifold in #10853
- Remove EOF by @benaadams in #10866
- Check logs RLP by @flcl42 in #10862
- feat: add maxUsedGas to eth_simulateV1 results by @MysticRyuujin in #10863
- fix: fix resource leak in ChannelDecoder compression streams by @kseniaeremekno in #10865
- fix: fix CancellationTokenSource leak in StartingSyncPivotUpdater by @ninastef in #10859
- fix: fix encryptor leak in AesCtr method by @ninastef in #10851
- feat: restore edge/block collection and runtime consumption by @benaadams in #10869
- chore: Revise
CODEOWNERSby @rubo in #10874 - chore: Unify precompile naming by @rubo in #10875
- feat: add –force-resync and –purge-db CLI flags by @benaadams in #10871
- test: Add
MODEXPprecompile tests by @rubo in #10888 - fix: fix HttpResponseMessage leak in DefaultHttpClient by @kseniaeremekno in #10889
- fix(test): add missing isLeaf assertion in HexPrefixTests by @zeroprooff in #10895
- fix: fix HttpResponseMessage leak in BasicJsonRpcClient by @kseniaeremekno in #10873
- fix(ssz): use container.Count instead of limit in MerkleizeList for Union types by @davidjsonn in #10747
- feat(ssz): Add spec tests for ssz by @kevaundray in #10807
- fix(test): replace fork type checks with spec flag checks in test harness by @LukaszRozmej in #10896
- test(keystore): remove duplicate Salt32Test by @zeroprooff in #10901
- fix: raise snap response limits to prevent SnapSync regression by @kamilchodola in #10904
- docs: overhaul README structure and content by @Giri-Aayush in #10856
- fix(test): eliminate flakiness in BlockchainProcessorTests by @LukaszRozmej in #10905
- test: Add
BLAKE2Fprecompile tests by @rubo in #10909 - test: Add
SHA256precompile tests by @rubo in #10910 - Fix flaky test: replace polling with signal-based loop in BecomesNewHead by @Copilot in #10884
- Fix ArgumentException in SnapshotRepository.GetSnapshotBeforeStateId for negative BlockNumber by @Copilot in #10882
- Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #10914
- Update OP Superchain chains by @core-repository-dispatch-app [bot] in #10913
- fix: fix inverted dispose logic in BackgroundTaskScheduler by @kseniaeremekno in #10907
- fix(db): reuse ReadOptions in ColumnDbSnapshot to reduce GC pressure by @smartprogrammer93 in #10894
- Fix flaky DiscoveryPersistenceManager test on macOS CI by @smartprogrammer93 in #10912
- Fix test chainspec configuration to prevent spurious misconfiguration warnings by @Copilot in #10881
- fix: BackgroundTaskScheduler disposal deadlock causing CI timeouts by @benaadams in #10927
- Fix AuRaMergeEngineModuleTests by @Marchhill in #10872
- Dispose on exception by @flcl42 in #10921
- Gnosis Osaka by @Marchhill in #10906
- Remove duplicate assertion in SnapshotCompactorTests by @zeroprooff in #10923
- Fix buffer leak tests to use PooledBufferLeakDetector by @newmanifold in #10887
- test: update pyspec fixtures to v5.4.0/v5.5.1 and adapt to forked release layout by @benaadams in #10931
- fix(flat): periodically clear ReadOnlySnapshotBundle cache by @asdacap in #10922
- Connection reset metric by @asdacap in #10935
- Reinstate removed
IGasPolicymethods and apply for eip-8037 by @damian-orzechowski in #10897 - Migrate TxGossipPolicy to DI using OrderedComponents by @asdacap in #10941
- fix: remove duplicate NewHeadBlock unsubscription in PoSSwitcher by @eeemmmmmm in #10938
- chore: add fix-nethtest agent skill for EF test debugging by @LukaszRozmej in #10903
- test: add engine blockchain pyspec fixtures and fix BAL gas budget tracking by @benaadams in #10939
- perf: add fast MVCC snapshots for MemDb in FlatDb tests by @asdacap in #10792
- New constructor by @damian-orzechowski in #10950
- Extend
CallResultconstructor visibility by @damian-orzechowski in #10949 - Fix incorrect NodeType in TrieNodeTests by @zeroprooff in #10917
- fix(zkevm): Fix RLP serialization and EVM memory for zkEVM by @rubo in #10960
- Fix EIP-158 system account test to use IWorldState interface by @asdacap in #10969
- fix: resource leak — ArrayPool, double-dispose, CTS, event handlers & Resource Leak audit skill by @newmanifold in #10951
- Move balance change in RefundOnFailContractCreation by @damian-orzechowski in #10974
- fix: Flaky Nethermind.Blockchain.Test by @newmanifold in #10967
- FCU Canonical chain corruption after beacon sync (3 fixes + startup healing) by @svlachakis in #10876
- FlatDB dictionary lookup optimization by @asdacap in #10738
- fix(zkevm): Disable async state and trie processing for zkEVM by @rubo in #10979
- chore(taiko): activate Shasta fork on Alethia by @smartprogrammer93 in #10984
- BlockTree DI by @svlachakis in #10982
- fix: resolve flaky payload CTS ObjectDisposedException by @LukaszRozmej in #10990
- fix: reduce Hive engine-withdrawals parallelism to 2 by @newmanifold in #10992
- Add New Anchor Transaction Type for Surge realtime by @dipkakwani in #10320
- Update OP Superchain chains by @core-repository-dispatch-app [bot] in #10987
- Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #10988
- Test: Maybe improve Ethereum.Transaction.Tests stability. by @asdacap in #10989
- Fix admin_peers by @flcl42 in #10978
- Don’t check BALs if no validation is required by @flcl42 in #10973
- feat(witness-generation): Make WitnessCapturingTrieStore explicitly readonly by @hudem1 in #10701
- Fix remaining gas calculation by @flcl42 in #10999
- fix: prevent protocol handler memory leak from Autofac dispose tracking by @newmanifold in #11000
- perf: Replace ZeroContentionCounter with thread-aware metric counters by @benaadams in #11005
- fix: guard ClearStaleMarkersAbove behind forceUpdateHeadBlock by @asdacap in #11004
- perf: Reduce per-peer object allocations in P2P layer (-2.25M objects, -54MB) by @benaadams in #11007
- Don’t record BALs during transaction picking by @flcl42 in #10971
- Follow up to PR11007 by @benaadams in #11008
- fix: Set MainThreadCodeDbCache to public (for arbitrum) by @hudem1 in #11010
- fix: register ISnapServer in production DI to restore snap serving by @newmanifold in #10986
- eth_getStorageValues by @svlachakis in #10977
- Add stall timeout margin before FlatDb compactor warning by @asdacap in #10983
- perf: Clear BlockAccessList and AccountChanges before caching blocks by @benaadams in #11014
- perf: Replace ConcurrentHashSet with lease-guarded HandlerBag in RetryCache (~75 MB alloc reduction) by @benaadams in #11009
- refactor: Move merkleization metrics to IWorldStateScopeProvider by @asdacap in #10925
- Support EIP-7949 and update hoodi spec accordingly by @flcl42 in #10046
- XDC mainnet sync configs by @batrr in #10820
- fix: dispose evicted envs from BlockCachePreWarmer pool by @newmanifold in #11013
- feat(taiko): add certain batch lookup RPC methods by @smartprogrammer93 in #11021
- fix: Replace logger resolution with explicit type-based loggers by @benaadams in #11019
- fix(evm): include initcode state gas in block accumulator on code deposit failure by @qu0b in #11001
- Fix/xdc block building by @ak88 in #10809
- Fix merge plugin tests for FlatDb and add to flat CI by @asdacap in #10919
- ci: add static analysis enforcement to build pipeline by @newmanifold in #11025
- ci: add known failing Invalid Missing Ancestor Syncing ReOrg hive tests by @newmanifold in #11028
- fix(test): fix flaky Special_Tx_Is_Executed_Before_Normal_Txs nonce collision by @newmanifold in #11033
- Fix trace_transaction and trace_replayTransaction returning HTTP 500 by @svlachakis in #11047
- Update OP Superchain chains by @core-repository-dispatch-app [bot] in #11039
- Add NETH001 custom Roslyn analyzer for unused new expressions by @asdacap in #11044
- Fix/xdc spec by @ak88 in #11032
- ci: add known failing snapsync hive test by @newmanifold in #11037
- Handle invalid blocks in hive runner by @flcl42 in #11049
- fix: respect CLI override for SnapServingEnabled by @AnkushinDaniil in #11051
- fix: lower SoftOutgoingMessageSizeLimit to 2 MB to match Geth by @AnkushinDaniil in #11050
- fix: register ISnapServer in FlatWorldStateModule DI by @AnkushinDaniil in #11052
- Fix debug_executionWitness for Taiko plugin by @jmadibekov in #11058
- Lower Ethash cache level logs - no need to spam them for history blocks by @LukaszRozmej in #11061
- Update Dockerfiles by @core-repository-dispatch-app [bot] in #11057
- Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #11040
- Fix unchecked SequenceEqual in Eip4844Tests by @Bilogweb3 in #11036
- Don’t return state gas by @flcl42 in #11031
- test(wallet): remove duplicate UnlockAccounts test case by @Ocheretovich in #11029
- chore: Update GitHub Actions by @rubo in #11063
- chore: Update Nethermind banner by @rubo in #11064
- feat: make debug_executionWitness compatible with FlatDb by @asdacap in #11045
- fix: add SnapServingMaxPathsPerGroup config to raise snap RLP path limit by @AnkushinDaniil in #11053
- refactor: extract FullPruner init into overridable IFullPrunerFactory by @asdacap in #11066
- feat(flat-state): remove read node dictionaries from SnapshotBundle by @asdacap in #10993
- Fix blockchainbridge for XDC by @ak88 in #11065
- Fix for 4844 in XDC by @ak88 in #11070
- chore: Remove OP diff workflow by @rubo in #11071
- feat(zkevm): Refactor stateless executor by @rubo in #10629
- Perf/xdc by @ANtutov in #10295
- fix AuRaBlockFinalizationManager unclean shutdown by @LukaszRozmej in #11062
- Xdc testnet config by @ak88 in #11012
- fix: resolve tx type based on target block fork in eth_call by @LukaszRozmej in #11074
- eth_estimateGas fix error decoding by @svlachakis in #11077
- feat(cache): Add AssociativeCache - lock-free set-associative cache with lower memory by @benaadams in #10991
- test: Simplify testing workflows by @rubo in #11075
- XDC implement BlobBaseFee handling by @batrr in #11078
- Fix code-lint workflow: disk space, caching, and duplicate annotations by @newmanifold in #11080
- Refactor sync-supported-chains workflow and add sync smoke test CI check by @kamilchodola in #10898
- refactor: remove Personal module from default RPC modules by @LukaszRozmej in #11084
- refactor: Make some methods and interfaces available for overriding CALL opcode from Arbitrum plugin by @hudem1 in #11011
- fix: add bounds on filter address and topic array sizes by @LukaszRozmej in #11087
- fix: validate signature length in personal_ecRecover by @LukaszRozmej in #11090
- Fix decoding of empty receipts of a block by @flcl42 in #11093
- Snapshot - Big Files & Improvements by @svlachakis in #10735
- ci: add missing flaky hive test entries for Invalid Missing Ancestor Syncing ReOrg by @newmanifold in #11082
- chore: Revise CODEOWNERS by @rubo in #11099
- fix: validate filter string length before re-parsing by @LukaszRozmej in #11086
- fix(crypto): implement IHash64bit for Hash256AsKey by @JayeTurn in #11091
- XDC Fix duplicate votes in pool by @batrr in #11072
- Remove max reorg check in XDC by @ak88 in #11083
- ci: add testing_buildBlockV1 hive tests to known failures by @newmanifold in #11100
- ci: bump tests-spec timeout to 20m by @newmanifold in #11109
- style: enforce explicit type over var (IDE0008) by @asdacap in #11079
- chore: Update Dockerfiles by @core-repository-dispatch-app [bot] in #11114
- Update OP Superchain chains by @core-repository-dispatch-app [bot] in #11105
- Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #11106
- fix: use DbNames constants for discovery store paths by @Keemosty12 in #11108
- chore(pgo): update PGO profile by @github-actions [bot] in #11107
- fix: add bounds check before unsafe RLP length deserialization by @LukaszRozmej in #11088
- style: enforce primary constructors (IDE0290) as build error by @asdacap in #11117
- ci: chunk Legacy VM test on ubuntu-latest for coverage by @newmanifold in #11113
- feat: add call count limit for trace_callMany by @LukaszRozmej in #11085
- feat: Add testing_buildBlockV1 RPC endpoint and make IBlockProducerEnv IAsyncDisposable by @marcindsobczak in #9901
- fix: return NoopSnapServer instead of null for HashDB by @asdacap in #11116
- eth_getBlockByNumber(“pending”) returns non-null hash, nonce, miner by @svlachakis in #11121
- Break pagination in Eth/70 on empty response by @flcl42 in #11129
- eth_getBlockByNumber - Remove totalDifficulty by @svlachakis in #11097
- chore: Remove
debug_getBlockRlpmethod by @rubo in #11130 - style: enforce expression-bodied members by @asdacap in #11134
- fix(rpc): strip custom-error revert bytes from eth_call/eth_estimateGas message field by @divi2806 in #11112
- Add L1STATICCALL precompile and witness RPC by @jmadibekov in #11017
- style: enable CA2208 and fix incorrect exception argument params by @newmanifold in #11131
- fix: clean stale flat storage when contract storage becomes empty by @asdacap in #11133
- fix: Revise Hive tests by @rubo in #11142
- fix: dispose SnappyStream in PayloadByNumberProtocol by @Keemosty12 in #11135
- Improve ssz by @flcl42 in #10788
- fix: Fix Codecov reports by @rubo in #11144
- chore: Update Dockerfiles by @core-repository-dispatch-app [bot] in #11146
- fix: Add Codecov config by @rubo in #11145
- Patch dependencies by @benaadams in #11149
- refactor: remove long range catch-up sync by @asdacap in #11123
- fix(test): replace TrieWarmer Task.Delay with polling by @JayeTurn in #11147
- fix build - BenchmarkDotNet Version by @svlachakis in #11152
- StackUnderflow from JSON-RPC method eth_call by @svlachakis in #11139
- fix(sync): restore ActivatedSyncFeed dispose guard by @JayeTurn in #11163
- fix: resolve flaky Can_change_branch_on_invalid_block test with event-driven deletion wait by @divi2806 in #11159
- XDC Subnet penalties by @batrr in #11137
- XDC subnet snapshot manager by @batrr in #10380
- fix: cap compact log entry zero-prefix data expansion by @JayeTurn in #11110
- fix: restrict health check UI to ports with health module enabled by @LukaszRozmej in #11167
- Feature - EIP-4444 EraE Support by @svlachakis in #10812
- feat(analyzers): add NETH002 to detect excessively deep lambda indentation by @asdacap in #11138
- fix eth_estimategas to execute with available gas and return allowance error for compatiblity with geth by @DarkLord017 in #11153
- Enable IDE0320 analyzer for static lambdas by @LukaszRozmej in #11164
- Update CODEOWNERS - JsonRpc & Facade by @svlachakis in #11191
- ci: bump mainnet Flat sync timeout to 6h in sync-master-validation by @stdevMac in #11195
- fix: EIP-8024 missing immediate must decode as zero, not graceful STOP by @LukaszRozmej in #11178
- Remove Eip-7907 by @benaadams in #11199
- fix(db): make RocksDbReader disposable, unify ReadOptions cleanup by @LukaszRozmej in #11197
- Fix amsterdam hive tests by @flcl42 in #11151
- Make BaseSnapshotManager disposable by @ak88 in #11198
- chore: Change
codecov/projectstatus by @rubo in #11227 - ZiskGuest: enable stacktrace data to facilitate possible GVM resolution by @maximmenshikov in #11234
- ZiskGuest: update bflat to v17.1.0 image (GVM improvements) by @maximmenshikov in #11235
- Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #11238
- chore(pgo): update PGO profile by @github-actions [bot] in #11239
- perf(state): avoid copy on BulkSet via ArrayPoolList ownership transfer by @asdacap in #11240
- fix(merge): validate safe/finalized as ancestors of new head by @benaadams in #11187
- ci: Auto-run Claude review and gate merges on verdict by @LukaszRozmej in #11150
- perf(trie): tune BulkSet parallelism and dispatch for storage-flush workloads by @asdacap in #11241
- TransactionResult Extensibility Improvements by @svlachakis in #11243
- test(sync): fix flaky StateSyncFeedTests timeout handling by @LukaszRozmej in #11226
- Fix flaky tests in PruningScenariosTests by @benaadams in #11248
- ci(claude-review): drop concurrency group by @LukaszRozmej in #11251
- ci(hive): remove build-block-from-mempool from known failures by @newmanifold in #11250
- fix build - BenchmarkDotNet Version by @AnkushinDaniil in #11253
- removes MaxFeePerGas for eth_estimateGas by @DarkLord017 in #11192
- Refactor DB migrations to use DI by @asdacap in #11242
- fix(merge): allow lower finalized FCUs and add Paris engine pyspec coverage by @benaadams in #11259
- Remove joc from sync actions by @stdevMac in #11236
- chore(zkevm): Remove unnecessary zkEVM conditions by @rubo in #11255
- Optimize EvmMemory by @benaadams in #11247
- Tell AGENTS versions of C# and .NET by @benaadams in #11272
- Break on unknown receipts; ignore unknown blocks by @flcl42 in #11263
- Feature/subnet plugin by @ak88 in #11126
- Optimize EVM stack by @benaadams in #11230
- Break on regular message before status receival by @flcl42 in #11262
- Add missing solution dependencies by @flcl42 in #11286
- style: enforce additional IDE style rules as warnings by @newmanifold in #11283
eth_call,eth_createAccessList,eth_estimateGas,debug_traceCall,debug_traceCallMany: honour gasCap as default gas, remove block-gas-limit ceiling for RPC calls by @svlachakis in #11282- chore: Update packages by @rubo in #11290
- Additional BAL hive tests by @benaadams in #11285
- ci(expb): live streaming, SSE metrics, summary reports, and dotTrace profiling by @kamilchodola in #11268
- chore: modify the error message to remove inconsistency by @akronim26 in #11288
- fix(eth_call): return descriptive error when maxFeePerGas is below block base fee by @divi2806 in #11190
- fix(specs): initialize Gnosis and Chiado transition activations by @JayeTurn in #11274
- fix(expb): Push and PR triggers by @kamilchodola in #11300
- XDC Epoch switch manager by @batrr in #11140
- fix(db): wait for in-flight timer callback in DbMetricsUpdater.Dispose by @asdacap in #11270
- fix: PatriciaTree commit deadlock on bounded scheduler by @batrr in #11299
- Reduce dirty nodes lock contention by @benaadams in #11297
- perf: disable ReadyToRun AOT compilation by @kamilchodola in #11289
- feat(logging): add DebugError/DebugWarn helpers with Kind property for Seq by @kamilchodola in #11157
- Enforce EIP-3675 uncle ban at the spec level by @benaadams in #11302
- EIP-7976 — Increase calldata floor cost by @newmanifold in #11293
- txpool: add
txpool_contentFrom, fixtxpool_statushex format, fixtxpool_contentby @svlachakis in #11305 - Feature/subnet block building by @ak88 in #11304
- chore: Update Dockerfiles by @core-repository-dispatch-app [bot] in #11295
- perf(trie): skip TrieNode wrapping for extension children already unresolved to Hash256 by @asdacap in #11273
- fix: use pattern matching in TrieNode.Decoder (IDE0019) by @newmanifold in #11312
- Optimize caching & tests for precompiles by @alexb5dh in #11309
- Avoid pooled RLP aliasing in read-only trie clones by @benaadams in #11314
- HistoryPruner: self-bootstrap in TryPruneHistory instead of relying on SyncServer by @AnkushinDaniil in #11254
- Fix Claude review wip-label-removed trigger by @alexb5dh in #11320
- Add GetEffectiveInput override to ModExp precompiles by @LukaszRozmej in #11316
- fix: skip AuRa finalization startup walk on post-merge chains by @LukaszRozmej in #11306
eth_feeHistoryfixes by @svlachakis in #11322- eth_simulateV1 - MovePrecompileToAddress validation (-38022) by @svlachakis in #11326
- EIP-7981 — Access list token floor pricing by @newmanifold in #11311
- feat: add
StateCompositionplugin — real-time state metrics with incremental tracking by @AnkushinDaniil in #10995 eth_getRawTransactionByHashfix by @svlachakis in #11336- Bump up the version to 1.38.0-unstable by @core-repository-dispatch-app [bot] in #11330
- fix remove balance checks from eth_simulate_v1 by @DarkLord017 in #11332
- fix(network): ignore background task cancellation during session shut… by @mk0walsk in #11321
- eth estimategas & eth call does not support block overrides by @DarkLord017 in #11267
- style: enable nullable for Logging, Config, and leaf packages by @asdacap in #11119
- docs(jsonrpc): correct descriptions for proof_getTransactionByHash / proof_getTransactionReceipt by @smartprogrammer93 in #11344
- analyzers: NETH003 — file name must match the contained type name by @asdacap in #11337
- chore(pgo): update PGO profile by @github-actions [bot] in #11358
- Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #11357
- ci(hive): split engine-cancun and engine-api into separate runners by @newmanifold in #11365
- revert: do not skip balance validation in eth_simulateV1 by @DarkLord017 in #11368
- fixes by @svlachakis in #11343
- XDC Fix special transaction by @batrr in #11279
- chore: Support and migrate to Ubuntu 26.04 by @rubo in #11355
- Parallel transaction execution with BALs by @Marchhill in #9182
- fix(tracer): guard NativeCallTracer against empty call stack on CREATE transactions by @manusw7 in #11340
- Update OP Superchain chains by @core-repository-dispatch-app [bot] in #11364
- debug_traceCallMany: strip filler blocks from overrides result by @grubbyTimes in #11348
- More optimizations for precompile caching by @alexb5dh in #11373
- Allow
HistoryPrunerto be callable via decorator by @damian-orzechowski in #11098 - XDC Fix mutable V2 config spec by @batrr in #11327
- refactor: remove NodeData satellite protocol by @asdacap in #11359
- Refactor
TxPoolInfoProviderfor per-sender efficiency, allocation cleanup, and blob coverage by @svlachakis in #11363 - perf: eliminate redundant storage tree commits in FlatWorldStateScope by @kamilchodola in #11349
- feat(state): persist FlatLayout and refuse mismatched restarts by @asdacap in #11271
- test: bump 10s timeouts that flake on Flat DB CI by @LukaszRozmej in #11380
- Add opcode tracing plugin by @dmitriy-b in #10038
- test(evm): add RIPEMD-160 precompile vectors by @BZO95 in #11378
- test: raise NewPayloadBlockProcessingTimeout in merge tests by @LukaszRozmej in #11381
- refactor(init): convert ExitOnInvalidBlock and InitDatabase to DI by @asdacap in #11366
- Error codes and messages for Geth compatibility by @svlachakis in #11335
- fix(bal): skip prestate entries when checking account existence in BAL by @kamilchodola in #11389
- fix: remove broken backlog warning in AsyncFileWriteQueue by @kamilchodola in #11386
- fix(eth_simulateV1): return spec-compliant error codes and messages for fee cap and insufficient funds by @divi2806 in #11372
- Refine runner configs; activate discovery by @flcl42 in #11384
- fix(parallel): capture and rethrow worker exceptions in ParallelUnbalancedWork by @benaadams in #11398
- fix(test): treat ArrowGlacier and GrayGlacier as pre-merge by @Ahjan1999 in #11315
- perf(sync): allow multiple allocation slots per peer (lock-free rewrite) by @LukaszRozmej in #11361
- fix(eth_simulateV1): return spec-compliant message for intrinsic gas error (-38013) by @divi2806 in #11397
- fix(flat-state): wait for TrieWarmer in-flight jobs before disposing SnapshotBundle by @asdacap in #11394
- test: stabilize CI flakes (timeout bumps + log noise) by @LukaszRozmej in #11402
- sync: fix beacon headers re-downloaded after #10876 changed GetBlockHashOnMainOrBestDifficultyHash by @asdacap in #11339
- test: dispose ECIES buffers on assertion failure by @BZO95 in #11395
- feat(merge): add testing_commitBlockV1 to commit a block on the chain head by @AnkushinDaniil in #11385
- fix: isSyncing in hoodi by @deffrian in #11410
- Upgrade discv5 by @flcl42 in #11419
txpool_contentfix by @svlachakis in #11417- fix(prewarm): run speculative prewarming when BAL EIP is not active by @LukaszRozmej in #11432
- Fix snap lengths by @flcl42 in #11414
- Snapshot fixes by @svlachakis in #11401
- IDriveInfo DI improvements by @svlachakis in #11437
- chore: Remove NuGet package caching by @svlachakis in #11440
- extension methods for ITransactionProcessor by @DarkLord017 in #11393
- Feature/subnet seal validator by @ak88 in #11294
- XDC: Fix duplicate signature quorum bypass by @alexb5dh in #11379
- Optimise parallel execution: reduce worldstate, txprocessor allocations by @Marchhill in #11318
- debug_traceCallMany: extend timeout CTS lifetime to enumerator disposal by @LukaszRozmej in #11429
- fix: Revise dependency caching by @rubo in #11444
- style: enforce expression-bodied operators by @alexb5dh in #11460
- fix: misleading “100% Old Headers” and “Unable to find beacon header” logs at fresh sync start by @LukaszRozmej in #11449
- style: remove unused
usings in Benchmarks solution by @alexb5dh in #11463 - Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #11468
- XDC - Implement forensics processor by @cicr99 in #11342
- XDC Downgrade base protocol by @batrr in #11451
- style: enforce null-coalescing operator by @alexb5dh in #11461
- refactor: simplify snap+state sync dispatcher by @asdacap in #11102
- Fixes for RLP integers and bool decoding by @alexb5dh in #11479
- refactor: serialise FinalizeSync via captured per-round pivot by @asdacap in #11477
- Fix:
/healthendpoint reportsClUnavailableafter 5 minutes (1.37.x regression) by @svlachakis in #11474 - fix(statecomp): serialize empty histograms and run bootstrap on first new head by @AnkushinDaniil in #11382
- fix(fastsync): clean flat storage when account is null in
VerifyStorageUpdatedby @grubbyTimes in #11411 - TransactionForRpc improvements by @svlachakis in #11484
- Corrected error codes for eth simulate by @DarkLord017 in #11430
- Handle quick channel closing by @flcl42 in #11428
- test: bump TestBlockchain.DefaultTimeout 10s -> 30s by @LukaszRozmej in #11486
- perf: Embed Address bytes inline to remove secondary allocation by @asdacap in #11469
- fix gas calculation in access list by @DarkLord017 in #11390
- More RLP limits, sizes, and positions checks by @alexb5dh in #11488
- Enforce 256-block lookback on L1SLOAD and L1STATICCALL by @jmadibekov in #11275
- RPC:
admin_*peer-management endpoints improvements by @svlachakis in #11489 - Taiko Unzen hardfork implemented by @Gohnnyman in #11281
- chore: Update dependencies (#11512) by @damian-orzechowski in #11580
- eth/71 by @flcl42 in #10844
- Improve eth/70 checks by @flcl42 in #11456
- fix(eth/70): reject null receipt payloads by @BZO95 in #11615
- RLP tx decoding fixes by @alexb5dh in #11496
- Default Discovery to V4 by @benaadams in #11614
- Activate BAL only when needed by @flcl42 in #11795
- Fix shutdown race in SnapProvider PLINQ (closes #11806) by @stdevMac in #11807
- Add new default for gnosis and gnosis archive config by @stdevMac in #11269
- feat: add SkipMetricsTracking property to DbSettings by @cbermudez97 in #11515
- Make EraE tests visible and green by @flcl42 in #11727
- Alchemy - Code Fix by @svlachakis in #11714
New Contributors
- @kevaundray made their first contribution in #10794
- @kseniaeremekno made their first contribution in #10865
- @Giri-Aayush made their first contribution in #10856
- @Ocheretovich made their first contribution in #11029
- @akronim26 made their first contribution in #11288
- @mk0walsk made their first contribution in #11321
Full Changelog: https://github.com/NethermindEth/nethermind/compare/1.37.2…1.38.0
Build signatures
The packages are signed with the following OpenPGP key: AD12 7976 5093 C675 9CD8 A400 24A7 7461 6F1E 617E