feat: support reth as an alternative execution client - #145
Conversation
Add a full reth (morph-reth) startup path alongside the existing geth flow, in both Docker and binary modes, without touching the geth path. - entrypoint-reth.sh: launch morph-reth; parse static-nodes.json into --trusted-peers (no jq), omit the flag when absent - docker-compose.reth.yml: reth service + the same morph-node, pointed at morph-reth; reth uses its own reth-data datadir - run-binary-reth.sh: binary-mode launcher for reth + morphnode - Makefile: run/stop/rm-reth-node, build-reth(-all), binary + quickstart targets, setup-snapshot-data-reth (reth-data/ tarball layout), reth snapshot download and clean targets - .env/.env_hoodi: RETH_HOME/RETH_CHAIN/RETH_ENTRYPOINT_FILE and *_RETH_SNAPSHOT_NAME (reth uses a separate snapshot from geth) - hoodi/mainnet reth-data/: seed static-nodes.json + .gitignore - README: reth run/quickstart/binary sections, geth-vs-reth snapshot note, reth-data directory layout Co-Authored-By: Claude Opus 4.8 (1M context) <<EMAIL_ADDRESS>>
Issue 1: Snapshot heights in
|
Issue 2:
|
The reth execution client uses a separate snapshot from geth, but the derivation heights were shared, so `make quickstart-*-reth-node` ran with the geth snapshot's heights (wrong for the reth snapshot — e.g. hoodi L2_BASE_HEIGHT 8346379 vs reth 8346700). Split the heights: add RETH_DERIVATION_START_HEIGHT / RETH_L1_MSG_START_HEIGHT / RETH_L2_BASE_HEIGHT matching *_RETH_SNAPSHOT_NAME, and have the reth compose and run-binary-reth wire the node's MORPH_NODE_* heights from them instead of the shared (geth) values. The geth path is unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <<EMAIL_ADDRESS>>
build-reth cloned morph-reth at HEAD and built --release without checking out a tag, so the binary path built whatever main happened to be, diverging from the Docker path pinned at v1.3.0 in docker-compose.reth.yml. Add a RETH_VERSION variable (default 1.3.0, matching the compose image) and have build-reth `git checkout v$(RETH_VERSION)` after cloning (and on an existing clone) so the build is reproducible and version-aligned with Docker. Extend set-versions to also rewrite the morph-reth image tag in docker-compose.reth.yml, so a reth bump is a one-line change like geth/node. Co-Authored-By: Claude Opus 4.8 (1M context) <<EMAIL_ADDRESS>>
The reth snapshot section described the layout but lacked the manual mv example that the geth section has. Add the two mv commands mirroring setup-snapshot-data-reth so operators placing the snapshot by hand know where reth-data/ and data/ go. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a full reth (morph-reth) startup path alongside the existing geth flow, in both Docker and binary modes, without touching the geth path.