Skip to content
42 changes: 29 additions & 13 deletions devnet/3-op-init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ if [ -z "$FORK_BLOCK" ]; then
exit 1
fi

echo "🔧 Setting fork block and parent hash in genesis.json ..."
FORK_BLOCK_HEX=$(printf "0x%x" "$FORK_BLOCK")
sed_inplace '/"config": {/,/}/ s/"optimism": {/"legacyXLayerBlock": '"$((FORK_BLOCK + 1))"',\n "optimism": {/' ./config-op/genesis.json
sed_inplace 's/"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"/"parentHash": "'"$PARENT_HASH"'"/' ./config-op/genesis.json
Expand All @@ -31,11 +32,24 @@ sed_inplace 's/"eip1559Elasticity": [0-9]*/"eip1559Elasticity": '"$(jq -r '.conf
sed_inplace 's/"eip1559Denominator": [0-9]*/"eip1559Denominator": '"$(jq -r '.config.optimism.eip1559Denominator' ./config-op/genesis.json)"'/' ./config-op/rollup.json
sed_inplace 's/"eip1559DenominatorCanyon": [0-9]*/"eip1559DenominatorCanyon": '"$(jq -r '.config.optimism.eip1559DenominatorCanyon' ./config-op/genesis.json)"'/' ./config-op/rollup.json

# echo "🔧 Merging genesis files..."
# /usr/local/bin/merge_genesis ~/dev/okx/xlayer-toolkit/devnet/config-op/genesis.json ~/data/xlayer/genesis_2m.json ~/dev/okx/xlayer-toolkit/devnet/config-op/merged.genesis.json
# cp ./config-op/merged.genesis.json ./config-op/genesis-reth.json
cp ./config-op/genesis.json ./config-op/genesis-reth.json
sed_inplace 's/"number": "0x0"/"number": "'"$NEXT_BLOCK_NUMBER_HEX"'"/' ./config-op/genesis-reth.json
if [ "$MERGE_RETH_GENESIS" = "true" ]; then
echo "🔧 Merging genesis files..."

if [ -z "$MERGE_RETH_DATADIR_PATH" ]; then
echo " ❌ MERGE_RETH_DATADIR_PATH environment variable is not set"
echo "Please set MERGE_RETH_DATADIR_PATH in your .env file"
exit 1
fi

docker run --rm -v "./config-op:/config-op" -v "$MERGE_RETH_DATADIR_PATH:/reth-datadir" $XLAYER_RETH_TOOLS_IMAGE_TAG \
gen-genesis --datadir /reth-datadir --chain $MERGE_RETH_CHAIN \
--template-genesis /config-op/genesis.json --output /config-op/genesis-reth.json
else
# Create genesis-reth.json from genesis.json
echo "🔧 Creating genesis-reth.json from genesis.json ..."
cp ./config-op/genesis.json ./config-op/genesis-reth.json
sed_inplace 's/"number": "0x0"/"number": "'"$NEXT_BLOCK_NUMBER_HEX"'"/' ./config-op/genesis-reth.json
fi

# Extract contract addresses from state.json and update .env file
echo "🔧 Extracting contract addresses from state.json..."
Expand Down Expand Up @@ -134,6 +148,7 @@ echo "🔧 Setting up System Config Parameters..."
"$PWD_DIR/scripts/setup-system-config-params.sh"

# init geth sequencer
if [ "$CONDUCTOR_ENABLED" = "true" ] || [ "$SEQ_TYPE" = "geth" ]; then
echo " 🔧 Initializing geth sequencer..."
OP_GETH_DATADIR="$(pwd)/data/op-geth-seq"
rm -rf "$OP_GETH_DATADIR"
Expand All @@ -153,6 +168,15 @@ docker compose run --no-deps --rm \
echo " 🔑 Removing nodekey to generate unique node ID for other nodes..."
rm -f "$OP_GETH_DATADIR/geth/nodekey"

# Copy initialized database from op-geth-seq to other nodes
OP_GETH_RPC_DATADIR="$(pwd)/data/op-geth-rpc"

echo " 🔄 Copying database from op-geth-seq to op-geth-rpc..."
rm -rf "$OP_GETH_RPC_DATADIR"
cp -r "$OP_GETH_DATADIR" "$OP_GETH_RPC_DATADIR"

fi

# Get trusted peers enode url
sed_inplace "s|TRUSTED_PEERS=.*|TRUSTED_PEERS=$(./scripts/trusted-peers.sh)|" .env

Expand All @@ -176,14 +200,6 @@ NEW_BLOCK_HASH=$(tail -n 1 init.log | jq -r .fields.hash)
echo "NEW_BLOCK_HASH=$NEW_BLOCK_HASH"
sed_inplace "s/NEW_BLOCK_HASH=.*/NEW_BLOCK_HASH=$NEW_BLOCK_HASH/" .env


# Copy initialized database from op-geth-seq to other nodes
OP_GETH_RPC_DATADIR="$(pwd)/data/op-geth-rpc"

echo " 🔄 Copying database from op-geth-seq to op-geth-rpc..."
rm -rf "$OP_GETH_RPC_DATADIR"
cp -r "$OP_GETH_DATADIR" "$OP_GETH_RPC_DATADIR"

if [ "$CONDUCTOR_ENABLED" = "true" ]; then
if [ "$SEQ_TYPE" = "geth" ]; then
OP_GETH_DATADIR2="$(pwd)/data/op-geth-seq2"
Expand Down
26 changes: 26 additions & 0 deletions devnet/4-op-start-service.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,32 @@ if [ "$CONDUCTOR_ENABLED" = "true" ]; then
sleep 10
$SCRIPTS_DIR/active-sequencer.sh
else
docker compose up -d op-${SEQ_TYPE}-seq

# Wait for XLayer genesis block to be logged
echo "⏳ Waiting for XLayer genesis block in op-${SEQ_TYPE}-seq logs..."
MAX_WAIT=300 # 5 minutes timeout
ELAPSED=0
FOUND=false

while [ $ELAPSED -lt $MAX_WAIT ]; do
if docker logs op-${SEQ_TYPE}-seq 2>&1 | grep -q "X Layer genesis block"; then
echo "✅ X Layer genesis block found in logs!"
FOUND=true
break
fi
sleep 2
ELAPSED=$((ELAPSED + 2))
if [ $((ELAPSED % 10)) -eq 0 ]; then
echo " Still waiting... (${ELAPSED}s/${MAX_WAIT}s)"
fi
done

if [ "$FOUND" = false ]; then
echo "⚠️ Warning: Timeout waiting for X Layer genesis block (${MAX_WAIT}s)"
echo " Proceeding anyway, but there may be issues..."
fi

docker compose up -d op-seq
fi

Expand Down
2 changes: 1 addition & 1 deletion devnet/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ services:
- --l1.rpckind=standard
- --rollup.l1-chain-config=/l1-genesis.json
- --safedb.path=/data/safedb
- --conductor.enabled=${CONDUCTOR_ENABLED:-false} # 默认关闭
- --conductor.enabled=${CONDUCTOR_ENABLED:-false}
- --conductor.rpc=http://op-conductor:8547
- --pprof.enabled
- --pprof.addr=0.0.0.0
Expand Down
1 change: 0 additions & 1 deletion devnet/entrypoint/reth-seq.sh
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ if [ "$FLASHBLOCK_ENABLED" = "true" ]; then
--flashblocks.enabled \
--flashblocks.disable-rollup-boost \
--flashblocks.disable-state-root \
--flashblocks.disable-async-calculate-state-root \
--flashblocks.addr=0.0.0.0 \
--flashblocks.port=1111 \
--flashblocks.block-time=200"
Expand Down
11 changes: 8 additions & 3 deletions devnet/example.env
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,14 @@ WITHDRAWAL_DELAY_SECONDS=$MAX_CLOCK_DURATION
# Fork Configuration
# ==============================================================================
# TODO: use real fork block and parent hash in xlayer erigon
FORK_BLOCK=8593920
PARENT_HASH="0x6912fea590fd46ca6a63ec02c6733f6ffb942b84cdf86f7894c21e1757a1f68a"
NEW_BLOCK_HASH=0xddb9bdc86631494bab4b4749c4575035e2383da7c96d32d31341de862b1dd6c9
FORK_BLOCK=18696115
PARENT_HASH="0xa3a639b09fea244d577c7e7ed7bcc4eb1adb0c5b54441cd29d9949e417dfa355"
NEW_BLOCK_HASH="0x357a68f9ae7c34b99e5f8a3b4fc1a25ff801c89448505676dda856941ec8efc0"

MERGE_RETH_GENESIS=false
MERGE_RETH_CHAIN=xlayer-testnet
MERGE_RETH_DATADIR_PATH=
XLAYER_RETH_TOOLS_IMAGE_TAG=xlayer-reth-tools:latest

# ==============================================================================
# Other Configuration
Expand Down