Skip to content

Merge op-reth/v2.4.2 into release/2.x - #14

Merged
sduchesneau merged 394 commits into
release/2.xfrom
bump/op-reth-v2.4.2
Aug 19, 2026
Merged

Merge op-reth/v2.4.2 into release/2.x#14
sduchesneau merged 394 commits into
release/2.xfrom
bump/op-reth-v2.4.2

Conversation

@sduchesneau

@sduchesneau sduchesneau commented Aug 19, 2026

Copy link
Copy Markdown

Merges upstream op-reth/v2.4.2 into release/2.x — 389 upstream commits. op-reth/v2.4.1 is an ancestor of v2.4.2, so this one merge brings in its commits too; there is no separate v2.4.1 merge.

Reth pin

Upstream repointed its reth dependency twice in this range:

upstream tag reth pin published reth-*
op-reth/v2.4.0 (last merged) paradigmxyz/reth tag v2.3.0 0.4.1
op-reth/v2.4.1 paradigmxyz/reth rev f2eecc65 0.5.0
op-reth/v2.4.2 op-rs/reth rev aef8d3ef 0.5.0

streamingfast/reth already carries the Firehose rebase of that final rev on branch firehose/op-reth-2.4.x-fh, tagged op-rs-aef8d3e-fh-1 (which already includes the genesis-block-on-empty-chain emission). All 75 workspace pins now point at it.

alloy-evm moved 0.36 → 0.37, so the [patch.crates-io] SF fork pin moved to streamingfast/evm tag v0.37.0-sf.

⚠️ Upstream's lock resolves alloy-evm 0.37.1, at which point cargo silently reports patch ... was not used in the crate graph and op-reth links stock alloy-evm — which routes no block-level system call (EIP-4788, EIP-2935, OP withdrawals) through the revm inspector, so every block trace loses its systemCalls. The lock therefore pins alloy-evm to 0.37.0. Worth re-checking that warning on every future bump.

Firehose adaptation

Only crates/firehose/ needed work (29 compile errors); everything else auto-merged.

  • Payload validator: upstream replaced the validator's inline multiproof / state-root-task machinery with a pluggable state_root_strategy framework whose context constructors are pub(crate) and therefore unusable from this external crate; ParallelStateRoot was 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.
  • ConfigurePostExecEvm gained an associated Snapshot type; OpFirehoseEvmConfig delegates it.
  • The engine-validator builder gained a state_trie_overlays parameter.
  • State hooks moved from the executor to the revm 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.sf follows upstream DockerfileOp to the cargo-chef rust-1.95 base (the workspace rust-version moved to 1.95), retries apt fetches, and now receives GIT_VERSION / GIT_COMMIT / GIT_DATE, which upstream's new op-version crate reads to stamp op-reth --version; sf-release.yml supplies them.

cargo fmt --all also picked up pre-existing formatting drift in crates/firehose/src/{extras,lib}.rs.

Testing

  • cargo check --all-targets on reth-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-txpool87 passed, 0 failed.
  • cargo clippy --all-targets on the same crates — no errors. Dropped reth-trie-parallel and revm-primitives from the firehose crate, which the state-root fallback made unused; the remaining warnings (doc backticks in extras.rs / lib.rs) pre-date this merge.
  • cargo +nightly-2026-02-20 fmt --all -- --check — clean.
  • Battlefield op-reth-devnet (builder-playground opstack + local op-node + fireeth + this op-reth): 80 passing, 0 failing, 5 pending.
  • fireeth tools compare-blocks-rpc over 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.sh hardcodes http://localhost:8545, which in the optimism devnet is the L1 RPC. It diffs L2 Firehose blocks against L1, prints garbage, then panics inside fireeth's own blockfetcher.fetchBlockReceipts. Point it at the L2 op-reth RPC (http://localhost:28545) instead.
  • The firehose gRPC endpoint on :8089 only opens once the info server can read first_streamable_block, which needs the first merged 100-block bundle — and the merger waits for LIB to pass 100. Expect ~10 min of ConnectError: [unavailable] after launch.

sebastianst and others added 30 commits July 21, 2026 13:56
…mism#21934)

Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
maurelian and others added 24 commits August 7, 2026 17:35
…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`.
@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown

Dependency Review

The following issues were found:

  • ❌ 2 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 340 package(s) with unknown licenses.
  • ⚠️ 10 packages with OpenSSF Scorecard issues.

View full job summary

@sduchesneau
sduchesneau merged commit 795ffe9 into release/2.x Aug 19, 2026
1 of 4 checks passed
@sduchesneau
sduchesneau deleted the bump/op-reth-v2.4.2 branch August 20, 2026 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.