From 453bad289eb28ace3497c10d0437c3051c12df2d Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Fri, 22 Nov 2024 00:10:41 +0700 Subject: [PATCH 1/4] ctb: Fix Holocene upgrade script --- .../scripts/upgrades/holocene/justfile | 10 +++-- .../scripts/upgrades/holocene/scripts/main.sh | 38 ++++++++++--------- .../holocene/scripts/proofs-bundle.sh | 16 ++++---- .../holocene/scripts/sc-ops-proofs.sh | 16 ++++---- .../holocene/scripts/sc-ops-sys-cfg.sh | 8 ++-- .../holocene/scripts/sys-cfg-bundle.sh | 10 ++--- .../upgrades/holocene/upgrade.dockerfile | 2 + 7 files changed, 54 insertions(+), 46 deletions(-) diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/justfile b/packages/contracts-bedrock/scripts/upgrades/holocene/justfile index 08cdc771ac92c..6a2e70cfe9453 100644 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/justfile +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/justfile @@ -4,16 +4,18 @@ default: # Run the deployment / upgrade generation image. If the image is not present locally, # it will be built. -run *args='': +run output-folder-path='output/' *args='': #!/bin/bash if [ ! "$(docker images -q op-holocene-upgrade:local 2> /dev/null)" ]; then just build-image fi + mkdir -p {{output-folder-path}} + # Run the deployment. - docker run \ + docker run -it \ --rm \ - -v $OUTPUT_FOLDER_PATH/:/output \ + -v $(pwd)/{{output-folder-path}}:/output \ --env-file=.env \ op-holocene-upgrade:local {{args}} @@ -22,5 +24,5 @@ build-image: docker build \ -t op-holocene-upgrade:local \ -f upgrade.dockerfile \ - --build-arg REV=op-contracts/v1.8.0-rc.1 \ + --build-arg REV=op-contracts/v1.8.0-rc.2 \ . diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh index 95fe1a43c231b..de6dbb7e44675 100755 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh @@ -53,8 +53,8 @@ export USE_PERMISSIONLESS_FAULT_PROOFS=${USE_PERMISSIONLESS_FAULT_PROOFS:?USE_PE # Sanity check FP configuration. if [[ $USE_PERMISSIONLESS_FAULT_PROOFS == true && $USE_FAULT_PROOFS == false ]]; then - echo "Error: USE_PERMISSIONLESS_FAULT_PROOFS cannot be true if USE_FAULT_PROOFS is false" - exit 1 + echo "Error: USE_PERMISSIONLESS_FAULT_PROOFS cannot be true if USE_FAULT_PROOFS is false" + exit 1 fi # Make the output folder, if it doesn't exist @@ -63,13 +63,13 @@ mkdir -p "$OUTPUT_FOLDER_PATH" # Find the contracts-bedrock directory CONTRACTS_BEDROCK_DIR=$(pwd) while [[ "$CONTRACTS_BEDROCK_DIR" != "/" && "${CONTRACTS_BEDROCK_DIR##*/}" != "contracts-bedrock" ]]; do - CONTRACTS_BEDROCK_DIR=$(dirname "$CONTRACTS_BEDROCK_DIR") + CONTRACTS_BEDROCK_DIR=$(dirname "$CONTRACTS_BEDROCK_DIR") done # Error out if we couldn't find it for some reason if [[ "$CONTRACTS_BEDROCK_DIR" == "/" ]]; then - echo "Error: 'contracts-bedrock' directory not found" - exit 1 + echo "Error: 'contracts-bedrock' directory not found" + exit 1 fi # Set file paths from command-line arguments @@ -78,11 +78,16 @@ export DEPLOY_CONFIG_PATH="$CONTRACTS_BEDROCK_DIR/deploy-config/deploy-config.js # Copy the files into the paths so that the script can actually access it cp "$BASE_DEPLOY_CONFIG_PATH" "$DEPLOY_CONFIG_PATH" -# Run deploy.sh +# Run deploy.sh if deployments.json does not exist DEPLOY_LOG_PATH="$OUTPUT_FOLDER_PATH/deploy.log" -if ! "$SCRIPT_DIR/deploy.sh" | tee "$DEPLOY_LOG_PATH"; then +DEPLOYMENTS_JSON_PATH="$OUTPUT_FOLDER_PATH/deployments.json" +if [[ ! -f "$DEPLOYMENTS_JSON_PATH" ]]; then + if ! "$SCRIPT_DIR/deploy.sh" | tee "$DEPLOY_LOG_PATH"; then echo "Error: deploy.sh failed" exit 1 + fi +else + prompt "Skipping deployment as $DEPLOYMENTS_JSON_PATH already exists. Continue?" fi # Extract the addresses from the deployment logs @@ -102,8 +107,7 @@ reqenv "FDG_IMPL" reqenv "PDG_IMPL" # Generate deployments.json with extracted addresses -DEPLOYMENTS_JSON_PATH="$OUTPUT_FOLDER_PATH/deployments.json" -cat << EOF > "$DEPLOYMENTS_JSON_PATH" +cat <"$DEPLOYMENTS_JSON_PATH" { "SystemConfig": "$SYSTEM_CONFIG_IMPL", "MIPS": "$MIPS_IMPL", @@ -121,16 +125,16 @@ prompt "Generate safe upgrade bundle for SystemConfig?" # Generate the system config upgrade bundle if ! "$SCRIPT_DIR/sys-cfg-bundle.sh"; then - echo "Error: sys-cfg-bundle.sh failed" - exit 1 + echo "Error: sys-cfg-bundle.sh failed" + exit 1 fi prompt "Generate superchain-ops upgrade task for SystemConfig upgrade bundle?" # Generate the superchain-ops upgrade task if ! "$SCRIPT_DIR/sc-ops-sys-cfg.sh"; then - echo "Error: sc-ops-sys-cfg.sh failed" - exit 1 + echo "Error: sc-ops-sys-cfg.sh failed" + exit 1 fi if [[ $USE_FAULT_PROOFS == true ]]; then @@ -138,15 +142,15 @@ if [[ $USE_FAULT_PROOFS == true ]]; then # Generate the proofs contracts' upgrade bundle if ! "$SCRIPT_DIR/proofs-bundle.sh"; then - echo "Error: proofs-bundle.sh failed" - exit 1 + echo "Error: proofs-bundle.sh failed" + exit 1 fi prompt "Generate superchain-ops upgrade task for proofs contracts upgrade bundle?" # Generate the superchain-ops upgrade task if ! "$SCRIPT_DIR/sc-ops-proofs.sh"; then - echo "Error: sc-ops-proofs.sh failed" - exit 1 + echo "Error: sc-ops-proofs.sh failed" + exit 1 fi fi diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/proofs-bundle.sh b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/proofs-bundle.sh index 85295d3040f1f..bc0b0c7ff314d 100755 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/proofs-bundle.sh +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/proofs-bundle.sh @@ -31,24 +31,24 @@ TX_1_PAYLOAD=$(cast calldata "setImplementation(uint32,address)" 1 "$PDG_IMPL") TX_2_PAYLOAD=$(cast calldata "setImplementation(uint32,address)" 0 "$FDG_IMPL") # Replace variables -sed -i '' "s/\$L1_CHAIN_ID/$L1_CHAIN_ID/g" "$BUNDLE_PATH" -sed -i '' "s/\$PDG_IMPL/$PDG_IMPL/g" "$BUNDLE_PATH" -sed -i '' "s/\$TX_1_PAYLOAD/$TX_1_PAYLOAD/g" "$BUNDLE_PATH" -sed -i '' "s/\$TX_2_PAYLOAD/$TX_2_PAYLOAD/g" "$BUNDLE_PATH" +sed -i "s/\$L1_CHAIN_ID/$L1_CHAIN_ID/g" "$BUNDLE_PATH" +sed -i "s/\$PDG_IMPL/$PDG_IMPL/g" "$BUNDLE_PATH" +sed -i "s/\$TX_1_PAYLOAD/$TX_1_PAYLOAD/g" "$BUNDLE_PATH" +sed -i "s/\$TX_2_PAYLOAD/$TX_2_PAYLOAD/g" "$BUNDLE_PATH" # Conditionally, if the FDG is being deployed, append the bundle extension if [ "$USE_PERMISSIONLESS_FAULT_PROOFS" == true ]; then echo "✨ USE_PERMISSIONLESS_FAULT_PROOFS=true | Adding FDG deployment to upgrade bundle." jq --argjson fdg_extension "$(cat ./templates/fdg_bundle_extension.json)" \ '.transactions += [$fdg_extension]' \ - "$BUNDLE_PATH" > "$BUNDLE_PATH.tmp" + "$BUNDLE_PATH" >"$BUNDLE_PATH.tmp" mv "$BUNDLE_PATH.tmp" "$BUNDLE_PATH" # Replace variables - sed -i '' "s/\$FDG_IMPL/$FDG_IMPL/g" "$BUNDLE_PATH" - sed -i '' "s/\$TX_2_PAYLOAD/$TX_2_PAYLOAD/g" "$BUNDLE_PATH" + sed -i "s/\$FDG_IMPL/$FDG_IMPL/g" "$BUNDLE_PATH" + sed -i "s/\$TX_2_PAYLOAD/$TX_2_PAYLOAD/g" "$BUNDLE_PATH" fi -sed -i '' "s/\$DISPUTE_GAME_FACTORY_PROXY_ADDR/$DISPUTE_GAME_FACTORY_PROXY_ADDR/g" "$BUNDLE_PATH" +sed -i "s/\$DISPUTE_GAME_FACTORY_PROXY_ADDR/$DISPUTE_GAME_FACTORY_PROXY_ADDR/g" "$BUNDLE_PATH" echo "✨ Generated proof contracts upgrade bundle at \"$BUNDLE_PATH\"" diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sc-ops-proofs.sh b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sc-ops-proofs.sh index d4ff18db5738e..ec386727d3bd9 100755 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sc-ops-proofs.sh +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sc-ops-proofs.sh @@ -27,9 +27,9 @@ cp -R "$SCRIPT_DIR/../templates/proofs-sc-ops-task/." "$TASK_DIR/" msup render -i "$TASK_DIR/input.json" -o "$TASK_DIR/OVERVIEW.md" # Generate the README -sed -i '' "s/\$MIPS_IMPL/$MIPS_IMPL/g" "$TASK_DIR/README.md" -sed -i '' "s/\$FDG_IMPL/$FDG_IMPL/g" "$TASK_DIR/README.md" -sed -i '' "s/\$PDG_IMPL/$PDG_IMPL/g" "$TASK_DIR/README.md" +sed -i "s/\$MIPS_IMPL/$MIPS_IMPL/g" "$TASK_DIR/README.md" +sed -i "s/\$FDG_IMPL/$FDG_IMPL/g" "$TASK_DIR/README.md" +sed -i "s/\$PDG_IMPL/$PDG_IMPL/g" "$TASK_DIR/README.md" # Generate the validation doc OLD_FDG=$(cast call "$DISPUTE_GAME_FACTORY_PROXY_ADDR" "gameImpls(uint32)" 0) @@ -40,8 +40,8 @@ PADDED_OLD_PDG=$(cast 2u "$OLD_PDG") PADDED_FDG_IMPL=$(cast 2u "$FDG_IMPL") PADDED_PDG_IMPL=$(cast 2u "$PDG_IMPL") -sed -i '' "s/\$DISPUTE_GAME_FACTORY_PROXY_ADDR/$DISPUTE_GAME_FACTORY_PROXY_ADDR/g" "$TASK_DIR/VALIDATION.md" -sed -i '' "s/\$OLD_FDG/$PADDED_OLD_FDG/g" "$TASK_DIR/VALIDATION.md" -sed -i '' "s/\$FDG_IMPL/$PADDED_FDG_IMPL/g" "$TASK_DIR/VALIDATION.md" -sed -i '' "s/\$PDG_IMPL/$PADDED_PDG_IMPL/g" "$TASK_DIR/VALIDATION.md" -sed -i '' "s/\$OLD_PDG/$PADDED_OLD_PDG/g" "$TASK_DIR/VALIDATION.md" +sed -i "s/\$DISPUTE_GAME_FACTORY_PROXY_ADDR/$DISPUTE_GAME_FACTORY_PROXY_ADDR/g" "$TASK_DIR/VALIDATION.md" +sed -i "s/\$OLD_FDG/$PADDED_OLD_FDG/g" "$TASK_DIR/VALIDATION.md" +sed -i "s/\$FDG_IMPL/$PADDED_FDG_IMPL/g" "$TASK_DIR/VALIDATION.md" +sed -i "s/\$PDG_IMPL/$PADDED_PDG_IMPL/g" "$TASK_DIR/VALIDATION.md" +sed -i "s/\$OLD_PDG/$PADDED_OLD_PDG/g" "$TASK_DIR/VALIDATION.md" diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sc-ops-sys-cfg.sh b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sc-ops-sys-cfg.sh index b0e4a57b32b70..a87de445d3d5a 100755 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sc-ops-sys-cfg.sh +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sc-ops-sys-cfg.sh @@ -25,7 +25,7 @@ cp -R "$SCRIPT_DIR/../templates/sys-cfg-sc-ops-task/." "$TASK_DIR/" msup render -i "$TASK_DIR/input.json" -o "$TASK_DIR/OVERVIEW.md" # Generate the README -sed -i '' "s/\$SYSTEM_CONFIG_IMPL/$SYSTEM_CONFIG_IMPL/g" "$TASK_DIR/README.md" +sed -i "s/\$SYSTEM_CONFIG_IMPL/$SYSTEM_CONFIG_IMPL/g" "$TASK_DIR/README.md" # Generate the validation doc OLD_SYS_CFG=$(cast impl "$SYSTEM_CONFIG_PROXY_ADDR") @@ -33,6 +33,6 @@ OLD_SYS_CFG=$(cast impl "$SYSTEM_CONFIG_PROXY_ADDR") PADDED_OLD_SYS_CFG=$(cast 2u "$OLD_SYS_CFG") PADDED_SYS_CFG=$(cast 2u "$SYSTEM_CONFIG_IMPL") -sed -i '' "s/\$SYSTEM_CONFIG_PROXY_ADDR/$SYSTEM_CONFIG_PROXY_ADDR/g" "$TASK_DIR/VALIDATION.md" -sed -i '' "s/\$OLD_SYS_CFG/$PADDED_OLD_SYS_CFG/g" "$TASK_DIR/VALIDATION.md" -sed -i '' "s/\$SYSTEM_CONFIG_IMPL/$PADDED_SYS_CFG/g" "$TASK_DIR/VALIDATION.md" +sed -i "s/\$SYSTEM_CONFIG_PROXY_ADDR/$SYSTEM_CONFIG_PROXY_ADDR/g" "$TASK_DIR/VALIDATION.md" +sed -i "s/\$OLD_SYS_CFG/$PADDED_OLD_SYS_CFG/g" "$TASK_DIR/VALIDATION.md" +sed -i "s/\$SYSTEM_CONFIG_IMPL/$PADDED_SYS_CFG/g" "$TASK_DIR/VALIDATION.md" diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sys-cfg-bundle.sh b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sys-cfg-bundle.sh index 64c34088ebf53..bde4917e6b823 100755 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sys-cfg-bundle.sh +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/sys-cfg-bundle.sh @@ -26,10 +26,10 @@ cp ./templates/sys_cfg_upgrade_bundle_template.json "$BUNDLE_PATH" TX_1_PAYLOAD=$(cast calldata "upgrade(address,address)" "$SYSTEM_CONFIG_PROXY_ADDR" "$SYSTEM_CONFIG_IMPL") # Replace variables -sed -i '' "s/\$L1_CHAIN_ID/$L1_CHAIN_ID/g" "$BUNDLE_PATH" -sed -i '' "s/\$PROXY_ADMIN_ADDR/$PROXY_ADMIN_ADDR/g" "$BUNDLE_PATH" -sed -i '' "s/\$SYSTEM_CONFIG_PROXY_ADDR/$SYSTEM_CONFIG_PROXY_ADDR/g" "$BUNDLE_PATH" -sed -i '' "s/\$SYSTEM_CONFIG_IMPL/$SYSTEM_CONFIG_IMPL/g" "$BUNDLE_PATH" -sed -i '' "s/\$TX_1_PAYLOAD/$TX_1_PAYLOAD/g" "$BUNDLE_PATH" +sed -i "s/\$L1_CHAIN_ID/$L1_CHAIN_ID/g" "$BUNDLE_PATH" +sed -i "s/\$PROXY_ADMIN_ADDR/$PROXY_ADMIN_ADDR/g" "$BUNDLE_PATH" +sed -i "s/\$SYSTEM_CONFIG_PROXY_ADDR/$SYSTEM_CONFIG_PROXY_ADDR/g" "$BUNDLE_PATH" +sed -i "s/\$SYSTEM_CONFIG_IMPL/$SYSTEM_CONFIG_IMPL/g" "$BUNDLE_PATH" +sed -i "s/\$TX_1_PAYLOAD/$TX_1_PAYLOAD/g" "$BUNDLE_PATH" echo "✨ Generated SystemConfig upgrade bundle at \"$BUNDLE_PATH\"" diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/upgrade.dockerfile b/packages/contracts-bedrock/scripts/upgrades/holocene/upgrade.dockerfile index f91ff8dadd83e..380cdc2e47ecd 100644 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/upgrade.dockerfile +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/upgrade.dockerfile @@ -58,5 +58,7 @@ RUN forge script ./scripts/upgrades/holocene/DeployUpgrade.s.sol || true # Set the working directory to where upgrade.sh is located WORKDIR /app/packages/contracts-bedrock/scripts/upgrades/holocene +# quick hack to use modified local scripts +COPY scripts/*.sh ./scripts/ # Set the entrypoint to the main.sh script ENTRYPOINT ["./scripts/main.sh"] From 91bf9cf2ef6f2c8a2a94c20a03499f0b8078a1d4 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Fri, 22 Nov 2024 12:32:49 +0700 Subject: [PATCH 2/4] improve README --- .../contracts-bedrock/scripts/upgrades/holocene/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/README.md b/packages/contracts-bedrock/scripts/upgrades/holocene/README.md index f16127ffebbd0..c3098fccc3f3b 100644 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/README.md +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/README.md @@ -39,3 +39,8 @@ cp .env.example .env && vim .env # - Optionally, generate a `superchain-ops` upgrade task. just run ``` + +Note that in order to build the Docker image, you have to allow Docker to use at least 16GB of +memory, or the Solidity compilations may fail. Docker's default is only 8GB. + +The `deploy-config.json` that you use for your chain must set the latest `faultGameAbsolutePrestate` value, not the one at deployment. For Holocene, there's currently one available that works for Sepolia Base, OP, Mode and Zora: `0x03925193e3e89f87835bbdf3a813f60b2aa818a36bbe71cd5d8fd7e79f5e8afe` From 661b66ff1e8d29f511d69f7d9fc9388d355fc889 Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Fri, 22 Nov 2024 14:03:55 +0700 Subject: [PATCH 3/4] pass deploy-config as parameter to just run, other improvements --- .../scripts/upgrades/holocene/.env.example | 4 ++-- .../scripts/upgrades/holocene/README.md | 14 ++++++++++++-- .../scripts/upgrades/holocene/justfile | 5 +++-- .../scripts/upgrades/holocene/scripts/main.sh | 7 ++++--- .../scripts/upgrades/holocene/upgrade.dockerfile | 3 ++- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/.env.example b/packages/contracts-bedrock/scripts/upgrades/holocene/.env.example index 02d67a4bad06f..f8b37166cb338 100644 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/.env.example +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/.env.example @@ -16,10 +16,10 @@ ETH_RPC_URL= PRIVATE_KEY= # Path to the deploy config JSON file -DEPLOY_CONFIG_PATH= +# DEPLOY_CONFIG_PATH= # using first argument to `just run` instead # Path to the folder where output artifacts will be stored -OUTPUT_FOLDER_PATH= +# OUTPUT_FOLDER_PATH= # using second argument to `just run` instead # Address of deployed `PreimageOracle` contract. PREIMAGE_ORACLE_ADDR= diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/README.md b/packages/contracts-bedrock/scripts/upgrades/holocene/README.md index c3098fccc3f3b..a671362bff853 100644 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/README.md +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/README.md @@ -37,10 +37,20 @@ cp .env.example .env && vim .env # - Deploy the new smart contract implementations. # - Optionally, generate a safe upgrade bundle. # - Optionally, generate a `superchain-ops` upgrade task. -just run +# +# The first argument must be the absolute path to your deploy-config.json. +# You can optionally specify an output folder path different from the default `output/` as a +# second argument to `just run`, also as an absolute path. +just run $(realpath path/to/deploy-config.json) ``` Note that in order to build the Docker image, you have to allow Docker to use at least 16GB of memory, or the Solidity compilations may fail. Docker's default is only 8GB. -The `deploy-config.json` that you use for your chain must set the latest `faultGameAbsolutePrestate` value, not the one at deployment. For Holocene, there's currently one available that works for Sepolia Base, OP, Mode and Zora: `0x03925193e3e89f87835bbdf3a813f60b2aa818a36bbe71cd5d8fd7e79f5e8afe` +The `deploy-config.json` that you use for your chain must set the latest `faultGameAbsolutePrestate` +value, not the one at deployment. There's currently one available that includes the Sepolia +Superchain Holocene activations for Base, OP, Mode and Zora: +`0x03925193e3e89f87835bbdf3a813f60b2aa818a36bbe71cd5d8fd7e79f5e8afe` + +If you want to make local modifications to the scripts in `scripts/`, you need to build the Docker +image again with `just build-image` before running `just run`. diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/justfile b/packages/contracts-bedrock/scripts/upgrades/holocene/justfile index 6a2e70cfe9453..ac08df6813242 100644 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/justfile +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/justfile @@ -4,7 +4,7 @@ default: # Run the deployment / upgrade generation image. If the image is not present locally, # it will be built. -run output-folder-path='output/' *args='': +run deploy-config-path output-folder-path="$(pwd)/output/" *args='': #!/bin/bash if [ ! "$(docker images -q op-holocene-upgrade:local 2> /dev/null)" ]; then just build-image @@ -15,7 +15,8 @@ run output-folder-path='output/' *args='': # Run the deployment. docker run -it \ --rm \ - -v $(pwd)/{{output-folder-path}}:/output \ + -v {{output-folder-path}}:/output \ + -v {{deploy-config-path}}:/app/packages/contracts-bedrock/deploy-config/deploy-config.json \ --env-file=.env \ op-holocene-upgrade:local {{args}} diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh index de6dbb7e44675..ab432480ab6c8 100755 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh @@ -37,8 +37,8 @@ export NETWORK="${NETWORK:?NETWORK must be set}" export ETHERSCAN_API_KEY=${ETHERSCAN_API_KEY:?ETHERSCAN_API_KEY must be set} export ETH_RPC_URL=${ETH_RPC_URL:?ETH_RPC_URL must be set} export PRIVATE_KEY=${PRIVATE_KEY:?PRIVATE_KEY must be set} -export BASE_DEPLOY_CONFIG_PATH=${DEPLOY_CONFIG_PATH:?DEPLOY_CONFIG_PATH must be set} -export OUTPUT_FOLDER_PATH=${OUTPUT_FOLDER_PATH:?OUTPUT_FOLDER_PATH must be set} +# export BASE_DEPLOY_CONFIG_PATH=${DEPLOY_CONFIG_PATH:?DEPLOY_CONFIG_PATH must be set} +export OUTPUT_FOLDER_PATH="/output" export SYSTEM_CONFIG_IMPL_ADDR=${SYSTEM_CONFIG_IMPL_ADDR:-$(fetch_standard_address "$NETWORK" "$RELEASE" "system_config")} export MIPS_IMPL_ADDR=${MIPS_IMPL_ADDR:-$(fetch_standard_address "$NETWORK" "$RELEASE" "mips")} export PREIMAGE_ORACLE_ADDR=${PREIMAGE_ORACLE_ADDR:?PREIMAGE_ORACLE_ADDR must be set} @@ -76,7 +76,8 @@ fi export DEPLOY_CONFIG_PATH="$CONTRACTS_BEDROCK_DIR/deploy-config/deploy-config.json" # Copy the files into the paths so that the script can actually access it -cp "$BASE_DEPLOY_CONFIG_PATH" "$DEPLOY_CONFIG_PATH" +# Mounting it via Docker instead. +# cp "$BASE_DEPLOY_CONFIG_PATH" "$DEPLOY_CONFIG_PATH" # Run deploy.sh if deployments.json does not exist DEPLOY_LOG_PATH="$OUTPUT_FOLDER_PATH/deploy.log" diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/upgrade.dockerfile b/packages/contracts-bedrock/scripts/upgrades/holocene/upgrade.dockerfile index 380cdc2e47ecd..33166fe6e5ad0 100644 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/upgrade.dockerfile +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/upgrade.dockerfile @@ -58,7 +58,8 @@ RUN forge script ./scripts/upgrades/holocene/DeployUpgrade.s.sol || true # Set the working directory to where upgrade.sh is located WORKDIR /app/packages/contracts-bedrock/scripts/upgrades/holocene -# quick hack to use modified local scripts +# allows to use modified local scripts COPY scripts/*.sh ./scripts/ + # Set the entrypoint to the main.sh script ENTRYPOINT ["./scripts/main.sh"] From 2eae5720811db5ff74f3888aab847caca89f468d Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Fri, 22 Nov 2024 18:02:06 +0700 Subject: [PATCH 4/4] remove commented-out variables --- .../scripts/upgrades/holocene/.env.example | 8 ++------ .../scripts/upgrades/holocene/scripts/main.sh | 7 +------ 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/.env.example b/packages/contracts-bedrock/scripts/upgrades/holocene/.env.example index f8b37166cb338..2d7d84e67aa95 100644 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/.env.example +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/.env.example @@ -2,6 +2,8 @@ # ↓ Required ↓ # ############################################## +# NOTE: The deploy config must be provided as a first argument to `just run`! + # The network to deploy the contracts to. # Must be one of 'mainnet', 'sepolia' NETWORK= @@ -15,12 +17,6 @@ ETH_RPC_URL= # Private key used to deploy the new contracts for this upgrade PRIVATE_KEY= -# Path to the deploy config JSON file -# DEPLOY_CONFIG_PATH= # using first argument to `just run` instead - -# Path to the folder where output artifacts will be stored -# OUTPUT_FOLDER_PATH= # using second argument to `just run` instead - # Address of deployed `PreimageOracle` contract. PREIMAGE_ORACLE_ADDR= diff --git a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh index ab432480ab6c8..7ae6a55ed72a2 100755 --- a/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh +++ b/packages/contracts-bedrock/scripts/upgrades/holocene/scripts/main.sh @@ -37,7 +37,6 @@ export NETWORK="${NETWORK:?NETWORK must be set}" export ETHERSCAN_API_KEY=${ETHERSCAN_API_KEY:?ETHERSCAN_API_KEY must be set} export ETH_RPC_URL=${ETH_RPC_URL:?ETH_RPC_URL must be set} export PRIVATE_KEY=${PRIVATE_KEY:?PRIVATE_KEY must be set} -# export BASE_DEPLOY_CONFIG_PATH=${DEPLOY_CONFIG_PATH:?DEPLOY_CONFIG_PATH must be set} export OUTPUT_FOLDER_PATH="/output" export SYSTEM_CONFIG_IMPL_ADDR=${SYSTEM_CONFIG_IMPL_ADDR:-$(fetch_standard_address "$NETWORK" "$RELEASE" "system_config")} export MIPS_IMPL_ADDR=${MIPS_IMPL_ADDR:-$(fetch_standard_address "$NETWORK" "$RELEASE" "mips")} @@ -72,13 +71,9 @@ if [[ "$CONTRACTS_BEDROCK_DIR" == "/" ]]; then exit 1 fi -# Set file paths from command-line arguments +# The deploy config is mounted via Docker to this file export DEPLOY_CONFIG_PATH="$CONTRACTS_BEDROCK_DIR/deploy-config/deploy-config.json" -# Copy the files into the paths so that the script can actually access it -# Mounting it via Docker instead. -# cp "$BASE_DEPLOY_CONFIG_PATH" "$DEPLOY_CONFIG_PATH" - # Run deploy.sh if deployments.json does not exist DEPLOY_LOG_PATH="$OUTPUT_FOLDER_PATH/deploy.log" DEPLOYMENTS_JSON_PATH="$OUTPUT_FOLDER_PATH/deployments.json"