Merge op-reth/v2.4.2 into release/2.x - #14
Merged
Conversation
…mism#21878) Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
…i-batch) (ethereum-optimism#21918) Co-authored-by: Claude <[email protected]>
…um-optimism#21931) Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
Signed-off-by: Yashvardhan Kukreja <[email protected]>
…mism#21934) Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: Claude <[email protected]>
…quencing" and "Choose your node stack" (ethereum-optimism#21923) Co-authored-by: Claude <[email protected]>
ethereum-optimism#21806) Co-authored-by: Claude Opus 4.8 <[email protected]>
…um-optimism#21907) Co-authored-by: Claude Fable 5 <[email protected]>
…in (ethereum-optimism#21956) Co-authored-by: Claude Fable 5 <[email protected]>
Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
…deployer (A4 batch 2) (ethereum-optimism#21917) Co-authored-by: Claude <[email protected]>
…21611) Co-authored-by: IamFlux <[email protected]>
…m-source (ethereum-optimism#21924) Co-authored-by: Claude <[email protected]>
…A6, first tranche) (ethereum-optimism#21926) Co-authored-by: Claude <[email protected]>
…otes) (ethereum-optimism#21922) Co-authored-by: Claude <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
…on, batch 1) (ethereum-optimism#21968) Co-authored-by: Claude <[email protected]>
…detail (A6, tranche 2) (ethereum-optimism#21971) Co-authored-by: Claude <[email protected]>
… batch 3) (ethereum-optimism#21972) Co-authored-by: Claude <[email protected]>
…er (ethereum-optimism#22300) Co-authored-by: Claude Opus 5 <[email protected]> Co-authored-by: Rodrigo Araújo <[email protected]>
…ptimism#22316) Co-authored-by: Claude <[email protected]> Co-authored-by: Matthew Cruz <[email protected]>
…hived snap-sync guide (ethereum-optimism#22317) Co-authored-by: Claude <[email protected]> Co-authored-by: Matthew Cruz <[email protected]>
…ethereum-optimism#22319) Co-authored-by: Claude <[email protected]> Co-authored-by: Matthew Cruz <[email protected]>
…reum-optimism#22340) Co-authored-by: Claude <[email protected]> Co-authored-by: Adrian Sutton <[email protected]>
…eum-optimism#22341) Co-authored-by: Claude <[email protected]> Co-authored-by: Adrian Sutton <[email protected]>
…imism#22322) Co-authored-by: Claude Fable 5 <[email protected]>
…rdam/EIP-8037) (ethereum-optimism#21728) Co-authored-by: Claude Opus 4.8 <[email protected]>
…hereum-optimism#22367) Co-authored-by: Claude Opus 5 <[email protected]>
…nges (ethereum-optimism#22372) Co-authored-by: Claude Opus 5 <[email protected]>
…ks (ethereum-optimism#22377) Co-authored-by: Claude <[email protected]> Co-authored-by: George Knee <[email protected]> Co-authored-by: Sebastian Stammler <[email protected]>
Tag created with op-workbench. # Conflicts: # rust/Cargo.lock # rust/Cargo.toml # rust/op-reth/bin/Cargo.toml # rust/op-reth/bin/src/main.rs
The v2.3.0 -> op-rs/reth aef8d3ef rebase replaced the payload validator's inline multiproof/state-root-task machinery with a pluggable state_root_strategy framework whose context constructors are pub(crate), so the engine validator falls back to synchronous state-root computation (ParallelStateRoot was removed upstream, folded into the now-private sparse-trie job). Also adds ConfigurePostExecEvm::Snapshot delegation and threads the new state_trie_overlays parameter through the validator builder. Ported from the equivalent adaptation already validated on release/world-chain-2.4.x, minus the finalized-head-as-LIB change that is still under review in #9. Dockerfile.sf follows upstream DockerfileOp to cargo-chef rust-1.95 (the workspace now requires 1.95) and stamps the GIT_VERSION/GIT_COMMIT/GIT_DATE build args that the new op-version crate reads for `op-reth --version`.
Dependency ReviewThe following issues were found:
|
UlysseCorbeil
approved these changes
Aug 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merges upstream
op-reth/v2.4.2intorelease/2.x— 389 upstream commits.op-reth/v2.4.1is an ancestor ofv2.4.2, so this one merge brings in its commits too; there is no separatev2.4.1merge.Reth pin
Upstream repointed its reth dependency twice in this range:
reth-*op-reth/v2.4.0(last merged)paradigmxyz/rethtagv2.3.0op-reth/v2.4.1paradigmxyz/rethrevf2eecc65op-reth/v2.4.2op-rs/rethrevaef8d3efstreamingfast/rethalready carries the Firehose rebase of that final rev on branchfirehose/op-reth-2.4.x-fh, taggedop-rs-aef8d3e-fh-1(which already includes the genesis-block-on-empty-chain emission). All 75 workspace pins now point at it.alloy-evmmoved 0.36 → 0.37, so the[patch.crates-io]SF fork pin moved tostreamingfast/evmtagv0.37.0-sf.Firehose adaptation
Only
crates/firehose/needed work (29 compile errors); everything else auto-merged.state_root_strategyframework whose context constructors arepub(crate)and therefore unusable from this external crate;ParallelStateRootwas removed too (folded into the now-private sparse-trie job). The Firehose validator falls back to synchronous state-root computation. This is a state-root algorithm choice only — no tracer event is emitted, dropped or reordered because of it.ConfigurePostExecEvmgained an associatedSnapshottype;OpFirehoseEvmConfigdelegates it.state_trie_overlaysparameter.State(alloy-evm Adding a hardhat plugin for ovm compilation ethereum-optimism/optimism#366).This adaptation is ported from the equivalent one already validated on
release/world-chain-2.4.x(4628c8a8c5), minus the finalized-head-as-LIB change, which is still under review in #9.Release plumbing
Dockerfile.sffollows upstreamDockerfileOpto the cargo-chefrust-1.95base (the workspacerust-versionmoved to 1.95), retries apt fetches, and now receivesGIT_VERSION/GIT_COMMIT/GIT_DATE, which upstream's newop-versioncrate reads to stampop-reth --version;sf-release.ymlsupplies them.cargo fmt --allalso picked up pre-existing formatting drift incrates/firehose/src/{extras,lib}.rs.Testing
cargo check --all-targetsonreth-optimism-firehose,reth-optimism-node,reth-optimism-payload-builder,reth-optimism-cli,op-reth— clean.cargo test -p reth-optimism-firehose -p reth-optimism-payload-builder -p reth-optimism-txpool— 87 passed, 0 failed.cargo clippy --all-targetson the same crates — no errors. Droppedreth-trie-parallelandrevm-primitivesfrom the firehose crate, which the state-root fallback made unused; the remaining warnings (doc backticks inextras.rs/lib.rs) pre-date this merge.cargo +nightly-2026-02-20 fmt --all -- --check— clean.op-reth-devnet(builder-playground opstack + local op-node + fireeth + this op-reth): 80 passing, 0 failing, 5 pending.fireeth tools compare-blocks-rpcover blocks 0–250: 251 identical, 0 different. Genesis block 0 is emitted, so the empty-chain genesis fix survived the merge.Two battlefield gotchas worth knowing (both environmental, neither a regression — written up in
.dev/todo/update-to-op-reth-v2.4.2.md):scripts/compare-blocks.shhardcodeshttp://localhost:8545, which in the optimism devnet is the L1 RPC. It diffs L2 Firehose blocks against L1, prints garbage, then panics insidefireeth's ownblockfetcher.fetchBlockReceipts. Point it at the L2 op-reth RPC (http://localhost:28545) instead.:8089only opens once the info server can readfirst_streamable_block, which needs the first merged 100-block bundle — and the merger waits for LIB to pass 100. Expect ~10 min ofConnectError: [unavailable]after launch.