ethereum-optimism / ethereum-optimism/optimism

opgeth-decoupling: migrate the kona proof harness off the in-process op-geth L2 EL

Open
#21,905 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
6.5k
Forks
4k
Avg merge
2d 18h
Merged PRs (30d)
134

Description

Part of #20257 (see also #20415/#21196). **Blocks #20266** — after #21787 lands, this harness is the last in-process op-geth L2 EL consumer in the tree.

## Context

`rust/kona/tests/proofs/` (the Go tests driving kona fault-proof witness generation) builds an in-process op-geth L2 engine via the op-e2e action-test helpers (`NewL2Engine` + `EngineWithP2P`, pervasive `engine.L2Chain()` — ~81 uses across ~28 files) for direct state/preimage access. #21787 removes that machinery from `op-e2e/actions`; the subset the kona harness needs is relocated to a contained, kona-proofs-only package (`op-e2e/e2eutils/gethengine`) so the actions suite is genuinely geth-EL-free while this harness keeps working.

## Work

Migrate the harness onto the `op-reth-test-engine` subprocess EL (#20415). The gap is witness/preimage access: the harness reads chain state directly from the in-process `core.BlockChain`; the reth engine currently serves only Engine-API + read-only `eth_*` over UDS. Likely shape: extend the engine's `optest_*`/witness surface (related deferred item: the kona-host `HTTPEndpoint` panics against the reth engine — same missing surface), then port the harness call sites and delete `op-e2e/e2eutils/gethengine`.

## Acceptance

- `rust/kona/tests/proofs` runs against the reth test engine; `op-e2e/e2eutils/gethengine` deleted; no in-process op-geth L2 EL constructor remains in the tree.

🤖 *Generated by Claude Fable 5*

Contributor guide

Open the contributing guide

Research direction

Start with rust/kona/tests/proofs and the op-e2e/e2eutils/gethengine package, then inspect the op-reth-test-engine interfaces and its existing Engine-API, eth_*, optest_* or witness surfaces. Trace the harness's direct core.BlockChain and L2Chain access before migrating call sites. Done means the proof tests run against the reth subprocess, gethengine is deleted, and no in-process op-geth L2 EL constructor remains.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, rust
Domain
backend, blockchain, testing
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.