Skip to content

feat(node): unify single node startup, expose DERIVATION_VERIFY_MODE (#989)#100

Open
curryxbo wants to merge 2 commits into
mainfrom
feat/989-unified-node-startup
Open

feat(node): unify single node startup, expose DERIVATION_VERIFY_MODE (#989)#100
curryxbo wants to merge 2 commits into
mainfrom
feat/989-unified-node-startup

Conversation

@curryxbo

@curryxbo curryxbo commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Closes morph-l2/morph#989

What

Adapt run-morph-node to the single node startup model (issue morph-l2/morph#989; verify-mode behavior from morph PR morph-l2/morph#966 "Feat: Sequencer Final PR").

Changes

  • Remove the separate validator service from docker-compose.yml; remove all run/stop/rm-validator Makefile targets and drop the <mode>/--validator arg from run-binary.sh.
  • Merge validator-only env into the single node service: MORPH_NODE_L1_ETH_BEACON_RPC, MORPH_NODE_SYNC_DEPOSIT_CONTRACT_ADDRESS, MORPH_NODE_DERIVATION_START_HEIGHT, MORPH_NODE_DERIVATION_BASE_HEIGHT.
  • Expose one new operator env: DERIVATION_VERIFY_MODE (--derivation.verify-mode):
    • local (default): rebuild blob from local L2 + compare versioned hashes vs L1 (no beacon fetch on happy path).
    • layer1: pull L1 beacon blob + derive via engine — equivalent to the former validator node. Set this for that behavior.
    • Empty → binary default (local).

Intentionally NOT exposed

L1_SEQUENCER_CONTRACT and CONSENSUS_SWITCH_HEIGHT are not operator config — the binary uses per-network hard-coded defaults. Setting them (especially CONSENSUS_SWITCH_HEIGHT=-1) would override the built-in activation height. Documented in .env/README.

⚠️ Binary source / image tag

The local/layer1 verify-mode (and the unified node behavior) come from morph PR morph-l2/morph#966 (feat/sequencer-final). The compose node image is currently ghcr.io/morph-l2/node:0.5.7, which may predate that branch. Before merge/use, point the node image to a build of feat/sequencer-final (temporary, until #966 is released). Reviewer: please confirm the correct image tag.

Not touched

Snapshot tables, height values, geth image tag.

Validation

  • sh -n on entrypoint-node.sh / run-binary.sh: OK
  • docker compose --env-file .env config --servicesgeth, node only
  • make -n run-node / run-hoodi-node / *-binary: correct invocations

Note: issue lives in morph-l2/morph, so GitHub won't auto-close it cross-repo on merge — close morph-l2/morph#989 manually after merge.

🤖 Generated with Claude Code

…(#989)

Collapse the separate `node` / `validator` services into a single node:
- Remove the `validator` docker-compose service and all run/stop/rm-validator
  Makefile targets; drop the <mode>/--validator arg from run-binary.sh.
- Merge the validator-only env (beacon RPC, deposit contract, derivation
  start/base height) into the single `node` service so every node self-verifies
  against L1.
- Expose the only new operator env: DERIVATION_VERIFY_MODE (--derivation.verify-mode,
  default pathA; pathB rebuilds blobs from local L2). Empty falls back to pathA.

L1_SEQUENCER_CONTRACT and CONSENSUS_SWITCH_HEIGHT are intentionally NOT exposed:
they use the binary's per-network hard-coded defaults; setting them (esp.
CONSENSUS_SWITCH_HEIGHT=-1) would override the built-in activation height.

Image tags, snapshot tables and height values are left untouched.
The binary from morph PR #966 (feat/sequencer-final) renamed
--derivation.verify-mode values to local (default) / layer1 (was pathA/pathB).
- Default DERIVATION_VERIFY_MODE empty -> binary default (local).
- Document layer1 as the opt-in for former-validator-style L1 derivation.
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.

feat(run-morph-node): support centralized sequencer configuration

1 participant