53 lines
3 KiB
Markdown
53 lines
3 KiB
Markdown
# ECP-0113: Keep OP Stack Runtime Compatible With Forge Host Services
|
|
|
|
Status: Draft
|
|
|
|
## Problem / context
|
|
|
|
`ecp-forge` now runs the OP Stack bootstrap far enough to produce `deployment.json`, `genesis.json`,
|
|
and `rollup.json`, but the runtime containers still failed to stay up. `op-geth` tried to bind the
|
|
default Ethereum P2P port `30303`, already owned by the host full Ethereum node. The pinned
|
|
`op-node:v1.13.5` rejected current `op-deployer/v0.6.0-rc.3` rollup fields such as `minBaseFee`.
|
|
After aligning to `op-node:v1.14.0`, that image still rejected the newer
|
|
`genesis.system_config.daFootprintGasScalar` field. The generated rollup config also carried
|
|
`eip1559Params = 0x0000000000000000` even though the genesis `extraData` and chain config encode
|
|
denominator `250` and elasticity `6`; that zero value caused `op-geth` to panic when the sequencer
|
|
requested the first payload. `op-batcher:v1.14.0` also no longer accepts `--batch-inbox-address`.
|
|
Isolated compatibility probes showed `op-node:v1.16.6` paired with `op-geth:v1.101702.0-rc.1` can
|
|
run against the generated genesis hash and produce L2 blocks.
|
|
|
|
## Decision
|
|
|
|
Assign `op-geth` a repo-owned L2 P2P port in the existing `285xx` range, align `op-node` to the
|
|
probed `v1.16.6` runtime, move `op-geth` to the probed
|
|
`v1.101702.0-rc.1` image, remove the stale batcher inbox-address flag, delete only
|
|
`genesis.system_config.daFootprintGasScalar` from generated rollup configs, and derive zero
|
|
`eip1559Params` from the generated `chain_op_config`.
|
|
|
|
## Consequences
|
|
|
|
- The host Ethereum node can keep `30303` without blocking OP Stack startup.
|
|
- The OP Stack RPC and P2P port assignments stay documented in repo config.
|
|
- Runtime image compatibility is explicit in Nix config.
|
|
- The rollup JSON normalization is intentionally narrow: it removes the exact field rejected by the
|
|
older `op-node:v1.14.0` parser and repairs only the zero EIP-1559 params that caused the live
|
|
`op-geth` payload panic.
|
|
- The `op-geth` image is an explicit release-candidate tag because the previously pinned image
|
|
panicked against the current deployer output.
|
|
|
|
## Alternatives considered
|
|
|
|
- Stop the host full Ethereum node. Rejected because the OP Stack should coexist with the existing
|
|
Ethereum services.
|
|
- Strip all newer-looking fields from `rollup.json`. Rejected because `op-node:v1.14.0` accepts the
|
|
other generated fields tested during recovery; broad deletion would hide schema drift.
|
|
- Leave zero `eip1559Params` in place. Rejected because the live sequencer/geth pair panicked before
|
|
the first L2 block could be built.
|
|
- Keep `op-geth:v1.101511.1`. Rejected because it reproducibly panics on first payload construction
|
|
for this generated chain config.
|
|
|
|
## Rollout / teardown
|
|
|
|
Deploy the updated NixOS module and bootstrap helper, reset failed OP Stack units, and verify L2 RPC
|
|
and rollup RPC locally on `ecp-forge`. Teardown is reverting the port assignment and rollup JSON
|
|
normalization, then regenerating runtime files with a mutually compatible deployer/runtime image set.
|