| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| nethermind-2.1.0-b3e7e84c-macos-arm64.zip.asc | 2026-10-01 | 833 Bytes | |
| nethermind-2.1.0-b3e7e84c-macos-x64.zip.asc | 2026-10-01 | 833 Bytes | |
| nethermind-2.1.0-b3e7e84c-windows-x64.zip.asc | 2026-10-01 | 833 Bytes | |
| nethermind-2.1.0-b3e7e84c-linux-arm64.zip.asc | 2026-10-01 | 833 Bytes | |
| nethermind-2.1.0-b3e7e84c-linux-x64.zip.asc | 2026-10-01 | 833 Bytes | |
| nethermind-2.1.0-b3e7e84c-linux-arm64.zip | 2026-10-01 | 109.0 MB | |
| nethermind-2.1.0-b3e7e84c-linux-x64.zip | 2026-10-01 | 113.0 MB | |
| nethermind-2.1.0-b3e7e84c-macos-arm64.zip | 2026-10-01 | 104.7 MB | |
| nethermind-2.1.0-b3e7e84c-macos-x64.zip | 2026-10-01 | 109.8 MB | |
| nethermind-2.1.0-b3e7e84c-ref-assemblies.zip | 2026-10-01 | 1.6 MB | |
| nethermind-2.1.0-b3e7e84c-windows-x64.zip | 2026-10-01 | 105.9 MB | |
| README.md | 2026-10-01 | 73.5 kB | |
| v2.1.0 source code.tar.gz | 2026-10-01 | 19.7 MB | |
| v2.1.0 source code.zip | 2026-10-01 | 24.1 MB | |
| Totals: 14 Items | 587.8 MB | 0 | |
Release notes
359 merged pull requests since 2.0.0, from 29 contributors.
Upgrade every Sepolia node to 2.1.0 before the Glamsterdam fork on Tue, 06 Oct 2026, 13:53:36 UTC.
For most nodes this is an in-place upgrade with no resync. Read Breaking changes first if you run on the flat backend with a custom sync config, run poacore, run a Flashbots relay, parse Parity-style traces, or build plugins against Nethermind. **
Highlights
- Glamsterdam on Sepolia. Final EIP-8037 state-gas rules, the
TX_MAX_TOTAL_GAS_LIMITtransaction cap, and Engine API alignment for Amsterdam. (#13140, [#13484], [#13627], [#13554], [#13583], [#13586], [#13755]) - Faster EVM. The interpreter loop is replaced by tail-call chain dispatch, stack words stay in
UInt256limb layout, storage values stay asUInt256until they are persisted, and JUMPDEST analysis is rewritten. (#13128, [#13323], [#13420], [#13189], [#13810]) - Lower
engine_newPayloadlatency. The response goes out as soon as the block has executed and its roots match, before the commit.engine_forkchoiceUpdatedstill waits for that head's commit. GC pauses no longer stall payloads the way they did. (#13647, [#13711], [#13476], [#13334]) - Per-transaction changeset index for flat archives (opt-in). A single-transaction trace starts at its target transaction instead of replaying the whole block before it:
debug_traceTransactionwent from ~7.1 s to ~28 ms in the PR's measurements. Whole-block traces run their transactions in parallel (6–10× faster). Enable withFlatDb.HistoryTransactionIndexEnabled=true. (#13454, [#13426]) - BAL healing after snap sync (flat backend). On the flat backend, the state left by snap sync is healed by replaying block access lists instead of downloading trie nodes. It is on by default (
Sync.BalHealing=true); set it tofalseto go back to trie-node healing. snap/2 is advertised only when BAL healing can run. (#12945) - Dual-stack IPv4/IPv6 networking. RLPx, discv4 and discv5 listen on both families, ENRs advertise both, and there is a new
Network.ExternalIpV6override. (#12679, [#12982], [#12983], [#13731]) - Flat backend safety rails. A flat DB that RocksDB had to auto-repair is now re-synced instead of trusted. Unsafe flat activations are refused at start instead of silently corrupting or discarding state. (#13645, [#13644])
- Reclaim the patricia trie after a trie→flat conversion.
FlatDb.DropPruningTrieState=truedeletes the old trie store on the next start once the flat DB owns the state (~227 GB on mainnet). Off by default. (#13572) - RocksDB 11 through Nethermind's own bindings. The RocksDB package is replaced with
Nethermind.RocksDbBindings(RocksDB v10 → v11): source-generated P/Invoke with no marshalling stubs, and every native handle held in aSafeHandle. (#12853) - New EF bootnodes. The EF bootnode entries for mainnet, Sepolia and Hoodi are replaced with the new NodeOps fleet: five dual-stack nodes running both discv4 and discv5. (#13313)
- More zkVM targets. Stateless guests for SP1 and OpenVM ship alongside ZisK, and the ZisK toolchain moves to 1.3.0-alpha. (#13435, [#13769], [#13743])
Performance
- EVM dispatch and call frames: 3.8–4.5% faster block processing on the superblocks, realblocks and fusaka benchmark sets. (#13189)
- Storage values held as
UInt256: SLOAD 9–18%, SSTORE 42% and TSTORE ~50% faster, with no allocations on those paths. (#13420) - EVM stack in limb layout: 45–53% faster ADD, 16–36% faster SUB, and 9–18% faster shifts. (#13323)
- JUMPDEST analysis: worst-case analysis of 64 KiB initcode (a 200 MGas block of PUSH1/JUMPDEST patterns) drops from 0.4–3.2 s to 22–153 ms, depending on the SIMD tier. Initcode is analysed on first use. (#13810)
- Trie and storage-key hashing: 35–80% less time on transaction and receipt-root workloads. (#13552)
- Prewarming: a single fan-out while senders arrive gives superblocks processing a median −4.4%, P99 −27.9%, and +7.6% MGas/s. Prewarming and trie concurrency caps are removed, and parallel work is budgeted across the state root, blooms, the receipts root and prewarming (2–4% faster processing). (#13640, [#13388], [#13770])
- Carried caches: pre-block account and storage caches are carried across blocks. (#13100)
- Discovery traffic: on a warm-started Hoodi node, discovery traffic fell by 90% (152 KiB/s → 15 KiB/s), and the standalone bootnode uses ~44% less working set. (#13122)
- Snap sync: downloads are bounded and overlap with response processing. Whale-storage verification in
FlatTrieVerifieris parallelised. (#12623, [#12615]) - RPC:
eth_call,eth_estimateGasandeth_createAccessListno longer hash the transaction on every run (~0.2 ms on large calldata) (#13804). the stream interpreter is off by default because it lost on every measuredeth_callshape.eth_getFilterChangesis served from shared block logs. (#12999, [#13742]) - Intel hybrid CPUs: block processing is pinned to the performance cores by default (
Blocks.ProcessingCores). Nothing changes on other CPUs. (#13717)
⚠️ Breaking changes
If you run a node (config and startup)
- poacore / poacore_validator now ship
FlatDb.Enabled=falsebecause they use FastSync without SnapSync (#13644). A node on those configs that synced on 2.0.0 is on the flat backend, since flat is 2.0.0's default. On 2.1.0 it refuses to start (Refusing --FlatDb.Enabled=false on an existing flat DB). Either pass-FlatDb.Enabled=true, or delete theflat,flatHistoryandpersistedSnapshotdirectories and resync the state. -FlatDb.Enabled=falseon an existing flat DB is refused. In 2.0.0 the node silently discarded the state and resynced (#13428). It now stops with an error. (#13644)- Flat +
Sync.FastSync=true+Sync.SnapSync=falseis refused on a fresh node. Legacy tree sync on the flat backend can leave holes in the state. An already-synced node keeps running and logs a warning. The exception is importing from patricia (FlatDb.ImportFromPruningTrieState=trueon a datadir that holds patricia state). (#13644) - New
FlatDb.OnRepairsetting, defaultResync. If RocksDB auto-repairs the flat DB, the node now wipes the flat state and runs state sync again. Headers, bodies and receipts are kept. Archive nodes synced from genesis cannot snap-resync. SetFlatDb.OnRepair=Ignoreand plan a resync yourself if a repair is ever reported. (#13645) Receipt.MaxBlockDepthdefault raised back from 1,000 to 10,000, and the limit is now also enforced oneth_getFilterLogs. On nodes with the log index, only blocks the index cannot serve count towards the limit. A filter created byeth_newFilterover a wider range is still accepted, buteth_getFilterLogson it fails with32602. (#13131)- Removed config keys:
FlatDb.EnablePreimageRecording,Db.PreimageDbRocksDbOptions,Db.PreimageDbAdditionalRocksDbOptions(#13690),LogIndex.VerifyRpcResponse(#13131), andGrpc.Enabled,Grpc.Host,Grpc.Portalong with the gRPC endpoint (#13330). A JSON config that still sets them logsInvalid configuration settingsat startup. Remove them from configs, environment variables and command-line flags. Merge.CompactMemorydefault changed fromYestoNo. This removes GC compaction stalls fromengine_newPayload. Steady-state RSS may be somewhat higher. (#13476)Init.LogRulesno longer routes to Seq, andSeq.MinLevelis now the floor for the Seq target. To send a namespace's Trace output to Seq, add an explicitwriteTo="seq"rule inNLog.config. (#13419)- Dual-stack by default. With
Network.LocalIpunset, the P2P TCP and discovery UDP listeners now try to bind[::]on Linux and Windows, so the P2P port may now be reachable over IPv6. Check your firewall. macOS stays IPv4-only. SetNetwork.LocalIp=0.0.0.0to keep IPv4-only. (#12982) Pruning.FullPruningTrigger=VolumeFreeSpacewith a threshold too low to ever trigger now logs a startup warning. Automatic pruning was already not running in that case, so nothing new is broken. (#13485)
If you run a Flashbots relay
Flashbots.EnableValidationnow defaults totrue.flashbots_validateBuilderSubmissionV3checks the submitted block's state root, receipts root, gas used and logs bloom against its execution. Set it tofalseexplicitly to get the old behaviour. (#13452)
If you integrate over JSON-RPC / Engine API
eth_getHeaderByNumber("pending")returnsnull, matching go-ethereum and execution-apis#877. (#13082)proof_getTransactionByHash/proof_getTransactionReceiptreturnresult: nullfor a transaction they cannot serve, instead of a32000error.proof_getTransactionReceiptreturns32002when the block can no longer be retraced. (#13366)- Parity
vmTracestack pushes are hex quantities (0x0,0x1), not byte strings. Word operations now report their pushes. (#13750, [#13487]) - Other trace output changes. Empty trace selections are accepted.
trace_getkeeps lookup errors instead of replacing them.trace_filterreturns an error when the requested history is unavailable, and bufferedtrace_filternow applies a singleJsonRpc.Timeoutto the whole request. Deleted-account fields carry deletion markers.callTraceromitstoon a failed top-level CREATE. (#13667, [#13676], [#13677], [#13668], [#13078]) - EIP-3155 /
structLogstraces are corrected:gasUsedis the top-level execution-gas delta, refunds are cumulative, and opcode names follow Geth (0x44is reported asDIFFICULTY). (#12981) eth_estimateGasruns entirely against the requested block, the wayeth_calldoes, with a single deterministic search. Before, the first run used a synthetic next-block header. Estimates can differ from 2.0.0 within the error margin. Invalid-opcode and stack failures now return the standard error texts (for exampleinvalid opcode: INVALID,stack underflow (0 <=> 2)), andeth_calluses the same texts. (#13899)eth_callwithmaxPriorityFeePerGasabovemaxFeePerGas(after London) fails before any gas is bought, with the samemax priority fee per gas higher than max fee per gaserror execution returns.eth_createAccessListfills the fee cap as the priority fee plus twice the base fee when only a priority fee is given. (#13904)- Call requests with
gasPriceand a type-specific field (accessList,blobVersionedHashes,authorizationList) but no explicittypeare no longer decoded as legacy transactions.eth_call,eth_estimateGas,eth_createAccessListandeth_simulateV1results change for those requests. (#13450) eth_subscribe("logs")delivers logs for every block that becomes canonical, andremoved: truelogs for every block that leaves the canonical chain. A subscriber that falls more than 1,000 blocks behind (or 10,000 events for pending-transaction and peer subscriptions) is disconnected. (#13451)- No state for a block now returns
32002from every method, and guard-rail rejections (32002,32005,4444) are no longer logged at WARN. (#13643) - The SSZ-REST Engine API moves from
/engine/v2/...to/engine/v1/..., per execution-apis#793. The JSON-RPCengine_*surface is unchanged. (#13023) engine_newPayloadrejects a post-Shanghai payload with a null withdrawals list (MissingWithdrawals). (#13501)/data/eventsaccepts?events=. A client that only needs processing statistics should pass?events=processed. (#13334)
If you build against Nethermind (plugin / library authors)
These are source-breaking changes: rebuild your plugins against 2.1.0.
IBackgroundTaskScheduler.TryScheduleTasknow takes a request type that implementsIBackgroundTaskRequest<TReq>, and thesourcestring is gone. (#9956)ISyncPeerPool.Freeis removed.SyncPeerAllocationis nowIDisposable, so dispose it withusing. (#13094)- World-state scopes are opened with
TryBeginScope/TryBeginScopeAtTarget, which returnfalsefor an unavailable base instead of throwing. (#13522) - Storage APIs take
UInt256values instead of byte arrays.SlotValueis removed. (#13420) - EVM extension API: the gas-policy methods are
TryConsume*, theOutOfGasflag is removed, and theEvmStackconstructors require aCodeInfo. (#13189) ProcessingOptions.Traceis removed. UseTraceProcessingOptions.ReadOnlyReplay. (#13443)- Value-hash and protocol API changes in the txpool and networking code. (#13592)
- Nullable reference types are enabled in EVM, Trie, State and 7 foundation projects. (#13099, [#12155])
Consensus / protocol
- Glamsterdam (Amsterdam-gated, Sepolia from 10-06): the EIP-8037 spill is repaid after a child frame merges, and a restored spill is burnt on a top-level halt (#13140, [#13484]).
TX_MAX_TOTAL_GAS_LIMIT(2³² − 1) is enforced in the pool, in block validation and ineth_estimateGas(#13627). The unknown-original storage flag is kept across repeated writes (#13554). The EL no longer enforces slot ordering onengine_forkchoiceUpdatedV4(#13583). Orphaned headers are checked for a slot number (#13586).engine_getPayloadV5is rejected from Amsterdam on (#13755). EIP-7928 receipt event metadata is corrected (#13509), and AuRa keeps existing accounts in BAL preprocessing (#13047). - XDC: randomize-contract transactions now pay and burn gas (#13359), and sign-transaction receipts are encoded as legacy in the receipts trie. The receipts change fixes a consensus divergence on typed transactions (#13375).
Sync, database & state
- Recovery of missing contract code. (#9417)
- A fast-sync body could be dropped by the block cache, which left the receipts stage stuck. Fixed. Nodes already stuck on this need a bodies resync. (#13474)
- Flat persistence keeps going when the committed state is off the canonical chain.
MinReorgDepthstays reachable after folding to the finalized boundary. Flat state is retained across Engine-X reorgs. (#13591, [#13550], [#13402]) - A gather whose state was just persisted is retried instead of refused (fixes an occasional
32002 No state availableat the block being folded). (#13763) VerifyWithTrieno longer reports a false positive when an account is deleted that the trie still holds. (#13521)debug_resetHeadprunes flat snapshots that are unreachable from the new head. (#13524)- New
FlatDb.EnableCarryForwardCache(defaulttrue) to turn off the cross-head read cache. (#13752) - The history-walk ETA overflow no longer kills progress or discards a finished archive-proof walk (this bug is present in 2.0.0). The walk also reports the replay block of a storage range. (#13761, [#13791], [#13604], [#13754], [#13620])
SyncServerrange-broadcast serialised. Pooled lists from trie path recovery are disposed. (#12728, [#13266])ElapsedMicrosecondsoverflow on long-running stopwatches fixed. (#13416)- The history pruner is created before the block processor starts. (#13285)
- When a block wipes a contract's storage, the pre-block storage cache now invalidates only that contract. Before, it dropped the whole cache and logged an Info line each time, which on pre-Cancun history meant tens of thousands of lines an hour during a full sync from genesis. (#13850)
- The disk-space probe is skipped when the availability check is disabled. (#13456)
- Code from a reverted CREATE no longer reaches the code DB, and code-write counters roll back with it. (#13074, [#13432], [#13433])
JSON-RPC & tracing
- Malformed JSON-RPC batch items no longer abort the rest of the batch. (#12537)
eth_syncingreports the beacon tip as the highest block. (#12739)debug_traceTransactionByBlockAndIndexresolves block tags and hashes. (#13138)eth_feeHistoryreward percentiles use post-refund receipt gas. (#13563)eth_sendRawTransactionSyncno longer misses a receipt included in the next block. (#13736)- Simulation cache is reset when the real chain advances. (#13444)
- Single-transaction traces no longer replay the transactions after the target. (#13426)
- Discarded block traces in
debug_traceTransactionInBlockByIndexare disposed. (#13324) - EIP-7708 finalization logs are reported to tracers, and the previous transient value shows up in TSTORE traces. (#13567, [#13504])
- Account-creation results are preserved in traced and BAL-backed execution. (#13574)
eth_simulateV1child headers and payload attributes inherit the parent slot number (for AmsterdamSLOTNUM). (#13584, [#13585])
Engine API & block processing
engine_forkchoiceUpdatedwaits for the head's own commit, including when blocks are queued behind it, a second copy of the head is queued, or the commit is slow. (#13711)- Fixed a missed drain of the block processing queue. (#13749)
- Null required Cancun payload fields are rejected. (#13747)
- Custody columns are applied on
forkchoiceUpdatedV5. (#13109) - FOCIL:
engine_getInclusionListV1accepts the parent block hash. (#13097) - The block processor split (main-only
BlockchainProcessor, separateOneTimeChainProcessor), with a follow-up fix for transaction-index replay. (#13449, [#13629]) - Blocks are processed while sender recovery finishes. (#13597)
Networking & protocol
- A Hello whose node ID differs from the authenticated peer is rejected. (#13348)
- Outgoing receipts are capped under the devp2p message size limit. Trie-node and receipts requests have bounded lookups. The receipt log limit is derived from the block gas ceiling. (#13595, [#13596], [#13288])
- Connect workers no longer dial past
MaxActivePeers. (#13302) - Discovery event loop shutdown is bounded. (#13617)
- Startup external-IP resolution retries before it gives up. Persisted peers keep the endpoint that was actually dialled. (#13731)
Stability & hardening
- A malformed EthStats ping no longer terminates the node. (#13353)
- BN254 Add/Mul input length is checked in release builds. (#13208)
- Keccak output sizes the sponge cannot serve are rejected. (#13187)
- A stateless rejection no longer terminates DEBUG-enabled hosts. Execution requests are recovered correctly in stateless RPC inputs. (#13535, [#13346])
- The Docker images carry Nethermind's OCI labels (source, revision, version) instead of Ubuntu's. (#13694)
L2 & other chains
- XDC: nine XDC-specific
eth_*methods are added (block signers and finality, candidates, staking ROI, token stats) (#12950). XDPoS header fields are returned over JSON-RPC andnewHeads, and AuRa'sstepandsignatureare restored onnewHeads(#13055).eth_getAccountInforeturns the XDC shape (#13228). Transactions under the minimum gas price are rejected at pool admission (#13222).eth_gasPriceis floored at the pool minimum (#13633). SyncInfo QC and TC are verified independently (#13296). Unsupported eth versions are no longer advertised (#13018). State sync starts without waiting for headers back to genesis (#13609). - Optimism: after Jovian, payload attributes from op-node (8-byte
eip1559Paramsplus a separateminBaseFee) are accepted. Before, everyengine_forkchoiceUpdatedV3with attributes failed with38003, which broke block building behind op-node (#13813). Blocks Nethermind builds after Isthmus now keep the L2ToL1MessagePasser storage root aswithdrawalsRootinstead of the empty-list root, which op-geth and Nethermind itself reject (#13814). OP Superchain chain registry refreshed (#13043, [#13179], [#13430], [#13606]). - Taiko: Taiko mainnet (Alethia) uses the 0.01 gwei Shasta base-fee floor that taiko-geth and alethia-reth enforce. Before, Nethermind rejected current Alethia blocks with
Invalid baseFee(#13812). Unzen zk-gas metering for failed steps matches REVM, so canonical blocks that end a step out of gas are no longer rejected (#13824). - Plataberget: new archive config,
-config plataberget_archive. (#13073)
Glamsterdam fork on Sepolia
| Network | Epoch | Start slot | Unix | UTC |
|---|---|---|---|---|
| Sepolia | 353024 | 11296768 | 1791294816 | Tue, 06 Oct 2026, 13:53:36 UTC |
Your consensus client must support Glamsterdam as well. Check your CL's release notes for a Sepolia Glamsterdam release before the fork. Hoodi and mainnet dates are still TBD.
Build signatures
The packages are signed with the following OpenPGP key: AD12 7976 5093 C675 9CD8 A400 24A7 7461 6F1E 617E
What's Changed
- fix(xdc): stop advertising eth versions with no handler by @ak88 in https://github.com/NethermindEth/nethermind/pull/13018
- fix(txpool): harden fork-boundary revalidation by @benaadams in https://github.com/NethermindEth/nethermind/pull/13038
- fix(engine): align SSZ-REST surface with execution-apis#793 by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13023
- Log index backfill through sliced receipt islands by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13036
- Fix atomic blob transaction persistence after revalidation by @benaadams in https://github.com/NethermindEth/nethermind/pull/13045
- Use unbound generic types in nameof by @benaadams in https://github.com/NethermindEth/nethermind/pull/13056
- fix(xdc): emit XDPoS header fields over JSON-RPC by @ak88 in https://github.com/NethermindEth/nethermind/pull/13055
- feat(xdc): add the missing XDC eth-namespace endpoints by @ak88 in https://github.com/NethermindEth/nethermind/pull/12950
- Add a perf profiling mode to the benchmark workflow by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12952
- ci: reap stale expb overlay mounts on the arm benchmark runner by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12959
- chore: add svlachakis to CODEOWNERS for flat history and history pruning by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13072
- perf(zkevm): stop copying witness elements into the guest databases by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13076
- perf(zkevm): compile the guest's metric counters away by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13077
- fix: don't log expected shutdown cancellation/teardown as error/warning by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13046
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13043
- fix(rpc): omit
toon failed top-level CREATE frames in callTracer by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13078 - Drop reverted CREATE code before it reaches CodeDb by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13074
- perf(zkevm): cut guest hot paths — keccak wrapper, trie buffers, branch RLP by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13084
- test: deflake the peer session-conflict agreement test by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13087
- Reduce routine debug logging noise by @benaadams in https://github.com/NethermindEth/nethermind/pull/13085
- ci: fall back to the base EVM benchmark harness when the PR harness will not compile by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13088
- Support dual-stack ENR advertisement by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12679
- Add Plataberget archive config and CI support by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13073
- fix: skip corrupt light blob tx records instead of aborting pool restore by @Marchhill in https://github.com/NethermindEth/nethermind/pull/13032
- test: stop the deadlock guard from ending the blocked blob update by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13089
- chore: make Nethermind.Stateless.Executor lint clean by @Marchhill in https://github.com/NethermindEth/nethermind/pull/13031
- test(eip8037): regression for state-gas rollback baseline (EIP-8037) by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/13053
- test(merge): give engine payload builds a CI-safe improvement budget by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12533
- ci: chunk the wall-clock-critical test legs by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12378
- Enable nullables in 7 foundation projects by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12155
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13110
- perf(evm): widen the program counter to nint by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13079
- perf(zkevm): build with -Ot and drop single-thread locks from TrieNode by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13086
- fix(sync): stop a malformed header response from stalling fast-headers sync by @dipkakwani in https://github.com/NethermindEth/nethermind/pull/13019
- feat(sync): bal healing by @batrr in https://github.com/NethermindEth/nethermind/pull/12945
- fix(rpc): keep the module rented until a streamed result has been written by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13095
- perf(evm): disable the stream interpreter by default by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12999
- test(sync): let Retry absorb an E2E sync timeout by @Marchhill in https://github.com/NethermindEth/nethermind/pull/13105
- fix: enter world-state scope in EVM benchmark setup by @Marchhill in https://github.com/NethermindEth/nethermind/pull/12561
- fix: honour engine fixture errorCode instead of accepting any RPC error by @Marchhill in https://github.com/NethermindEth/nethermind/pull/12783
- fix(test): align TrieReassemblerTests with non-nullable IDb.GetAll by @batrr in https://github.com/NethermindEth/nethermind/pull/13113
- test: harden the block-improvement wait against empty payloads by @Marchhill in https://github.com/NethermindEth/nethermind/pull/12859
- fix(engine): apply custody columns on forkchoiceUpdatedV5 by @Marchhill in https://github.com/NethermindEth/nethermind/pull/13109
- fix(focil): accept the parent block hash on engine_getInclusionListV1 by @Marchhill in https://github.com/NethermindEth/nethermind/pull/13097
- perf(zkevm): presized witness stores, dense dispatch, cheaper word swaps, sha256f merkleization by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13090
- perf: carry pre-block account and storage caches across blocks by @benaadams in https://github.com/NethermindEth/nethermind/pull/13100
- chore: bump Nethermind.Numerics.Int256 to 1.7.0 by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13127
- refactor(deps): replace RocksDB package by @rubo in https://github.com/NethermindEth/nethermind/pull/12853
- perf(zkevm): jumpdest scan, nibble ops, static init, branch RLP, and constant loads by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13091
- fix: eth_maxPriorityFeePerGas returned a gas price by @MysticRyuujin in https://github.com/NethermindEth/nethermind/pull/13129
- fix(evm): repay EIP-8037 spill after child merge by @benaadams in https://github.com/NethermindEth/nethermind/pull/13140
- feat: Precompile cache partitioning & limiting by @alexb5dh in https://github.com/NethermindEth/nethermind/pull/12966
- perf: stop copying code out of the code db by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13160
- chore(tests): bump up zkEVM tests to v0.8.4 by @rubo in https://github.com/NethermindEth/nethermind/pull/13169
- ci: capture a dump when a test host hangs by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13149
- fix(rlp): break the Rlp/TxDecoder type initializer cycle by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13158
- perf(evm): replace interpreter loop with tail-call chain dispatch by @benaadams in https://github.com/NethermindEth/nethermind/pull/13128
- perf: compare storage slots through UInt256's own equality by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13150
- perf: OR and XOR byte spans a word at a time in the scalar fallback by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13145
- test(evm): a guest-build test project, covering the scalar jumpdest scan by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13146
- perf: skip whole RLP items with the cursor in a local by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13148
- perf(zkevm): leave the embedded chainspecs out of the guest build by @benaadams in https://github.com/NethermindEth/nethermind/pull/13181
- perf(zkevm): absorb keccak's first rate block by assignment by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13152
- test(evm): cover jumpdest scanning at the vector block boundaries by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13176
- feat(flat): explicit flat-history retention mode, with SinceBlock by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13162
- build(zkevm): drop the stack-trace table and symbol tables from the guest by @benaadams in https://github.com/NethermindEth/nethermind/pull/13182
- perf(zkevm): pack nibbles a word at a time by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13164
- perf(zkevm): key the witness node store on the node hash by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13159
- fix(sync): look up receipt bodies by number and hash by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13139
- perf(zkevm): compare 32-byte values as whole words by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13144
- perf(zkevm): reach Address.GetHashCode without a vtable dispatch by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13161
- perf(zkevm): zero only the keccak state the first absorb misses by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13170
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13180
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13179
- perf(zkevm): expand nibbles from a whole word by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13165
- fix(crypto): reject Keccak output sizes the sponge cannot serve by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13187
- perf(zkevm): fold the guest's fork rules and threading out of the image by @benaadams in https://github.com/NethermindEth/nethermind/pull/13188
- test: drive request-sizer latency from a ManualTimeProvider by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13192
- Add background scheduler stats by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/9956
- perf: encode a branch node in one pass by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13167
- perf(evm): answer precompile membership from a bitmask on the spec by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13183
- Enable nullables in EVM, Trie, and State by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13099
- test: wait for the pre-fork revalidation before resubmitting the evicted tx by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13207
- refactor(test): replace stacked [TestCase] attributes with [Values] by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13190
- test(state): pin that a contract destroyed in its creation block leaves no storage behind by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13209
- fix(jsonrpc): do not format the request when logging an OutOfMemoryException by @benaadams in https://github.com/NethermindEth/nethermind/pull/13225
- fix(flatdb): release compacted snapshots after base conversion by @benaadams in https://github.com/NethermindEth/nethermind/pull/13223
- test(merge): deflake the FCU ancestry-walk assertion by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13234
- fix(rpc): reject a missing-argument marker on a required parameter by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13235
- Reduce EVM opcode dispatch and call-frame overhead by @benaadams in https://github.com/NethermindEth/nethermind/pull/13189
- fix(engine): build each getPayload response from a single block candidate by @dipkakwani in https://github.com/NethermindEth/nethermind/pull/13093
- Dispose sync peer allocations with using by @asdacap in https://github.com/NethermindEth/nethermind/pull/13094
- Reduce Bootnode memory and Nethermind discovery traffic by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13122
- chore(db): demote RocksDbMem log from info to debug by @asdacap in https://github.com/NethermindEth/nethermind/pull/13219
- Fix BAL fetcher after peer allocation disposal migration by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13264
- Use independent version line for Bootnode releases by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13103
- perf: inline the small RlpReader members and drop dead hash compares by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13215
- perf(evm): name opcode handlers for profiler attribution by @benaadams in https://github.com/NethermindEth/nethermind/pull/13253
- fix(flat): prevent warmer misses escaping through shared trie children by @benaadams in https://github.com/NethermindEth/nethermind/pull/13272
- perf: cut the zkVM guest jumpdest scan to four instructions per byte by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13216
- perf(zkevm): install the hash seed from the payload root by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13166
- Build a sparse block bodies response body's transaction trie once by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13268
- Reserve one receipt slot per parallel worker tracer by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13267
- Dispose the pooled lists that trie path recovery abandons by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13266
- fix(rpc): stop unauthenticated input causing unhandled exceptions, empty 500s, leaked traces and WARN floods (#13194, [#13195], [#13197], [#13198], [#13156]) by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13251
- feat(sync): make a stalled snap sync visible at default log level (#13248) by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13257
- test(jsonrpc): make Nethermind.JsonRpc.Test safe to run twice at once (#13204, [#13249]) by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13256
- fix(rpc): drop the chainspec-misconfiguration false positive, and say when JSON-RPC opens (#13202, [#13203]) by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13255
- Add recovery of missing code by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/9417
- fix(trie): record inlined nodes as ambiguous when tracking past keys by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13274
- perf(zkevm): keep resolved children resolved in the guest by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13294
- perf(zkevm): mix hash keys 32 bits at a time by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13293
- perf(zkevm): drop the transaction-hash lock in the guest by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13297
- chore(deps): update Nethermind.Crypto.SecP256k1 package by @rubo in https://github.com/NethermindEth/nethermind/pull/13289
- fix(flatdb): prune finalized forks from persisted snapshots by @benaadams in https://github.com/NethermindEth/nethermind/pull/13230
- perf(zkevm): swap 64 bits at a time with masks the preinitialiser cannot fold by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13291
- fix: dispose the improvement context that replaces a retrieved payload by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13206
- perf(zkevm): drop the software clz and the witness covariance checks by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13295
- fix(pruning): measure the full-pruning snapshot trigger from the pruning boundary (#13199) by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13308
- fix(sync): drain in-flight sync dispatch before database teardown (#13154) by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13309
- fix(snap): recover a stalled large-storage account and rate-limit the forced pivot (#13155, [#13200]) by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13310
- perf: memoize keccak on the zkVM guest and route the bloom through it by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13217
- refactor(rpc): decompose JsonRpcProcessor into decoder, batch source and diagnostics by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13290
- perf: thread the RLP cursor through decode chains in registers by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13173
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13329
- chore(deps): update .NET packages by @rubo in https://github.com/NethermindEth/nethermind/pull/13322
- Remove obsolete gRPC and trie benchmark projects by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13330
- test: fix flaky WaitForImprovedBlock_with_minTransactions payload retrieval by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13326
- test: fix flaky prune_on_disk_multiple_times wait budget by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13327
- perf: remove unused code override hash by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13332
- perf: reuse witness block tree during stateless execution by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13333
- perf: avoid scratch allocations in SSZ merkleization by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13331
- chore(deps): bump Nethermind.Numerics.Int256 to 1.8.0 by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13345
- perf(state): skip clearing discarded contract storage maps by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13335
- Replace EF bootnodes with NodeOps fleet by @MysticRyuujin in https://github.com/NethermindEth/nethermind/pull/13313
- fix(network): stop the connect workers dialling past MaxActivePeers by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13302
- Exercise block downloader tests with flat and trie state backends by @asdacap in https://github.com/NethermindEth/nethermind/pull/13328
- perf(evm): trim initialized memory checks by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13358
- test: let the cancelled improvement disposal land after getPayload by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13343
- fix(aura): preserve existing accounts in BAL preprocessing by @hudem1 in https://github.com/NethermindEth/nethermind/pull/13047
- Enable flat DB by default; flip CI backend coverage by @asdacap in https://github.com/NethermindEth/nethermind/pull/11931
- Don't treat configured FinalTotalDifficulty as TTD reached by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12555
- Correct EIP-3155 state-test traces by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12981
- Reject undersized ECIES ciphertexts with controlled exceptions by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13135
- Enable dual-stack RLPx and discv4/discv5 listeners by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12982
- Fix PoSSwitcher genesis nullability build error by @benaadams in https://github.com/NethermindEth/nethermind/pull/13367
- ci: split the Docker restore into its own cacheable layer by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12393
- perf: skip unobserved logs during transaction prewarming by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13349
- test(sync): fit the BAL sync budget inside the CI hang dump timeout by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13344
- ci: add a manual workflow for the frame-transaction measurement harnesses by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12738
- feat(flat-history): historical eth_getProof from archive commitments by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13098
- perf(trie): seek and patch full branches at fixed offsets by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13336
- Commit storage directly from surviving journal heads by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13340
- perf: compute receipt roots without retaining a mutable trie by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13351
- perf(core): specialize 64-byte Keccak cache hits by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13368
- perf(evm): hold stack words in UInt256 limb layout, reverse only at the byte boundaries by @maximmenshikov in https://github.com/NethermindEth/nethermind/pull/13323
- Fix execution request recovery in stateless RPC inputs by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13346
- test(sync): preserve staged BAL timeout diagnostics by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13342
- Await context disposal in the non-empty getPayload test by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13357
- perf: drop redundant SSZ merkleization scratch clears by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13352
- perf(zk): index witness nodes in bounded hash buckets by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13337
- Guard rejected and abandoned task disposal failures by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13356
- perf: stream transaction roots through the indexed trie calculator by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13354
- perf(zk): analyze jump destinations incrementally by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13338
- fix(build): stop the RPC JSON context target from deadlocking solution builds by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13341
- fix(ethstats): stop a malformed ping timestamp from terminating the node by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13353
- ci: send GCP machine types to the smoke-test dispatches by @cbermudez97 in https://github.com/NethermindEth/nethermind/pull/13014
- fix(rlp): derive the receipt log limit from the block gas ceiling by @Marchhill in https://github.com/NethermindEth/nethermind/pull/13288
- test(merge): pin engine_getBlobsV4 SSZ middleware parity invariants by @hudem1 in https://github.com/NethermindEth/nethermind/pull/13111
- fix(precompiles): check BN254 Add/Mul input length in release builds by @hudem1 in https://github.com/NethermindEth/nethermind/pull/13208
- feat(xdc): serve eth_getAccountInfo in the shape XDC reports it by @ak88 in https://github.com/NethermindEth/nethermind/pull/13228
- perf: skip unobserved EVM logs based on tracer requirements by @benaadams in https://github.com/NethermindEth/nethermind/pull/13372
- Add a LiteRlpReader for explicit cursor decoding by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13303
- perf: remove fixed block prewarming and trie concurrency caps by @benaadams in https://github.com/NethermindEth/nethermind/pull/13388
- perf(evm): trim cached jump validation by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13369
- Reduce allocations in parallel BAL read validation by @benaadams in https://github.com/NethermindEth/nethermind/pull/13315
- chore(deps): bump Nethermind.Numerics.Int256 to 1.9.0 by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13389
- perf: reduce the MODEXP base before exponentiating by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13396
- ci: disable Ethereum fixture coverage and remove legacy VM sharding by @benaadams in https://github.com/NethermindEth/nethermind/pull/13254
- fix(sync): serialise SyncServer range-broadcast CTS swap by @0xDevNinja in https://github.com/NethermindEth/nethermind/pull/12728
- fix(rpc): dispose the block traces debug_traceTransactionInBlockByIndex discards by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13324
- test: wait for the tx-carrying improvement in the V6 BAL test by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13403
- perf(bal): bypass journaling for immutable parent reads by @benaadams in https://github.com/NethermindEth/nethermind/pull/13312
- Fix malformed JSON-RPC batch items without aborting subsequent requests by @smallyunet in https://github.com/NethermindEth/nethermind/pull/12537
- perf(bal): cache account context and simplify composite reads by @benaadams in https://github.com/NethermindEth/nethermind/pull/13311
- test: keep the filter-expiry fixture from dropping other tests' filters by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13407
- test: bound the event-loop shutdown wait in the discovery tests by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13404
- perf(tracer): Reduce native callTracer execution overhead by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13406
- Retain FlatDB state for Hive Engine-X reorgs by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13402
- fix(network): reject Hello whose node ID differs from the authenticated peer by @hudem1 in https://github.com/NethermindEth/nethermind/pull/13348
- ci: point the sync-validation Slack alert at the webhook secret that exists by @cbermudez97 in https://github.com/NethermindEth/nethermind/pull/13314
- test(network): pin that an unauthenticated RLPx frame is never forwarded by @hudem1 in https://github.com/NethermindEth/nethermind/pull/13347
- Avoid unused gas-price rejection messages during transaction selection by @benaadams in https://github.com/NethermindEth/nethermind/pull/13425
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13430
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13429
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13427
- perf: stop allocating a copy of the input for the ID precompile by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13395
- perf(evm): bypass jump-analysis event waits when the bitmap is ready by @benaadams in https://github.com/NethermindEth/nethermind/pull/13431
- perf(state): hold storage values as UInt256, encode only at persistence boundaries by @benaadams in https://github.com/NethermindEth/nethermind/pull/13420
- Remove ProcessingOptions.ForceSameBlock by @asdacap in https://github.com/NethermindEth/nethermind/pull/13440
- Stabilize log finder and filter cleanup tests by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13437
- Avoid replaying later transactions for single-transaction traces by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13426
- test: add storage-, call- and create-shaped block scenarios to BlockProcessingBenchmark by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13421
- perf: stop allocating a word per transient storage write by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13413
- Journal and count a staged code insert exactly once by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13432
- perf: resolve a BAL storage access in one probe by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13408
- Remove ProcessingOptions.Trace by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13443
- fix: build BlockProcessingBenchmark against UInt256 storage values by @asdacap in https://github.com/NethermindEth/nethermind/pull/13446
- perf: stop BLOCKHASH reading state and allocating on every call by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13397
- perf: memoize the per-contract read and the SSTORE originals probe by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13422
- perf: memoize the warm-access check, settle EXTCODEHASH with one account read by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13414
- refactor(witness): run witness-generating execution on the layout-native world state by @asdacap in https://github.com/NethermindEth/nethermind/pull/13453
- ci: make the frame-tx measurement workflow report what it measured by @manusw7 in https://github.com/NethermindEth/nethermind/pull/13042
- Fix simulation cache reset after the real chain advances by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13444
- feat(xdc): reject transactions under the minimum gas price on pool admission by @ak88 in https://github.com/NethermindEth/nethermind/pull/13222
- Reduce Keccak tail work and guest mixer instructions by @benaadams in https://github.com/NethermindEth/nethermind/pull/13438
- Roll back the code-write counters with the reverted code by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13433
- perf: skip the write-journal probe for contracts that have not written by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13405
- perf(hive): cut per-container startup cost by @Marchhill in https://github.com/NethermindEth/nethermind/pull/13445
- fix(core): stop ElapsedMicroseconds overflowing on long-running stopwatches by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13416
- fix(logging): stop Init.LogRules bypassing Seq.MinLevel by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13419
- Return null from eth_getHeaderByNumber for the pending tag by @MysticRyuujin in https://github.com/NethermindEth/nethermind/pull/13082
- fix(xdc): verify a SyncInfo's QC and TC independently, and relay it by @ak88 in https://github.com/NethermindEth/nethermind/pull/13296
- ci(expb): report newPayload request time and block processing side by side by @benaadams in https://github.com/NethermindEth/nethermind/pull/13477
- Right-size the processing-branch list rental by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13481
- test: measure the transient-write allocation over several windows by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13482
- Cut per-block setup cost of the EIP-4788 system call by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13480
- Parallelize the receipts root at a receipt-specific item count by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13479
- docs: allow LINQ in tests and benchmark setup by @benaadams in https://github.com/NethermindEth/nethermind/pull/13503
- ci(rpc-bench): survive a sparse-checkout left behind on the shared runner by @cbermudez97 in https://github.com/NethermindEth/nethermind/pull/13468
- fix(rpc): resolve block tags in debug_traceTransactionByBlockAndIndex by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13138
- fix(nethtest): report a state-test fixture that fails to load by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13275
- fix(pruning): skip the disk space probe when the availability check is disabled by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13456
- Reduce newPayload latency from GC coordination by @benaadams in https://github.com/NethermindEth/nethermind/pull/13476
- ci: bound and spread the GCP sync-runner fleet, and put master validation back on Spot by @cbermudez97 in https://github.com/NethermindEth/nethermind/pull/13362
- perf(tracing): bound JavaScript tracer engines per transaction and add a native noopTracer by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13464
- perf: cut the large-object churn that stalls newPayload behind background GCs by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13334
- Hint the request-queue contracts to the prewarmer by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13502
- test: deflake nonce manager account isolation by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13512
- Forbid zero-nibble extension nodes by @alexb5dh in https://github.com/NethermindEth/nethermind/pull/13519
- Adjust eth_getLogs limits, drop log-index verification by @alexb5dh in https://github.com/NethermindEth/nethermind/pull/13131
- test: isolate discovery E2E from peer connections by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13514
- Skip re-hashing headers whose hash the caller already verified by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13501
- fix(sync): stop a fast-sync body being lost to the block cache by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13474
- ci(rpc-bench): replay the private eth_call corpus as debug_traceCall or trace_call by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13457
- test: allow more time for snap sync by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13525
- test: allow more time for BAL sync by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13527
- test: increase Merge.Plugin wait timeout by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13526
- Fix Kademlia simulation's expected nearest-neighbour set by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13536
- Schedule Sepolia Amsterdam fork by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13455
- Report vmTrace pushes for word operations by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13487
- ci: fetch frame-tx Groth16 artifacts from a frame-verify-gas release by @manusw7 in https://github.com/NethermindEth/nethermind/pull/13465
- Support other clients in Fusaka EXPB benchmarks by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13436
- EIP-161 violations fix by @alexb5dh in https://github.com/NethermindEth/nethermind/pull/13520
- Slim down OneTimeChainProcessor by @asdacap in https://github.com/NethermindEth/nethermind/pull/13441
- fix(flat): stop flushing the unfinalized tail to RocksDB on shutdown by @asdacap in https://github.com/NethermindEth/nethermind/pull/13523
- chore(deps): update MCL package by @rubo in https://github.com/NethermindEth/nethermind/pull/13548
- Default all sync test networks to Spot by @cbermudez97 in https://github.com/NethermindEth/nethermind/pull/13556
- fix(flatdb): keep MinReorgDepth reachable after folding to the finalized boundary by @batrr in https://github.com/NethermindEth/nethermind/pull/13550
- Skip unrelated storage scans when clearing untouched accounts by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13531
- Avoid copying execution payload transaction buffers during decoding by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13532
- Remove scratch allocations from generated SSZ container hashing by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13533
- Fix stateless rejection terminating DEBUG-enabled hosts by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13535
- feat(flat): prune snapshots unreachable from the head on debug_resetHead by @asdacap in https://github.com/NethermindEth/nethermind/pull/13524
- fix(xdc): charge and burn gas for randomize-contract transactions by @ak88 in https://github.com/NethermindEth/nethermind/pull/13359
- fix(xdc): encode sign-transaction receipts as legacy in the receipts trie by @ak88 in https://github.com/NethermindEth/nethermind/pull/13375
- Use system calls for EIP-8037 beacon roots by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13483
- fix(eth72): announce the blob-elided network size, not the consensus size by @qu0b in https://github.com/NethermindEth/nethermind/pull/13049
- ci(frame-verify-gas): drop the gh CLI dependency from fetch-artifacts.sh by @manusw7 in https://github.com/NethermindEth/nethermind/pull/13545
- fix(xdc): run the patricia state backend so node data can be served by @ak88 in https://github.com/NethermindEth/nethermind/pull/13478
- Report previous transient value in TSTORE traces by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13504
- Burn restored spill on top-level halt by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13484
- chore(deps): update GMP package by @rubo in https://github.com/NethermindEth/nethermind/pull/13562
- Avoid recomputing reconstructed body roots in stateless execution by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13534
- Log index: carry the sync direction instead of reading it back from the block numbers by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13565
- ci: add automatic AI code review through LiteLLM by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13564
- Support SP1 and OpenVM by @maximmenshikov in https://github.com/NethermindEth/nethermind/pull/13435
- fix: keep AI review configuration out of public reports by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13579
- ci: allow collaborators to request OCR reviews in PR comments by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13580
- Keep flat persistence going when the committed state is off this chain by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13591
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13606
- Fix archive proof retrofit resume coverage by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13604
- fix(eth): cap outgoing receipts under the devp2p message size limit by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13595
- perf: warm withdrawal recipients with the address warmer by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13599
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13607
- Keep the unknown-original storage flag across repeated writes by @asdacap in https://github.com/NethermindEth/nethermind/pull/13554
- fix(flat): VerifyWithTrie false positive when deleting an account the trie still holds by @asdacap in https://github.com/NethermindEth/nethermind/pull/13521
- fix: bound the lookups a trie-node or receipts request performs by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13596
- Reduce txpool and networking allocations by @benaadams in https://github.com/NethermindEth/nethermind/pull/13592
- Fix flaky test caused by shared transaction pool interference by @benaadams in https://github.com/NethermindEth/nethermind/pull/13616
- Bump up the version to 2.1.0-unstable by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13615
- ci: align MTP test extension versions and dump a test host that dies mid-run by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13613
- Make BlockchainProcessor main-only and split OneTimeChainProcessor by @asdacap in https://github.com/NethermindEth/nethermind/pull/13449
- Remove EL slot ordering enforcement from engine_forkchoiceUpdatedV4 by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13583
- fix: bound the discovery event loop shutdown by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13617
- Per-transaction changeset index for archive traces (opt-in) by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13454
- Report the flat history watermark metric on the SeedPivot path by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13620
- Fix transaction index replay after main-only processor split by @benaadams in https://github.com/NethermindEth/nethermind/pull/13629
- Remove NeedToWaitForHeader from the XDC configs by @ak88 in https://github.com/NethermindEth/nethermind/pull/13609
- perf: process blocks while sender recovery finishes by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13597
- chore(zkevm): refactor guests organization by @rubo in https://github.com/NethermindEth/nethermind/pull/13582
- Warm the system-contract slots between blocks for the predicted block by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13608
- perf(prewarm): one fan-out for transaction warmup while senders arrive by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13640
- ci: report MGas/s for the request and the overhead window, not just processing by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13637
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13651
- chore(agents): trim AGENTS.md and move benchmark guidance to skills by @rubo in https://github.com/NethermindEth/nethermind/pull/13646
- ci: fail the expb run if the yq download does not produce yq by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13631
- ci: restore the run block indentation the yq check broke by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13675
- fix(rlp): bound blob wrapper cell-mask peek to transaction by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13614
- Validate slot number on orphaned headers by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13586
- Use post-refund receipt gas for feeHistory reward percentiles by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13563
- Isolate VM test fork activation between tests by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13555
- Fix a race in the late-sender wave prewarm test by @benaadams in https://github.com/NethermindEth/nethermind/pull/13679
- Floor XDC eth_gasPrice at the minimum the pool enforces by @ak88 in https://github.com/NethermindEth/nethermind/pull/13633
- chore: move nethtest to the scripts dir by @rubo in https://github.com/NethermindEth/nethermind/pull/13692
- Reduce trie and storage-key hashing overhead by @benaadams in https://github.com/NethermindEth/nethermind/pull/13552
- Pass parent slot number through simulated payload attributes by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13585
- Inherit parent slot number in simulated child headers by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13584
- perf(engine): answer newPayload once the block is executed, before it is committed by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13647
- chore: remove funding.json by @rubo in https://github.com/NethermindEth/nethermind/pull/13696
- chore(deps): update DotNetty package by @rubo in https://github.com/NethermindEth/nethermind/pull/13687
- Correct EIP-7928 receipt event metadata by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13509
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13702
- Fix missing stateless dependencies in the Visual Studio solution by @benaadams in https://github.com/NethermindEth/nethermind/pull/13594
- Document zkVM guest execution and GPU proving prerequisites by @benaadams in https://github.com/NethermindEth/nethermind/pull/13589
- Carry slot number through XDC header copies by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13587
- Vectorize nibble expand and pack by @benaadams in https://github.com/NethermindEth/nethermind/pull/13704
- Vectorise hex encoding for every ISA tier, including arm64 by @benaadams in https://github.com/NethermindEth/nethermind/pull/13726
- Pin EIP-7708 receipt ordering, bloom, and rollback behavior with tests by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13573
- Enforce the EIP-8037 TX_MAX_TOTAL_GAS_LIMIT transaction cap by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13627
- Complete dual-stack peer connectivity by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12983
- fix(flashbots): validate the processed block by default in flashbots_validateBuilderSubmissionV3 by @kriss39 in https://github.com/NethermindEth/nethermind/pull/13452
- fix(pruning): warn when the free-space pruning threshold is too low to ever run by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13485
- fix(rpc): keep accessList/blobVersionedHashes/authorizationList when gasPrice is set by @kriss39 in https://github.com/NethermindEth/nethermind/pull/13450
- Vectorise JSON hex decoding and the byte hex writer by @benaadams in https://github.com/NethermindEth/nethermind/pull/13733
- Update EEST fixtures to tests@v21.0.0 by @benaadams in https://github.com/NethermindEth/nethermind/pull/13730
- fix(engine): forkchoiceUpdated waits for the head's own commit - behind queued blocks, a second copy, or a slow commit by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13711
- return null from the proof methods for a transaction they cannot serve by @Matgothmog in https://github.com/NethermindEth/nethermind/pull/13366
- perf(state): parallelize whale storage verification and enable snapshot readahead in FlatTrieVerifier by @stdevMac in https://github.com/NethermindEth/nethermind/pull/12615
- perf(sync): bound and overlap snap downloads with response processing by @stdevMac in https://github.com/NethermindEth/nethermind/pull/12623
- fix(rpc): demote guard-rail WARNs and map no-state to -32002 by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13643
- fix(flat): refuse unsafe Flat activations and warn when full prune is ignored by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13644
- ZiskGuest: Bump ZisK toolchain to 1.3.0-alpha by @maximmenshikov in https://github.com/NethermindEth/nethermind/pull/13743
- Add FlatDb.DropPruningTrieState to reclaim the patricia trie after conversion by @marcindsobczak in https://github.com/NethermindEth/nethermind/pull/13572
- fix(rpc): include beacon tip in eth_syncing highest block by @nishant-uxs in https://github.com/NethermindEth/nethermind/pull/12739
- Remove the flat DB preimage recording feature by @asdacap in https://github.com/NethermindEth/nethermind/pull/13690
- perf: optionally pin block processing to the performance cores of an Intel hybrid CPU by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13717
- ci: rebalance blockTest chunk counts to cut wall-clock by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12380
- docs(agents): require AI agents to declare harness and model on GitHub by @asdacap in https://github.com/NethermindEth/nethermind/pull/13605
- fix(engine): reject null required Cancun payload fields by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13747
- fix: avoid missing block processing queue drain by @benaadams in https://github.com/NethermindEth/nethermind/pull/13749
- fix(rpc): wake eth_sendRawTransactionSync after the tx index is published by @marcindsobczak in https://github.com/NethermindEth/nethermind/pull/13736
- Defer eligible RocksDB cleanup I/O to background workers by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13261
- Make EXPB regression campaigns faster and preserve complete run evidence by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13434
- Select flat Account index search automatically by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13260
- perf: skip ineffective thread priority syscalls on Linux by @benaadams in https://github.com/NethermindEth/nethermind/pull/13753
- fix(flat): verify warmer reads in flat adapters (#12951 follow-up) by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12980
- feat(flat): add FlatDb.EnableCarryForwardCache by @asdacap in https://github.com/NethermindEth/nethermind/pull/13752
- Fix flaky RetryCache overflow allocation test counting background GC noise by @benaadams in https://github.com/NethermindEth/nethermind/pull/13745
- fix(flat): resync after RocksDB auto-repair by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13645
- fix(archive-proofs): deep storage epoch snapshots only when epochs are dropped by @svlachakis in https://github.com/NethermindEth/nethermind/pull/13754
- Precreate RocksDB WAL files asynchronously by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13262
- Retry startup IP resolution and keep dialed endpoints when persisting peers by @benaadams in https://github.com/NethermindEth/nethermind/pull/13731
- Fix flaky DirtyNodeHasher rehash test reading a process-wide counter by @benaadams in https://github.com/NethermindEth/nethermind/pull/13738
- Fix flaky engine tests building a child on a parent whose state is not yet committed by @benaadams in https://github.com/NethermindEth/nethermind/pull/13740
- perf(flat): refresh the carry-forward account cache on commit instead of evicting by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12960
- Disable EXPB CPU quota while preserving affinity by @benaadams in https://github.com/NethermindEth/nethermind/pull/13593
- Close the HasState/BeginScope gap and add target-aware world-state scopes by @asdacap in https://github.com/NethermindEth/nethermind/pull/13522
- fix(flat-history): prevent history walk ETA overflow from killing progress and discarding the walk by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13761
- Update GitHub Actions to Node 24 versions by @benaadams in https://github.com/NethermindEth/nethermind/pull/13757
- Dispose engine test chains and fail tests that leak one by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13767
- Report EIP-7708 finalization logs to tracers by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13567
- perf(rpc): serve eth_getFilterChanges from shared block and pending logs by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13742
- Preserve account creation results in traced world state by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13574
- Reject engine_getPayloadV5 at Amsterdam by @arunimshukla in https://github.com/NethermindEth/nethermind/pull/13755
- ci(zkevm): release SP1 and OpenVM guests alongside ZisK by @rubo in https://github.com/NethermindEth/nethermind/pull/13769
- fix(rpc): accept empty Parity trace selections by @banteg in https://github.com/NethermindEth/nethermind/pull/13667
- fix(rpc): reject trace filters with unavailable history by @banteg in https://github.com/NethermindEth/nethermind/pull/13677
- fix(flat): retry a gather whose state was just persisted instead of refusing it by @marcindsobczak in https://github.com/NethermindEth/nethermind/pull/13763
- fix(rpc): publish eth_subscribe logs for every canonicalised or removed block by @kriss39 in https://github.com/NethermindEth/nethermind/pull/13451
- ci(expb): per-dispatch CPU quota and cpuset overrides with host-cgroup readout by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/13547
- fix: serialize Parity VM stack values as quantities by @banteg in https://github.com/NethermindEth/nethermind/pull/13750
- fix(tracing): serialize deleted account fields with deletion markers by @banteg in https://github.com/NethermindEth/nethermind/pull/13668
- Update Directory.Build.props for 2.1.0 by @stdevMac in https://github.com/NethermindEth/nethermind/pull/14163
New Contributors
- @smallyunet made their first contribution in https://github.com/NethermindEth/nethermind/pull/12537
- @kriss39 made their first contribution in https://github.com/NethermindEth/nethermind/pull/13452
- @nishant-uxs made their first contribution in https://github.com/NethermindEth/nethermind/pull/12739
- @arunimshukla made their first contribution in https://github.com/NethermindEth/nethermind/pull/13755
Full Changelog: https://github.com/NethermindEth/nethermind/compare/2.0.0...2.1.0