From 770c1eaf63ea1bfe02030e6c8ad2cde4080e001f Mon Sep 17 00:00:00 2001 From: panos Date: Wed, 8 Jul 2026 15:29:57 +0800 Subject: [PATCH 1/2] fix(local-test): configure L1 beacon RPC for fullnode derivation A fullnode (no sequencer signer) derives L2 blocks from batches posted to L1 as EIP-4844 blobs, so morphnode requires --l1.beaconrpc. The scripts never set it, so SetCliContext failed with 'invalid L1BeaconAddr' and the node crash-looped. Add MORPH_NODE_L1_BEACON_RPC defaults for mainnet/hoodi and pass --l1.beaconrpc from node-start.sh. --- local-test/README.md | 3 ++- local-test/common.sh | 5 +++++ local-test/node-start.sh | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/local-test/README.md b/local-test/README.md index e5e801a0..e07d35a7 100644 --- a/local-test/README.md +++ b/local-test/README.md @@ -67,7 +67,8 @@ All defaults can be overridden via environment variables. Common ones: | `MORPHNODE_BIN` | `../morph/node/build/bin/morphnode` | Path to morphnode binary | | `RETH_HTTP_PORT` | `8545` | HTTP RPC port | | `RETH_AUTHRPC_PORT` | `8551` | Engine API auth RPC port | -| `MORPH_NODE_L1_RPC` | *(per-network default)* | L1 Ethereum RPC endpoint | +| `MORPH_NODE_L1_RPC` | *(per-network default)* | L1 Ethereum execution RPC endpoint | +| `MORPH_NODE_L1_BEACON_RPC` | *(per-network default)* | L1 Ethereum beacon (blob) RPC endpoint — required for L1 derivation | Example with overrides: diff --git a/local-test/common.sh b/local-test/common.sh index 75e6e8b8..6a14f5f7 100755 --- a/local-test/common.sh +++ b/local-test/common.sh @@ -25,6 +25,9 @@ export MORPH_NETWORK if [[ "${MORPH_NETWORK}" == "mainnet" ]]; then : "${MORPH_NODE_L1_RPC:=${MORPH_NODE_L1_ETH_RPC:-https://ethereum.publicnode.com}}" + # L1 Beacon (CL) endpoint — a fullnode (no sequencer signer) derives L2 blocks + # from batches posted to L1 as EIP-4844 blobs, so the beacon blob API is required. + : "${MORPH_NODE_L1_BEACON_RPC:=${MORPH_NODE_L1_ETH_BEACON_RPC:-https://ethereum-beacon-api.publicnode.com}}" : "${MORPH_NODE_DEPOSIT_CONTRACT:=${MORPH_NODE_SYNC_DEPOSIT_CONTRACT_ADDRESS:-0x3931ade842f5bb8763164bdd81e5361dce6cc1ef}}" : "${MORPH_NODE_ROLLUP_CONTRACT:=}" : "${MORPH_NODE_EXTRA_FLAGS:=--mainnet}" @@ -33,6 +36,8 @@ if [[ "${MORPH_NETWORK}" == "mainnet" ]]; then : "${MORPH_CHAIN:=mainnet}" else : "${MORPH_NODE_L1_RPC:=${MORPH_NODE_L1_ETH_RPC:-https://ethereum-hoodi-rpc.publicnode.com}}" + # L1 Beacon (CL) endpoint — see mainnet branch above for why this is required. + : "${MORPH_NODE_L1_BEACON_RPC:=${MORPH_NODE_L1_ETH_BEACON_RPC:-https://ethereum-hoodi-beacon-api.publicnode.com}}" : "${MORPH_NODE_DEPOSIT_CONTRACT:=${MORPH_NODE_SYNC_DEPOSIT_CONTRACT_ADDRESS:-0xd7f39d837f4790b215ba67e0ab63665912648dbe}}" : "${MORPH_NODE_ROLLUP_CONTRACT:=0x57e0e6dde89dc52c01fe785774271504b1e04664}" : "${MORPH_NODE_EXTRA_FLAGS:=}" diff --git a/local-test/node-start.sh b/local-test/node-start.sh index 3f74a4b7..b6038a59 100755 --- a/local-test/node-start.sh +++ b/local-test/node-start.sh @@ -29,6 +29,7 @@ args=( --l2.eth "http://${RETH_HTTP_ADDR}:${RETH_HTTP_PORT}" --l2.engine "http://${RETH_AUTHRPC_ADDR}:${RETH_AUTHRPC_PORT}" --l1.rpc "${MORPH_NODE_L1_RPC}" + --l1.beaconrpc "${MORPH_NODE_L1_BEACON_RPC}" --sync.depositContractAddr "${MORPH_NODE_DEPOSIT_CONTRACT}" --log.filename "${NODE_LOG_FILE}" ) From 94316cbdeef22fd20b3c3b1fef0e1c803b3e4925 Mon Sep 17 00:00:00 2001 From: panos-xyz Date: Wed, 8 Jul 2026 15:47:28 +0800 Subject: [PATCH 2/2] fix local hoodi morphnode network flag --- local-test/common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/local-test/common.sh b/local-test/common.sh index 6a14f5f7..90fea06b 100755 --- a/local-test/common.sh +++ b/local-test/common.sh @@ -40,7 +40,7 @@ else : "${MORPH_NODE_L1_BEACON_RPC:=${MORPH_NODE_L1_ETH_BEACON_RPC:-https://ethereum-hoodi-beacon-api.publicnode.com}}" : "${MORPH_NODE_DEPOSIT_CONTRACT:=${MORPH_NODE_SYNC_DEPOSIT_CONTRACT_ADDRESS:-0xd7f39d837f4790b215ba67e0ab63665912648dbe}}" : "${MORPH_NODE_ROLLUP_CONTRACT:=0x57e0e6dde89dc52c01fe785774271504b1e04664}" - : "${MORPH_NODE_EXTRA_FLAGS:=}" + : "${MORPH_NODE_EXTRA_FLAGS:=--hoodi}" : "${CONFIG_ZIP_URL:=https://raw.githubusercontent.com/morph-l2/run-morph-node/main/hoodi/data.zip}" : "${CONFIG_ZIP_PATH:=./local-test/hoodi-data.zip}" : "${MORPH_CHAIN:=hoodi}"