ethereum-optimism / ethereum-optimism/optimism
opgeth-decoupling: migrate the kona proof harness off the in-process op-geth L2 EL
- 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
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