Release notes
This release focuses on node robustness, Flat DB durability — alongside the eth/71 wire protocol, a reworked discovery stack, a large JSON-RPC features-and-correctness batch, continued Block-level Access Lists (EIP-7928) maturation, and a broad round of EVM, precompile, and state performance work.
OP Karst reminder: the OP Karst hardfork (shipped in 1.38.1 and included here) activates on OP Mainnet: Wed, Jul 8, 2026 at 16:00:01 UTC. OP Stack operators must be on 1.38.1 or later before then.
Overview
Full diff: https://github.com/NethermindEth/nethermind/compare/1.38.1…1.39.0
337 changes since 1.38.1. Highlights include restart-safety fixes for header sync and pivot selection, a Flat DB durability overhaul, the eth/71 wire protocol, a rework of discv4 discovery, SSZ-REST transport for the Engine API, eight new JSON-RPC methods with a large correctness batch, EIP-7928 (BALs) devnet-7 support with major performance work, EraE fixes, and chain-specific improvements for XDC, Taiko, Optimism, and Arbitrum.
Highlights
Sync & restart safety
- Recover header sync after a lost chain level on unclean shutdown (#11994, fixes #8029)
- Unwedge
UpdatingPivotfor nodes restarted before the first pivot update (#11995) - Flush all column families in
ColumnsDb.Flush— makes column-DB writes (incl. Flat DB) durable across restarts (#12223, fixes #11993) - Refresh snap pivot instead of punishing the only peer (#11569, fixes #6803); support infinite pivot-update attempts via
1(#11600, fixes #5992) - Fix shutdown race in SnapProvider (#11807); accept receipts with zero bloom from peers (#11743); prevent negative RequestSize crash when the beacon pivot advances mid-sync (#11478)
- New
Sync.StaticSnapPivotoption for fixed-pivot snap sync from a frozen peer (#11943)
Flat DB (experimental, opt-in) durability & hardening
- Crash-durable snap finalize with a cheap restart wipe (#11997); preserve format markers when clearing the flat DB (#11996)
- Force-persist the head-reachable fork instead of an arbitrary one (#11967); persistence cache (#12035); prune orphaned non-canonical snapshots on persist (#11739)
- RLP-wrap storage slot values behind a versioned flag (#11909) with legacy-DB detection (#11975); improved state-backend compatibility and auto-detection (#11911, #11404)
- Stagger compaction per instance (#11756) with a
CompactionOffsetconfig to pin the schedule (#11958)
Networking & discovery
- eth/71 wire protocol (#10844); eth/70 hardening (#11456, #11615, #11754); eth/69 BlockRangeUpdate validation (#11796)
- discv4 rework (#8616) and discovery now defaults to V4 (#11614); faster discv4 timeout handling (#11859)
- Disconnect peers on unknown protocol message type (#11266); reduced per-message and per-peer allocations across Eth, Snap, and RLPx (#11639)
JSON-RPC
- New methods:
eth_getHeaderByHash/eth_getHeaderByNumber(#11531),eth_getRawTransactionByBlockHashAndIndex/eth_getRawTransactionByBlockNumberAndIndex/eth_sendRawTransactionSync(#11521),eth_signTransaction(#11517),eth_baseFee(#11522),debug_intermediateRoots(#11524),eth_capabilities(#11438),proof_call(#11732),proof_getProofWithMeta(#11498) - Streaming responses for
debug_*andtrace_*(#11693, #11755, #11781) with a synchronous-wait fix (#12006) - Correctness batch:
eth_estimateGaszero/revert semantics (#11780, #11783), reject EIP-1898 blockHash+blockNumber (#11777), reject oversized blob calls (#11782),eth_simulateV1fixes (#11506, #11665, #11841),eth_createAccessListreverted-frame accesses (#11431), omit non-specerrorfield from receipts (#11454), zero hashes for absenteth_getProofaccounts (#11912) - Route
eth_callthrough a shareable tx-processor pool (#11548); drain in-flight requests before disposing databases on shutdown (#11845)
Engine API
- SSZ-REST transport (#11301) with Accept-negotiation fix (#11856) and capabilities-warning fix (#12176)
- Fix forkchoice validation order (#11681); validate FCU safe/finalized by ancestry when main-chain markers are outdated (#11746); guard against null safe/finalized hash (#12110)
- Bound dangling block-cache growth (#11426); capture bad blocks at pre-process rejection stages (#11696)
Block-level Access Lists (EIP-7928)
- BAL devnet 6 and devnet 7 support (#11436, #11561) incl. the EIP-8037 intrinsic-gas cap (#11635, #11579)
- Network encoding fix (#11950), RLP fix (#11861), validation refactor (#11878), activation only when needed (#11795)
- Performance series: verify-only fast path (#11659), account-presence bitmap (#11661), single-pass build (#11676), reduced recording overhead on warm reads (#11905), allocation cuts (#11702, #11725)
Performance
- Fast ETH-transfer execution path (#11804); TrieWarmer reworked onto ThreadPool (#11848); tightened
CALLhot path with EIP-7702 delegation-to-precompile fix (#11547) - Precompiles: BN254 pairing optimizations (#11916, #11888), BLS G1MSM decoding (#11889), per-thread RIPEMD-160 (#11890), ModExp
int32overflow fix (#11692) - State: storage-trie warm-up driven from writes (#11409), RocksDB native memory reported to GC (#11453), lock-free
ChainHeadSpecProvider(#11618)
Chain-specific
- XDC: XDPoS RPC module (#10553), rewards upgrade (#11016), HotStuff and QC-manager refactors (#11711, #11644), snapshot recovery (#11602), discovery (#11527), sync fixes
- Taiko: Unzen scheduled on Taiko Hoodi (#11977) with zk-gas recalibrations (#11749, #11896, #11940); beacon-sync deadlock fix (#11648); engine payload aligned with alethia-reth (#11776)
- Optimism: OP Karst fork (#11917) and Superchain registry refresh with Base removal (#11655, #11852) — already shipped to OP operators in 1.38.1
- Arbitrum groundwork: ArbOS 60 multi-gas constraints (#10765) and EVM extension points
- zkEVM/stateless: migration to zkVM/SSZ standards (#11481, #11625), EEST stateless-execution tests (#11908), intrinsic zk gas (#11584)
Other notable
- EraE (EIP-4444) fixes and spec updates (#11727, #11771, #11772, #11928)
- Structured console logging via
-logging-format(#11610); non-default config values shown at startup (#11523); health UI behind a reverse proxy (#11946) - StatsAnalyzer plugin (#7345, #11766)
⚠️ Breaking / behavior changes
- Legacy
BloomStorageremoved (#11906) — the bloom-filter index database and its configuration are gone; log queries rely on the current log-index path. - Discovery defaults to V4 (#11614).
- Per-method JSON-RPC metrics are now enabled by default (#11494).
- Non-spec
errorfield removed from transaction receipts in JSON-RPC responses (#11454). - IPC socket is restricted to owner-only permissions when configured (#9449).
What’s Changed
-
Add NETH004 analyzer banning ConcurrentDictionary.Keys/.Values by @asdacap in #11462
-
fix: prevent negative RequestSize crash when beacon pivot destination advances mid-sync by @asdacap in #11478
-
feat(zkevm): Enable BAL in stateless execution by @rubo in #11505
-
test: regression tests for #9002 - barrier decrease after partial sync leaves feed stuck by @divi2806 in #11483
-
perf: report BloomFilter unmanaged allocation to GC by @asdacap in #11503
-
fix: enable EnablePerMethodMetrics by default by @deffrian in #11494
-
chore: Update dependencies by @benaadams in #11512
-
fix: drop buffered frame bytes on
FrameQueue.Clearby @grubbyTimes in #11510 -
perf(state): drive storage trie warm-up from writes via HintSet by @asdacap in #11409
-
feat: BAL recorder plugin — record and replay block access lists for prewarming benchmarks by @asdacap in #11276
-
fix(ReceiptForRpc): omit non-spec
errorfield from receipt JSON-RPC responses by @manusw7 in #11454 -
fixed half-empty trace result by @DarkLord017 in #11466
-
Bal devnet 6 by @benaadams in #11436
-
fix: stabilize ParallelUnbalancedWork fault propagation + flaky engine tests by @LukaszRozmej in #11534
-
Eliminate ForcedNumberConversion boxing on set by @benaadams in #11536
-
RPC: add
eth_getHeaderByHash,eth_getHeaderByNumberby @svlachakis in #11531 -
Return remainder buffer to pool in KeccakHash.UpdateFinalTo by @benaadams in #11532
-
Bump up the version to 1.39.0-unstable by @core-repository-dispatch-app [bot] in #11502
-
fix(test): relax For_WhenWorkerFaults bound to range/2 for [no-intrinsics] by @LukaszRozmej in #11537
-
docs(agents): self-documenting code +
/ guidance by @LukaszRozmej in #11544
-
ci: split build from test to lower peak memory; keep swap by @benaadams in #11549
-
feat(merge): add SSZ-REST transport for Engine-API by @Dyslex7c in #11301
-
Make RefundOnContractCollision overridable for Arbitrum plugin needs by @wurdum in #11554
-
docs(agents): guideline for avoiding test duplication by @LukaszRozmej in #11546
-
fix: PoW re-sync downloads already processed blocks by @batrr in #11514
-
fix: charge spawn estimate for CREATE/CREATE2 post-trace bail by @Gohnnyman in #11555
-
Gate batch lookup by network by @jmadibekov in #11556
-
ci: add nightly Docker image build by @kamilchodola in #11559
-
perf(evm): tighten CALL hot path; fix EIP-7702 delegation-to-precompile semantics by @benaadams in #11547
-
RPC: add
eth_getRawTransactionByBlockHashAndIndexð_getRawTransactionByBlockNumberAndIndexð_sendRawTransactionSyncby @svlachakis in #11521 -
feat(config): show non-default values on startup by @obchain in #11523
-
fix(eth_simulateV1): preserve custom block header type by @BZO95 in #11506
-
fix(eth_createAccessList): preserve reverted-frame accesses and exclude precompiles by @manusw7 in #11431
-
test: stabilize getPayloadV1 improving-blocks and Simple_test_sync by @LukaszRozmej in #11568
-
Bal devnet 7 by @benaadams in #11561
-
fix(rpc): return unavailable for missing trie nodes by @BZO95 in #11564
-
RPC: add
eth_signTransactionby @svlachakis in #11517 -
ci: add fork-author guard to evm-opcode-benchmark-diff workflow by @bshastry in #11576
-
eth_signimprovemetns ð_accountis implemented flag fix by @svlachakis in #11574 -
Update .NET dependencies to 10.0.8 by @benaadams in #11581
-
perf(jsonrpc): route eth_call through shareable tx processor pool by @svlachakis in #11548
-
chore: Update Dockerfiles by @core-repository-dispatch-app [bot] in #11582
-
Align EIP-8037 gas accounting with BAL tests v7.1.0 by @benaadams in #11579
-
Update BAL pyspec fixtures to v7.1.1 by @benaadams in #11595
-
eth_signTransactioneliminate allocations & improvements by @svlachakis in #11587 -
Activate Unzen on Taiko Hoodi by @jmadibekov in #11601
-
Absent system acc is not created on touch by @flcl42 in #11575
-
Make InstructionSelfDestruct public to be reused in Arbitrum by @wurdum in #11605
-
Fork override trace block by @DarkLord017 in #11493
-
Make AddSelfDestructLog available for the use in Arbitrum plugin by @wurdum in #11613
-
Fix eth_syncing at beacon sync pivot by @jmadibekov in #11594
-
feat(rpc): add debug_intermediateRoots by @0xDevNinja in #11524
-
feat(eth-rpc): implement
eth_baseFee, returning next block base fee by @wjmelements in #11522 -
fix(trace): evaluate TraceStore filter fallback eagerly by @BZO95 in #11583
-
fix(snap-sync): refresh pivot instead of punishing the only peer (#6803) by @0xDevNinja in #11569
-
feat(sync): support infinite pivot-update attempts via -1 (#5992) by @0xDevNinja in #11600
-
feat: intrinsic zk gas by @Gohnnyman in #11584
-
Default Discovery to V4 by @benaadams in #11614
-
fix(flat-db): skip ImportFlatDb when pruning trie state lacks head root by @asdacap in #11422
-
feat(init): auto-detect active state backend at startup by @asdacap in #11404
-
Add NETH005 analyzer: redundant Span
-
Add new default for gnosis and gnosis archive config by @stdevMac in #11269
-
add checks for empty auth and create contract for 7702 by @DarkLord017 in #11606
-
Guard subscription args length before JSON re-parsing by @Keemosty12 in #11637
-
Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #11632
-
perf(blockchain): make ChainHeadSpecProvider lock-free by @obchain in #11618
-
Reduce per-message and per-peer allocations across Eth, Snap, RLPx, and sort hot paths by @benaadams in #11639
-
Enable Zisk 0.18 support by @maximmenshikov in #11645
-
Merge.Plugin: make testing_commitBlockV1 txRlps nullable by @MysticRyuujin in #11649
-
perf(evm): pool destroy-list buffer in TransactionProcessor by @LukaszRozmej in #11657
-
fix(zkevm): Fix legacy receipt storage registration by @rubo in #11662
-
fix(trie test): de-flake Will_Persist_ReCommittedPersistedNode_FromCommitBuffer by @LukaszRozmej in #11650
-
RPC: add blob checks in estimation by @DarkLord017 in #11630
-
Optimize Optimism receipt lookup in block RPC by @apetro2 in #11622
-
fix(rpc): emit spec message for eth_simulateV1 -38020 by @0xDevNinja in #11665
-
fix: zk-gas validation by @Gohnnyman in #11666
-
fix(devnet-7): reject txs exceeding EIP-8037 intrinsic gas cap; skip BAL no-op code by @benaadams in #11635
-
Bal devnet 7 benchmarks by @Marchhill in #11573
-
feat: unzen hoodi removed by @Gohnnyman in #11682
-
Fix Taiko sync deadlock after first beacon-sync by @jmadibekov in #11648
-
feat: upstream changes for ArbOS 60 multi-gas constraints by @AnkushinDaniil in #10765
-
Stats Analyzer Plugin by @SiddharthV1 in #7345
-
perf(bal): verify-only fast path — skip end-of-block encode + Keccak by @LukaszRozmej in #11659
-
Fix FCU validation order by @marcindsobczak in #11681
-
fix(rlpx): drop racy OnSessionDisconnected fallback in shutdown by @LukaszRozmej in #11688
-
Fix geth-style genesis BPOs; fully consider slot number by @flcl42 in #11689
-
Wallet Refactoring by @svlachakis in #11664
-
feat: add gas-benchmark skill for automated repricing benchmarks by @kamilchodola in #11526
-
fix(sync test): de-flake two SynchronizerTests on Windows by @LukaszRozmej in #11683
-
perf(kute): compile JSON-RPC method filter regex once by @obchain in #11667
-
Avoid bucket snapshot allocation in BalanceTooLowFilter by @jschnelder in #11686
-
perf(bal): account-presence bitmap + storage_reads on column index — skip-merge by @LukaszRozmej in #11661
-
Add block building simulator tool by @dmitriy-b in #10044
-
Make RefundOnContractCollision available for override in Arbitrum plugin by @wurdum in #11698
-
feat(chainspec): support shanghai/cancun/prague/osaka hardfork labels by @obchain in #11553
-
Add agent rules: git, comment styles, linting, ArrayPooList by @Marchhill in #11687
-
refactor: rework AccountProofCollector to use path-based traversal by @sashaphmn in #11677
-
feat(zkevm): Migrate stateless I/O to the SSZ standard by @rubo in #11625
-
fix(blockchain): defer main-chain events until write batch is flushed by @obchain in #11640
-
perf(bal): cache wire BAL hash on ReadOnlyBlockAccessList by @LukaszRozmej in #11668
-
perf(bal): fuse Build() walks into a single pass by @LukaszRozmej in #11676
-
fix(txpool): fix stale pending transaction snapshot after head update by @bobtajson in #10604
-
Gate gas benchmark workflow for fork PRs by @lmorett1 in #11684
-
Add tests for skipping reorg only if ancestor of finalised block by @Marchhill in #11439
-
fix(trie): rate-limit “Unable to completely prune persisted nodes” warning by @obchain in #11703
-
perf(bal): replace SortedDictionary/SortedSet aggregates with Dictionary/HashSet by @LukaszRozmej in #11672
-
Simplify pruning cutoff & separate for BALs by @Marchhill in #11701
-
Add EthStats protocol message handling by @benaadams in #11652
-
Use generic decoding results for block and tx; remove IRlpObjectDecoder; single RlpDecoder base class and interface by @flcl42 in #10759
-
Make RefundOnTopLevelHalt overridable for plugin extension by @jschnelder in #11713
-
Reduce allocations BAL generation by @Marchhill in #11702
-
chore(ci): bump remaining actions/create-github-app-token to v3 by @obchain in #11705
-
feat(runner): add –logging-format CLI for structured console logs by @obchain in #11610
-
Alchemy - Code Fix by @svlachakis in #11714
-
Merge.Plugin: skip duplicate processing in testing_commitBlockV1 by @AnkushinDaniil in #11593
-
fix: use enabled parameter in EthStatsPluginTests by @Lubov66 in #11706
-
fix(eth/70): reject null receipt payloads by @BZO95 in #11615
-
cleanup - Missed review for 11714 by @svlachakis in #11722
-
chore: Remove redundant command line option by @rubo in #11723
-
Optimize guards by @benaadams in #11716
-
Enforce IDE0028 (use collection initializers/expressions) in linting by @Marchhill in #11708
-
feat: add SkipMetricsTracking property to DbSettings by @cbermudez97 in #11515
-
perf(bal): cut allocations on BAL generate/validate paths by @LukaszRozmej in #11725
-
RPC: Debug* streaming approach by @svlachakis in #11693
-
perf(db): account native rocksdb memory via GC.AddMemoryPressure by @asdacap in #11453
-
Move BAL spec-switch and BAL attachment to the branch processor for BalRecorder plugin by @asdacap in #11700
-
fix: satisfy IDE0028 in FakeRecordedBalStore by @asdacap in #11738
-
Fix DbTracker repeatedly logging ObjectDisposedException after disposal by @stdevMac in #11720
-
Fix Geth genesis deposit contract fallback to use zero address by @smartprogrammer93 in #11740
-
Fix flaky TransactionReceiptsSubscription tests + observe subscription worker faults by @smartprogrammer93 in #11741
-
Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #11734
-
test: bump executePayloadV1_accepts_already_known_block timeout to 60s by @LukaszRozmej in #11731
-
fix(sync): accept receipts with zero bloom from peers by @obchain in #11743
-
test(sync): un-ignore Can_cancel_seal_validation by @0xDevNinja in #11744
-
test: improve test coverage in Nethermind.State.Flat by @asdacap in #11695
-
Validate FCU safe/finalized by ancestry when main-chain markers are outdated by @marcindsobczak in #11746
-
Add validation for nested ABI array depth by @Radovenchyk in #11726
-
feat: enhance gas benchmark workflow with comments for start and results by @cbermudez97 in #10350
-
refactor: take ReadOnlySpan
-
Add NETH004: enforce RunContinuationsAsynchronously on TaskCompletionSource by @asdacap in #11465
-
refactor(core): centralize EIP-7702 SetCode shape checks by @0xDevNinja in #11641
-
Disconnect on unknown protocol message type by @LukaszRozmej in #11266
-
feat(Core): introduce NativeMemoryList
/ NativeMemoryListRef and public ValueAddress by @asdacap in #11758
-
feat(FlatDB): stagger compaction per-instance with random offset by @asdacap in #11756
-
Fix statsanalyzer plugin BAL rename by @Marchhill in #11760
-
consensus: standardize slow block JSON output for cross-client metrics by @Marchhill in #11400
-
TryCalculateFeePerBlobGas as a decorator for blobbasefeeoverride by @DarkLord017 in #11717
-
Add StatsAnalyzer to build pipeline by @Marchhill in #11766
-
Improve JsonRpc plumbing by @benaadams in #11697
-
eth/70: stop response early when block has txs but no receipts by @stdevMac in #11754
-
RPC: trace_* streaming approach by @svlachakis in #11755
-
chore: enforce IDE0130 (namespace matches folder structure) by @asdacap in #11762
-
Refactor Json Streaming by @benaadams in #11781
-
EraE - fixes by @svlachakis in #11771
-
JSONRPC csproj fix by @svlachakis in #11773
-
feat: add
proof_getProofWithMetaJSON-RPC method by @AnkushinDaniil in #11498 -
Change BAL DB key by @Marchhill in #11761
-
ci: skip Claude review autorun on fork PRs by @peter941221 in #11789
-
Fix/eth69 blockrangeupdate validation by @LukaszRozmej in #11796
-
test: fix flaky KademliaNodeSource ping assertions by @LukaszRozmej in #11800
-
LogIndex fixes by @svlachakis in #11791
-
WriteBatch fix by @svlachakis in #11793
-
Peers fix by @svlachakis in #11797
-
personal_signfix by @svlachakis in #11774 -
EraE - ensure validated fix by @svlachakis in #11772
-
Align Taiko engine payload with alethia-reth by @jmadibekov in #11776
-
Boot nodes to debug log by @benaadams in #11805
-
Fix shutdown race in SnapProvider PLINQ (closes #11806) by @stdevMac in #11807
-
EIP-7778 gas fix by @svlachakis in #11794
-
rpc: reject EIP-1898 blockHash+blockNumber by @peter941221 in #11777
-
rpc: treat zero estimateGas as unset by @peter941221 in #11780
-
rpc: reject oversized blob calls by @peter941221 in #11782
-
Build fix by @svlachakis in #11819
-
fix(tests): pin Microsoft.Testing.Platform to fix flaky CI by @batrr in #11816
-
ValueHash256Converter fix by @svlachakis in #11820
-
perf(state): invoke HintBal from BlockCachePreWarmer to warm BAL slots by @asdacap in #11551
-
fix(blockchain): bound ClearStaleMarkersAbove scan and flush batch periodically by @LukaszRozmej in #11818
-
Prunning - Regression test by @svlachakis in #11817
-
feat(rpc): add eth_capabilities method for routing capability discovery by @divi2806 in #11438
-
ZeroFrameMerger fix by @svlachakis in #11821
-
test(evm): un-ignore Trace_invalid_jump{,i}_exception by @0xDevNinja in #11799
-
feat(snap): cap Proofs count at 256 on inbound snap responses by @asdacap in #11786
-
Fix FlatSnapServer trie node response limit by @bshastry in #11809
-
test: lock trimmed eth_getProof storage values by @peter941221 in #11784
-
zk-logging by @benaadams in #11757
-
fix(nethtest): BLOCKHASH recency window in state-test runner by @felix314159 in #11844
-
fix(zkevm): use explicit hash dictionary comparers by @Ahjan1999 in #11721
-
Fix flaky TransactionReceiptsSubscription tests (timeout under parallelism) by @smartprogrammer93 in #11849
-
Flakiness Fixes - Tests & CI by @svlachakis in #11850
-
Test EIP-8037 code-deposit halt state gas unwind by @BZO95 in #11710
-
Rework TrieWarmer to ThreadPool processors by @benaadams in #11848
-
EIP-7928 - RLP fix by @svlachakis in #11861
-
Change PR label condition for benchmark job by @kamilchodola in #11851
-
Networking - fix flaky test by @svlachakis in #11870
-
perf(discovery): replace timeout exceptions with value results in discv4 by @benaadams in #11859
-
EIP-7928 - followup by @svlachakis in #11869
-
test(evm): cover CREATE2 code-deposit gas failure by @Ahjan1999 in #11759
-
rpc: preserve estimateGas revert semantics by @peter941221 in #11783
-
ReceiptsMigration fix by @svlachakis in #11822
-
perf(bal): build BAL validation index on the sequential execution path by @Marchhill in #11873
-
return error on empty blockstatecalls by @DarkLord017 in #11858
-
Remove obsolete NonValidatorNode receipt/body enforcement check by @MarekM25 in #11790
-
fix(engine): add regression coverage for NewPayloadHandler task cleanup by @peter941221 in #11803
-
fix: EnrTreeParser tests to cover enr: leaves and enrtree:// links by @MozirDmitriy in #9701
-
fix(merge): bound dangling block cache growth by @JayeTurn in #11426
-
Restrict IPC socket to owner-only mode if set by @LukaszRozmej in #9449
-
fix: TransientResource disposal leaks and missing pruning in PersistenceManager by @asdacap in #10952
-
simulate: remove prepare-state enumeration churn by @peter941221 in #11838
-
fix(merge): capture bad blocks at pre-process rejection stages by @0xDevNinja in #11696
-
fix: fix race condition in FullPruningDb read methods by @kseniaeremekno in #10920
-
perf(merge-sync): cache PosForwardHeaderProvider.GetBlockHeaders by @0xDevNinja in #11617
-
Fast Eth Transfer by @benaadams in #11804
-
Recalibrate Unzen zk gas multipliers by @jmadibekov in #11749
-
JsonRpc: default omitted block to latest for eth_getStorageValues by @MysticRyuujin in #11883
-
Refactor BAL validation by @Marchhill in #11878
-
fix(ui): assign slice result to txsToAdd array by @dizer-ti in #10724
-
CI - more fixes by @svlachakis in #11868
-
rpc: reject EIP-1474 invalid balance params by @peter941221 in #11779
-
fix(hive): fix snap sync nethermind-to-nethermind test by @newmanifold in #11022
-
fix(test): de-flake SynchronizerTests + Cannot_produce_bad_blocks under CI load by @svlachakis in #11881
-
perf: reuse ancestor headers in UnclesValidator by @yyhrnk in #9930
-
Optimize engine_getPayloadBodiesByHash/ByRange by @benaadams in #11863
-
fix(rpc): drain in-flight JSON-RPC requests before disposing databases by @obchain in #11845
-
diag: support periodic dotMemory snapshots via env var by @kamilchodola in #11843
-
test(snap): dispose AccountRangeMessage in snap tests by @JayeTurn in #11244
-
perf(bal): reduce per-access BAL/state recording overhead on warm reads by @benaadams in #11905
-
Apply Unzen zk gas spec updates by @jmadibekov in #11896
-
feat: add ProgressReporter abstraction by @berZKerk in #9146
-
fix: add ReadOnlySpan
overload for long BE decode by @Galoretka in #9826
-
fix(test runner): robustness fix for fuzzing by @felix314159 in #11913
-
refactor: extract block producer construction into DI-registered factories by @asdacap in #11893
-
Syncrhonization - CI fix by @svlachakis in #11914
-
Improve flat state backend compatibility by @asdacap in #11911
-
FundsDistributor fix by @svlachakis in #11886
-
Auto-update fast sync settings by @core-repository-dispatch-app [bot] in #11923
-
perf(state): drop LINQ overhead in UpdateRootHashesMultiThread setup by @LukaszRozmej in #11929
-
Update OP Superchain chains by @core-repository-dispatch-app [bot] in #11922
-
fix(cache): preserve future-epoch entries during concurrent Clear() by @smartprogrammer93 in #11919
-
EraE - ere files spec changes by @svlachakis in #11928
-
perf(threading): ManualResetEventSlim for ParallelUnbalancedWork completion signal by @kamilchodola in #11885
-
XDC : XDPoS Rpc Module by @Demuirgos in #10553
-
Align buy gas to be geth alike by @DarkLord017 in #11865
-
fix(FlatDB): prune orphaned non-canonical snapshots on persist by @asdacap in #11739
-
test: bump timeouts on two flaky timing-bounded tests by @LukaszRozmej in #11933
-
fix: enforce even-length hex validation for JSON converter by @manusw7 in #11876
-
rpc: zero hashes for absent eth_getProof accounts by @peter941221 in #11912
-
feat(zkevm): Add EEST for stateless execution by @rubo in #11908
-
test: lock debug_traceCall zero-gas semantics by @peter941221 in #11900
-
test: lock trace_callMany gas cap defaults by @peter941221 in #11897
-
refactor(bloomstorage): removed BloomStorage and related dependencies by @satyvm in #11906
-
Optimize BN254 multi-pair pairing checks by @kamilchodola in #11916
-
perf(evm): avoid per-CREATE RlpStream allocation in contract-address derivation by @kamilchodola in #11892
-
feat: Reset Masaya zk gas schedule, tidy zk gas surface by @Gohnnyman in #11940
-
simulate: treat gas cap zero as uncapped budget by @peter941221 in #11841
-
perf(bls): reduce allocations and wasted clears in G1MSM point decoding by @kamilchodola in #11889
-
fix(build): pass DOTNET_HOST_PATH to JsonRpc generator Exec by @LukaszRozmej in #11944
-
perf(bn254): skip redundant infinity re-scan in pairing loop by @kamilchodola in #11888
-
perf(crypto): reuse the RIPEMD-160 digest per thread by @kamilchodola in #11890
-
chore: Update Dockerfiles by @core-repository-dispatch-app [bot] in #11953
-
Increase RLP block withdrawals limit to 64k by @alexb5dh in #11955
-
test: wrap independent assertions in Assert.EnterMultipleScope by @LukaszRozmej in #11942
-
Serve health UI and data/events behind a reverse proxy by @wurdum in #11946
-
feat(FlatDB): add CompactionOffset config to pin the compaction schedule by @kamilchodola in #11958
-
Speed up a bit fixed-length hex decoding by @flcl42 in #11956
-
Fix EngineApiProxy rejecting its own blocks: forward EIP-7685 executionRequests in synthetic newPayload by @stdevMac in #11960
-
test: harden SyncPeerPool peer-init wait against ARM CI flake by @LukaszRozmej in #11964
-
chore: Update Dockerfiles by @core-repository-dispatch-app [bot] in #11962
-
Tools for RPC testing: generator and monitor by @alexb5dh in #11862
-
feat(sync): add Sync.StaticSnapPivot for fixed-pivot snap sync from a frozen peer by @AnkushinDaniil in #11943
-
feat(flatdb): RLP-wrap storage slot values behind a versioned flag by @asdacap in #11909
-
feat(rpc): implement
proof_callfor stateless call verification by @smartprogrammer93 in #11732 -
fix(test): sign state-test transactions instead of using a placeholder signature by @felix314159 in #11969
-
fix(flatdb): detect legacy raw slot DBs by slot presence, not the Layout marker by @asdacap in #11975
-
ci: chunk Synchronization.Test on macOS to avoid 15-min timeout by @LukaszRozmej in #11978
-
Schedule Unzen fork on Taiko Hoodi by @jmadibekov in #11977
-
debug: treat zero traceCallMany gas as unset by @peter941221 in #11830
-
feat(evm): add pow2 zkVM memory allocation path by @maximmenshikov in #11974
-
Slotnum fix by @Marchhill in #11968
-
Fix SSZ Accept negotiation to inspect every media range by @benaadams in #11856
-
fix : do not delete empty accounts on stateoverride(eip 7610) by @DarkLord017 in #11854
-
fix(rpc): unsafe
ValueTasksynchronous wait during streaming by @alexb5dh in #12006 -
fix(flatdb): preserve format markers when clearing the flat DB by @asdacap in #11996
-
Flat: force-persist the head-reachable fork instead of an arbitrary one by @asdacap in #11967
-
fix(flatdb): make snap finalize crash-durable and the restart wipe cheap by @asdacap in #11997
-
Flat - Persistence Cache by @svlachakis in #12035
-
fix: guard ForkChoiceUpdated against null safe/finalized hash by @asdacap in #12110
-
fix(engine): exclude SSZ-REST paths from missing-capabilities warning by @LukaszRozmej in #12176
-
fix(sync): recover header sync after a lost chain level on unclean shutdown (#8029) by @stdevMac in #11994
-
fix(db): flush all column families in ColumnsDb.Flush by @asdacap in #12223
-
fix(sync): unwedge UpdatingPivot for nodes restarted before the first pivot update by @stdevMac in #11995
New Contributors
- @wjmelements made their first contribution in #11522
- @apetro2 made their first contribution in #11622
- @jschnelder made their first contribution in #11686
- @sashaphmn made their first contribution in #11677
- @lmorett1 made their first contribution in #11684
- @Lubov66 made their first contribution in #11706
- @Radovenchyk made their first contribution in #11726
- @peter941221 made their first contribution in #11789
- @berZKerk made their first contribution in #9146
- @satyvm made their first contribution in #11906
Full Changelog: https://github.com/NethermindEth/nethermind/compare/1.38.1…1.39.0
Build signatures
The packages are signed with the following OpenPGP key: AD12 7976 5093 C675 9CD8 A400 24A7 7461 6F1E 617E
Build signatures
The packages are signed with the following OpenPGP key: AD12 7976 5093 C675 9CD8 A400 24A7 7461 6F1E 617E