ethereum-optimism / ethereum-optimism/optimism

opgeth-decoupling: final cutover (flip go.mod to upstream go-ethereum)

Open
#20,266 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
6.5k
Forks
4k
Avg merge
2d 18h
Merged PRs (30d)
134

Description

Part of #20257. The last step after all other sub-issues land.

Goal

Remove the op-geth replace directive from go.mod; clean up any remaining shims or transitional code.

Scope

  • Remove from go.mod: replace github.com/ethereum/go-ethereum => github.com/ethereum-optimism/op-geth vX.Y.Z.
  • Update the direct github.com/ethereum/go-ethereum dependency to the target upstream version.
  • Run go mod tidy; resolve any residual import issues.
  • Remove ALL op-core differential tests (types, fees, params, sync-tester PayloadID) and the §2 transaction-helper scaffolding — no longer meaningful without op-geth as a comparison point.
  • op-core/params.GethChainConfig() sheds the OP fork fields and the Optimism struct from the produced go-ethereum ChainConfig (they only exist on the fork).
  • op-core/interop/messages switches params.InteropCrossL2InboxAddress (fork const) to op-core/predeploys.
  • Flip the log-layer alias to the owned interface (#21745 phase 2).
  • Update CI / build configs that referenced op-geth; delete the CI ratchet job + baseline (#21748).
  • Verify go build ./... and go test ./....
  • Update CLAUDE.md / AGENTS.md pointer text (after this lands, the plan doc is historical reference).

Dependencies

Blocked on all other sub-issues, notably:

  • #20263, #20264, #20265 — call-site swaps, OP-aware sources client, test migration.
  • #20415 + #21196 — op-e2e/actions track (hard prerequisite). op-e2e/actions embeds op-geth in-process; flipping go.mod before it lands would silently re-resolve those imports to upstream go-ethereum with incorrect OP EVM behaviour.
  • #21743 — Rust script engine for op-chain-ops/script + op-deployer. Fork-only EVM hooks; no module-split escape hatch (any in-repo module still on op-geth keeps the fork maintained, defeating the epic's purpose). Spikes 1–3 complete; production landing + bake remain.
  • #21744 — op-reth-only L2 EL in op-e2e system tests + sysgo (otherwise the flip silently runs upstream geth as the L2 EL with wrong OP semantics — no compile error to warn).
  • #21745 — foundations: own the log layer + re-home the RPC recorder (fork log/rpc extensions break the whole tree at flip time).
  • #21746 (check-*), #21747 (op-wheel/cheat), #21281 (genesis), #21282 (op-simulate/op-run-block deletion), #21525 (sync-tester PayloadID).

The CI ratchet (#21748) is the readiness gauge: this issue is executable exactly when the ratchet baseline is empty; the flip PR deletes the job.

🤖 Generated by Claude Code

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

First check that the listed prerequisite issues have landed and that the CI ratchet baseline is empty. Then inspect go.mod and the named op-core, CI/build, log-layer, and documentation areas, running go mod tidy as the dependency changes proceed. Done means no op-geth shims or differential tests remain, and go build ./... plus go test ./... pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, build-system, ci-cd
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.