Release notes
623 changes since 1.39.3 from 39 contributors.
Nethermind 2.0.0 is a hardened, faster, archive-capable execution client, built for Ethereum, its L2s, and beyond.
New Archive Layout
Running an archive node used to mean a heavyweight, separate database and a lot of disk. Nethermind 2.0.0 puts archive-grade history on the flat state database (#12943), and that changes the trade-offs:
- No separate archive database, no new protocol. History is built up by ordinary syncing — the same node, the same peers. You don't run a different node type or transfer data between nodes.
- Header-verifiable. The state root at any retained height can be reconstructed from the flat rows and checked against that block's header. Historical answers are provable, not best-effort.
- You choose how much history you pay for. Three shapes, one feature:
- Full archive — retain every historical state.
- Rolling window (
FlatDb.HistoryRetentionBlocks) — answer historical queries for the last N blocks and reclaim older state. - Per-address (
FlatDb.HistorySliceAddresses=…) — retain deep history only for the contracts you query while keeping the general window small.
- Correct by design at the edges. Below the retained floor, reads fail closed with an explicit “not retained” response instead of silently answering from live state.
- A competitive footprint. A full Ethereum mainnet archive is approximately 2.1 TB today, substantially smaller than legacy trie/hash-based archives.
The upshot: teams that previously ran a full archive “just in case” can instead use a bounded window—or retain deep history only for selected contracts—to reduce disk and operational overhead without giving up the historical answers they need.
How much disk to expect now
Measured on live nodes, mainnet at ~block 25.88M (2026-09-01). Numbers grow slowly as the chain grows — treat them as "today's floor," not a fixed ceiling.
| Configuration | Retained history | Execution DB | Total node disk | Provision |
|---|---|---|---|---|
| Full mainnet archive | Historical state from genesis; historical proofs are served only close to the chain tip | ~2.1 TB | ~2.3 TB | 3 TB |
| Windowed mainnet archive | ~2 months of state and ~1 year of blocks; block pruning measurement pending | ~0.9 TB (926 GB; provisional) | ~1.0 TB (provisional) | 1.5 TB |
| Per-address mainnet archive | Deep history for 6 of the busiest contracts + a 256-block base | ~1.8 TB | ~1.9 TB | 2.5 TB |
| Full Gnosis archive | Historical state from genesis; historical proofs are served only close to the chain tip | ~0.94 TB (941 GB) | ~0.94 TB | 1.5 TB |
Current measured saving: retaining ~2 months of state while keeping ~1 year of blocks takes the execution DB from ~2.1 TB → ~0.9 TB — roughly 60% less disk. The figure for a fully pruned ~2-month block window is still being measured.
Per-address disk scales with how active your chosen contracts are — pick lower-traffic contracts and it drops sharply. It's a "keep deep history cheaply" tool.
Rule of thumb for planning:
- Need full mainnet history → provision 3 TB (2.2 TB DB + CL + room to grow).
- Only need recent history → the current measurement is ~0.9 TB for ~2 months of state with ~1 year of blocks retained. The fully pruned ~2-month figure is pending; size your window with
HistoryRetentionBlocks. - Need forever-history for a few specific contracts → budget by those contracts' activity, plus a small base window.
Performance
Flat state at chain tip
A 12-hour Ethereum mainnet measurement across six fully synced, warm nodes found the flat state layout on 2.0.0-rc to be the fastest configuration at chain tip on both hardware tiers. Against the same-tier 1.39.2 half-path baseline, flat processed blocks at 1.80× the throughput on 8 vCPU standard machines and 2.55× on 16 vCPU premium machines.
The comparison used three configurations—2.0.0-rc flat, 2.0.0-rc half-path, and 1.39.2 half-path—on each hardware tier, all over the same 12-hour window. Each node contributed 2,880 samples and processed 3,587–3,588 blocks, with zero bad blocks, zero sample gaps, and zero restarts. RAM, storage, region, and OS image were identical; core count was the only hardware difference between tiers.
Mean block processing time at chain tip
The largest improvement is in tail latency, not the typical block. Flat's p99 was 351 ms on standard and 208 ms on premium—only 4.3× and 4.2× its own median. The 1.39.2 baseline reached 1,849 ms and 1,646 ms at p99, or 21× and 24× its median. 2.0.0-rc half-path also substantially reduced the tail, showing that part of the gain comes from 2.0.0-rc generally and part from the flat layout.
Median, p90, and p99 block processing time
Flat also benefited most from additional cores: mean processing time improved from 96.5 ms on 8 vCPU to 57.6 ms on 16 vCPU, a 1.67× improvement. The equivalent gain was 1.13× for 2.0.0-rc half-path and 1.18× for 1.39.2 half-path.
The trade-off is initial sync time. Flat took 192.0 minutes on standard and 128.6 minutes on premium—about 75% longer than the same-tier 1.39.2 half-path baseline. Once synced, it delivered the best and most consistent chain-tip performance measured here; 2.0.0-rc half-path was the fastest configuration to reach tip.
Time to sync to chain tip
Faster eth_call under load
Across the completed benchmark cells, 2.0.0-rc answers the internal 497-record eth_call corpus 15–27% faster than 1.39.3, with byte-identical responses on all 497 records in every layout and architecture measured. It also sustains 22–25% more heavy high-gas multicalls per second.
Both versions ran against the same mainnet snapshot at block 25,490,000, using the same seeded request sequences and runner, interleaved over overlay mounts on pristine snapshots. Figures come from the run-rpc-benchmarks workflow. These measurements preserve the tested build label, 2.0.0-rc.
Latency on the 497-record corpus
The corpus represents heavy simulation traffic: every record carries state overrides, and the median request is about 331 KiB. Each arm replayed 20,000 seeded requests at 100 requests per second after a discarded 60-second warm-up.
eth_call latency percentiles, 1.39.3 vs 2.0.0-rc
The gain widens into the tail on the flat layout: amd64 p99 drops 29.5%, from 104.79 ms to 73.92 ms. This reflects real work saved rather than scheduling luck—CPU time per request falls 25.5% on amd64 flat and 17.7% on arm64 flat. Paired per-record medians agree with the aggregate: −20.1% on amd64 (95% CI −20.6% to −19.6%; 451 of 497 records faster) and −25.2% on arm64 (95% CI −25.7% to −24.3%; 476 faster).
Throughput
Closed-loop throughput was measured over 40 passes across all 497 records at concurrency 16. Compared with 1.39.3, 2.0.0-rc delivered 29.6% more throughput on amd64 flat, 36.4% more on arm64 flat, and 20.6% more on amd64 halfpath.
Closed-loop eth_call throughput, 1.39.3 vs 2.0.0-rc
Heavy high-gas multicalls
Three EthCallChaos high-gas Multicall3 aggregate3 scenarios—roughly 34 KB payloads carrying about 500 ms of EVM work each—ran in isolation at 100 and 300 requests-per-second targets, in ABBA order, with 512 virtual users. Both versions saturated at both target rates, so achieved throughput is the relevant measure; p99 values in the 19–37 second range represent queue depth, not call latency.
Heavy high-gas Multicall3 capacity, 1.39.3 vs 2.0.0-rc
Repeats within a version varied by about 1 request per second, against a between-version gap of about 5 requests per second on flat and 3.5 on halfpath. Every multicall cell completed with zero failed requests, while the accompanying light eth_call contract mix remained sub-millisecond on both versions.
Results summary
| Cell | Architecture | Layout | Mean latency | Paired median | Throughput | Response parity |
|---|---|---|---|---|---|---|
| 497-record corpus | amd64 | flat | −27.3% | −20.1% | +29.6% | 497/497 |
| 497-record corpus | arm64 | flat | −23.6% | −25.2% | +36.4% | 497/497 |
| 497-record corpus | amd64 | halfpath | −15.5% | −16.3% | +20.6% | 497/497 |
| Heavy multicall | amd64 | flat | Saturated | — | +22–25% | — |
| Heavy multicall | amd64 | halfpath | Saturated | — | +23% | — |
Other optimizations
- Keccak-256 ~30% faster via AVX-512VL and batched hashing. (#12844)
- Single-call RocksDB point reads remove a value-sized native allocation and copy on every read. (#12986)
- EVM stops redundantly zeroing memory on overwrites and fresh allocations — large wins on memory-heavy execution. (#12953)
eth_callstate overrides applied without merkleization. (#12904)- ARM64-specific: EVM byte-swap fast path (eth_call latency and block-processing improvements) and a per-thread EVM call-pool free list. (#12798, #12905)
- Plus hot-path loop/atomics cleanups. (#13000, #12998, #12870, #12905)
Highlights
-
Flat-history archive (#12943). The flat state database can now serve archive-grade, header-verifiable history in three shapes, all built from ordinary syncing — no separate archive database, no new P2P protocol:
- Full archive — reconstruct and verify state at any historical block.
- Rolling window (
FlatDb.HistoryRetentionBlocks) — answer historical queries for the last N blocks and reclaim the rest. - Per-address (
FlatDb.HistorySliceAddresses) — keep deep history only for the contracts you care about while the general window rolls.
Below the retained floor, reads fail closed (correct-by-design) rather than silently answering from live state.
-
Streaming snapshot download (#12862). Import an archive snapshot without first storing the full archive locally, lowering peak disk during bring-up. Provision free disk equal to at least 1.5× the snapshot size; the import fails if less space is available.
-
Standalone bootnode tool (#12601). A dedicated discv4/discv5 bootnode with REST APIs, Prometheus metrics, and Docker/Grafana assets.
-
EIP-7805 (FOCIL) inclusion lists (#8003) and a sparse blob pool with eth/72 cell-level exchange +
engine_getBlobsV4(#11094). Both are implemented and fork-gated (activate with their respective forks).
⚠️ Breaking changes
If you run a node (config)
Db.FlushOnExitis now an enum, not a boolean. Values:None,WalOnly,Full. The default changes from full-flush toWalOnly. If your config, env var, or CLI still setstrue/false, the node fails to start — changetrue→Full,false→None.Blocks.PreWarmStateOnBlockProcessingwas replaced byBlocks.PreWarming. New enum values:None,Block,BlockAndMempool(defaultBlockAndMempool). The old key is now silently ignored (you'll get a warning, not a crash) — rename it or you lose your setting.- Numeric config keys are now unsigned. Negative values are rejected and the node fails to start. The one common case:
Receipt.TxLookupLimit: -1(the old "never index" sentinel) must become18446744073709551615. Receipt.MaxBlockDepthdefault lowered from 10000 → 1000. A singleeth_getLogsspanning more than 1000 blocks is now rejected unless the log index is enabled. If you rely on wide ranges: raiseReceipt.MaxBlockDepth, split the query, or enable the log index.- sepolia and hoodi default configs are now discv5-only (hoodi's static bootnode list was removed). Stock-config nodes on those networks discover peers via discv5 + DNS. Custom
DiscoveryConfigis unaffected. - Mainnet ancient-history barrier raised (block 15537394 → 24600000). Existing nodes keep all their data. Only new or resyncing nodes retain less pre-24.6M history by default.
If you run an archive node
- Archive configs now enable the flat-database backend with history (see Flat-history archive below). Your existing patricia archive DB keeps working (the new flag is ignored on an existing DB — nothing corrupts). To actually run the new flat archive you must resync, or set
FlatDb.ImportFromPruningTrieState=truefor an in-place trie→flat import. Enabling flat history is forward-only — there is no backfill below the point you enable it.
If you integrate over JSON-RPC / Engine API
engine_newPayloadV5: a malformed block-access-list envelope now returns{"status":"INVALID", ...}(HTTP 200) instead of JSON-RPC error32602. (#13012)trace_simulateV1: the response fieldstateChangeswas renamed tostateDiff. (#12892)- Receipt JSON on the
t8n/ direct-serialization path now emitsrootorstatus(mutually exclusive), not both. The standardeth_getTransactionReceiptpath is unchanged. (#12867) debug_traceCallnow uses a base fee of 0 for unpriced calls, matching go-ethereum. Reported gas figures change accordingly. (#12804)eth_getStorageAtposition parsing is stricter — spec-compliant hex-quantity clients are fine, but a client sending a bare number or un-prefixed string may now get a parse error. (Verify against your integrations.)- Amsterdam-gated (not active on mainnet yet, relevant if you test against devnets):
eth_callnow returns errors (out-of-gas, address collision, EF-prefix) where it previously returned0x;eth_estimateGasandeth_createAccessListreturn updated values. (#12806, #12971, #12970)
If you build against Nethermind (plugin / library authors)
- Many
IConfignumeric properties changed fromlong/inttoulong. This is source-breaking — recompile your plugins against 2.0.0.
Consensus / protocol
- EIP-7610 support removed. (#12935) No change on any live network — the storage-collision check is superseded by EIP-684 and was never activated as a fork. Only affects state-test / collision fixtures.
- Stricter RLPx/Snappy frame validation. (#12896) Malformed frames are now rejected/disconnected. Conformant peers (Geth, Besu, older Nethermind, CL relays) are unaffected — this is DoS hardening.
- Optimism
engine_signalSuperchainV1V0 byte layout corrected (7→8 bytes) to match op-geth/op-node. (#12805) OP-Stack operators only.
Dropped
ethernity-sepolianetwork removed (ethernity-mainnetis retained).
Networking & protocol
- ENR bootnodes accepted in discv4. (#12992)
- Conservative block-body transaction count limit; inbound RLP byte-list caps. (#12990, #12914)
- eth/72 announced cell-mask fix; local backpressure no longer charged to peers. (#13007)
- Restored eth/68 blob-violation handling; IPv6 enode text endpoints. (#12605, #12678)
- Fixed a peer-update timer shutdown race. (#13010)
Sync, database & state
- Fixed false
header < bodyblock-tree corruption after an ungraceful restart during beacon sync. (#12876) - Flat warmer correctness: isolate warmer misses and safely publish verified reads (resolves
InvalidStateRootwaves); restore the trie-warmer negative cache without poisoning live reads. (#12951, #12877) - A malformed snap
AccountRangeno longer strands a sync partition. (#12979) - Auto-update fast-sync settings. (#12962)
JSON-RPC & Engine API (non-breaking fixes)
- Browser POSTs are routed past the trusted fast lane so CORS headers are emitted. (#12900)
- Fixed a flaky
eth_simulateV1parent when a block-body write is pending. (#12984) - Documentation-generation fixes for RPC response schemas. (#12892, #12869, #12866)
Consensus correctness (state-affecting fixes)
- Preserve the RIPEMD touch across nested reverts (go-ethereum parity). (#13016)
- Reject deposit logs with non-canonical ABI offsets (stricter EIP-6110 validation; honest blocks unaffected). (#12895)
- Detect Geth genesis format independent of property order. (#12784)
L2 & other chains
- Optimism: OP Superchain chain registry refreshed (~40 chainspecs); OP payload decoding hardened against a malicious offset table; protocol-version signaling fix. (#12963, #12920, #12805)
- XDC: epoch resolution below the fast-sync pivot, archive start at the XDPoS v2 switch, blacklisted-address pool rejection, rewards read as XDC amounts, and several reliability fixes. (#12974, #12917, #12879, #12852, #12872, #12878)
Upgrade checklist
- Stop the node. No resync needed for a normal full node.
- Audit your config for the breaking keys above — the ones that crash on start are
Db.FlushOnExit(bool→enum), any negative numeric value, andReceipt.TxLookupLimit: -1. - Rename
Blocks.PreWarmStateOnBlockProcessing→Blocks.PreWarming(otherwise it's silently ignored). eth_getLogsusers: check whetherReceipt.MaxBlockDepth(now 1000) affects your queries.- Archive operators: decide between keeping your existing patricia archive (works as-is) or resyncing/importing to the new flat archive with history.
- Plugin/library authors: recompile against 2.0.0 (
IConfignumeric types changed). - Start the node and confirm the version in the startup logs.
Build signatures
The packages are signed with the following OpenPGP key: AD12 7976 5093 C675 9CD8 A400 24A7 7461 6F1E 617E
What's Changed
- perf(bls): reduce allocations and wasted clears in G2MSM point decoding by @kamilchodola in #11891
- perf(state): make BAL read warming survive, scale, and stick (~5x on storage-read-heavy blocks) by @kamilchodola in #11954
- Bump up the version to 1.40.0-unstable by @core-repository-dispatch-app[bot] in #11986
- Add EIP-7594 to Hoodi Unzen by @jmadibekov in #11982
- feat(engine): implement Engine API v2 REST+SSZ surface per spec by @Dyslex7c in #11887
- StateComposition: refuse to publish a partial-scan baseline by @AnkushinDaniil in #11586
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #11987
- test(merge): fix flaky AlreadyKnown_not_cached_block_should_return_valid by @LukaszRozmej in #11989
- fix(flatdb): preserve format markers when clearing the flat DB by @asdacap in #11996
- fix(rpc): unsafe
ValueTasksynchronous wait during streaming by @alexb5dh in #12006 - fix(flatdb): make snap finalize crash-durable and the restart wipe cheap by @asdacap in #11997
- perf(flat): decouple RocksDB write-buffer floor from CompactSize by @kamilchodola in #11936
- fixed message to return insufficient funds by @DarkLord017 in #12001
- fix(json): stop CountingStreamPipeWriter.Advance from flushing mid-write by @morre95 in #12002
- perf(blockchain): header-driven main-chain update to avoid deep-reorg OOM and reprocessing by @asdacap in #11894
- perf: per-column write buffer caps in WriteBufferAdjuster by @asdacap in #10955
- Rpc test workflow by @DarkLord017 in #11947
- chore: update publish docker github actions docker/login-action, dock… by @nmjustinchan in #10778
- fix(jsonrpc): handle IPC client disconnect during response write by @obchain in #12015
- style: enforce IDE0063 (use simple
usingstatement) by @asdacap in #12014 - feat(workflow): add support for Arbitrum networks and update L2 options by @cbermudez97 in #11970
- Merge.Plugin: produce testing_commitBlockV1 blocks on the main world state by @AnkushinDaniil in #11981
- RPC - ArrayPoolList by @svlachakis in #12017
- Flat: force-persist the head-reachable fork instead of an arbitrary one by @asdacap in #11967
- RefList16 fix by @svlachakis in #12021
- RPC admin_* - pause & resume block processing by @svlachakis in #12020
- Fix - Consensus Flaky Test by @svlachakis in #12026
- perf(processing): reduce empty/near-empty block overhead by @kamilchodola in #12030
- stop skipping hive tests which are fixed by commit #822 in execution-apis by @DarkLord017 in #12031
- feat(zkevm): Implement error handling by @rubo in #12010
- Geth error message fix by @DarkLord017 in #12028
- Blob fee check fix by @DarkLord017 in #12027
- Refactor: collapse finalization manager into IBlockTree by @asdacap in #11775
- Fix Flaky Merge Test by @svlachakis in #12046
- Increase KeccakCache size by @svlachakis in #12042
- feat(engine): align SSZ-REST wire format with execution-apis#793 update by @LukaszRozmej in #11998
- Centralize the local node identity in IEnode via EnodeProvider by @asdacap in #12051
- fix: do not create trie account for movePrecompileToAddress-only state overrides by @DarkLord017 in #12045
- ci(expb): pass tuning env vars to the expb benchmark process by @kamilchodola in #12022
- Bump pyspec fixtures to tests-bal@v7.3.2 by @Marchhill in #12060
- fix: wrap
eth_simulatewith no eip3607 spec to skip sender is not eoa check by @DarkLord017 in #12054 - SLOAD Improvements by @svlachakis in #12043
- EvmPoolMemory Improvement by @svlachakis in #11991
- Flat - Persistence Cache by @svlachakis in #12035
- add known failing tests in text script by @DarkLord017 in #12061
- add error in debug_traceBlock* if block is genesis by @DarkLord017 in #12039
- change message to return execution reverted in access list by @DarkLord017 in #12013
- Default RocksDB exit flush to WAL-only, add opt-in full flush by @asdacap in #12047
- fix(zkevm): Zero-init BLS MSM precompile output buffer by @rubo in #12072
- EvmPooledMemory fix by @svlachakis in #12067
- Make IP resolution lazy and self-contained; remove ResolveIps step by @asdacap in #12050
- fix(zkevm): Fatal stack-underflow halt in the zkEVM guest by @rubo in #12064
- perf: eliminate Evm/Db metrics false sharing; parallel-safe gas-price aggregation by @benaadams in #12071
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #12076
- Improve JWT secret auto-generation log by @modernzju in #12073
- fix(merge): use computed hash when recording bad block on NewPayload hash mismatch by @DarkLord017 in #12075
- Decouple InitializeNetwork from INethermindApi; register ProtocolsManager in DI by @asdacap in #12069
- Move NonceManager and BackgroundTaskScheduler to DI by @asdacap in #12068
- Gate DB load and sync-pivot resolution before MultiSyncModeSelector starts by @asdacap in #12078
- feat(debug): emit struct-log refund counter in geth opcode tracers by @0xDevNinja in #12081
- fix(zkevm): Reject non-canonical Fp coordinates in BLS12-381 precompiles by @rubo in #12074
- feat(zkevm): Migrate to ZisK v1.0.0-alpha by @maximmenshikov in #12065
- Refresh snap-sync account storage root via verified GetAccountRange by @asdacap in #12082
- Fix for KademliaConfig - hardcoded values for ip and port by @ak88 in #12095
- refactor(api): remove 18 ctor/factory-injectable properties from INethermindApi by @asdacap in #12070
- perf(flat): cheaper TrieWarmer enqueue fast-path by @kamilchodola in #12062
- Optimize trie a bit by @flcl42 in #12104
- chore: Update required SDK version by @alexb5dh in #12086
- In-house discv5 by @flcl42 in #11728
- fix: Engine API validation for payload attributes and nil blob versioned hashes by @DarkLord017 in #12066
- XDC Fix penalty comeback by @batrr in #12107
- lower verbosity KBucketTree by @ak88 in #12106
- ci(zkevm): Add glamsterdam-devnet-5 blocks tests by @rubo in #12098
- Optimise sorted pool lookup by @flcl42 in #12108
- Switch to struct RLP reader/writer by @flcl42 in #12011
- fix: prevent discovery eviction from disconnecting active sync peer by @DarkLord017 in #12097
- refactor(network): declarative P2P capability advertisement via IP2PCapabilityResolver by @asdacap in #12093
- Update known-failing-hive-tests.txt by @svlachakis in #12109
- XDC Fix signing old blocks by @batrr in #12085
- fix(eth): cap outgoing block bodies under the devp2p message size limit by @AnkushinDaniil in #12059
- fix: guard ForkChoiceUpdated against null safe/finalized hash by @asdacap in #12110
- fix(eth_getLogs): return EIP-4444 error code for pruned receipts by @manusw7 in #12090
- feat(debug): emit struct-log returnData in geth opcode tracers by @0xDevNinja in #12101
- refactor(consensus): move IBlockProductionPolicy to DI by @asdacap in #12099
- refactor(GasEstimator): Separate OptimisticMultiplier from stop margin by @manusw7 in #12088
- perf: reuse already-read nonce when deriving CREATE address by @AnkushinDaniil in #12113
- KeyStore - Dependency Hygiene by @svlachakis in #12123
- Dependency Hygiene by @svlachakis in #12124
- refactor: remove unused MemoryContentsComparer by @AnkushinDaniil in #12116
- refactor: remove unused TypeAsKey by @AnkushinDaniil in #12115
- refactor: remove unused TrieNode.GetChildHashOrInlineValue by @AnkushinDaniil in #12114
- test: stabilize flaky AdminModuleTests peer-events subscription tests by @AnkushinDaniil in #12127
- fix(discovery): flacky CI, log transport failures at Debug by @batrr in #12111
- Unify types with Geth by @Dyslex7c in #11937
- Tone down RLP limit logging by @flcl42 in #12130
- fix(shutter): validate encrypted message length before decoding by @AnkushinDaniil in #12134
- ci: pin Claude review workflow to opus model by @benaadams in #12140
- fix(shutter): bound-check keyper signer index from decryption keys by @AnkushinDaniil in #12135
- feat: Options for custom fix-receipts bounds by @alexb5dh in #12133
- AccountJsonConverter fix by @svlachakis in #12131
- test: fix flaky SyncServerTests block range broadcast test by @AnkushinDaniil in #12129
- fix(simulate): return 0 for unresolvable BLOCKHASH in eth_simulateV1 instead of throwing by @kamilchodola in #12037
- EXPB fix(merge): restore int type for MergeConfig.CollectionsPerDecommit by @svlachakis in #12148
- AuRa: move finalization manager and terminal-block disposer to DI by @asdacap in #12036
- perf(evm): per-thread free-list for EVM memory buffers + skip redundant copy-opcode revalidation by @kamilchodola in #11884
debug_getRawTransaction: returnnullinstead of error for missing transaction by @manusw7 in #12151- Configurable and explicit eth_getLogs scan limit by @alexb5dh in #12149
- fix(test): reduce BAL e2e sync chain length to avoid macOS CI timeout flakiness by @AnkushinDaniil in #12139
- fix(grpc): dispose subscription queue and harden publish against teardown by @AnkushinDaniil in #12138
- fix(gas-estimator): use the next-block spec consistently during estimation by @AnkushinDaniil in #12137
- Fix undisposed array-pool list leaks by @batrr in #12034
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #12159
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #12158
- fix(txpool): fix data race that broadcasts a null transaction by @asdacap in #12162
- Handle fork ID and seq in ENRs by @flcl42 in #12126
- fix(FeeHistoryOracle): return 4444 for pruned history, -32000 for non-existent block by @manusw7 in #12156
- ci: drop op-mainnet from master-validation sync check by @kamilchodola in #12171
- fix(sync): recover header sync after a lost chain level on unclean shutdown (#8029) by @stdevMac in #11994
eth_call- perf improvements by @svlachakis in #11965- Fix FlatDB persistence edge cases from the signed/unsigned type unification by @wurdum in #12172
- Fix EraE export for pure PoS genesis blocks by @flcl42 in #12154
- fix(rpc): align method-not-found message with Geth canonical phrase by @manusw7 in #12168
- fix(evm): align insufficient-funds-for-transfer message with Geth by @manusw7 in #12167
- fix(dns): validate enrtree-root fields and skip malformed records by @AnkushinDaniil in #12136
- feat(StateDiffsWriter): replace StateComposition plugin by @AnkushinDaniil in #11788
- fix: align AcceptTxResult rejection messages with Geth canonical phrases by @manusw7 in #12157
- Enforce strict leading-zero validation for QUANTITY hex by @manusw7 in #12103
- fix(engine): exclude SSZ-REST paths from missing-capabilities warning by @LukaszRozmej in #12176
- fix(tests): eliminate bonding race in KademliaAdapterTests by @LukaszRozmej in #12181
- Return original debug_traceCallMany simulation errors by @blackflytech in #12174
- fix(rpc): change ExecutionError code from -32003 to -32000 to match Geth by @manusw7 in #12169
- fix(tests): make discv5 WireTests EmbeddedChannel access thread-safe by @AnkushinDaniil in #12180
- perf(prewarmer): don't eagerly load EIP-2930 access lists when warming by @kamilchodola in #12182
- Use standard Microsoft logging in Kademlia by @flcl42 in #12170
- perf(requests): reuse a stack buffer for deposit request decoding by @AnkushinDaniil in #12185
- perf(kzg): pool the discarded cells buffer in ComputeCellProofs by @AnkushinDaniil in #12184
- Fix Hive eth devp2p tests by @flcl42 in #12179
- perf: replace TrieStore shard-index modulo with a bitmask by @AnkushinDaniil in #12183
- fix(rpc): accept leading-zero storage keys in getStorageAt/getProof (geth parity) by @svlachakis in #12192
- fix(rpc): lenient QUANTITY parsing for Taiko and Surge L2 nodes by @AnkushinDaniil in #12190
- Rpc comparison job improvements by @svlachakis in #12194
- XDC - Fix subnet header decoding and processing by @cicr99 in #11941
- Start a round if we are at genesis by @ak88 in #12152
- fix(xdc): reject malleable high-S signatures in votes, QC and TC by @ak88 in #12188
- fix(snap): reject malformed range proofs instead of throwing by @AnkushinDaniil in #12187
- perf(rlp): cap the item-count walk at limit+1 in DecodeArray decoders by @AnkushinDaniil in #12203
- fix(jsonrpc): flow JsonRpcContext.Current via AsyncLocal by @AnkushinDaniil in #12199
- fix(rpc): serialize eth_capabilities retentionBlocks as hex QUANTITY by @svlachakis in #12206
- XDC - Fix subnet penalties and rewards by @cicr99 in #12080
- ci(rpc-comparison): add -L latest-block pass with head sync by @svlachakis in #12209
- XDC - Fix subnet chainspec and genesis support by @cicr99 in #11915
- fix(network): reject zero-size RLPx frames in ZeroFrameDecoder by @AnkushinDaniil in #12202
- perf(zkevm): Stateless guest execution optimizations by @maximmenshikov in #12141
- XDC Block production fixes by @batrr in #11934
- XDC Vote Manager fixes by @batrr in #11867
- perf(txpool): hoist the head-spec EIP-1559 flag out of the gas-bottleneck loop by @AnkushinDaniil in #12220
- feat(engine): move SSZ-REST fork selection into Eth-Execution-Version header by @LukaszRozmej in #12193
- fix(synchronization): verify hash of snap-heal recovered trie node by @AnkushinDaniil in #12200
- perf(consensus): drop the redundant bloom pass in the BAL parallel executor by @AnkushinDaniil in #12219
- perf(state): collect storage roots from the changed set, not all touched contracts by @AnkushinDaniil in #12218
- refactor(aura): isolate AuRa concerns inside the AuRa plugin by @LukaszRozmej in #11938
- fix(jsonrpc): bound eth_simulateV1 total block expansion, not just each gap by @AnkushinDaniil in #12210
- perf(prewarmer): warm EIP-2930 access lists cancellation-responsively by @kamilchodola in #12189
- fix(merge): side-effect-free invalid-chain query, atomic node get-or-create by @AnkushinDaniil in #12208
- fix(db): flush all column families in ColumnsDb.Flush by @asdacap in #12223
- refactor(state): wire VerifyTrie through the backend-agnostic world-state module by @asdacap in #12222
- feat(flatdb): warn to use FlatInTrie layout on low-RAM machines by @asdacap in #12221
- Guard EraE/eth_subscribe overflow, drop pre-ulong leftovers, cover gas-limit reject arm by @wurdum in #12178
- Align debug_trace* opcode (struct) tracer with execution-apis #762 by @manusw7 in #12056
- refactor(plugins): wire TraceStore/OpcodeTracing tracers via DI by @asdacap in #12144
- fix(test): unflake PersistentReceiptStorage index-prune assertion by @LukaszRozmej in #12234
- fix(jsonrpc): derive eth_simulateV1 block spec from the overridden number/timestamp by @AnkushinDaniil in #12229
- refactor(snap): sequential code-existence filter instead of per-range PLINQ by @AnkushinDaniil in #12224
- fix(txpool): single-source pending-delegation accounting through pool events by @AnkushinDaniil in #12205
- Update schema generator project coverage by @flcl42 in #12207
- perf: reduce block processing jitter and improve stability by @kamilchodola in #10590
- refactor(evm): gas-policy multidimensional refactoring — foundation (cost-in-policy) by @AnkushinDaniil in #12146
- refactor: drop big-endian branches, assert little-endian at startup by @asdacap in #12197
- test(sync): stabilize flaky Test_release_before_processing_complete by @LukaszRozmej in #12235
- Warmup improvement by @kamilchodola in #10652
- fix(blockchain): bound BadBlockStore by entry count, not DB byte size by @AnkushinDaniil in #12225
- refactor(api): remove dead InitNetworkProtocol plugin hook by @asdacap in #12241
- refactor(healthchecks): move background-service startup to a StartHealthChecks step by @asdacap in #12253
- refactor(tracestore): wire the trace RPC override through DI by @asdacap in #12251
- refactor(state): move BestPersistedState from BlockTree to IStateBoundary by @asdacap in #12236
- feat(network): trusted & static peers as must-keep, peer-limit accounting cleanup by @asdacap in #12196
- refactor(optimism): migrate Optimism.InitRpcModules to DI by @asdacap in #12252
- fix(persistence): correct range deletion bounds for full trie nodes by @batrr in #12238
- New payload with witness ssz by @hudem1 in #12048
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #12267
- fix(sync): unwedge UpdatingPivot for nodes restarted before the first pivot update by @stdevMac in #11995
- perf(sync): anchor forward sync at the download front by @svlachakis in #12276
- fix(sync): reconcile lowest inserted beacon header on startup by @svlachakis in #12273
- Support all zkevm tests via both blockchain and engine by @hudem1 in #12177
- fix(discovery): deflake KademliaAdapterTests ENR refresh tests by @stdevMac in #12287
- refactor(evm): remove dead RlpCache and the Evm->Trie dependency by @AnkushinDaniil in #12280
- fix(evm): aggregate cancellation state in CompositeTxTracer by @AnkushinDaniil in #12279
- test(sync): unflake BlockDownloaderTests.Merge_Happy_path by @AnkushinDaniil in #12254
- fix(taiko): resolve one virtual machine identity per Taiko scope by @AnkushinDaniil in #12281
- refactor(clique): register RPC module via DI instead of InitRpcModules by @asdacap in #12270
- fix(sync): heal phantom chain levels on full-sync startup by @svlachakis in #12274
- perf(state): SLOADs - skip journaling storage reads by @svlachakis in #12289
- Fix contradictions, fabricated APIs, and stale facts in agent rules and skills by @benaadams in #12291
- fix(tracing): synthesize root action in ParityLikeTxTracer.MarkAsSuccess by @ak88 in #12186
- refactor(consensus): wire block preprocessor steps through DI by @asdacap in #12258
- perf(evm): reuse last popped Address to eliminate per-opcode allocation by @svlachakis in #12286
- fix(flatdb): lease the read-only bundle for in-flight trie warmer jobs by @AnkushinDaniil in #12237
- fix(evm): weak-key the opcode-table spec cache; guarantee gas-charge inlining by @kamilchodola in #12250
- perf(evm): reuse the EIP-7702 delegation lookup from validation by @AnkushinDaniil in #12283
- refactor(init): remove InitRpcModules plugin hook by @asdacap in #12294
- More RLP checks for txs, receipts, snap by @flcl42 in #12301
- perf(engine): overlap sender recovery with newPayload pre-processing and cache recovered senders by @kamilchodola in #12249
- refactor(di): wire block GossipPolicy and ProcessedTransactionsDbCleaner through DI by @asdacap in #12299
- perf(evm): widen popped-address cache to 4 entries by @svlachakis in #12300
- perf(evm): batch per-opcode metric counters into a per-transaction flush by @AnkushinDaniil in #12290
- perf(evm): cache the last ECRecover result per thread by @LukaszRozmej in #12296
- fix(test): deflake Will_not_stop_trying_on_rlpx_connection_failure by @Marchhill in #12311
- refactor(healthchecks): move startup disk guard into a dedicated IStep by @asdacap in #12303
- RPC Monitor fixes & improvements by @alexb5dh in #12175
- fix(dns): don't use the udp port as RLPx dial port for ENRs without a tcp entry by @MysticRyuujin in #12302
- fix(persistence): delete flat trie nodes by subtree containment by @asdacap in #12314
- refactor(di): wire wallet, engine signer and keystore through DI by @asdacap in #12316
- perf(evm): execute STATICCALL precompiles inline, skipping the child frame by @LukaszRozmej in #12297
- fix(network): dial ENR-backed peers at their tcp port by @MysticRyuujin in #12307
- fix(core): cache NoEip158/NoEip3607 spec wrappers per spec instance by @AnkushinDaniil in #12277
- test(evm): differential test net for the simple-transfer fast path by @AnkushinDaniil in #12278
- Fix background scheduler branch completion by @flcl42 in #12033
- Publish Nethermind.Kademlia package by @flcl42 in #12259
- feat(metrics): add basic authentication support for Pushgateway by @cbermudez97 in #12313
- Resolve some discovery dos vectors(which hive revealed) by @flcl42 in #12211
- Feat/evm enginetest by @kamilchodola in #11399
- perf(state): O(1) storage destruction for the tx-end destroy list by @svlachakis in #12322
- fix(init): make step init logs identify the actually-running step by @asdacap in #12324
- perf(prewarmer): skip speculatively warming transactions the main thread has already started by @kamilchodola in #12319
- feat(tools): Extract stateless inputs from EEST fixtures by @rubo in #12306
- Don't feed p2p with external networks peers by @flcl42 in #12321
- fix(discovery): publish correct ENR endpoint for IPv6 and unresolved external IPs by @MysticRyuujin in #12308
- fix(build): keep RPC JSON source generator portable in self-contained RID publish by @stdevMac in #12342
- fix(evm): use fixed EIP-7623 token cost for the calldata floor by @batrr in #12337
- fix(tools): Escape MDX-breaking chars in generated config docs by @rubo in #12346
- fix(sync): bound beacon header reconciliation to the beacon segment by @asdacap in #12327
- perf(consensus): overlap blooms with post-execution block stages by @svlachakis in #12331
- perf(flat): fall back to the MPMC buffer when the trie warmer slot ring is full by @kamilchodola in #12347
- fix(tracer): read JS db.getState by raw slot, remove StorageCell.IsHash by @asdacap in #12351
- perf(prewarmer): feed trie warm-up hints from speculative execution to the flat TrieWarmer by @kamilchodola in #12339
- fix(sync): clamp flat full state to best header by @svlachakis in #12272
- fix(xdc): persist epoch rewards on canonical block added by @ak88 in #12288
- fix(state): drop stale StorageCell.IsHash guard breaking the master build by @kamilchodola in #12355
- fix(sync): stop processing blocks already covered by persisted state by @svlachakis in #12275
- perf(prewarm): mempool-driven speculative state pre-warming by @svlachakis in #12344
- perf: add SmallRefCountingDisposable with an inline lease counter by @asdacap in #12335
- feat(analyzers): add NETH007 — prefer PutSpan over Set with a span-copied array by @asdacap in #12336
- docs(agents): expand coding guidelines and DI environment documentation by @asdacap in #12352
- fix(test): disable prewarming in state test runs by @LukaszRozmej in #12366
- fix(test): disable mempool-driven prewarming in test environments by @LukaszRozmej in #12367
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in #12361
- feat(FlatDB): long finality support with persisted snapshots by @asdacap in #12142
- Glamsterdam devnet 6 eips by @Marchhill in #12117
- feat: Support eth_fillTransaction by @hudem1 in #12204
- perf(evm): decouple and bound the instruction-stream cache memory by @svlachakis in #12368
- Fall back to chain head when sync progress pointers are missing by @flcl42 in #12356
- perf(flat): sorted content for compacted snapshots by @asdacap in #12353
- perf(persistence): defer block-data writes (receipts, tx-index, bodies, BAL) off the block-processing path by @benaadams in #12349
- Add fusaka payload set to EXPB reproducible benchmarks workflow by @cbermudez97 in #12384
- perf(state): replace per-key journal stacks with intrusive PrevIdx change chains by @asdacap in #12340
- refactor(init): migrate plugin Init hooks to steps and retire the hook by @asdacap in #12326
- perf(evm): drop redundant gas re-check in UpdateGas by @LukaszRozmej in #12412
- Ignore sepolia-devnet-2 L1 in superchain chainspec generation by @LukaszRozmej in #12398
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #12394
- test: key AddBlock head waits to the produced block by @svlachakis in #12409
- perf: uncontend hot-path metric counters by @svlachakis in #12405
- ci(expb): run fusaka payload set on PR label and master pushes by @svlachakis in #12399
- XDC Blockhash Store by @batrr in #12370
- perf(prewarm): warm the block beneficiary by @svlachakis in #12415
- test: deterministic prewarmer env-pool eviction test by @svlachakis in #12407
- perf(prewarm): hint the EIP-2935 parent-hash slot to the prewarmer by @svlachakis in #12410
- perf(crypto): back the sender cache with AssociativeCache instead of ClockCache by @benaadams in #12418
- perf(engine): reuse pool senders in newPayload recovery by @svlachakis in #12390
- XDC Tesntet forks by @batrr in #12328
- refactor: remove no-op precalculated intrinsic gas plumbing by @asdacap in #12422
- perf(threading): reduce MCS lock handoff latency by @benaadams in #12417
- perf(flat): sealed snapshot counts, HintGet promotion skip, prewarm-filter hash by @benaadams in #12420
- fix(era): advance finality during replay by @asdacap in #12423
- remove IPreBlockCaches wrapping by @asdacap in #12385
- perf(flat): publish trie-commit nodes through address-owned maps, clear pooled maps without stripe locks by @benaadams in #12421
- refactor(evm): make the code cache a DI-injected ICodeCache by @asdacap in #12386
- perf(evm): memoize intrinsic gas on the transaction by @svlachakis in #12411
- fix(evm): address devnet-6 state-gas review findings by @Marchhill in #12369
- fix(evm): align EIP-8037 spill-refund accounting with the EELS reference by @Marchhill in #12419
- perf: precompile result cache survives blocks by @svlachakis in #12406
- perf(prewarm): execute warm transactions with real fee and nonce semantics by @svlachakis in #12413
- Size ParallelUnbalancedWork to the range; skip init/finally on idle workers by @benaadams in #12426
- Skip idle data feed stats serialization by @benaadams in #12427
- perf(xdc): forward the blockhash prewarm hint through the decorator by @svlachakis in #12424
- chore(ci): Disable stateless devnet tests scheduled run by @rubo in #12428
- Split and prioritize heavy same-sender groups in block prewarmer by @kamilchodola in #12425
- fix(flat): keep writer-held shared arenas alive until the write finishes by @asdacap in #12416
- ci: skip the no-intrinsics variant for plumbing test projects by @AnkushinDaniil in #12391
- ci(expb): fix retrospective pagination drift; allow disabling the flat write-buffer floor by @kamilchodola in #12264
- Fix slow-block cache hit stats: report first-touch pre-block coverage instead of a layer blend by @kamilchodola in #12372
- ci(nethtest): migrate checked/no-intrinsics pyspec variants to nethtest by @kamilchodola in #12330
- ci: build test binaries once per RID and share via artifact by @kamilchodola in #12371
- fix(test): migrate ScopeProviderTests to the PrewarmerState ctor by @kamilchodola in #12440
- Schedule Unzen fork on Taiko Mainnet by @jmadibekov in #12442
- perf(bal): reuse cached wire hash for block access list hash by @kamilchodola in #12381
- Extract censorship detector into plugin by @asdacap in #12432
- Harden prewarmer group splitting: capacity gates, whole-job overtake skip, per-worker envs by @benaadams in #12433
- Convert AuRa block producer wiring to DI by @asdacap in #12414
- Fix flat DB import skipped for a fresh DB during migration by @cbermudez97 in #12383
- fix(blockstore): inject chain header decoder so AuRa blocks decode by @Marchhill in #12445
- refactor(evm): require ICodeInfoRepository.IsCodeOverridable explicitly by @AnkushinDaniil in #12282
- xdc eth endpoints by @ak88 in #11939
- fix(nethtest): report zkEVM progress in test cases instead of fixture files by @kamilchodola in #12437
- chore: Update packages by @rubo in #12449
- Sweep gen2 concurrently during sustained block processing by @kamilchodola in #12434
- Add BlockProfiler plugin for per-block dotTrace snapshots by @kamilchodola in #12444
- Eliminate JUMPDEST dispatch after valid taken non-traced jumps by @benaadams in #12451
- Validate discv4 peer endpoints before P2P discovery by @flcl42 in #12443
- Fix eth/70 receipt validation for EIP-2780 by @flcl42 in #12462
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in #12452
- chore(docs): Remove broken badge by @rubo in #12466
- feat: append DB layout postfix to public client ID by @asdacap in #12435
- ci: free root-disk space in the test-binary producer by @AnkushinDaniil in #12471
- fix(tracing): make custom JavaScript tracer caching concurrency-safe by @pengqima in #12465
- fix(tracing): restore log.contract when inner call frame exits by @0xDevNinja in #12474
- perf(flat): serve snap responses as pre-serialized RLP by @batrr in #12472
- test: add E2E coverage for bootnodes with TCP port 0 (discport-only enodes) by @MysticRyuujin in #12477
- Raise default TrieWarmer worker count from 1/2 to 3/4 of cores by @kamilchodola in #12479
- Add versioned engine_newPayloadWithWitness methods by @flcl42 in #12464
- refactor(evm): single-source the EIP-8037 intrinsic gas rules in the policy and harden their arithmetic by @AnkushinDaniil in #12256
- test(merge): drop NewPayloadBlockProcessingTimeout in engine tests by @batrr in #12481
- Fix flaky ERA importer, sync and JSON-RPC tests by @flcl42 in #12480
- fix(rpc): report missing state in eth_getStorageAt gracefully by @svlachakis in #12483
- chore: Update Nethermind.Crypto.SecP256r1 package by @rubo in #12484
- refactor(evm): remove unused BitmapHelper by @benaadams in #12493
- perf(evm): skip recipient delegation lookup when EIP-8037 is not active by @benaadams in #12495
- perf: seal WorldState and CodeInfo by @benaadams in #12497
- perf(blockchain): presize BlockReceiptsTracer lists and span the bloom loop by @benaadams in #12498
- perf(state): cache WorldState's OnAccountUpdated handler by @benaadams in #12494
- perf(merge): pass an explicit LOH budget to the no-GC region by @benaadams in #12499
- ci: build the PR sync image once and share it across sync-pr-gate legs by @AnkushinDaniil in #12392
- ci: run the full unit suite on Linux only; Windows to the OS-sensitive subset by @AnkushinDaniil in #12379
- ci: add concurrency guard to sync-master-validation and a timeout to hive tests by @AnkushinDaniil in #12375
- fix(sync): prevent lost wake-up leaving a peer permanently asleep for a context by @AnkushinDaniil in #12255
- refactor(evm): keep the system-tx validate marker as private processor state by @AnkushinDaniil in #12285
- fix(sync): preserve block-info metadata when re-inserting the same hash into a chain level by @AnkushinDaniil in #12310
- ci: set explicit read-only token permissions on build and test workflows by @AnkushinDaniil in #12374
- ci: pass release metadata to publish scripts via environment variables by @AnkushinDaniil in #12376
- Skip Rlp wrapper allocation in StorageTree by @svlachakis in #12500
- Fix EIP-2780 gas after sender recovery by @flcl42 in #12459
- Eliminate closure in signature recovery by @svlachakis in #12502
- refactor: remove unused IFlatDbManager.ReorgBoundaryReached by @asdacap in #12496
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #12487
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #12488
- Demote per-block tx selection logs from Debug to Trace by @ak88 in #12482
- Skip redundant output allocation in transaction processing by @svlachakis in #12503
- perf(evm): remove ZeroPaddedSpan in favor of exact slices and zero-extended copy by @benaadams in #12508
- Skip throwaway RLP encoding in state tree bulk writes by @svlachakis in #12501
- perf(engine): overlap tree insert with sender recovery by @svlachakis in #12492
- Proposal race condition in XDC by @ak88 in #12473
- fix(rpc): align eth_getBlockAccessList and engine payload bodies V2 with execution-apis spec by @Marchhill in #12504
- perf(rpc): use Content-Length for unbuffered HTTP/1.1 responses and drop the Server header by @benaadams in #12514
- perf(engine): overlap the newPayload transactions-root computation with the serial prefix by @benaadams in #12515
- perf(evm): optimize zero-value handling in SSTORE, SLOAD, and WithoutLeadingZeros by @benaadams in #12518
- fix(jsonrpc): emit removed logs on reorg for poll-based log filters by @AnkushinDaniil in #12511
- fix(jsonrpc): bound eth_getProof with the request timeout by @AnkushinDaniil in #12507
- fix(consensus): preserve chain-specific header type in mempool pre-warming by @ak88 in #12447
- feat(xdc): add XdcHeaderModule for correct header/block decoder registration by @ak88 in #12520
- chore(ci): monitor sync runners via Grafana Alloy by @cbermudez97 in #12510
- fix(jsonrpc): don't leak eth_getLogs parallel slot when result is unenumerated by @AnkushinDaniil in #12512
- Introducing System e2e testing framework by @dmitriy-b in #11067
- fix(jsonrpc): pool simulate envs so simulateV1 stays sharable and race-free by @AnkushinDaniil in #12506
- fix(jsonrpc): bound proof_getProofWithMeta with the request timeout by @AnkushinDaniil in #12521
- fix(xdc): never bypass reward recalculation via cached ProcessedRewards by @ak88 in #12524
- Devnet-7 tests and repricing by @flcl42 in #12476
- Handle short Snap trie paths by @flcl42 in #12523
- feat(core): responsive startup logo with adaptive layout by @stdevMac in #11413
- Batch EIP-2537 pairing check Miller loops and use affine MSM by @Marchhill in #12329
- ci: pin the zisk image to the last working digest by @AnkushinDaniil in #12542
- Warm read-only accounts in HintBal phase 1 on the dedicated WarmReadPool by @kamilchodola in #12468
- RocksDB - Don't treat IO errors as corruption by @svlachakis in #12541
- Preserve Gnosis TTD-zero genesis hash by @flcl42 in #12545
- Validate Hive side-chain parents by @flcl42 in #12525
- fix(sync): retry a fast-blocks batch slot when the canonical block info is not yet resolvable by @AnkushinDaniil in #12535
- fix(simulate): fall back to the base block store in HasBlock so the overlay main-chain reset works by @AnkushinDaniil in #12534
- perf(state): trim burst-inflated collections and reduce cache contention by @kamilchodola in #12540
- fix(config): add options for persisted snapshot catalog in DbConfig by @batrr in #12522
- test(network): make Eth62 tx-packing tests deterministic in size by @AnkushinDaniil in #12519
- fix(xdc): use a small sync-distance tolerance instead of zero for consensus gating by @ak88 in #12548
- Add debug logging for XDC vote and timeout rejection paths by @ak88 in #12549
- fix(state): tolerate an already-disposed flush target during shutdown by @ak88 in #12552
- fix: normalize IPv4-mapped IPv6 addresses in Enode by @ak88 in #12544
- Lead preimage flat DB storage keys with the full address by @asdacap in #12543
- fix(xdc): disable automatic ENR refresh over discv4 by @ak88 in #12556
- ci(zkevm): Update the workflow for glamsterdam-devnet-7 by @rubo in #12547
- test: keep the persisted-snapshot tier inert in test containers; capture full exceptions in the test runner by @AnkushinDaniil in #12532
- fix(xdc): break equal-TD fork-choice ties by round instead of self-mined by @ak88 in #12559
- Fix gnosis failed tests by @dmitriy-b in #12560
- Fixed a wrong MSBuild input for PublishReadyToRunPgoFiles by @dmitriy-b in #11642
- Optimize generated SSZ byte collection codecs by @flcl42 in #12554
- Add FlatDB e2e tests by @dmitriy-b in #12550
- Accept 1,024 ETH body request hashes by @flcl42 in #12567
- Handle zero terminal total difficulty as merge from genesis by @flcl42 in #12557
- Consolidate ChangeTypes by @benaadams in #12569
- feat(evm): EIP-8272 recent-root store helper by @AnkushinDaniil in #12457
- feat(db): log RocksDB per-column native-memory breakdown by @AnkushinDaniil in #12403
- ci: remove NuGet package caching from test jobs by @AnkushinDaniil in #12531
- feat(evm): EIP-8250 keyed-nonce state helper by @AnkushinDaniil in #12458
- perf(state): cut per-slot and per-account work on the storage commit path by @benaadams in #12568
- Add Nix flake for NixOS support by @AnkushinDaniil in #12388
- Batch RocksDB full enumerations by @asdacap in #12564
- ci: cut wasted CI spend on unchanged and perpetually-failing paths by @stdevMac in #12563
- Keep the speculative warm-cache handoff on low-tx blocks by @benaadams in #12570
- Allow contract creation at max valid nonce by @flcl42 in #12576
- Bound pooled transaction retry traffic by @flcl42 in #12345
- perf(evm): raise eth_call instruction-stream retained-size cap (256 → 512 KiB) by @kamilchodola in #12574
- Prevent negative pacing delay in random Kademlia discovery by @flcl42 in #12582
- Cap collected base fee at the effective gas price paid in validation-off eth_simulateV1 by @flcl42 in #12566
- ci: bump gnosis Flat sync-validation timeout to 6h by @kamilchodola in #12585
- refactor(eip-8272): derive recent-root usable window by @AnkushinDaniil in #12572
- perf(state): capture storage originals once per round by @svlachakis in #12596
- Archive(sync) : Increase receipts blocks write buffer by @svlachakis in #12604
- Add RPC benchmarking workflow (multi-client: flood / EthCallChaos / json-bench / dotTrace) on the reproducible-benchmarks runner by @kamilchodola in #11961
- Fix zero-tip SYSTEM_ADDRESS beneficiary BAL entry by @flcl42 in #12575
- Harden BAL gas accounting boundaries by @flcl42 in #12589
- xdc start round on bootstrap by @ak88 in #12583
- feat(evm): EIP-8250 nonce-set validity by @AnkushinDaniil in #12527
- Improve FastHash performance by @benaadams in #12632
- chore: update Nethermind.Numerics.Int256 package by @rubo in #12638
- Archive - Flat historical state by @svlachakis in #12125
- fix(rpc-bench): run benchmarked nodes the way production runs them by @kamilchodola in #12625
- Rename EIP-8037 regular gas dimension to execution gas by @flcl42 in #12600
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in #12665
- refactor(net): namespace snap by version by @batrr in #12606
- feat(sync): serve block access lists from the snap server by @batrr in #12607
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in #12663
- test: make prewarmer env-return assertion pool-hit independent by @stdevMac in #12616
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in #12664
- fix(receipts): restore the post-merge flag before regeneration by @svlachakis in #12641
- Expose the node's ENR in admin_nodeInfo by @barnabasbusa in #12631
- Validate ABI decode allocation bounds by @flcl42 in #12588
- ci: disable stateless glamsterdam-devnet-7 scheduled run by @rubo in https://github.com/NethermindEth/nethermind/pull/12680
- Fix EIP-7708 tracing with logs by @alexb5dh in https://github.com/NethermindEth/nethermind/pull/12577
- fix(flat): guard the trie-warmer against a TransientResource recycle race (storage reads as 0x00) by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12429
- fix(jsonrpc): synchronise SubscriptionManager per-client subscription bag by @0xDevNinja in https://github.com/NethermindEth/nethermind/pull/12672
- test: eth_createAccessList affordability with omitted fee fields by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12629
- Fix stale transaction pool snapshots by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12685
- Encode engine_newPayloadWithWitness witness as an RLP data string by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12635
- perf(state): skip trie warmup for read-only BAL accounts in flat layout by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12681
- test: make can-never-fail tests assert what their names claim by @benaadams in https://github.com/NethermindEth/nethermind/pull/12690
- Stop parallel transaction execution once BAL validation rejects the block by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12697
- test: pin eth/62-66 serializer wire encodings with hand-derived goldens by @benaadams in https://github.com/NethermindEth/nethermind/pull/12696
- feat: EIP-8037 two-dimensional gas tracing (stateGasTracer + callTracer) by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12628
- fix(simulate): skip EIP-3607 on the EIP-7928 BAL path in eth_simulateV1 by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12691
- fix(dns): verify EIP-1459 subtree hashes by @MysticRyuujin in https://github.com/NethermindEth/nethermind/pull/12707
- Selectable dotTrace profiling mode + dotnet-trace EventPipe sidecar for benchmark workflows by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12708
- fix(jsonrpc): serialize receipt root as full-width DATA by @benaadams in https://github.com/NethermindEth/nethermind/pull/12706
- test: add hand-derived golden tests for eth/71 and snap serializers by @benaadams in https://github.com/NethermindEth/nethermind/pull/12699
debug_trace*: Fix phantom logs on frame revert by @alexb5dh in https://github.com/NethermindEth/nethermind/pull/12621- Snap sync: reject storage range responses with unmatched slot lists by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12729
- feat(metrics): durable sync-time and full-pruning duration metrics by @cbermudez97 in https://github.com/NethermindEth/nethermind/pull/12590
- Only accept the requested header in FetchHeaderFromPeer by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12730
- Fix doubled revert handling in some tracers by @alexb5dh in https://github.com/NethermindEth/nethermind/pull/12715
- test(era): anchor accumulator tests to EIP-7643 vectors, remove unused GetProof by @benaadams in https://github.com/NethermindEth/nethermind/pull/12718
- test: strengthen mock-echo and vacuous tests in Abi, Optimism and Xdc test projects by @benaadams in https://github.com/NethermindEth/nethermind/pull/12720
- test: anchor crypto and RLP tests to independent expectations by @benaadams in https://github.com/NethermindEth/nethermind/pull/12712
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/12752
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/12751
- test: Db tests assert stored state instead of smoke-calling empty methods by @benaadams in https://github.com/NethermindEth/nethermind/pull/12693
- Reject invalid fixed-size header RLP by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12579
- Treat a null header answer as the block being absent by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12741
- Return only the requested header from GetHeadBlockHeader by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12740
- feat: add built-in portfolio viewer UI at /portfolio by @Marchhill in https://github.com/NethermindEth/nethermind/pull/12360
- Handle failed sender recovery by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12757
- fix(simulate): route the EIP-7928 BAL path through the simulate tx adapter (#12692) by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12721
- Flush flat state on shutdown and survive a missing arena on load by @qu0b in https://github.com/NethermindEth/nethermind/pull/12769
- Fix DB size metrics starving under continuous block processing by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12763
- docs(xdc): rewrite Nethermind.Xdc README against current code by @ak88 in https://github.com/NethermindEth/nethermind/pull/12761
- Performance and FP improvement for the latest bflat by @maximmenshikov in https://github.com/NethermindEth/nethermind/pull/12747
- fix(simulate): default a no-gas eth_simulateV1 call to the block gas budget (#12692) by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12722
- ci: add stateless execution output validation by @rubo in https://github.com/NethermindEth/nethermind/pull/12779
- fix(xdc): resolve XDPoS committed/finalized state from the block tree, not the highest QC by @ak88 in https://github.com/NethermindEth/nethermind/pull/12773
- chore: update .NET packages by @rubo in https://github.com/NethermindEth/nethermind/pull/12791
- perf(rpc): cut eth_call overhead in memory, code stream, and tx parse by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12716
- fix(flat): stop the trie warmer poisoning reads with a cached Unknown by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12793
- Add plataberget testnet configuration by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12807
- test(flat): make the arena allocated-bytes assertion page-size portable by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12794
- Implement GetEpochSwitchInfoBetween for subnet chains by @ak88 in https://github.com/NethermindEth/nethermind/pull/12799
- Simplify heavy-contract storage discovery: warm via prewarmer scopes by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12737
- Align eth_unsubscribe not-found handling with geth by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12819
- Deflake RetryCacheTests.ExpiryQueue_ReleasesStorageAfterCumulativeChurn by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12820
- feat(evm): EIP-8272 reference-set validity by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12528
- fix(snap): punish a peer that keeps failing across a pivot update by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12809
- fix(network): reject connections to and from this node's own identity by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12812
- Make snap request sizer test independent of the wall clock by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12821
- ci: run orphaned Nethermind test projects in the test matrix by @benaadams in https://github.com/NethermindEth/nethermind/pull/12689
- test: add JSON converter golden tests and fix public-key DATA width by @benaadams in https://github.com/NethermindEth/nethermind/pull/12705
- test: give state/evm smoke tests real assertions by @benaadams in https://github.com/NethermindEth/nethermind/pull/12694
- Expose EIP-8282 builder contracts in eth_config by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12815
- Back off idle random-walk discovery once the routing table is full by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12771
- Allow consensus-only ENRs in discv5 routing by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12613
- fix(network): disconnect sessions that stop answering pings by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12811
- feat(net): add snap/2 protocol by @batrr in https://github.com/NethermindEth/nethermind/pull/12670
- Fix flaky associative cache retrievability test with deterministic hashes by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12756
- Suppress expected RPC overload warnings by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12609
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/12833
- ci: don't cancel in-progress sync-master-validation runs by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12817
- Quarantine hygiene: remove every uncategorised test retry, and the sync defects they hid by @benaadams in https://github.com/NethermindEth/nethermind/pull/12727
- Fix
admin_addPeer/admin_addTrustedPeerdroppingpersistent=truefor already-known peers by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12818 - test: make decoder tests assert the decoded values by @benaadams in https://github.com/NethermindEth/nethermind/pull/12711
- fix(network): keep the static flag when the peer is already pooled by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12810
- test: give vacuous size-extension and hint-cache tests real expectations by @benaadams in https://github.com/NethermindEth/nethermind/pull/12710
- Fix flaky witness-capture bytecode test (tx pool head sync) by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12849
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/12834
- Restore best-suggested pointers for non-canonical post-merge levels on block tree load by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/12822
- feat(xdc): add the xdc/164 and xdc/165 wire protocols by @ak88 in https://github.com/NethermindEth/nethermind/pull/12814
- fix(docgen): honour System.Text.Json ignore conditions and property names by @dipkakwani in https://github.com/NethermindEth/nethermind/pull/12858
- Avoid ArrayPool.Shared-only finally blocks by @benaadams in https://github.com/NethermindEth/nethermind/pull/12865
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/12863
- fix(docgen): derive JSON-RPC docs from the serializer contract by @dipkakwani in https://github.com/NethermindEth/nethermind/pull/12868
- fix(sync): format SyncMode flags by @batrr in https://github.com/NethermindEth/nethermind/pull/12795
- Add timeout to create_a_runner in sync master validation by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12875
- Optimize flat-state snapshot compaction and harden SortedMergeDictionary builds by @benaadams in https://github.com/NethermindEth/nethermind/pull/12864
- Generate JSON-RPC docs for the EraE module by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12873
- Announce the stored range floor in BlockRangeUpdate instead of genesis by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12860
- fix(flat): restore the trie warmer negative cache without poisoning live reads by @AnkushinDaniil in https://github.com/NethermindEth/nethermind/pull/12877
- Raise mainnet ancient barriers to a 33024-epoch history window by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12808
- perf: accelerate EVM word byte swap on ARM64 by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12798
- Restore eth/68 blob violation handling by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12605
- Handle IPv6 enode text endpoints by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12678
- Surface EIP-2780 runtime OOG from eth_call by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12806
- Align debug_traceCall base fee with Geth by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12804
- Detect Geth genesis format independent of property order by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12784
- perf:
ColumnsDBminor fixes by @alexb5dh in https://github.com/NethermindEth/nethermind/pull/12831 - fix(xdc): serialize XDPoS_getLatestPoolStatus pool keys by @ak88 in https://github.com/NethermindEth/nethermind/pull/12878
- perf(core): accelerate Keccak with AVX-512VL and batched hashes by @benaadams in https://github.com/NethermindEth/nethermind/pull/12844
- perf(rpc): apply eth_call state overrides without merkleizing them by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12904
- fix(xdc): restore the XDCX special-transaction window on Apothem and mainnet by @ak88 in https://github.com/NethermindEth/nethermind/pull/12872
- fix(rpc): route browser POSTs past the trusted fast lane so CORS headers are emitted by @Khien97 in https://github.com/NethermindEth/nethermind/pull/12900
- fix(sync): record snap progress per backend by @batrr in https://github.com/NethermindEth/nethermind/pull/12857
- Reject deposit logs with noncanonical ABI offsets by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12895
- perf: Iterators pool for archive index by @alexb5dh in https://github.com/NethermindEth/nethermind/pull/12813
- build(zisk): bump Zisk to 1.1.0-alpha by @maximmenshikov in https://github.com/NethermindEth/nethermind/pull/12910
- feat(xdc): read XDPoS rewards as XDC amounts by @ak88 in https://github.com/NethermindEth/nethermind/pull/12852
- feat(xdc): reject blacklisted addresses on pool admission by @ak88 in https://github.com/NethermindEth/nethermind/pull/12879
- ci: pin Go to 1.26 in the sedge sync workflows by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12915
- ci: wait for the publish-docker run we dispatched, not any concurrent one by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12907
- Glamsterdam devnet 8 specific commits by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12719
- Add private eth_call corpus mode to the RPC benchmark workflow by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12704
- perf(evm): front the EVM call pools with a per-thread free list by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12905
- ci(bench): restore the amd64 benchmark runner and select it by input by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12933
- ci: add ZisK guest release workflow by @rubo in https://github.com/NethermindEth/nethermind/pull/12941
- feat(stateless): adopt tests-zkevm v0.8.2 and glamsterdam devnet-8 by @rubo in https://github.com/NethermindEth/nethermind/pull/12909
- fix(network): cap item counts on inbound RLP byte-list responses by @dipkakwani in https://github.com/NethermindEth/nethermind/pull/12914
- perf: remove per-hit atomics from the shared counter, cache and DB hot paths by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12870
- Stream snapshot download without storing the archive by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12862
- fix(history): publish the pruning boundary before reclaiming behind it by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12954
- ci(bench): stop auto-triggering RPC benchmarks on 'performance is good', shorten the corpus warm-up by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12949
- fix(optimism): validate the transaction offset table when decoding payloads by @dipkakwani in https://github.com/NethermindEth/nethermind/pull/12920
- fix(xdc): start the archive node at the XDPoS v2 switch block by @ak88 in https://github.com/NethermindEth/nethermind/pull/12917
- fix(evm): burn credited state gas on EIP-8037 exceptional halt by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12965
- Remove Taiko and Surge integration workflows by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12973
- ci: disable .NET package caching again by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12901
- ci: fix sedge build on the sync runners (Go proxy 403 on redirected module zips) by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12976
- perf(evm): skip redundant EVM memory zeroing on overwrites and fresh allocations by @benaadams in https://github.com/NethermindEth/nethermind/pull/12953
- Implement EIP-7805 (FOCIL) by @Marchhill in https://github.com/NethermindEth/nethermind/pull/8003
- Release native list buffer when construction fails by @benaadams in https://github.com/NethermindEth/nethermind/pull/12975
- Downgrade discovery rate-limiting logs to Trace by @ak88 in https://github.com/NethermindEth/nethermind/pull/12978
- fix(flat): isolate warmer misses and safely publish verified reads by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12951
- fix(estimateGas): return exact minimum for value transfers that create the recipient by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12971
- fix(jsonrpc): return gas-minimal empty access list under EIP-7981 by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12970
- fix(docgen): document nullable JSON-RPC result payloads (#12837) by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12866
- fix(docgen): probe member converters to document their real JSON kind by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12869
- Kute: replay captured JSON-RPC traces across a concurrency sweep by @benaadams in https://github.com/NethermindEth/nethermind/pull/12985
- perf(db): single-call RocksDB point reads via rocksdb_get_into_buffer by @benaadams in https://github.com/NethermindEth/nethermind/pull/12986
- fix(debug): honour the tracer's Execute↔Trace swap on the EIP-7928 BAL path by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12972
- fix(t8n): serialize receipt root/status as mutually exclusive by @hudem1 in https://github.com/NethermindEth/nethermind/pull/12867
- Update OP Superchain chains by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/12963
- Auto-update fast sync settings by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/12962
- fix(docgen): document stateDiff and admin_peers rpc response by @dipkakwani in https://github.com/NethermindEth/nethermind/pull/12892
- fix(optimism): correct protocol version V0 wire layout by @questfever in https://github.com/NethermindEth/nethermind/pull/12805
- Improve comment quality and flag comment slop during review by @stdevMac in https://github.com/NethermindEth/nethermind/pull/12781
- Add unit tests for IpcSocketMessageStream framing edge cases by @Khien97 in https://github.com/NethermindEth/nethermind/pull/12898
- Add sparse blob pool by @flcl42 in https://github.com/NethermindEth/nethermind/pull/11094
- Use a conservative block-body transaction count limit by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12990
- perf(state): unswitch tracing branches in commit loops by @benaadams in https://github.com/NethermindEth/nethermind/pull/12998
- perf: streamline hot-path loops and collection updates by @benaadams in https://github.com/NethermindEth/nethermind/pull/13000
- Support ENR bootnodes in discv4 by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12992
- Fix flaky NewPayloadV5 BAL golden-hash test by @benaadams in https://github.com/NethermindEth/nethermind/pull/13004
- fix(simulate): flaky eth_simulateV1 parent when a block body write is pending by @batrr in https://github.com/NethermindEth/nethermind/pull/12984
- Make stale blob replacement test deterministic by @benaadams in https://github.com/NethermindEth/nethermind/pull/13006
- Fix simulation head reset during deferred block persistence by @benaadams in https://github.com/NethermindEth/nethermind/pull/13003
- ci(hive): drop testing_buildBlockV1 build-block tests from known failures by @hudem1 in https://github.com/NethermindEth/nethermind/pull/13005
- fix(snap): stop a malformed AccountRange from stranding a sync partition by @dipkakwani in https://github.com/NethermindEth/nethermind/pull/12979
- Remove EIP-7610 support by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12935
- Fix RLPx/Snappy frame decoding correctness and DoS issues by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12896
- refactor(xdc): remove unused XDPoS config parameters by @ak88 in https://github.com/NethermindEth/nethermind/pull/13008
- fix(xdc): resolve epochs below the fast sync pivot without their snapshots by @ak88 in https://github.com/NethermindEth/nethermind/pull/12974
- Fix peer update timer shutdown race by @benaadams in https://github.com/NethermindEth/nethermind/pull/13010
- Fix false 'header < body' block tree corruption after ungraceful restart while beacon syncing by @kamilchodola in https://github.com/NethermindEth/nethermind/pull/12876
- fix(eth72): restore announced cell mask and stop charging local backpressure to peers by @LukaszRozmej in https://github.com/NethermindEth/nethermind/pull/13007
- Return INVALID for a malformed block access list envelope by @nerolation in https://github.com/NethermindEth/nethermind/pull/13012
- chore(ci): enable stateless tests for glamsterdam devnet-8 by @rubo in https://github.com/NethermindEth/nethermind/pull/13015
- build(zisk): bump zisk toolchain image and ZiskOS runtime by @maximmenshikov in https://github.com/NethermindEth/nethermind/pull/13002
- chore: Update Dockerfiles by @core-repository-dispatch-app[bot] in https://github.com/NethermindEth/nethermind/pull/13017
- Preserve RIPEMD touch across nested reverts by @flcl42 in https://github.com/NethermindEth/nethermind/pull/13016
- Add standalone bootnode tool by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12601
- feat(flat-history): windowed and per-address archive on the flat database by @svlachakis in https://github.com/NethermindEth/nethermind/pull/12943
- ci: migrate sync-test runners from Linode to GCP Spot by @cbermudez97 in https://github.com/NethermindEth/nethermind/pull/12789
- ci: give each sync network its own create/sync/teardown lifecycle by @cbermudez97 in https://github.com/NethermindEth/nethermind/pull/12936
- Revalidate the txpool across fork boundaries by @flcl42 in https://github.com/NethermindEth/nethermind/pull/12755
- ci: run gas benchmarks on a GCP spot runner by @cbermudez97 in https://github.com/NethermindEth/nethermind/pull/13013
- perf(ssz): back stateless public keys with an inline-array vector by @Marchhill in https://github.com/NethermindEth/nethermind/pull/12928
- Update release/2.0.0-rc with #13036, #13038, #13046 by @stdevMac in https://github.com/NethermindEth/nethermind/pull/13081
New Contributors
- @morre95 made their first contribution in #12002
- @nmjustinchan made their first contribution in #10778
- @modernzju made their first contribution in #12073
- @blackflytech made their first contribution in #12174
- @pengqima made their first contribution in #12465
- @Khien97 made their first contribution in https://github.com/NethermindEth/nethermind/pull/12900
- @questfever made their first contribution in https://github.com/NethermindEth/nethermind/pull/12805
- @nerolation made their first contribution in https://github.com/NethermindEth/nethermind/pull/13012
Full Changelog: 1.39.3...2.0.0-rc





