Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile-contracts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ RUN --mount=type=cache,target=/root/.cache \
# Create final contracts image with artifacts, foundry tools, and op-deployer
FROM debian:bookworm-slim
WORKDIR /app
# RUN apt-get update && apt-get install -y ca-certificates && update-ca-certificates
RUN apt-get update && apt-get install -y ca-certificates && update-ca-certificates

# Set environment variables for Go
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
Expand Down
23 changes: 22 additions & 1 deletion test-pp-op/4-migrate-op.sh
Original file line number Diff line number Diff line change
Expand Up @@ -149,14 +149,35 @@ migrate() {
fi

echo "GETH_CMD: $GETH_CMD"
${GETH_CMD} --datadir=${OP_DATA_DIR} --gcmode=archive migrate --state.scheme=hash --ignore-addresses=0x000000000000000000000000000000005ca1ab1e --chaindata=${ERIGON_CHAINDATA_DIR} --smt-db-path=${ERIGON_SMTDATA_DIR} --output merged.genesis.json ${OP_GENESIS_PATH} 2>&1 | tee migrate.log
# Build the base command
MIGRATE_CMD="${GETH_CMD} --datadir=${OP_DATA_DIR} --gcmode=archive migrate --state.scheme=hash --ignore-addresses=0x000000000000000000000000000000005ca1ab1e --chaindata=${ERIGON_CHAINDATA_DIR} --smt-db-path=${ERIGON_SMTDATA_DIR} --output merged.genesis.json"

# Add --override-proposer if TIMELOCK_OVERRIDE_PROPOSER_ADDRESS is set and non-empty
if [ -n "${TIMELOCK_OVERRIDE_PROPOSER_ADDRESS:-}" ]; then
MIGRATE_CMD="$MIGRATE_CMD --override-proposer=${TIMELOCK_OVERRIDE_PROPOSER_ADDRESS}"
fi

# Add --override-executor if TIMELOCK_OVERRIDE_EXECUTOR_ADDRESS is set and non-empty
if [ -n "${TIMELOCK_OVERRIDE_EXECUTOR_ADDRESS:-}" ]; then
MIGRATE_CMD="$MIGRATE_CMD --override-executor=${TIMELOCK_OVERRIDE_EXECUTOR_ADDRESS}"
fi

# Add the genesis path at the end
MIGRATE_CMD="$MIGRATE_CMD ${OP_GENESIS_PATH}"

# Execute the command
$MIGRATE_CMD 2>&1 | tee migrate.log

LOG_BLOCK=$(grep -A 5 "Update rollup.json file with the following information l2" migrate.log | tail -n 5)
L2_NUMBER=$(echo "$LOG_BLOCK" | grep '"number"' | sed 's/[^0-9]*\([0-9]*\).*/\1/')
L2_HASH=$(echo "$LOG_BLOCK" | grep '"hash"' | sed 's/.*"\(0x[0-9a-fA-F]*\)".*/\1/')
echo "L2_NUMBER: $L2_NUMBER"
echo "L2_HASH: $L2_HASH"

jq --argjson num "$L2_NUMBER" --arg hash "$L2_HASH" \
'.genesis.l2.number = $num | .genesis.l2.hash = $hash' \
config-op/rollup.json > config-op/rollup.json.tmp && mv config-op/rollup.json.tmp config-op/rollup.json

# Update eip1559DenominatorCanyon to match eip1559Denominator in rollup.json
echo "🔧 Updating eip1559DenominatorCanyon to match eip1559Denominator..."

Expand Down
1 change: 0 additions & 1 deletion test-pp-op/build_images.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#!/bin/bash
set -e
set -x

# =============================================================================
# Build Images Script
Expand Down
19 changes: 19 additions & 0 deletions test-pp-op/m2-migrate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,7 @@ extract_configuration_fields() {
echo 'DISPUTE_GAME_FINALITY_DELAY_SECONDS='\$(grep '^DISPUTE_GAME_FINALITY_DELAY_SECONDS=' .env | cut -d'=' -f2) && \
echo 'CHALLENGE_PERIOD_SECONDS='\$(grep '^CHALLENGE_PERIOD_SECONDS=' .env | cut -d'=' -f2) && \
echo 'WITHDRAWAL_DELAY_SECONDS='\$(grep '^WITHDRAWAL_DELAY_SECONDS=' .env | cut -d'=' -f2) && \
echo 'DISPUTE_GAME_FACTORY_ADDRESS='\$(grep '^DISPUTE_GAME_FACTORY_ADDRESS=' .env | cut -d'=' -f2) && \
echo 'TRANSACTOR='\$(grep '^TRANSACTOR=' .env | cut -d'=' -f2)"

echo ""
Expand Down Expand Up @@ -585,6 +586,24 @@ echo "Step 7: Review Configuration After Copy"
echo "=============================================="
extract_configuration_fields "after"

echo ""
echo "=============================================="
echo "Step 8: Copy diff.genesis.json from container"
echo "=============================================="

# Check if diff.genesis.json exists in container
if docker exec ${CONTAINER_NAME} test -f /app/test-pp-op/diff.genesis.json; then
echo "Copying diff.genesis.json from container..."
if docker cp ${CONTAINER_NAME}:/app/test-pp-op/diff.genesis.json ${BACKUP_DIR}/diff.genesis.json; then
echo "✅ diff.genesis.json copied successfully to ${BACKUP_DIR}/diff.genesis.json"
else
echo "⚠️ Warning: Failed to copy diff.genesis.json"
fi
else
echo "⚠️ Warning: diff.genesis.json not found in container"
echo " Expected location: /app/test-pp-op/diff.genesis.json"
fi

echo ""
echo "=============================================="
echo "✅ Migration process completed successfully!"
Expand Down
43 changes: 43 additions & 0 deletions test-pp-op/m3-verify.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/bash
set -e
set -x

IMAGE_NAME="op-geth-migrate:latest"
CONTAINER_NAME="op-verify-container"
RAMDISK_PATH="${RAMDISK_PATH:-/mnt/ramdisk_op}"
ERIGON_DATA_DIR="${ERIGON_DATA_DIR:-/data/erigon-data}"
OP_GETH_DATA_DIR="${RAMDISK_PATH}/test-pp-op/data/op-geth-seq"

echo "Verifying migration in ramdisk..."
echo " Erigon: ${ERIGON_DATA_DIR}/chaindata"
echo " OP-Geth: ${OP_GETH_DATA_DIR}"

# Basic checks
[ -d "${ERIGON_DATA_DIR}/chaindata" ] || { echo "❌ Erigon chaindata not found at ${ERIGON_DATA_DIR}/chaindata"; exit 1; }
[ -d "${OP_GETH_DATA_DIR}" ] || { echo "❌ OP-Geth data not found at ${OP_GETH_DATA_DIR}"; exit 1; }

# Cleanup old container
docker rm -f ${CONTAINER_NAME} 2>/dev/null || true

# Start container
docker run -d --name ${CONTAINER_NAME} \
-v ${ERIGON_DATA_DIR}:/data/erigon-data \
-v ${RAMDISK_PATH}:${RAMDISK_PATH} \
${IMAGE_NAME} sleep infinity

sleep 2

# Run verification
echo "Running verification..."
docker exec -it ${CONTAINER_NAME} geth verifyMigrate \
--chaindata=/data/erigon-data/chaindata \
--datadir=${OP_GETH_DATA_DIR} \
--standalone-smt=true

RESULT=$?

# Cleanup
docker rm -f ${CONTAINER_NAME} 2>/dev/null || true

exit $RESULT

1 change: 0 additions & 1 deletion test-pp-op/utils.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#!/bin/bash
set -e
set -x

# init-erigon.sh runs outside the container.
ROOT_DIR=$(which git &>/dev/null && git rev-parse --show-toplevel || echo "/data")
Expand Down