Skip to content

feat: switch default run commands to MPT mode#75

Open
curryxbo wants to merge 15 commits intomainfrom
switch-default-to-mpt
Open

feat: switch default run commands to MPT mode#75
curryxbo wants to merge 15 commits intomainfrom
switch-default-to-mpt

Conversation

@curryxbo
Copy link
Copy Markdown
Contributor

@curryxbo curryxbo commented Apr 2, 2026

Summary

  • Make run-node / run-hoodi-node (and validator variants) default to MPT mode
  • Merge .env_mpt into .env and .env_hoodi, making MPT the default configuration
  • Add .env_zk / .env_hoodi_zk as ZK legacy overrides, with new run-zk-* Makefile targets
  • Update README Quick Start to reflect MPT as the default for snapshots and run commands

Test plan

  • Verify make run-node starts with entrypoint-geth-mpt.sh (MPT mode)
  • Verify make run-hoodi-node starts with entrypoint-geth-mpt.sh (MPT mode)
  • Verify make run-zk-node falls back to entrypoint-geth.sh (ZK legacy)
  • Verify make run-hoodi-zk-node falls back to entrypoint-geth.sh (ZK legacy)
  • Verify make download-and-decompress-mainnet-mpt-snapshot resolves correct snapshot name
  • Verify make download-and-decompress-hoodi-mpt-snapshot resolves correct snapshot name

🤖 Generated with Claude Code

corey and others added 15 commits April 2, 2026 14:48
- .env and .env_hoodi now default to MPT (entrypoint-geth-mpt.sh)
- Add .env_zk and .env_hoodi_zk as ZK legacy overrides
- Remove .env_mpt (content merged into .env and .env_hoodi)
- run-node and run-hoodi-node (and validator variants) now run MPT by default
- Add run-zk-node, run-hoodi-zk-node, run-zk-validator, run-hoodi-zk-validator as legacy ZK targets
- Keep run-mainnet-mpt-node and run-hoodi-mpt-node as explicit aliases
- Update README Quick Start to default to MPT snapshots and commands

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prompt users before starting MPT nodes/validators, informing them
of the ZK legacy alternative commands (run-zk-node, etc.).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- entrypoint-geth.sh now runs MPT mode (--morph-mpt flag)
- entrypoint-geth-zk.sh is the renamed ZK legacy script
- Remove entrypoint-geth-mpt.sh (superseded by entrypoint-geth.sh)
- Update all env files to reference the new script names

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Delete holesky/ directory and .env_holesky
- Remove all holesky targets from Makefile (run, validate, snapshot)
- Remove holesky snapshot table from README

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
run-mainnet-mpt-node, run-hoodi-mpt-node and their validator
counterparts are now identical to run-node and run-hoodi-node.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- download-and-decompress-mainnet-snapshot now downloads MPT snapshot
- download-and-decompress-hoodi-snapshot now downloads MPT snapshot
- Rename old ZK snapshot targets to *-zk-snapshot
- Remove redundant *-mpt-snapshot targets
- Update README accordingly

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Parameterize entrypoint-geth.sh and entrypoint-geth-zk.sh with env vars
  (GETH_BINARY, GETH_DATADIR, JWT_SECRET_PATH) so they work for both
  Docker (defaults) and binary mode (explicit paths)
- Add entrypoint-node.sh: unified morphnode script for Docker and binary,
  maps .env variables to MORPH_NODE_* for binary mode
- Update docker-compose.yml to use entrypoint-node.sh for node/validator
  services (NODE_EXTRA_FLAGS=--validator for validator service)
- Add run-binary.sh: orchestrates geth + morphnode startup, waits for
  geth engine RPC on port 8551, saves PIDs, handles cleanup on exit
- Add bin/ directory for user-provided geth and morphnode binaries
- Add Makefile binary targets: run-node-binary, run-hoodi-node-binary,
  run-validator-binary, run-hoodi-validator-binary, and ZK variants;
  stop-binary uses saved PID files to stop both processes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- go-ethereum submodule locked at morph-v2.2.1 (matches Docker image 2.2.1)
- morph submodule locked at v0.5.3 (matches Docker image node:0.5.3)
- Add Makefile targets: build-geth, build-morphnode, build
  Binaries are compiled and copied to morph-node/bin/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add submodule-init target as a prerequisite of build-geth and
build-morphnode, so users don't need to manually run
git submodule update --init.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add L2_BASE_HEIGHT to .env (mainnet: 21500591) and .env_hoodi (hoodi: 4391571)
- Map to MORPH_NODE_DERIVATION_BASE_HEIGHT in docker-compose validator section
- Map to MORPH_NODE_DERIVATION_BASE_HEIGHT in entrypoint-node.sh for binary mode

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…latest MPT snapshots

Mainnet (mpt-snapshot-20260317-1):
  DERIVATION_START_HEIGHT: 20996776 → 24676384
  L1_MSG_START_HEIGHT:     20996776 → 24674343

Hoodi (mpt-snapshot-20260402-1):
  DERIVATION_START_HEIGHT: 1182317 → 2534958
  L1_MSG_START_HEIGHT:     1182317 → 2528506

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix stop-validator/rm-validator using wrong container name (validator-node -> validator_node)
- Add geth readiness timeout exit in run-binary.sh
- Add MORPH_NODE_VALIDATOR_PRIVATE_KEY mapping for binary mode
- Add restart: unless-stopped to validator service in docker-compose
- Replace unsafe eval with exec in entrypoint-geth scripts
- Fix .env_hoodi placeholder RPC URLs to avoid shell syntax errors
- Fix NODE_EXTRA_FLAGS override in validator (append instead of replace)
- Add GETH_ENTRYPOINT_FILE allowlist validation in run-binary.sh
- Add quickstart-{hoodi,mainnet}-node[-binary] one-command setup targets

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rsions

- sync-submodules reads geth/node versions from docker-compose.yml
  and checks out the matching tags in go-ethereum and morph submodules
- build-geth and build-morphnode now also read versions dynamically
  from docker-compose.yml instead of hardcoding

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace sync-submodules (read from docker-compose) with set-versions
that takes GETH_VERSION and NODE_VERSION as params, updates both
submodules and docker-compose.yml in one shot.

Usage: make set-versions GETH_VERSION=2.2.1 NODE_VERSION=0.5.3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

1 participant