From 7c511da2606e65181a729881d21c4b3a084cb53b Mon Sep 17 00:00:00 2001 From: obynonwane Date: Thu, 14 Aug 2025 10:25:35 +0000 Subject: [PATCH 01/13] fix upgrade agglayer with specified version using kurtosis service update --- .../README.md | 41 +++ .../assets/add_rollup_type.json | 17 + .../assets/cdk-erigon-pp.yml | 66 ++++ .../assets/cdk-erigon-rollup.yml | 63 ++++ .../assets/cdk-erigon-validium.yml | 9 + .../env.example | 13 + .../run.sh | 291 ++++++++++++++++++ 7 files changed, 500 insertions(+) create mode 100644 scenarios/agglayer-upgrade-with-supplied-version/README.md create mode 100644 scenarios/agglayer-upgrade-with-supplied-version/assets/add_rollup_type.json create mode 100644 scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml create mode 100644 scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml create mode 100644 scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml create mode 100644 scenarios/agglayer-upgrade-with-supplied-version/env.example create mode 100755 scenarios/agglayer-upgrade-with-supplied-version/run.sh diff --git a/scenarios/agglayer-upgrade-with-supplied-version/README.md b/scenarios/agglayer-upgrade-with-supplied-version/README.md new file mode 100644 index 000000000..a78dfc2dc --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/README.md @@ -0,0 +1,41 @@ +# Agglayer Upgrade/Downgrade Automation + +This repo contains shell scripts to automate **Agglayer image upgrades and downgrades** while running rollup testnets inside **Kurtosis** and attaching Agglayer services via **Docker Compose**. + +It is designed to: + +- Bootstrap multiple rollup flavors (Validium, Rollup, PP) into the **same Kurtosis enclave**. +- Start Agglayer at a **FROM_TAG** version. +- Upgrade Agglayer to a **TO_TAG** version. +- Optionally downgrade back to the original **FROM_TAG** for validation. +- Cleanly tear down the setup using: + ```bash + kurtosis enclave rm cdk --force + +--- + +## Scripts + +- `run.sh` + Main orchestration script. Handles bootstrap, upgrade, and optional downgrade. + - **Upgrade usage:** + ```bash + ./run.sh FROM_TAG TO_TAG + ``` + - **Downgrade usage:** + ```bash + ./run.sh FROM_TAG TO_TAG true + ``` + +## Arguments & Descriptions + +| Argument | Required | Description | +|------------------------|----------|-------------| +| `` | Yes | Docker image tag to start with (e.g., `0.3.0-rc.21`)| +| `` | Yes | Docker image tag to upgrade to (e.g., `0.3.5`)| +| `[OPTION]` | No | Optional: set to `true` to downgrade back to `` after upgrade | + +--- + + + diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/add_rollup_type.json b/scenarios/agglayer-upgrade-with-supplied-version/assets/add_rollup_type.json new file mode 100644 index 000000000..6fb808903 --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/add_rollup_type.json @@ -0,0 +1,17 @@ +{ + "type": "EOA", + "consensusContract": "PolygonPessimisticConsensus", + "consensusContractAddress": "0xAC77A07dD1683DeA96c08F286b67783fB1e4B583", + "polygonRollupManagerAddress": "0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2", + "verifierAddress": "0xf22E2B040B639180557745F47aB97dFA95B1e22a", + "description": "Type: Pessimistic, Upgrade v0.2.x to v0.3.x", + "forkID": 12, + "timelockDelay": 0, + "timelockSalt": "", + "deployerPvtKey": "0x12d7de8621a77640c9241b2595ba78ce443d05e94090365ab3bb5e19df82c625", + "maxFeePerGas": "", + "maxPriorityFeePerGas": "", + "multiplierGas": "", + "genesisRoot": "0xd9c8633088ce212acd9280c5f64623add99871234145a808ab6fbdbac5659a87", + "programVKey": "0x00e60517ac96bf6255d81083269e72c14ad006e5f336f852f7ee3efb91b966be" +} diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml new file mode 100644 index 000000000..c000e6ee5 --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml @@ -0,0 +1,66 @@ +# This file has been generated automatically. +deployment_stages: + deploy_l1: false + deploy_agglayer: false + deploy_cdk_bridge_ui: false +args: + deployment_suffix: "-003" + zkevm_rollup_chain_id: 30303 + zkevm_rollup_id: 3 + verbosity: debug + zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 + zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 + additional_services: + - tx_spammer + consensus_contract_type: pessimistic + erigon_strict_mode: false + gas_token_enabled: false + zkevm_use_real_verifier: false + enable_normalcy: true + agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key + agglayer_prover_primary_prover: network-prover + sequencer_type: erigon + + # sequencer + zkevm_l2_sequencer_address: "0x0d59BC8C02A089D48d9Cd465b74Cb6E23dEB950D" + zkevm_l2_sequencer_private_key: "0xf6385a27e7710349617340c6f9310e88f0aad10d01646a9bb204177431babcd8" + + # aggregator + zkevm_l2_aggregator_address: "0x2D20D9081fb403E856355F2cddd1C4863D0109cb" + zkevm_l2_aggregator_private_key: "0x2cb77c2cca48d3fee64c14d73564fd6e90676a4f6da6545681e10c8b9b22fce2" + + # claimtxmanager + zkevm_l2_claimtxmanager_address: "0x1359D1eAf25aADaA04304Ee7EFC5b94C43e0e1D5" + zkevm_l2_claimtxmanager_private_key: "0xb0244fcbf83d7aaa2d51dc78a55233058af31797a974d25f724de041f3484418" + + # timelock + zkevm_l2_timelock_address: "0x7803E33388C695E7cbd85eD55f4abe6455E9ce2e" + zkevm_l2_timelock_private_key: "0xe12e739b58489a2c2f49c472169ba20eb89d039e71f04d5342ab645dc3fb6540" + + # admin + # zkevm_l2_admin_address: "0x5666Cc6B46ad32b469D9Aec7C1eE6d02f7312759" + # zkevm_l2_admin_private_key: "0xd2ee309113fc97bed6030201fea0d1234d6b4acbc47b9a4fe12a8fa5270052aa" + + # loadtest + zkevm_l2_loadtest_address: "0x5198d92d278Fd36e5745C308F728d256198A0e3d" + zkevm_l2_loadtest_private_key: "0xcc594c53eca19f9e56200cadf60c94757b0bdee1fc4bc73552ba879d51fd82b3" + + # agglayer + zkevm_l2_agglayer_address: "0x9b5A1f2bC7bb48419d9f6407CFcA454F87884072" + zkevm_l2_agglayer_private_key: "0x7b1164f53f633e940089031a3c265c308d2bcf4756bc8dcf9046bf00e21ec3b1" + + # dac + zkevm_l2_dac_address: "0xA9875E9B9FE3BD46da758ba69a5d4B9dFCA6F133" + zkevm_l2_dac_private_key: "0x5d1a923f60e2423932f782dab9510e1c2fd64b0f29b0893978864191ecdd6f4f" + + # proofsigner + zkevm_l2_proofsigner_address: "0x3AA075513578d86dC63f9344cD9489b948d7686a" + zkevm_l2_proofsigner_private_key: "0xfd402dcc8c7fc7ce0df59fe12f33da7ac2ed760a619188ff16974fde16f9b00e" + + # l1testing + zkevm_l2_l1testing_address: "0x943413d3b2E1B6aF09a758c35b6F5d23a4d6d262" + zkevm_l2_l1testing_private_key: "0x27d8ab2d65296d0da072b172ca9ca874583f9930adb6ac3222fd9494ae7c7f0d" + + # claimsponsor + zkevm_l2_claimsponsor_address: "0xeA06890A8A547aDd71f98A6845542eb3B63C2862" + zkevm_l2_claimsponsor_private_key: "0xb97112e36cfcde131faa110430eed6593b75406e5d6991d8db3ed0f492a73b6f" diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml new file mode 100644 index 000000000..3b3bb2784 --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml @@ -0,0 +1,63 @@ +# This file has been generated automatically. +deployment_stages: + deploy_l1: false + deploy_agglayer: false + deploy_cdk_bridge_ui: false +args: + verbosity: debug + zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 + zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 + additional_services: + - tx_spammer + consensus_contract_type: rollup + sequencer_type: erigon + agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key + deployment_suffix: "-002" + zkevm_rollup_chain_id: 20202 + zkevm_rollup_id: 2 + + # polycli wallet inspect --mnemonic 'tennis coconut priority easy toward lava lake cigar address private visit purity' --addresses 11 | tee keys.txt | jq -r '.Addresses[] | [.ETHAddress, .HexPrivateKey] | @tsv' | awk 'BEGIN{split("sequencer,aggregator,claimtxmanager,timelock,admin,loadtest,agglayer,dac,proofsigner,l1testing,claimsponsor",roles,",")} {print "# " roles[NR] "\nzkevm_l2_" roles[NR] "_address: " $1 ""; print "zkevm_l2_" roles[NR] "_private_key: 0x" $2 "\n"}' + + # sequencer + zkevm_l2_sequencer_address: "0x3bd49B59d0d61e83FA5C7856312b9bfEddbCbDA8" + zkevm_l2_sequencer_private_key: "0xf1b0412da5d68afa81e8301d93c56b125ee764e2fab4e919afb81ae14babc5e3" + + # aggregator + zkevm_l2_aggregator_address: "0x3BAEE05bd44f4Ee84709C7Df6861A3528f4c8286" + zkevm_l2_aggregator_private_key: "0x8bcbeae7253c993102e8269f2b48639a832095e0a0235b609472b7b9286290b9" + + # claimtxmanager + zkevm_l2_claimtxmanager_address: "0x1a1C53bA714643B53b39D82409915b513349a1ff" + zkevm_l2_claimtxmanager_private_key: "0xcc8de19498a724ec38c7c774d447a51e629ee947ec360f16913ab3000f5ad676" + + # timelock + zkevm_l2_timelock_address: "0xb2BCBC707c88f1a41d3DBb982b9A8996cA83Df82" + zkevm_l2_timelock_private_key: "0xfbfd097f603d5ed2f1bf79a756d021e8c2a1771bb13ea42a36f534ac731739d3" + + # # admin + # zkevm_l2_admin_address: "0x78770Cc5Bd03F93B8B401Ea91B77DF544Deb2265" + # zkevm_l2_admin_private_key: "0x6048871542899ff1d8ef8e2efc8037115676b083f1fcc680b995f3bb9470bcf6" + + # loadtest + zkevm_l2_loadtest_address: "0x51406206342270c822b5d9dfb261279eEdF0Af20" + zkevm_l2_loadtest_private_key: "0x72e05c95e8c0b0380c1353dbfd50d1d8a762861ac008b8c270963f81abf4304c" + + # agglayer + zkevm_l2_agglayer_address: "0xB8b680902bba8e04C78660D33a97a87E4CC4e797" + zkevm_l2_agglayer_private_key: "0x6fadecf5f47e84428042d36ecbfb1d05c587d658cb0d66e10151561e74340e81" + + # dac + zkevm_l2_dac_address: "0x64a19B5D36664fa68dc8bAC6574A5B272F08ACc1" + zkevm_l2_dac_private_key: "0x29506f6abfd8ff62b29af422c4a0af1dbc989d7154220da916e565c8cc04ce47" + + # proofsigner + zkevm_l2_proofsigner_address: "0xD3F0C080A75f537B361A3Eadf24EE5d6F72a15B3" + zkevm_l2_proofsigner_private_key: "0x89ac1075d2f7c27ba296fb4d625b0e10f272f8f7fa96320f7f0832a41b18e54b" + + # l1testing + zkevm_l2_l1testing_address: "0xcd9Ac30C72a8757F446F814aFfbc32847c2CD17D" + zkevm_l2_l1testing_private_key: "0xbdbfded25015702c72558c5a3cea747713734d3535fe832b4cd4f1bb882977ea" + + # claimsponsor + zkevm_l2_claimsponsor_address: "0xB2c5d585cc8c1f9FC51035941CFdA42DB83E9886" + zkevm_l2_claimsponsor_private_key: "0x4c545e05d1e85a36d316b92a4de4588c60fe3c5dbb2c235306d1ce4e439b751a" diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml new file mode 100644 index 000000000..42e944445 --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml @@ -0,0 +1,9 @@ +args: + verbosity: debug + agglayer_image: "ghcr.io/agglayer/agglayer:0.2.5" + zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 + zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 + additional_services: + - tx_spammer + sequencer_type: erigon + agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key \ No newline at end of file diff --git a/scenarios/agglayer-upgrade-with-supplied-version/env.example b/scenarios/agglayer-upgrade-with-supplied-version/env.example new file mode 100644 index 000000000..472c098b3 --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/env.example @@ -0,0 +1,13 @@ +ENCLAVE_NAME=cdk +KURTOSIS_PACKAGE_HASH=e05e8cdcfee52a106ec6850b8956b77171cdd948 # Kurtosis tag v0.3.4 + v9.0.0-rc.2-pp contracts + CDK-Erigon Validium by default +AGGLAYER_CONTRACTS_VERSION=feature/tools-fixes +SP1_NETWORK_KEY=0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8 # Replace with valid key +NETWORK_RPC_URL=https://rpc.production.succinct.xyz + +# Image versions +AGGLAYER_IMAGE=ghcr.io/agglayer/agglayer:0.3.0-rc.21 + + + +FROM_TAG=0.3.0-rc.21 +TO_TAG=0.3.5 \ No newline at end of file diff --git a/scenarios/agglayer-upgrade-with-supplied-version/run.sh b/scenarios/agglayer-upgrade-with-supplied-version/run.sh new file mode 100755 index 000000000..d5508cbf7 --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/run.sh @@ -0,0 +1,291 @@ +#!/bin/env bash +source ../common/load-env.sh +load_env + + +# ────────────────────────────────────────────────────────────────────────────── +# Usage: ./run.sh [true] +# e.g. 0.3.0-rc.21 +# e.g. 0.3.5 +# [1] optional: perform upgrade from kurtosis base image (either 1(kurtosis base image) or 2(base image from cli)) +# [true] optional: perform downgrade back to +# Exit immediately if no args provided +if [[ $# -lt 2 ]]; then + echo "Error: Missing required arguments." + echo "Usage: $0 [true]" + exit 1 +fi + + +PREV_FROM_TAG="$FROM_TAG" +PREV_TO_TAG="$TO_TAG" + + + +FROM_TAG="$1" +TO_TAG="$2" +DOWNGRADE="${3:-false}" + + +if [[ "$DOWNGRADE" == "true" ]]; then + if [[ "$TO_TAG" == "$PREV_FROM_TAG" && "$FROM_TAG" == "$PREV_TO_TAG" ]]; then + echo "✅ Downgrade tags match previous upgrade." + else + echo "❌ Downgrade tag mismatch!" + echo "Expected FROM_TAG=$PREV_TO_TAG, TO_TAG=$PREV_FROM_TAG" + echo "Got FROM_TAG=$FROM_TAG, TO_TAG=$TO_TAG" + exit 1 + fi +fi + +# Compose full image references +IMAGE_BASE="ghcr.io/agglayer/agglayer" +FROM_IMAGE="${IMAGE_BASE}:${FROM_TAG}" +TO_IMAGE="${IMAGE_BASE}:${TO_TAG}" + + + +sed -i "s#^FROM_IMAGE=.*#FROM_IMAGE=$FROM_IMAGE#" .env +sed -i "s#^TO_IMAGE=.*#TO_IMAGE=$TO_IMAGE#" .env +sed -i "s#^FROM_TAG=.*#FROM_TAG=$FROM_TAG#" .env +sed -i "s#^TO_TAG=.*#TO_TAG=$TO_TAG#" .env + + +kurtosis_hash="$KURTOSIS_PACKAGE_HASH" +kurtosis_enclave_name="$ENCLAVE_NAME" +contracts_version="$AGGLAYER_CONTRACTS_VERSION" + +echo ":-kurtosis hash:= $kurtosis_hash" +echo ":-enclave name:= $kurtosis_enclave_name" +echo ":-contract version:= $contracts_version" +echo ":-from image:= $FROM_IMAGE" +echo ":-to image:= $TO_IMAGE" +echo ":-from tag:= $FROM_TAG" +echo ":-to tag:= $TO_TAG" +echo ":-downgrade:= $DOWNGRADE" +echo ":-sp1 network key:= $SP1_NETWORK_KEY" + + +# Create a yml files with a real SP1 keys if needed +yq -y --arg sp1key "$SP1_NETWORK_KEY" ' +.args.agglayer_prover_sp1_key = $sp1key +' ./assets/cdk-erigon-validium.yml > initial-cdk-erigon-validium.yml + +yq -y --arg sp1key "$SP1_NETWORK_KEY" ' +.args.agglayer_prover_sp1_key = $sp1key +' ./assets/cdk-erigon-rollup.yml > initial-cdk-erigon-rollup.yml + +yq -y --arg sp1key "$SP1_NETWORK_KEY" ' +.args.agglayer_prover_sp1_key = $sp1key +' ./assets/cdk-erigon-pp.yml > initial-cdk-erigon-pp.yml + + + + +# checks if the user is requesting for downgrade +if [[ "$DOWNGRADE" == "true" ]]; then + +# check if there is a running enclave +enclaveExist=$(kurtosis enclave ls | awk '$3 == "RUNNING" {print $2; exit}') +if [[ "$enclaveExist" != "$kurtosis_enclave_name" ]]; then + echo "Enclave name is not $kurtosis_enclave_name. Exiting...OR No Running enclave " + exit 1 +fi + + +prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') +echo "$prev_aglr_readrpc - Current agglayer node rpc port" +if [[ "$prev_aglr_readrpc" == "9090" ]]; then + prev_aglr_readrpc="4444" +else + prev_aglr_readrpc="9090" +fi + +echo "$prev_aglr_readrpc - agglayer node rpc port to be used" + +echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' +echo '║ R U N N I N G D O W N G R A D E F O R A G G L A Y E R F R O M S U P L I E D T A G ║' +echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' + +kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer \ + --image "$FROM_IMAGE" \ + --ports aglr-readrpc="$prev_aglr_readrpc",prometheus=9092 +sleep 10 +kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer-prover \ + --image "$FROM_IMAGE" \ + --ports api=4445,prometheus=9093 + +echo "C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M B A S E V E R S I O N: $FROM_TAG " +echo "======================================================================================================" +kurtosis service inspect cdk agglayer --output json +echo "======================================================================================================" + + +sleep 15 +prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') +kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer \ + --image "$TO_IMAGE" \ + --ports aglr-readrpc="$prev_aglr_readrpc",prometheus=9092 +sleep 10 +kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer-prover \ + --image "$TO_IMAGE" \ + --ports api=4445,prometheus=9093 + +echo "DOWNGRADED: C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D T A R G E T V E R S I O N: $TO_TAG " +echo "=====================================================================================================================================" +kurtosis service inspect cdk agglayer --output json +echo "=====================================================================================================================================" + + +echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════╗' +echo '║ 🎉 💃💃💃💃💃 D O W N G R A D I N G A G G L A Y E R S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' +echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════╝' + +else + +echo '╔═══════════════════════════════════════════════════════════════╗' +echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M ║' +echo '╚═══════════════════════════════════════════════════════════════╝' + + +kurtosis run \ + --enclave "$kurtosis_enclave_name" \ + --args-file ./initial-cdk-erigon-validium.yml \ + "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + +contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') +contracts_container_name=contracts-001--$contracts_uuid + +# Get the deployment details +docker cp $contracts_container_name:/opt/zkevm/combined.json . +rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) +l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) +l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) + +L1_BRIDGE_ADDR=$l1_bridge_address +L2_BRIDGE_ADDR=$l2_bridge_address +export L1_BRIDGE_ADDR +export L2_BRIDGE_ADDR + +echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' +echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M S U C C E S S F U L L ║' +echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' +echo "=======================================================================================================================" +sleep 10 + +prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') +echo $prev_aglr_readrpc + + + + + +echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════╗' +echo '║ R U N N I N G U P G R A D E F O R A G G L A Y E R F R O M S U P L I E D T A G ║' +echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════╝' + +prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') +kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer \ + --image "$FROM_IMAGE" \ + --ports aglr-readrpc=9090,prometheus=9092 +sleep 10 +kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer-prover \ + --image "$FROM_IMAGE" \ + --ports api=4445,prometheus=9093 + + +echo "C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D B A S E V E R S I O N: $FROM_TAG " +echo "========================================================================================================================" +kurtosis service inspect cdk agglayer --output json +echo "========================================================================================================================" + +sleep 15 +prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') +kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer \ + --image "$TO_IMAGE" \ + --ports aglr-readrpc="$prev_aglr_readrpc",prometheus=9092 +sleep 10 +kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer-prover \ + --image "$TO_IMAGE" \ + --ports api=4445,prometheus=9093 + +prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') +echo "UPGRADED: C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D T A R G E T V E R S I O N: $TO_TAG " +echo "=====================================================================================================================================" +kurtosis service inspect cdk agglayer --output json +echo "=====================================================================================================================================" + +echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' +echo '║ 🎉 💃💃💃💃💃 U P G R A D I N G A G G L A Y E R T O T A R G E T V E R S I O N S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' +echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' + + + +echo "=====================================================================================================================================" +echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' +echo '║ A T T A C H I N G C D K E R I G O N R O L L U P ║' +echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' + + + +kurtosis run \ + --enclave "$kurtosis_enclave_name" \ + --args-file ./initial-cdk-erigon-rollup.yml \ + "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + + + +echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' +echo '║ A T T A C H I N G C D K E R I G O N R O L L U P S U C C E S S F U L L ║' +echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' +echo "=====================================================================================================================================" +sleep 10 + +echo "=====================================================================================================================================" +echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' +echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) ║' +echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' + +# Spin up cdk-erigon pp +kurtosis run \ + --enclave "$kurtosis_enclave_name" \ + --args-file ./initial-cdk-erigon-pp.yml \ + "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + +contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') +contracts_container_name=contracts-001--$contracts_uuid + +# Get the deployment details +docker cp $contracts_container_name:/opt/zkevm/combined.json . +rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) +l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) +l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) + +L1_BRIDGE_ADDR=$l1_bridge_address +L2_BRIDGE_ADDR=$l2_bridge_address +export L1_BRIDGE_ADDR +export L2_BRIDGE_ADDR + +echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' +echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) S U C C E S S F U L L ║' +echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' +echo "=============================================================================================================================================" +sleep 10 + +fi \ No newline at end of file From 7503396da1cb87769a76bf7263e27c9bbeadb6b7 Mon Sep 17 00:00:00 2001 From: obynonwane Date: Mon, 18 Aug 2025 07:41:34 +0000 Subject: [PATCH 02/13] fixed misconfiguration --- .../README.md | 17 +- .../env.example | 12 +- .../run.sh | 358 +++++++++--------- 3 files changed, 194 insertions(+), 193 deletions(-) diff --git a/scenarios/agglayer-upgrade-with-supplied-version/README.md b/scenarios/agglayer-upgrade-with-supplied-version/README.md index a78dfc2dc..2e5d947ed 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/README.md +++ b/scenarios/agglayer-upgrade-with-supplied-version/README.md @@ -1,6 +1,6 @@ # Agglayer Upgrade/Downgrade Automation -This repo contains shell scripts to automate **Agglayer image upgrades and downgrades** while running rollup testnets inside **Kurtosis** and attaching Agglayer services via **Docker Compose**. +This repo contains e2e test scenario to automate **Agglayer image upgrade and downgrade** while running rollup testnets inside **Kurtosis**. It is designed to: @@ -22,18 +22,29 @@ It is designed to: ```bash ./run.sh FROM_TAG TO_TAG ``` + + example + + ```bash + ./run.sh 0.3.0-rc.21 0.3.5 + ``` + - **Downgrade usage:** ```bash - ./run.sh FROM_TAG TO_TAG true + ./run.sh FROM_TAG TO_TAG downgrade ``` + example + ```bash + ./run.sh 0.3.5 0.3.0-rc.21 downgrade + ``` ## Arguments & Descriptions | Argument | Required | Description | |------------------------|----------|-------------| | `` | Yes | Docker image tag to start with (e.g., `0.3.0-rc.21`)| | `` | Yes | Docker image tag to upgrade to (e.g., `0.3.5`)| -| `[OPTION]` | No | Optional: set to `true` to downgrade back to `` after upgrade | +| `[ACTION]` | No | Optional: set to `downgrade` to downgrade back to `` after upgrade | --- diff --git a/scenarios/agglayer-upgrade-with-supplied-version/env.example b/scenarios/agglayer-upgrade-with-supplied-version/env.example index 472c098b3..774fda897 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/env.example +++ b/scenarios/agglayer-upgrade-with-supplied-version/env.example @@ -1,13 +1,5 @@ ENCLAVE_NAME=cdk KURTOSIS_PACKAGE_HASH=e05e8cdcfee52a106ec6850b8956b77171cdd948 # Kurtosis tag v0.3.4 + v9.0.0-rc.2-pp contracts + CDK-Erigon Validium by default -AGGLAYER_CONTRACTS_VERSION=feature/tools-fixes SP1_NETWORK_KEY=0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8 # Replace with valid key -NETWORK_RPC_URL=https://rpc.production.succinct.xyz - -# Image versions -AGGLAYER_IMAGE=ghcr.io/agglayer/agglayer:0.3.0-rc.21 - - - -FROM_TAG=0.3.0-rc.21 -TO_TAG=0.3.5 \ No newline at end of file +FROM_TAG=0.3.5 +TO_TAG=0.3.0-rc.21 \ No newline at end of file diff --git a/scenarios/agglayer-upgrade-with-supplied-version/run.sh b/scenarios/agglayer-upgrade-with-supplied-version/run.sh index d5508cbf7..604cfe994 100755 --- a/scenarios/agglayer-upgrade-with-supplied-version/run.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/run.sh @@ -1,18 +1,31 @@ #!/bin/env bash -source ../common/load-env.sh -load_env +set -e +# Check before sourcing +if [ -f ../common/load-env.sh ]; then + source ../common/load-env.sh +else + echo "load-env.sh not found!" + exit 1 +fi + +if [ -f .env ]; then + source .env +else + echo ".env not found — shell exiting." + exit 1 +fi # ────────────────────────────────────────────────────────────────────────────── -# Usage: ./run.sh [true] +# Usage: ./run.sh [action] # e.g. 0.3.0-rc.21 # e.g. 0.3.5 # [1] optional: perform upgrade from kurtosis base image (either 1(kurtosis base image) or 2(base image from cli)) -# [true] optional: perform downgrade back to +# [action] optional: perform downgrade back to # Exit immediately if no args provided if [[ $# -lt 2 ]]; then echo "Error: Missing required arguments." - echo "Usage: $0 [true]" + echo "Usage: $0 [action]" exit 1 fi @@ -24,10 +37,10 @@ PREV_TO_TAG="$TO_TAG" FROM_TAG="$1" TO_TAG="$2" -DOWNGRADE="${3:-false}" +ACTION="${3:-upgrade}" -if [[ "$DOWNGRADE" == "true" ]]; then +if [[ "$ACTION" == "downgrade" ]]; then if [[ "$TO_TAG" == "$PREV_FROM_TAG" && "$FROM_TAG" == "$PREV_TO_TAG" ]]; then echo "✅ Downgrade tags match previous upgrade." else @@ -53,17 +66,16 @@ sed -i "s#^TO_TAG=.*#TO_TAG=$TO_TAG#" .env kurtosis_hash="$KURTOSIS_PACKAGE_HASH" kurtosis_enclave_name="$ENCLAVE_NAME" -contracts_version="$AGGLAYER_CONTRACTS_VERSION" + echo ":-kurtosis hash:= $kurtosis_hash" echo ":-enclave name:= $kurtosis_enclave_name" -echo ":-contract version:= $contracts_version" echo ":-from image:= $FROM_IMAGE" echo ":-to image:= $TO_IMAGE" echo ":-from tag:= $FROM_TAG" echo ":-to tag:= $TO_TAG" -echo ":-downgrade:= $DOWNGRADE" -echo ":-sp1 network key:= $SP1_NETWORK_KEY" +echo ":-action:= $ACTION" + # Create a yml files with a real SP1 keys if needed @@ -80,212 +92,198 @@ yq -y --arg sp1key "$SP1_NETWORK_KEY" ' ' ./assets/cdk-erigon-pp.yml > initial-cdk-erigon-pp.yml +# checks if the user is requesting for downgrade +if [[ "$ACTION" == "downgrade" ]]; then + # check if there is a running enclave + enclaveExist=$(kurtosis enclave ls | awk '$3 == "RUNNING" {print $2; exit}') + if [[ "$enclaveExist" != "$kurtosis_enclave_name" ]]; then + echo "Enclave name is not $kurtosis_enclave_name. Exiting...OR No Running enclave " + exit 1 + fi -# checks if the user is requesting for downgrade -if [[ "$DOWNGRADE" == "true" ]]; then -# check if there is a running enclave -enclaveExist=$(kurtosis enclave ls | awk '$3 == "RUNNING" {print $2; exit}') -if [[ "$enclaveExist" != "$kurtosis_enclave_name" ]]; then - echo "Enclave name is not $kurtosis_enclave_name. Exiting...OR No Running enclave " - exit 1 -fi + prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') + if [[ "$prev_aglr_readrpc" == "9090" ]]; then + prev_aglr_readrpc="4444" + else + prev_aglr_readrpc="9090" + fi -prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') -echo "$prev_aglr_readrpc - Current agglayer node rpc port" -if [[ "$prev_aglr_readrpc" == "9090" ]]; then - prev_aglr_readrpc="4444" -else - prev_aglr_readrpc="9090" -fi + + echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ R U N N I N G D O W N G R A D E F O R A G G L A Y E R F R O M S U P L I E D T A G ║' + echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' -echo "$prev_aglr_readrpc - agglayer node rpc port to be used" - -echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' -echo '║ R U N N I N G D O W N G R A D E F O R A G G L A Y E R F R O M S U P L I E D T A G ║' -echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' - -kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer \ - --image "$FROM_IMAGE" \ - --ports aglr-readrpc="$prev_aglr_readrpc",prometheus=9092 -sleep 10 -kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer-prover \ - --image "$FROM_IMAGE" \ - --ports api=4445,prometheus=9093 - -echo "C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M B A S E V E R S I O N: $FROM_TAG " -echo "======================================================================================================" -kurtosis service inspect cdk agglayer --output json -echo "======================================================================================================" - - -sleep 15 -prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') -kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer \ - --image "$TO_IMAGE" \ - --ports aglr-readrpc="$prev_aglr_readrpc",prometheus=9092 -sleep 10 -kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer-prover \ - --image "$TO_IMAGE" \ - --ports api=4445,prometheus=9093 - -echo "DOWNGRADED: C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D T A R G E T V E R S I O N: $TO_TAG " -echo "=====================================================================================================================================" -kurtosis service inspect cdk agglayer --output json -echo "=====================================================================================================================================" - - -echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════╗' -echo '║ 🎉 💃💃💃💃💃 D O W N G R A D I N G A G G L A Y E R S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' -echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════╝' + kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer \ + --image "$TO_IMAGE" \ + --ports aglr-readrpc=9090,prometheus=9092 + + + sleep 10 + + kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer-prover \ + --image "$TO_IMAGE" \ + --ports api=4445,prometheus=9093 + + + + + + + + echo "DOWNGRADED: C O N F I R M I N G R U N N I N G A G G L A Y E R W I T H T A R G E T D O W N G R A D E V E R S I O N: $TO_TAG " + echo "==========================================================================================================================================" + kurtosis service inspect cdk agglayer --output json + echo "==========================================================================================================================================" + + + echo '╔════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ 🎉 💃💃💃💃💃 D O W N G R A D I N G A G G L A Y E R S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' + echo '╚════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' else + echo '╔═══════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M ║' + echo '╚═══════════════════════════════════════════════════════════════╝' + + + kurtosis run \ + --enclave "$kurtosis_enclave_name" \ + --args-file ./initial-cdk-erigon-validium.yml \ + "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + + + contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') + contracts_container_name=contracts-001--$contracts_uuid + + # Get the deployment details + docker cp $contracts_container_name:/opt/zkevm/combined.json . + rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) + l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) + l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) + + L1_BRIDGE_ADDR=$l1_bridge_address + L2_BRIDGE_ADDR=$l2_bridge_address -echo '╔═══════════════════════════════════════════════════════════════╗' -echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M ║' -echo '╚═══════════════════════════════════════════════════════════════╝' + echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M S U C C E S S F U L L ║' + echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' + echo "=======================================================================================================================" + sleep 10 -kurtosis run \ - --enclave "$kurtosis_enclave_name" \ - --args-file ./initial-cdk-erigon-validium.yml \ - "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') + -contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') -contracts_container_name=contracts-001--$contracts_uuid + echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ R U N N I N G U P G R A D E F O R A G G L A Y E R F R O M S U P L I E D T A G ║' + echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════╝' -# Get the deployment details -docker cp $contracts_container_name:/opt/zkevm/combined.json . -rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) -l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) -l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) + prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') -L1_BRIDGE_ADDR=$l1_bridge_address -L2_BRIDGE_ADDR=$l2_bridge_address -export L1_BRIDGE_ADDR -export L2_BRIDGE_ADDR + kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer \ + --image "$FROM_IMAGE" \ + --ports aglr-readrpc=9090,prometheus=9092 -echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' -echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M S U C C E S S F U L L ║' -echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' -echo "=======================================================================================================================" -sleep 10 + sleep 10 -prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') -echo $prev_aglr_readrpc + kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer-prover \ + --image "$FROM_IMAGE" \ + --ports api=4445,prometheus=9093 + echo "C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D B A S E V E R S I O N: $FROM_TAG " + echo "========================================================================================================================" + kurtosis service inspect cdk agglayer --output json + echo "========================================================================================================================" + sleep 15 + prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') -echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════╗' -echo '║ R U N N I N G U P G R A D E F O R A G G L A Y E R F R O M S U P L I E D T A G ║' -echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════╝' + kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer \ + --image "$TO_IMAGE" \ + --ports aglr-readrpc="$prev_aglr_readrpc",prometheus=9092 -prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') -kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer \ - --image "$FROM_IMAGE" \ - --ports aglr-readrpc=9090,prometheus=9092 -sleep 10 -kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer-prover \ - --image "$FROM_IMAGE" \ - --ports api=4445,prometheus=9093 + sleep 10 + kurtosis service update \ + "$kurtosis_enclave_name" \ + agglayer-prover \ + --image "$TO_IMAGE" \ + --ports api=4445,prometheus=9093 -echo "C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D B A S E V E R S I O N: $FROM_TAG " -echo "========================================================================================================================" -kurtosis service inspect cdk agglayer --output json -echo "========================================================================================================================" + prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') -sleep 15 -prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') -kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer \ - --image "$TO_IMAGE" \ - --ports aglr-readrpc="$prev_aglr_readrpc",prometheus=9092 -sleep 10 -kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer-prover \ - --image "$TO_IMAGE" \ - --ports api=4445,prometheus=9093 + echo "UPGRADED: C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D T A R G E T V E R S I O N: $TO_TAG " + echo "======================================================================================================================================================" + kurtosis service inspect cdk agglayer --output json + echo "======================================================================================================================================================" -prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') -echo "UPGRADED: C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D T A R G E T V E R S I O N: $TO_TAG " -echo "=====================================================================================================================================" -kurtosis service inspect cdk agglayer --output json -echo "=====================================================================================================================================" + echo '╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ 🎉 💃💃💃💃💃 U P G R A D I N G A G G L A Y E R T O T A R G E T V E R S I O N S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' + echo '╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' -echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' -echo '║ 🎉 💃💃💃💃💃 U P G R A D I N G A G G L A Y E R T O T A R G E T V E R S I O N S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' -echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' + echo "======================================================================================================================================================" + echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P ║' + echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' + kurtosis run \ + --enclave "$kurtosis_enclave_name" \ + --args-file ./initial-cdk-erigon-rollup.yml \ + "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + + -echo "=====================================================================================================================================" -echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' -echo '║ A T T A C H I N G C D K E R I G O N R O L L U P ║' -echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' + echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P S U C C E S S F U L L ║' + echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' + echo "=====================================================================================================================================" + sleep 10 + echo "=====================================================================================================================================" + echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) ║' + echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' + Spin up cdk-erigon pp + kurtosis run \ + --enclave "$kurtosis_enclave_name" \ + --args-file ./initial-cdk-erigon-pp.yml \ + "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" -kurtosis run \ - --enclave "$kurtosis_enclave_name" \ - --args-file ./initial-cdk-erigon-rollup.yml \ - "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') + contracts_container_name=contracts-001--$contracts_uuid + # Get the deployment details + docker cp $contracts_container_name:/opt/zkevm/combined.json . + rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) + l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) + l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) -echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' -echo '║ A T T A C H I N G C D K E R I G O N R O L L U P S U C C E S S F U L L ║' -echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' -echo "=====================================================================================================================================" -sleep 10 - -echo "=====================================================================================================================================" -echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' -echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) ║' -echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' - -# Spin up cdk-erigon pp -kurtosis run \ - --enclave "$kurtosis_enclave_name" \ - --args-file ./initial-cdk-erigon-pp.yml \ - "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" - -contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') -contracts_container_name=contracts-001--$contracts_uuid - -# Get the deployment details -docker cp $contracts_container_name:/opt/zkevm/combined.json . -rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) -l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) -l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) + L1_BRIDGE_ADDR=$l1_bridge_address + L2_BRIDGE_ADDR=$l2_bridge_address -L1_BRIDGE_ADDR=$l1_bridge_address -L2_BRIDGE_ADDR=$l2_bridge_address -export L1_BRIDGE_ADDR -export L2_BRIDGE_ADDR -echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' -echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) S U C C E S S F U L L ║' -echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' -echo "=============================================================================================================================================" -sleep 10 + echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) S U C C E S S F U L L ║' + echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' + echo "=============================================================================================================================================" + sleep 10 fi \ No newline at end of file From cacc990646b2b9f18ee8ba0ea276c72f1e82fd19 Mon Sep 17 00:00:00 2001 From: obynonwane Date: Tue, 19 Aug 2025 12:58:12 +0000 Subject: [PATCH 03/13] fixes to run using closer agglayer version --- .../README.md | 8 +- .../run.sh | 169 ++++++++++-------- 2 files changed, 95 insertions(+), 82 deletions(-) diff --git a/scenarios/agglayer-upgrade-with-supplied-version/README.md b/scenarios/agglayer-upgrade-with-supplied-version/README.md index 2e5d947ed..9074a2d39 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/README.md +++ b/scenarios/agglayer-upgrade-with-supplied-version/README.md @@ -26,7 +26,7 @@ It is designed to: example ```bash - ./run.sh 0.3.0-rc.21 0.3.5 + ./run.sh 0.2.2 0.2.3 ``` - **Downgrade usage:** @@ -36,14 +36,14 @@ It is designed to: example ```bash - ./run.sh 0.3.5 0.3.0-rc.21 downgrade + ./run.sh 0.2.3 0.2.2 downgrade ``` ## Arguments & Descriptions | Argument | Required | Description | |------------------------|----------|-------------| -| `` | Yes | Docker image tag to start with (e.g., `0.3.0-rc.21`)| -| `` | Yes | Docker image tag to upgrade to (e.g., `0.3.5`)| +| `` | Yes | Docker image tag to start with (e.g., `0.2.2`)| +| `` | Yes | Docker image tag to upgrade to (e.g., `0.2.3`)| | `[ACTION]` | No | Optional: set to `downgrade` to downgrade back to `` after upgrade | --- diff --git a/scenarios/agglayer-upgrade-with-supplied-version/run.sh b/scenarios/agglayer-upgrade-with-supplied-version/run.sh index 604cfe994..e1c05a25e 100755 --- a/scenarios/agglayer-upgrade-with-supplied-version/run.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/run.sh @@ -101,43 +101,37 @@ if [[ "$ACTION" == "downgrade" ]]; then echo "Enclave name is not $kurtosis_enclave_name. Exiting...OR No Running enclave " exit 1 fi - - - prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') - - if [[ "$prev_aglr_readrpc" == "9090" ]]; then - prev_aglr_readrpc="4444" - else - prev_aglr_readrpc="9090" - fi - echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' echo '║ R U N N I N G D O W N G R A D E F O R A G G L A Y E R F R O M S U P L I E D T A G ║' echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' - kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer \ - --image "$TO_IMAGE" \ - --ports aglr-readrpc=9090,prometheus=9092 + + TO_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) - sleep 10 + kurtosis service inspect cdk agglayer --output json \ + | jq --arg img "$TO_IMAGE" '.image = $img' > "$TO_IMAGE_SERVICE_CONFIG_FILE" + + echo $TO_IMAGE_SERVICE_CONFIG_FILE + cat "$TO_IMAGE_SERVICE_CONFIG_FILE" - kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer-prover \ - --image "$TO_IMAGE" \ - --ports api=4445,prometheus=9093 + kurtosis service rm "$kurtosis_enclave_name" agglayer + kurtosis service add cdk agglayer --json-service-config "$TO_IMAGE_SERVICE_CONFIG_FILE" + rm "$TO_IMAGE_SERVICE_CONFIG_FILE" - + sleep 10 + + TO_PROVER_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) + kurtosis service inspect cdk agglayer-prover --output json \ + | jq --arg img "$TO_IMAGE" '.image = $img' > "$TO_PROVER_IMAGE_SERVICE_CONFIG_FILE" + kurtosis service add cdk agglayer-prover --json-service-config "$TO_PROVER_IMAGE_SERVICE_CONFIG_FILE" + rm "$TO_PROVER_IMAGE_SERVICE_CONFIG_FILE" - - echo "DOWNGRADED: C O N F I R M I N G R U N N I N G A G G L A Y E R W I T H T A R G E T D O W N G R A D E V E R S I O N: $TO_TAG " + echo "D O W N G R A D E D: C O N F I R M I N G R U N N I N G A G G L A Y E R W I T H T A R G E T D O W N G R A D E V E R S I O N: $TO_TAG " echo "==========================================================================================================================================" kurtosis service inspect cdk agglayer --output json echo "==========================================================================================================================================" @@ -159,17 +153,17 @@ else "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" - contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') - contracts_container_name=contracts-001--$contracts_uuid + contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') + contracts_container_name=contracts-001--$contracts_uuid - # Get the deployment details - docker cp $contracts_container_name:/opt/zkevm/combined.json . - rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) - l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) - l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) + # Get the deployment details + docker cp $contracts_container_name:/opt/zkevm/combined.json . + rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) + l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) + l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) - L1_BRIDGE_ADDR=$l1_bridge_address - L2_BRIDGE_ADDR=$l2_bridge_address + L1_BRIDGE_ADDR=$l1_bridge_address + L2_BRIDGE_ADDR=$l2_bridge_address echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' @@ -178,6 +172,7 @@ else echo "=======================================================================================================================" sleep 10 + prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') @@ -185,57 +180,76 @@ else echo '║ R U N N I N G U P G R A D E F O R A G G L A Y E R F R O M S U P L I E D T A G ║' echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════╝' - prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') + # kurtosis service inspect cdk agglayer --output json + echo "=======================================================================================================================" - kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer \ - --image "$FROM_IMAGE" \ - --ports aglr-readrpc=9090,prometheus=9092 - sleep 10 + echo "==================== R U N N I N G K U R T O R S I S W I T H A G G L A Y E R F R O M I M A G E: $FROM_IMAGE ============" + # 1. Create a temporary file to hold the config json of the current kurtosis base image + FROM_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) - kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer-prover \ - --image "$FROM_IMAGE" \ - --ports api=4445,prometheus=9093 + # 2. Dump the inspected JSON, update the image, and save to the temp file + kurtosis service inspect cdk agglayer --output json \ + | jq --arg img "$FROM_IMAGE" '.image = $img' > "$FROM_IMAGE_SERVICE_CONFIG_FILE" + + echo $FROM_IMAGE_SERVICE_CONFIG_FILE + cat "$FROM_IMAGE_SERVICE_CONFIG_FILE" + kurtosis service rm "$kurtosis_enclave_name" agglayer + kurtosis service add cdk agglayer --json-service-config "$FROM_IMAGE_SERVICE_CONFIG_FILE" - echo "C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D B A S E V E R S I O N: $FROM_TAG " - echo "========================================================================================================================" - kurtosis service inspect cdk agglayer --output json - echo "========================================================================================================================" + rm "$FROM_IMAGE_SERVICE_CONFIG_FILE" - sleep 15 + sleep 10 - prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') - kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer \ - --image "$TO_IMAGE" \ - --ports aglr-readrpc="$prev_aglr_readrpc",prometheus=9092 + FROM_PROVER_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) + echo "AGGLAYER - PROVER CONFIG JSON" + kurtosis service inspect cdk agglayer-prover --output json \ + | jq --arg img "$FROM_IMAGE" '.image = $img' > "$FROM_PROVER_IMAGE_SERVICE_CONFIG_FILE" + kurtosis service add cdk agglayer-prover --json-service-config "$FROM_PROVER_IMAGE_SERVICE_CONFIG_FILE" + rm "$FROM_PROVER_IMAGE_SERVICE_CONFIG_FILE" - sleep 10 + + sleep 20 + echo "==================== R U N N I N G K U R T O R S I S W I T H A G G L A Y E R T O I M A G E: $TO_IMAGE =================" + # 1. Create a temporary file to hold the config json of the current service + TO_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) + + # 2. Dump the inspected JSON, update the image, and save to the temp file + kurtosis service inspect cdk agglayer --output json \ + | jq --arg img "$TO_IMAGE" '.image = $img' > "$TO_IMAGE_SERVICE_CONFIG_FILE" + + echo $TO_IMAGE_SERVICE_CONFIG_FILE + cat "$TO_IMAGE_SERVICE_CONFIG_FILE" - kurtosis service update \ - "$kurtosis_enclave_name" \ - agglayer-prover \ - --image "$TO_IMAGE" \ - --ports api=4445,prometheus=9093 + kurtosis service rm "$kurtosis_enclave_name" agglayer + kurtosis service add cdk agglayer --json-service-config "$TO_IMAGE_SERVICE_CONFIG_FILE" - prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') + rm "$TO_IMAGE_SERVICE_CONFIG_FILE" - echo "UPGRADED: C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D T A R G E T V E R S I O N: $TO_TAG " - echo "======================================================================================================================================================" + + TO_PROVER_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) + kurtosis service inspect cdk agglayer-prover --output json \ + | jq --arg img "$TO_IMAGE" '.image = $img' > "$TO_PROVER_IMAGE_SERVICE_CONFIG_FILE" + kurtosis service add cdk agglayer-prover --json-service-config "$TO_PROVER_IMAGE_SERVICE_CONFIG_FILE" + rm "$TO_PROVER_IMAGE_SERVICE_CONFIG_FILE" + + + + echo "C O N F I R M I N G R U N N I N G A G G L A Y E R F R O M S U P P L I E D B A S E V E R S I O N: $TO_TAG " + echo "========================================================================================================================" kurtosis service inspect cdk agglayer --output json - echo "======================================================================================================================================================" + echo "========================================================================================================================" + + sleep 15 echo '╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' echo '║ 🎉 💃💃💃💃💃 U P G R A D I N G A G G L A Y E R T O T A R G E T V E R S I O N S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' echo '╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' + + echo "======================================================================================================================================================" echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' echo '║ A T T A C H I N G C D K E R I G O N R O L L U P ║' @@ -255,35 +269,34 @@ else echo "=====================================================================================================================================" sleep 10 + echo "=====================================================================================================================================" echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) ║' echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' - Spin up cdk-erigon pp kurtosis run \ --enclave "$kurtosis_enclave_name" \ --args-file ./initial-cdk-erigon-pp.yml \ "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" - contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') - contracts_container_name=contracts-001--$contracts_uuid + contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') + contracts_container_name=contracts-001--$contracts_uuid - # Get the deployment details - docker cp $contracts_container_name:/opt/zkevm/combined.json . - rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) - l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) - l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) + # Get the deployment details + docker cp $contracts_container_name:/opt/zkevm/combined.json . + rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) + l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) + l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) - L1_BRIDGE_ADDR=$l1_bridge_address - L2_BRIDGE_ADDR=$l2_bridge_address + L1_BRIDGE_ADDR=$l1_bridge_address + L2_BRIDGE_ADDR=$l2_bridge_address echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) S U C C E S S F U L L ║' echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' - echo "=============================================================================================================================================" - sleep 10 + echo "=============================================================================================================================================" fi \ No newline at end of file From 2818409276f80b1f384a28c00530dc4aa4e2c6e1 Mon Sep 17 00:00:00 2001 From: obynonwane Date: Thu, 21 Aug 2025 07:58:09 +0000 Subject: [PATCH 04/13] updated the agglayer version from the initial config file when creating --- scenarios/agglayer-upgrade-with-supplied-version/run.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scenarios/agglayer-upgrade-with-supplied-version/run.sh b/scenarios/agglayer-upgrade-with-supplied-version/run.sh index e1c05a25e..5a2c5247b 100755 --- a/scenarios/agglayer-upgrade-with-supplied-version/run.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/run.sh @@ -79,8 +79,9 @@ echo ":-action:= $ACTION" # Create a yml files with a real SP1 keys if needed -yq -y --arg sp1key "$SP1_NETWORK_KEY" ' -.args.agglayer_prover_sp1_key = $sp1key +yq -y --arg sp1key "$SP1_NETWORK_KEY" --arg newImage "$FROM_IMAGE" ' + .args.agglayer_prover_sp1_key = $sp1key | + .args.agglayer_image = $newImage ' ./assets/cdk-erigon-validium.yml > initial-cdk-erigon-validium.yml yq -y --arg sp1key "$SP1_NETWORK_KEY" ' @@ -109,7 +110,6 @@ if [[ "$ACTION" == "downgrade" ]]; then TO_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) - kurtosis service inspect cdk agglayer --output json \ | jq --arg img "$TO_IMAGE" '.image = $img' > "$TO_IMAGE_SERVICE_CONFIG_FILE" From 64a77d97d1219929659ad44bcc9cb3fdee0003c3 Mon Sep 17 00:00:00 2001 From: obynonwane Date: Thu, 21 Aug 2025 12:02:01 +0000 Subject: [PATCH 05/13] removed tx_spammer param from config --- .../assets/cdk-erigon-pp.yml | 3 +-- .../assets/cdk-erigon-rollup.yml | 3 +-- .../assets/cdk-erigon-validium.yml | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml index c000e6ee5..d124ac881 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml @@ -10,8 +10,7 @@ args: verbosity: debug zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 - additional_services: - - tx_spammer + additional_services: [] consensus_contract_type: pessimistic erigon_strict_mode: false gas_token_enabled: false diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml index 3b3bb2784..a7fb6fd46 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml @@ -7,8 +7,7 @@ args: verbosity: debug zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 - additional_services: - - tx_spammer + additional_services: [] consensus_contract_type: rollup sequencer_type: erigon agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml index 42e944445..6180041b4 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml @@ -3,7 +3,6 @@ args: agglayer_image: "ghcr.io/agglayer/agglayer:0.2.5" zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 - additional_services: - - tx_spammer + additional_services: [] sequencer_type: erigon agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key \ No newline at end of file From 3f50f4461e8b9c56fb4ebc9ada216c873f22ddbc Mon Sep 17 00:00:00 2001 From: obynonwane Date: Tue, 26 Aug 2025 13:16:09 +0000 Subject: [PATCH 06/13] working latest commit --- .../README.md | 9 +++- .../assets/cdk-erigon-pp.yml | 43 ++++++++++++++++- .../assets/cdk-erigon-rollup.yml | 32 ++++++++++++- .../assets/cdk-erigon-validium.yml | 30 ++++++++++-- .../env.example | 5 +- .../run.sh | 48 +++++++++---------- 6 files changed, 131 insertions(+), 36 deletions(-) diff --git a/scenarios/agglayer-upgrade-with-supplied-version/README.md b/scenarios/agglayer-upgrade-with-supplied-version/README.md index 9074a2d39..8c6c2496e 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/README.md +++ b/scenarios/agglayer-upgrade-with-supplied-version/README.md @@ -11,7 +11,14 @@ It is designed to: - Cleanly tear down the setup using: ```bash kurtosis enclave rm cdk --force - +--- +- List running services in the cdk enclave: +```bash + kurtosis enclave inspect cdk +--- +- View the logs of a service: +```bash + kurtosis service logs cdk --- ## Scripts diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml index d124ac881..b4aaa290d 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml @@ -1,24 +1,63 @@ +# # This file has been generated automatically. +# deployment_stages: +# deploy_l1: false +# deploy_agglayer: false +# deploy_cdk_bridge_ui: false +# args: +# deployment_suffix: "-003" +# zkevm_rollup_chain_id: 30303 +# zkevm_rollup_id: 3 +# verbosity: debug +# zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 +# zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 +# additional_services: [] +# consensus_contract_type: pessimistic +# erigon_strict_mode: false +# gas_token_enabled: false +# zkevm_use_real_verifier: false +# enable_normalcy: true +# agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key +# agglayer_prover_primary_prover: network-prover +# sequencer_type: erigon + + + + + + # This file has been generated automatically. deployment_stages: deploy_l1: false deploy_agglayer: false deploy_cdk_bridge_ui: false + deploy_l2_contracts: true + deploy_optimism_rollup: false + deploy_op_succinct: false args: deployment_suffix: "-003" zkevm_rollup_chain_id: 30303 zkevm_rollup_id: 3 verbosity: debug - zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 + zkevm_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/agglayer-contracts:v11.0.0-rc.2-fork.12 zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 additional_services: [] consensus_contract_type: pessimistic + sp1_prover_key: '' + agglayer_prover_primary_prover: mock-prover erigon_strict_mode: false gas_token_enabled: false zkevm_use_real_verifier: false enable_normalcy: true agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key - agglayer_prover_primary_prover: network-prover + # aggkit_components: aggsender,bridge sequencer_type: erigon + cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.63.0-rc4 + + + + + + # sequencer zkevm_l2_sequencer_address: "0x0d59BC8C02A089D48d9Cd465b74Cb6E23dEB950D" diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml index a7fb6fd46..2717bc18a 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml @@ -1,11 +1,35 @@ -# This file has been generated automatically. +# # This file has been generated automatically. +# deployment_stages: +# deploy_l1: false +# deploy_agglayer: false +# deploy_cdk_bridge_ui: false +# args: +# verbosity: debug +# zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 +# zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 +# additional_services: [] +# consensus_contract_type: rollup +# sequencer_type: erigon +# agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key +# deployment_suffix: "-002" +# zkevm_rollup_chain_id: 20202 +# zkevm_rollup_id: 2 + + + + + + # This file has been generated automatically. deployment_stages: deploy_l1: false deploy_agglayer: false deploy_cdk_bridge_ui: false + deploy_l2_contracts: true + deploy_optimism_rollup: false + deploy_op_succinct: false args: verbosity: debug - zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 + zkevm_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/agglayer-contracts:v11.0.0-rc.2-fork.12 zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 additional_services: [] consensus_contract_type: rollup @@ -15,6 +39,10 @@ args: zkevm_rollup_chain_id: 20202 zkevm_rollup_id: 2 + + + + # polycli wallet inspect --mnemonic 'tennis coconut priority easy toward lava lake cigar address private visit purity' --addresses 11 | tee keys.txt | jq -r '.Addresses[] | [.ETHAddress, .HexPrivateKey] | @tsv' | awk 'BEGIN{split("sequencer,aggregator,claimtxmanager,timelock,admin,loadtest,agglayer,dac,proofsigner,l1testing,claimsponsor",roles,",")} {print "# " roles[NR] "\nzkevm_l2_" roles[NR] "_address: " $1 ""; print "zkevm_l2_" roles[NR] "_private_key: 0x" $2 "\n"}' # sequencer diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml index 6180041b4..b99acc11b 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml @@ -1,8 +1,30 @@ +# args: +# verbosity: debug +# agglayer_image: "ghcr.io/agglayer/agglayer:0.2.5" +# zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 +# zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 +# additional_services: [] +# sequencer_type: erigon +# agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key + + + + + +deployment_stages: + deploy_l2_contracts: true + deploy_optimism_rollup: false + deploy_op_succinct: false args: verbosity: debug - agglayer_image: "ghcr.io/agglayer/agglayer:0.2.5" - zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 + # agglayer_image: "ghcr.io/agglayer/agglayer:0.2.5" + zkevm_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/agglayer-contracts:v11.0.0-rc.2-fork.12 zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 - additional_services: [] + consensus_contract_type: cdk_validium + # additional_services: [] sequencer_type: erigon - agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key \ No newline at end of file + agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key + + + + diff --git a/scenarios/agglayer-upgrade-with-supplied-version/env.example b/scenarios/agglayer-upgrade-with-supplied-version/env.example index 774fda897..dd85d7f53 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/env.example +++ b/scenarios/agglayer-upgrade-with-supplied-version/env.example @@ -1,5 +1,6 @@ ENCLAVE_NAME=cdk -KURTOSIS_PACKAGE_HASH=e05e8cdcfee52a106ec6850b8956b77171cdd948 # Kurtosis tag v0.3.4 + v9.0.0-rc.2-pp contracts + CDK-Erigon Validium by default +KURTOSIS_PACKAGE_HASH=be8cab2e9ed799ab91319fee0f488fab04a393ac # Latest commit +# KURTOSIS_PACKAGE_HASH=e05e8cdcfee52a106ec6850b8956b77171cdd948 # Kurtosis tag v0.3.4 + v9.0.0-rc.2-pp contracts + CDK-Erigon Validium by default SP1_NETWORK_KEY=0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8 # Replace with valid key FROM_TAG=0.3.5 -TO_TAG=0.3.0-rc.21 \ No newline at end of file +TO_TAG=0.3.4 \ No newline at end of file diff --git a/scenarios/agglayer-upgrade-with-supplied-version/run.sh b/scenarios/agglayer-upgrade-with-supplied-version/run.sh index 5a2c5247b..7e62b94fb 100755 --- a/scenarios/agglayer-upgrade-with-supplied-version/run.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/run.sh @@ -89,7 +89,8 @@ yq -y --arg sp1key "$SP1_NETWORK_KEY" ' ' ./assets/cdk-erigon-rollup.yml > initial-cdk-erigon-rollup.yml yq -y --arg sp1key "$SP1_NETWORK_KEY" ' -.args.agglayer_prover_sp1_key = $sp1key +.args.agglayer_prover_sp1_key = $sp1key | +.args.sp1_prover_key = $sp1key ' ./assets/cdk-erigon-pp.yml > initial-cdk-erigon-pp.yml @@ -250,26 +251,6 @@ else - echo "======================================================================================================================================================" - echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N R O L L U P ║' - echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' - - - kurtosis run \ - --enclave "$kurtosis_enclave_name" \ - --args-file ./initial-cdk-erigon-rollup.yml \ - "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" - - - - echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N R O L L U P S U C C E S S F U L L ║' - echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' - echo "=====================================================================================================================================" - sleep 10 - - echo "=====================================================================================================================================" echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) ║' @@ -293,10 +274,27 @@ else L1_BRIDGE_ADDR=$l1_bridge_address L2_BRIDGE_ADDR=$l2_bridge_address + + + echo "======================================================================================================================================================" + echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P ║' + echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' + + + kurtosis run \ + --enclave "$kurtosis_enclave_name" \ + --args-file ./initial-cdk-erigon-rollup.yml \ + "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + + + + echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P S U C C E S S F U L L ║' + echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' + echo "=====================================================================================================================================" + sleep 10 + - echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) S U C C E S S F U L L ║' - echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' - echo "=============================================================================================================================================" fi \ No newline at end of file From 26da2b9af249dcba230822cf193ac8535bd3de5e Mon Sep 17 00:00:00 2001 From: obynonwane Date: Mon, 1 Sep 2025 18:13:39 +0000 Subject: [PATCH 07/13] fixed issue with roolup registration on agglayer --- .../README.md | 13 +++- .../assets/cdk-erigon-pp.yml | 38 +--------- .../assets/cdk-erigon-rollup-003.yml | 69 +++++++++++++++++++ .../assets/cdk-erigon-rollup.yml | 27 +------- .../assets/cdk-erigon-validium.yml | 20 +----- .../run.sh | 64 ++++++++--------- .../script.js | 32 +++++++++ 7 files changed, 148 insertions(+), 115 deletions(-) create mode 100644 scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup-003.yml create mode 100644 scenarios/agglayer-upgrade-with-supplied-version/script.js diff --git a/scenarios/agglayer-upgrade-with-supplied-version/README.md b/scenarios/agglayer-upgrade-with-supplied-version/README.md index 8c6c2496e..93f948d2d 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/README.md +++ b/scenarios/agglayer-upgrade-with-supplied-version/README.md @@ -20,6 +20,15 @@ It is designed to: ```bash kurtosis service logs cdk --- +- Shell into a service: +```bash + kurtosis service shell cdk +--- +--- +- Inspect a service +```bash +kurtosis service inspect cdk +--- ## Scripts @@ -33,7 +42,7 @@ It is designed to: example ```bash - ./run.sh 0.2.2 0.2.3 + ./run.sh 0.3.4 0.3.5 ``` - **Downgrade usage:** @@ -43,7 +52,7 @@ It is designed to: example ```bash - ./run.sh 0.2.3 0.2.2 downgrade + ./run.sh 0.3.5 0.3.4 downgrade ``` ## Arguments & Descriptions diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml index b4aaa290d..c16f97604 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-pp.yml @@ -1,30 +1,3 @@ -# # This file has been generated automatically. -# deployment_stages: -# deploy_l1: false -# deploy_agglayer: false -# deploy_cdk_bridge_ui: false -# args: -# deployment_suffix: "-003" -# zkevm_rollup_chain_id: 30303 -# zkevm_rollup_id: 3 -# verbosity: debug -# zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 -# zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 -# additional_services: [] -# consensus_contract_type: pessimistic -# erigon_strict_mode: false -# gas_token_enabled: false -# zkevm_use_real_verifier: false -# enable_normalcy: true -# agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key -# agglayer_prover_primary_prover: network-prover -# sequencer_type: erigon - - - - - - # This file has been generated automatically. deployment_stages: deploy_l1: false @@ -38,8 +11,8 @@ args: zkevm_rollup_chain_id: 30303 zkevm_rollup_id: 3 verbosity: debug - zkevm_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/agglayer-contracts:v11.0.0-rc.2-fork.12 - zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 + agglayer_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/zkevm-contracts:v8.1.0-rc.2-fork.13 + zkevm_prover_image: hermeznetwork/zkevm-prover:v9.0.0-RC3-fork.13 additional_services: [] consensus_contract_type: pessimistic sp1_prover_key: '' @@ -49,16 +22,11 @@ args: zkevm_use_real_verifier: false enable_normalcy: true agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key - # aggkit_components: aggsender,bridge + aggkit_components: aggsender,bridge sequencer_type: erigon cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.63.0-rc4 - - - - - # sequencer zkevm_l2_sequencer_address: "0x0d59BC8C02A089D48d9Cd465b74Cb6E23dEB950D" zkevm_l2_sequencer_private_key: "0xf6385a27e7710349617340c6f9310e88f0aad10d01646a9bb204177431babcd8" diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup-003.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup-003.yml new file mode 100644 index 000000000..0d9eb4f12 --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup-003.yml @@ -0,0 +1,69 @@ +# This file has been generated automatically. +deployment_stages: + deploy_l1: false + deploy_agglayer: false + deploy_cdk_bridge_ui: false + deploy_l2_contracts: true + deploy_optimism_rollup: false + deploy_op_succinct: false +args: + verbosity: debug + agglayer_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/zkevm-contracts:v8.1.0-rc.2-fork.13 + zkevm_prover_image: hermeznetwork/zkevm-prover:v9.0.0-RC3-fork.13 + additional_services: [] + consensus_contract_type: rollup + sequencer_type: erigon + agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key + deployment_suffix: "-003" + zkevm_rollup_chain_id: 20203 + zkevm_rollup_id: 3 + + + + + + # polycli wallet inspect --mnemonic 'tennis coconut priority easy toward lava lake cigar address private visit purity' --addresses 11 | tee keys.txt | jq -r '.Addresses[] | [.ETHAddress, .HexPrivateKey] | @tsv' | awk 'BEGIN{split("sequencer,aggregator,claimtxmanager,timelock,admin,loadtest,agglayer,dac,proofsigner,l1testing,claimsponsor",roles,",")} {print "# " roles[NR] "\nzkevm_l2_" roles[NR] "_address: " $1 ""; print "zkevm_l2_" roles[NR] "_private_key: 0x" $2 "\n"}' + + # sequencer + zkevm_l2_sequencer_address: "0x3bd49B59d0d61e83FA5C7856312b9bfEddbCbDA8" + zkevm_l2_sequencer_private_key: "0xf1b0412da5d68afa81e8301d93c56b125ee764e2fab4e919afb81ae14babc5e3" + + # aggregator + zkevm_l2_aggregator_address: "0x3BAEE05bd44f4Ee84709C7Df6861A3528f4c8286" + zkevm_l2_aggregator_private_key: "0x8bcbeae7253c993102e8269f2b48639a832095e0a0235b609472b7b9286290b9" + + # claimtxmanager + zkevm_l2_claimtxmanager_address: "0x1a1C53bA714643B53b39D82409915b513349a1ff" + zkevm_l2_claimtxmanager_private_key: "0xcc8de19498a724ec38c7c774d447a51e629ee947ec360f16913ab3000f5ad676" + + # timelock + zkevm_l2_timelock_address: "0xb2BCBC707c88f1a41d3DBb982b9A8996cA83Df82" + zkevm_l2_timelock_private_key: "0xfbfd097f603d5ed2f1bf79a756d021e8c2a1771bb13ea42a36f534ac731739d3" + + # # admin + # zkevm_l2_admin_address: "0x78770Cc5Bd03F93B8B401Ea91B77DF544Deb2265" + # zkevm_l2_admin_private_key: "0x6048871542899ff1d8ef8e2efc8037115676b083f1fcc680b995f3bb9470bcf6" + + # loadtest + zkevm_l2_loadtest_address: "0x51406206342270c822b5d9dfb261279eEdF0Af20" + zkevm_l2_loadtest_private_key: "0x72e05c95e8c0b0380c1353dbfd50d1d8a762861ac008b8c270963f81abf4304c" + + # agglayer + zkevm_l2_agglayer_address: "0xB8b680902bba8e04C78660D33a97a87E4CC4e797" + zkevm_l2_agglayer_private_key: "0x6fadecf5f47e84428042d36ecbfb1d05c587d658cb0d66e10151561e74340e81" + + # dac + zkevm_l2_dac_address: "0x64a19B5D36664fa68dc8bAC6574A5B272F08ACc1" + zkevm_l2_dac_private_key: "0x29506f6abfd8ff62b29af422c4a0af1dbc989d7154220da916e565c8cc04ce47" + + # proofsigner + zkevm_l2_proofsigner_address: "0xD3F0C080A75f537B361A3Eadf24EE5d6F72a15B3" + zkevm_l2_proofsigner_private_key: "0x89ac1075d2f7c27ba296fb4d625b0e10f272f8f7fa96320f7f0832a41b18e54b" + + # l1testing + zkevm_l2_l1testing_address: "0xcd9Ac30C72a8757F446F814aFfbc32847c2CD17D" + zkevm_l2_l1testing_private_key: "0xbdbfded25015702c72558c5a3cea747713734d3535fe832b4cd4f1bb882977ea" + + # claimsponsor + zkevm_l2_claimsponsor_address: "0xB2c5d585cc8c1f9FC51035941CFdA42DB83E9886" + zkevm_l2_claimsponsor_private_key: "0x4c545e05d1e85a36d316b92a4de4588c60fe3c5dbb2c235306d1ce4e439b751a" diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml index 2717bc18a..14daa090d 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-rollup.yml @@ -1,25 +1,4 @@ -# # This file has been generated automatically. -# deployment_stages: -# deploy_l1: false -# deploy_agglayer: false -# deploy_cdk_bridge_ui: false -# args: -# verbosity: debug -# zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 -# zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 -# additional_services: [] -# consensus_contract_type: rollup -# sequencer_type: erigon -# agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key -# deployment_suffix: "-002" -# zkevm_rollup_chain_id: 20202 -# zkevm_rollup_id: 2 - - - - - - # This file has been generated automatically. +# This file has been generated automatically. deployment_stages: deploy_l1: false deploy_agglayer: false @@ -29,8 +8,8 @@ deployment_stages: deploy_op_succinct: false args: verbosity: debug - zkevm_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/agglayer-contracts:v11.0.0-rc.2-fork.12 - zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 + agglayer_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/zkevm-contracts:v8.1.0-rc.2-fork.13 + zkevm_prover_image: hermeznetwork/zkevm-prover:v9.0.0-RC3-fork.13 additional_services: [] consensus_contract_type: rollup sequencer_type: erigon diff --git a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml index b99acc11b..1e015e2ac 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml +++ b/scenarios/agglayer-upgrade-with-supplied-version/assets/cdk-erigon-validium.yml @@ -1,27 +1,13 @@ -# args: -# verbosity: debug -# agglayer_image: "ghcr.io/agglayer/agglayer:0.2.5" -# zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12 -# zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 -# additional_services: [] -# sequencer_type: erigon -# agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key - - - - - deployment_stages: deploy_l2_contracts: true deploy_optimism_rollup: false deploy_op_succinct: false args: verbosity: debug - # agglayer_image: "ghcr.io/agglayer/agglayer:0.2.5" - zkevm_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/agglayer-contracts:v11.0.0-rc.2-fork.12 - zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12 + agglayer_contracts_image: europe-west2-docker.pkg.dev/prj-polygonlabs-devtools-dev/public/zkevm-contracts:v8.1.0-rc.2-fork.13 + zkevm_prover_image: hermeznetwork/zkevm-prover:v9.0.0-RC3-fork.13 consensus_contract_type: cdk_validium - # additional_services: [] + additional_services: [] sequencer_type: erigon agglayer_prover_sp1_key: "0x50630eb71ab68ff812fcb9b9c58859f9e9f70a62b7e9e97c9c1cc09d86c760d8" # Replace with valid key diff --git a/scenarios/agglayer-upgrade-with-supplied-version/run.sh b/scenarios/agglayer-upgrade-with-supplied-version/run.sh index 7e62b94fb..a772ba49a 100755 --- a/scenarios/agglayer-upgrade-with-supplied-version/run.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/run.sh @@ -88,10 +88,12 @@ yq -y --arg sp1key "$SP1_NETWORK_KEY" ' .args.agglayer_prover_sp1_key = $sp1key ' ./assets/cdk-erigon-rollup.yml > initial-cdk-erigon-rollup.yml + yq -y --arg sp1key "$SP1_NETWORK_KEY" ' -.args.agglayer_prover_sp1_key = $sp1key | -.args.sp1_prover_key = $sp1key -' ./assets/cdk-erigon-pp.yml > initial-cdk-erigon-pp.yml +.args.agglayer_prover_sp1_key = $sp1key +' ./assets/cdk-erigon-rollup-003.yml > initial-cdk-erigon-rollup-003.yml + + # checks if the user is requesting for downgrade @@ -142,6 +144,9 @@ if [[ "$ACTION" == "downgrade" ]]; then echo '║ 🎉 💃💃💃💃💃 D O W N G R A D I N G A G G L A Y E R S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' echo '╚════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' + echo "🔧 Running Updating Agglayer with Rollup ERIGON ROLLUP RPC NODE" + node script.js + else echo '╔═══════════════════════════════════════════════════════════════╗' echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M ║' @@ -154,27 +159,12 @@ else "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" - contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') - contracts_container_name=contracts-001--$contracts_uuid - - # Get the deployment details - docker cp $contracts_container_name:/opt/zkevm/combined.json . - rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) - l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) - l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) - - L1_BRIDGE_ADDR=$l1_bridge_address - L2_BRIDGE_ADDR=$l2_bridge_address - - echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M S U C C E S S F U L L ║' echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' echo "=======================================================================================================================" sleep 10 - - prev_aglr_readrpc=$(kurtosis service inspect cdk agglayer --output json | jq -r '.ports["aglr-readrpc"].number') echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════╗' @@ -251,40 +241,37 @@ else - echo "=====================================================================================================================================" + + + echo "======================================================================================================================================================" echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N P E R S I M I S T I C P R O O F (P P) ║' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P T W O ║' echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' + kurtosis run \ --enclave "$kurtosis_enclave_name" \ - --args-file ./initial-cdk-erigon-pp.yml \ - "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" - - - contracts_uuid=$(kurtosis enclave inspect --full-uuids $kurtosis_enclave_name | grep contracts-001 | awk '{print $1}') - contracts_container_name=contracts-001--$contracts_uuid - - # Get the deployment details - docker cp $contracts_container_name:/opt/zkevm/combined.json . - rollup_manager_address=$(jq -r '.polygonRollupManagerAddress' combined.json) - l1_bridge_address=$(jq -r '.polygonZkEVMBridgeAddress' combined.json) - l2_bridge_address=$(jq -r '.polygonZkEVML2BridgeAddress' combined.json) + --args-file ./initial-cdk-erigon-rollup.yml \ + "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + + - L1_BRIDGE_ADDR=$l1_bridge_address - L2_BRIDGE_ADDR=$l2_bridge_address + echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P S U C C E S S F U L L ║' + echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' + echo "=====================================================================================================================================" + sleep 10 - echo "======================================================================================================================================================" echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N R O L L U P ║' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P T H R E E ║' echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' kurtosis run \ --enclave "$kurtosis_enclave_name" \ - --args-file ./initial-cdk-erigon-rollup.yml \ + --args-file ./initial-cdk-erigon-rollup-003.yml \ "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" @@ -296,5 +283,8 @@ else sleep 10 + echo "🔧 Running Updating Agglayer with Rollup ERIGON ROLLUP RPC NODE" + node script.js > script.log 2>&1 & + fi \ No newline at end of file diff --git a/scenarios/agglayer-upgrade-with-supplied-version/script.js b/scenarios/agglayer-upgrade-with-supplied-version/script.js new file mode 100644 index 000000000..10cd134ad --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/script.js @@ -0,0 +1,32 @@ +// This cript add rollup rpc to agglayer +const { execSync } = require("child_process"); + + +function run(cmd, opts = {}) { + console.log(`$ ${cmd}`); + execSync(cmd, { stdio: "inherit", ...opts }); +} + + +try { +const editCmd = `kurtosis service exec cdk agglayer ' +set -eu +file=/etc/zkevm/agglayer-config.toml +if ! grep -q "2 = http://cdk-erigon-rpc-002:8123" "$file"; then + sed -i "/1 = \\"http:\\/\\/cdk-erigon-rpc-001:8123\\"/a 2 = \\"http://cdk-erigon-rpc-002:8123\\"" "$file" + sed -i "/2 = \\"http:\\/\\/cdk-erigon-rpc-002:8123\\"/a 3 = \\"http://cdk-erigon-rpc-003:8123\\"" "$file" +fi +'`; + run(editCmd); +} catch (e) { + console.warn( + `error updating agglayer toml file` + ); + process.exit(1); +} + +// 5) Restart the agglayer service via Kurtosis +run(`kurtosis service stop cdk agglayer`) +run(`kurtosis service start cdk agglayer`) +console.log("Done."); + From fe22bcae3538cd0b030323db79a94051b7af3982 Mon Sep 17 00:00:00 2001 From: obynonwane Date: Thu, 4 Sep 2025 14:53:52 +0000 Subject: [PATCH 08/13] removed docker secret from the agglayer-upgrade-with-supplied-version branch so as to enable the docker build workflow to pass since the branch is built from a fork --- .github/workflows/docker-build.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 418876959..485a897af 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -14,10 +14,6 @@ jobs: steps: - uses: actions/checkout@v4 - uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 - - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 - with: - username: ${{ vars.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - name: Get short commit id run: | @@ -28,5 +24,4 @@ jobs: - name: Build image uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0 with: - tags: ${{ vars.DOCKER_USERNAME }}/e2e:${{ env.SHORT_COMMIT_ID }} push: false From 93244be441ae6518cb6324fcfcfcee7096e5dc6c Mon Sep 17 00:00:00 2001 From: obynonwane Date: Sun, 7 Sep 2025 13:38:38 +0000 Subject: [PATCH 09/13] added script to check for event logs to determine deployment success --- .../README.md | 43 ++-- .../check_verification.sh | 63 +++++ .../run.sh | 242 +++++++++++++----- .../script.js | 32 --- 4 files changed, 260 insertions(+), 120 deletions(-) create mode 100644 scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh delete mode 100644 scenarios/agglayer-upgrade-with-supplied-version/script.js diff --git a/scenarios/agglayer-upgrade-with-supplied-version/README.md b/scenarios/agglayer-upgrade-with-supplied-version/README.md index 93f948d2d..2c8c4570a 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/README.md +++ b/scenarios/agglayer-upgrade-with-supplied-version/README.md @@ -1,40 +1,30 @@ # Agglayer Upgrade/Downgrade Automation -This repo contains e2e test scenario to automate **Agglayer image upgrade and downgrade** while running rollup testnets inside **Kurtosis**. +This repo contains e2e test scenario to automate **Agglayer image upgrade and downgrade** while running rollup testnets inside **Kurtosis**. It is designed to: -- Bootstrap multiple rollup flavors (Validium, Rollup, PP) into the **same Kurtosis enclave**. -- Start Agglayer at a **FROM_TAG** version. +- Bootstrap multiple rollup flavors ( e.g 1 Validium and 2 Rollup ) into the **same Kurtosis enclave**. +- Start Agglayer using a **FROM_TAG** version. - Upgrade Agglayer to a **TO_TAG** version. - Optionally downgrade back to the original **FROM_TAG** for validation. - Cleanly tear down the setup using: ```bash kurtosis enclave rm cdk --force ---- -- List running services in the cdk enclave: -```bash - kurtosis enclave inspect cdk ---- -- View the logs of a service: -```bash - kurtosis service logs cdk ---- -- Shell into a service: -```bash - kurtosis service shell cdk ---- ---- -- Inspect a service -```bash -kurtosis service inspect cdk + ``` + --- ## Scripts -- `run.sh` - Main orchestration script. Handles bootstrap, upgrade, and optional downgrade. - - **Upgrade usage:** +- `run.sh` + Main orchestration script. Handles bootstrap, upgrade, and optional downgrade. + - **Create the .env file:** + ```bash + cp env.example .env + ``` + + - **Upgrade usage:** ```bash ./run.sh FROM_TAG TO_TAG ``` @@ -45,7 +35,7 @@ kurtosis service inspect cdk ./run.sh 0.3.4 0.3.5 ``` - - **Downgrade usage:** + - **Downgrade usage:** ```bash ./run.sh FROM_TAG TO_TAG downgrade ``` @@ -58,11 +48,12 @@ kurtosis service inspect cdk | Argument | Required | Description | |------------------------|----------|-------------| -| `` | Yes | Docker image tag to start with (e.g., `0.2.2`)| -| `` | Yes | Docker image tag to upgrade to (e.g., `0.2.3`)| +| `` | Yes | Docker image tag to start with (e.g., `0.3.4`)| +| `` | Yes | Docker image tag to upgrade to (e.g., `0.3.5`)| | `[ACTION]` | No | Optional: set to `downgrade` to downgrade back to `` after upgrade | --- +```` diff --git a/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh b/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh new file mode 100644 index 000000000..144384a7d --- /dev/null +++ b/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +set -euo pipefail + +# These get replaced by the host helper script +ROLLUP_MANAGER="__ROLLUP_MANAGER__" # from combined.json: polygonRollupManagerAddress +ROLLUP_ADDRESS="__ROLLUP_ADDRESS__" # from combined.json: rollupAddress (L2), if you need it + +RPC_URL="${RPC_URL:-http://el-1-geth-lighthouse:8545}" +LOOKBACK="${LOOKBACK:-100}" # set the look back for event to be 100 blocks + +EVENT="VerifyBatchesTrustedAggregator(uint32,uint64,bytes32,bytes32,address)" + +CURRENT="$(cast block-number --rpc-url "$RPC_URL")" # gets the lates blocknumber captured by CURRENT variable +FROM=$(( CURRENT - LOOKBACK )) # set the start of scan window +if (( FROM < 0 )); then FROM=0; fi # if the scan range is less than 0 we set it to begin from 0 + +echo "Scanning blocks $FROM → $CURRENT on $RPC_URL" +echo " contract (rollup manager): $ROLLUP_MANAGER" +echo " event: $EVENT" +echo " lookback: $LOOKBACK blocks" + +TMP_JSON="$(mktemp -t verify-logs.XXXXXX.json)" + +# Stream logs as pretty JSON to terminal (if jq is installed) and save raw JSON to file +if command -v jq >/dev/null 2>&1; then + cast logs \ + --address "$ROLLUP_MANAGER" "$EVENT" \ + --from-block "$FROM" --to-block "$CURRENT" \ + --rpc-url "$RPC_URL" \ + --json \ + | tee "$TMP_JSON" | jq -C . +else + echo "(jq not found — showing raw JSON)" + cast logs \ + --address "$ROLLUP_MANAGER" "$EVENT" \ + --from-block "$FROM" --to-block "$CURRENT" \ + --rpc-url "$RPC_URL" \ + --json | tee "$TMP_JSON" +fi + +FOUND=0 +if command -v jq >/dev/null 2>&1; then + FOUND="$(jq 'length' "$TMP_JSON")" # count how many item are in the json file +else + # crude fallback: count '[' then subtract brackets; if it's "[]", FOUND stays 0 + # (safe enough for our purpose when jq isn't available) + if grep -q '"address"' "$TMP_JSON"; then # checks is tem_json contains substring address + FOUND="$(grep -c '"address"' "$TMP_JSON" || true)" # counts lines that contains the address substring + fi +fi + +if (( FOUND > 0 )); then + echo "[SUCCESS---] Found ${FOUND} verification event(s) for $ROLLUP_MANAGER in the last $LOOKBACK blocks." + if command -v jq >/dev/null 2>&1; then + echo "--- summary ---" + # Show a compact, human-readable list + jq -r '.[] | "block=\(.blockNumber) tx=\(.transactionHash) logIndex=\(.logIndex) rollupIdTopic=\(.topics[1]) aggregatorTopic=\(.topics[2])"' "$TMP_JSON" + fi + exit 0 +else + echo "[ERROR---] No verification events found for $ROLLUP_MANAGER in the last $LOOKBACK blocks." + exit 2 +fi diff --git a/scenarios/agglayer-upgrade-with-supplied-version/run.sh b/scenarios/agglayer-upgrade-with-supplied-version/run.sh index a772ba49a..11d391551 100755 --- a/scenarios/agglayer-upgrade-with-supplied-version/run.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/run.sh @@ -1,8 +1,118 @@ #!/bin/env bash set -e -# Check before sourcing -if [ -f ../common/load-env.sh ]; then + +# ---------------------------------------------------------------------- +# Function: Adds rollup RPCs to agglayer and restarts the service +# ---------------------------------------------------------------------- +add_rollup_rpc_to_agglayer() { + echo "Updating agglayer config..." + + kurtosis service exec cdk agglayer ' + set -eu + file=/etc/zkevm/agglayer-config.toml + if ! grep -q "2 = http://cdk-erigon-rpc-002:8123" "$file"; then + sed -i "/1 = \"http:\/\/cdk-erigon-rpc-001:8123\"/a 2 = \"http://cdk-erigon-rpc-002:8123\"" "$file" + sed -i "/2 = \"http:\/\/cdk-erigon-rpc-002:8123\"/a 3 = \"http://cdk-erigon-rpc-003:8123\"" "$file" + fi + ' + + echo "Restarting agglayer..." + kurtosis service stop cdk agglayer + kurtosis service start cdk agglayer + + echo "Done." +} + + + +# ----------------------------------------------------------------------------------------------------------------- +# Function: to verify deployment by checking for events VerifyBatchesTrustedAggregator in the contract deployments +# ------------------------------------------------------------------------------------------------------------------ +run_verification_in_container() ( + set -euo pipefail + set -o pipefail + + SERVICE_NAME="${1:?Usage: run_verification_in_container [LOCAL_SCRIPT] [RPC_URL]}" + LOCAL_SCRIPT="${2:-./check_verification.sh}" + RPC_URL="${3:-http://el-1-geth-lighthouse:8545}" + + LOG_DIR="${LOG_DIR:-./logs}" + mkdir -p "$LOG_DIR" + LOG_FILE="${LOG_DIR}/${SERVICE_NAME}.log" + + START_TS="$(date -Is)" # current timestamp + echo "[START ${START_TS}] ${SERVICE_NAME}" + + # Find the kurtosis container for the service + # It finds the most recent container whose name starts with ${SERVICE_NAME}-- and stores its name in CONTAINER + CONTAINER="$(docker ps -a --format '{{.Names}}' | grep -E "^${SERVICE_NAME}--" | head -n1 || true)" + + # Run and stream output to both terminal and log + { + echo "---- ${START_TS} BEGIN ${SERVICE_NAME} ----" + # checks if no service was found and exits + if [[ -z "${CONTAINER}" ]]; then + echo "No container found matching \"${SERVICE_NAME}--*\"" >&2 + echo "---- $(date -Is) END ${SERVICE_NAME} rc=127 ----" + exit 127 + fi + + # continues execution if service was found + echo "Using container: ${CONTAINER}" + + # Copy local script into the container + REMOTE_SCRIPT="/tmp/check_verification.sh" + echo "Copying ${LOCAL_SCRIPT} -> ${CONTAINER}:${REMOTE_SCRIPT}" + docker cp "${LOCAL_SCRIPT}" "${CONTAINER}:${REMOTE_SCRIPT}" + + # Patch placeholders from combined.json and execute + docker exec -e RPC_URL="${RPC_URL}" "${CONTAINER}" bash -lc ' + set -euo pipefail + FILE=/opt/zkevm/combined.json + [[ -f "$FILE" ]] || { echo "Missing $FILE"; exit 1; } + + if command -v jq >/dev/null 2>&1; then + ROLLUP_MANAGER=$(jq -r ".polygonRollupManagerAddress" "$FILE") + ROLLUP_ADDRESS=$(jq -r ".rollupAddress" "$FILE") + else + ROLLUP_MANAGER=$(grep -oP "\"polygonRollupManagerAddress\"\\s*:\\s*\"\\K0x[0-9a-fA-F]+" "$FILE") + ROLLUP_ADDRESS=$(grep -oP "\"rollupAddress\"\\s*:\\s*\"\\K0x[0-9a-fA-F]+" "$FILE") + fi + + [[ -n "$ROLLUP_MANAGER" ]] || { echo "Could not parse polygonRollupManagerAddress"; exit 1; } + [[ -n "$ROLLUP_ADDRESS" ]] || { echo "Could not parse rollupAddress"; exit 1; } + + echo "ROLLUP_MANAGER=$ROLLUP_MANAGER" + echo "ROLLUP_ADDRESS=$ROLLUP_ADDRESS" + + sed -i "s/__ROLLUP_MANAGER__/$ROLLUP_MANAGER/g; s/__ROLLUP_ADDRESS__/$ROLLUP_ADDRESS/g" "'"$REMOTE_SCRIPT"'" + chmod +x "'"$REMOTE_SCRIPT"'" + "'"$REMOTE_SCRIPT"'" + ' + RC=$? # saves exits status of prev execution + echo "---- $(date -Is) END ${SERVICE_NAME} rc=${RC} ----" + exit $RC + } 2>&1 | tee -a "$LOG_FILE". # stdout & stderr from the prev cmd, pipes it & appends to log file shows also on terminal. + + # Preserve the exit code of the block (left side of the pipe) + RC=${PIPESTATUS[0]} # captures the exit code of the first command in the pipeline + END_TS="$(date -Is)" + if [[ $RC -eq 0 ]]; then + echo "[FINISH ${END_TS}] ${SERVICE_NAME} ✅ (rc=0) | log: ${LOG_FILE}" + elif [[ $RC -eq 2 ]]; then + echo "[FINISH ${END_TS}] ${SERVICE_NAME} ⚠️ No verification events (rc=2) | log: ${LOG_FILE}" + else + echo "[FINISH ${END_TS}] ${SERVICE_NAME} ❌ (rc=${RC}) | log: ${LOG_FILE}" + fi + exit $RC +) + + +# ---------------------------------------------------------------------- +# Load environment +# ---------------------------------------------------------------------- +if [[ -f ../common/load-env.sh ]]; then source ../common/load-env.sh else echo "load-env.sh not found!" @@ -16,6 +126,9 @@ else exit 1 fi + +# ------------------------------------------------------------------------------ +# CLI Arguments # ────────────────────────────────────────────────────────────────────────────── # Usage: ./run.sh [action] # e.g. 0.3.0-rc.21 @@ -42,9 +155,9 @@ ACTION="${3:-upgrade}" if [[ "$ACTION" == "downgrade" ]]; then if [[ "$TO_TAG" == "$PREV_FROM_TAG" && "$FROM_TAG" == "$PREV_TO_TAG" ]]; then - echo "✅ Downgrade tags match previous upgrade." + echo "Downgrade tags match previous upgrade." else - echo "❌ Downgrade tag mismatch!" + echo "Downgrade tag mismatch!" echo "Expected FROM_TAG=$PREV_TO_TAG, TO_TAG=$PREV_FROM_TAG" echo "Got FROM_TAG=$FROM_TAG, TO_TAG=$TO_TAG" exit 1 @@ -58,18 +171,18 @@ TO_IMAGE="${IMAGE_BASE}:${TO_TAG}" -sed -i "s#^FROM_IMAGE=.*#FROM_IMAGE=$FROM_IMAGE#" .env -sed -i "s#^TO_IMAGE=.*#TO_IMAGE=$TO_IMAGE#" .env + sed -i "s#^FROM_TAG=.*#FROM_TAG=$FROM_TAG#" .env sed -i "s#^TO_TAG=.*#TO_TAG=$TO_TAG#" .env -kurtosis_hash="$KURTOSIS_PACKAGE_HASH" -kurtosis_enclave_name="$ENCLAVE_NAME" +KURTOSIS_HASH="$KURTOSIS_PACKAGE_HASH" +KURTOSIS_ENCLAVE_NAME="$ENCLAVE_NAME" + -echo ":-kurtosis hash:= $kurtosis_hash" -echo ":-enclave name:= $kurtosis_enclave_name" +echo ":-kurtosis hash:= $KURTOSIS_HASH" +echo ":-enclave name:= $KURTOSIS_ENCLAVE_NAME" echo ":-from image:= $FROM_IMAGE" echo ":-to image:= $TO_IMAGE" echo ":-from tag:= $FROM_TAG" @@ -100,9 +213,9 @@ yq -y --arg sp1key "$SP1_NETWORK_KEY" ' if [[ "$ACTION" == "downgrade" ]]; then # check if there is a running enclave - enclaveExist=$(kurtosis enclave ls | awk '$3 == "RUNNING" {print $2; exit}') - if [[ "$enclaveExist" != "$kurtosis_enclave_name" ]]; then - echo "Enclave name is not $kurtosis_enclave_name. Exiting...OR No Running enclave " + ENCLAVE_EXIST=$(kurtosis enclave ls | awk '$3 == "RUNNING" {print $2; exit}') + if [[ "$ENCLAVE_EXIST" != "$KURTOSIS_ENCLAVE_NAME" ]]; then + echo "Enclave name is not $KURTOSIS_ENCLAVE_NAME. Exiting...OR No Running enclave " exit 1 fi @@ -119,12 +232,12 @@ if [[ "$ACTION" == "downgrade" ]]; then echo $TO_IMAGE_SERVICE_CONFIG_FILE cat "$TO_IMAGE_SERVICE_CONFIG_FILE" - kurtosis service rm "$kurtosis_enclave_name" agglayer + kurtosis service rm "$KURTOSIS_ENCLAVE_NAME" agglayer kurtosis service add cdk agglayer --json-service-config "$TO_IMAGE_SERVICE_CONFIG_FILE" rm "$TO_IMAGE_SERVICE_CONFIG_FILE" - sleep 10 + TO_PROVER_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) kurtosis service inspect cdk agglayer-prover --output json \ @@ -141,11 +254,11 @@ if [[ "$ACTION" == "downgrade" ]]; then echo '╔════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ 🎉 💃💃💃💃💃 D O W N G R A D I N G A G G L A Y E R S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' + echo '║ D O W N G R A D I N G A G G L A Y E R S U C C E S S F U L L ║' echo '╚════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' - echo "🔧 Running Updating Agglayer with Rollup ERIGON ROLLUP RPC NODE" - node script.js + echo " Running Updating Agglayer with Rollup ERIGON ROLLUP RPC NODE" + add_rollup_rpc_to_agglayer else echo '╔═══════════════════════════════════════════════════════════════╗' @@ -154,28 +267,24 @@ else kurtosis run \ - --enclave "$kurtosis_enclave_name" \ + --enclave "$KURTOSIS_ENCLAVE_NAME" \ --args-file ./initial-cdk-erigon-validium.yml \ - "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + "github.com/0xPolygon/kurtosis-cdk@$KURTOSIS_HASH" - echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M S U C C E S S F U L L ║' - echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' - echo "=======================================================================================================================" - sleep 10 + echo '╔══════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N V A L I D I U M S U C C E S S F U L L ║' + echo '╚══════════════════════════════════════════════════════════════════════════════════════════════╝' + - echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════╗' echo '║ R U N N I N G U P G R A D E F O R A G G L A Y E R F R O M S U P L I E D T A G ║' echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════╝' - # kurtosis service inspect cdk agglayer --output json - echo "=======================================================================================================================" + - - echo "==================== R U N N I N G K U R T O R S I S W I T H A G G L A Y E R F R O M I M A G E: $FROM_IMAGE ============" + echo "==================== R U N N I N G K U R T O S I S W I T H A G G L A Y E R F R O M I M A G E: $FROM_IMAGE ============" # 1. Create a temporary file to hold the config json of the current kurtosis base image FROM_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) @@ -186,12 +295,11 @@ else echo $FROM_IMAGE_SERVICE_CONFIG_FILE cat "$FROM_IMAGE_SERVICE_CONFIG_FILE" - kurtosis service rm "$kurtosis_enclave_name" agglayer + kurtosis service rm "$KURTOSIS_ENCLAVE_NAME" agglayer kurtosis service add cdk agglayer --json-service-config "$FROM_IMAGE_SERVICE_CONFIG_FILE" rm "$FROM_IMAGE_SERVICE_CONFIG_FILE" - sleep 10 FROM_PROVER_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) @@ -202,8 +310,8 @@ else rm "$FROM_PROVER_IMAGE_SERVICE_CONFIG_FILE" - sleep 20 - echo "==================== R U N N I N G K U R T O R S I S W I T H A G G L A Y E R T O I M A G E: $TO_IMAGE =================" + + echo "==================== R U N N I N G K U R T O S I S W I T H A G G L A Y E R T O I M A G E: $TO_IMAGE =================" # 1. Create a temporary file to hold the config json of the current service TO_IMAGE_SERVICE_CONFIG_FILE=$(mktemp) @@ -214,7 +322,7 @@ else echo $TO_IMAGE_SERVICE_CONFIG_FILE cat "$TO_IMAGE_SERVICE_CONFIG_FILE" - kurtosis service rm "$kurtosis_enclave_name" agglayer + kurtosis service rm "$KURTOSIS_ENCLAVE_NAME" agglayer kurtosis service add cdk agglayer --json-service-config "$TO_IMAGE_SERVICE_CONFIG_FILE" rm "$TO_IMAGE_SERVICE_CONFIG_FILE" @@ -233,58 +341,68 @@ else kurtosis service inspect cdk agglayer --output json echo "========================================================================================================================" - sleep 15 + - echo '╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ 🎉 💃💃💃💃💃 U P G R A D I N G A G G L A Y E R T O T A R G E T V E R S I O N S U C C E S S F U L L 🎉 💃💃💃💃💃 ║' - echo '╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝' + echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ U P G R A D I N G A G G L A Y E R T O T A R G E T V E R S I O N S U C C E S S F U L L ║' + echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════╝' - echo "======================================================================================================================================================" - echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N R O L L U P T W O ║' - echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' + echo '╔═════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P T W O ║' + echo '╚═════════════════════════════════════════════════════════════════════════╝' kurtosis run \ - --enclave "$kurtosis_enclave_name" \ + --enclave "$KURTOSIS_ENCLAVE_NAME" \ --args-file ./initial-cdk-erigon-rollup.yml \ - "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + "github.com/0xPolygon/kurtosis-cdk@$KURTOSIS_HASH" - echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N R O L L U P S U C C E S S F U L L ║' - echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' - echo "=====================================================================================================================================" - sleep 10 + echo '╔═════════════════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P S U C C E S S F U L L ║' + echo '╚═════════════════════════════════════════════════════════════════════════════════════════╝' + - echo "======================================================================================================================================================" - echo '╔═══════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N R O L L U P T H R E E ║' - echo '╚═══════════════════════════════════════════════════════════════════════════════════════════╝' + echo '╔═════════════════════════════════════════════════════════════════════════════╗' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P T H R E E ║' + echo '╚═════════════════════════════════════════════════════════════════════════════╝' kurtosis run \ - --enclave "$kurtosis_enclave_name" \ + --enclave "$KURTOSIS_ENCLAVE_NAME" \ --args-file ./initial-cdk-erigon-rollup-003.yml \ - "github.com/0xPolygon/kurtosis-cdk@$kurtosis_hash" + "github.com/0xPolygon/kurtosis-cdk@$KURTOSIS_HASH" echo '╔═══════════════════════════════════════════════════════════════════════════════════════════════════════╗' - echo '║ A T T A C H I N G C D K E R I G O N R O L L U P S U C C E S S F U L L ║' + echo '║ A T T A C H I N G C D K E R I G O N R O L L U P T H R E E S U C C E S S F U L L ║' echo '╚═══════════════════════════════════════════════════════════════════════════════════════════════════════╝' - echo "=====================================================================================================================================" - sleep 10 - echo "🔧 Running Updating Agglayer with Rollup ERIGON ROLLUP RPC NODE" - node script.js > script.log 2>&1 & + + echo "Modifying agglayer configuration to include new rollup" + add_rollup_rpc_to_agglayer + + + + # live countdown for 3 minutes + for ((s=180; s>0; s--)); do + printf "\rWaiting 3 min to verify deployment - will execute VerifyBatchesTrustedAggregator event… %02d:%02d" $((s/60)) $((s%60)) + sleep 1 + done + printf "\r✓ done. \n" + + for n in 001 002 003; do + run_verification_in_container "contracts-$n" || true + done +fi + -fi \ No newline at end of file diff --git a/scenarios/agglayer-upgrade-with-supplied-version/script.js b/scenarios/agglayer-upgrade-with-supplied-version/script.js deleted file mode 100644 index 10cd134ad..000000000 --- a/scenarios/agglayer-upgrade-with-supplied-version/script.js +++ /dev/null @@ -1,32 +0,0 @@ -// This cript add rollup rpc to agglayer -const { execSync } = require("child_process"); - - -function run(cmd, opts = {}) { - console.log(`$ ${cmd}`); - execSync(cmd, { stdio: "inherit", ...opts }); -} - - -try { -const editCmd = `kurtosis service exec cdk agglayer ' -set -eu -file=/etc/zkevm/agglayer-config.toml -if ! grep -q "2 = http://cdk-erigon-rpc-002:8123" "$file"; then - sed -i "/1 = \\"http:\\/\\/cdk-erigon-rpc-001:8123\\"/a 2 = \\"http://cdk-erigon-rpc-002:8123\\"" "$file" - sed -i "/2 = \\"http:\\/\\/cdk-erigon-rpc-002:8123\\"/a 3 = \\"http://cdk-erigon-rpc-003:8123\\"" "$file" -fi -'`; - run(editCmd); -} catch (e) { - console.warn( - `error updating agglayer toml file` - ); - process.exit(1); -} - -// 5) Restart the agglayer service via Kurtosis -run(`kurtosis service stop cdk agglayer`) -run(`kurtosis service start cdk agglayer`) -console.log("Done."); - From 68ffb86fe3f17b397439c3474344ac4cee6e8675 Mon Sep 17 00:00:00 2001 From: obynonwane Date: Mon, 8 Sep 2025 11:36:43 +0000 Subject: [PATCH 10/13] removed unused shell variable --- .../check_verification.sh | 2 +- scenarios/agglayer-upgrade-with-supplied-version/run.sh | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh b/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh index 144384a7d..aae73df54 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh @@ -3,7 +3,7 @@ set -euo pipefail # These get replaced by the host helper script ROLLUP_MANAGER="__ROLLUP_MANAGER__" # from combined.json: polygonRollupManagerAddress -ROLLUP_ADDRESS="__ROLLUP_ADDRESS__" # from combined.json: rollupAddress (L2), if you need it + RPC_URL="${RPC_URL:-http://el-1-geth-lighthouse:8545}" LOOKBACK="${LOOKBACK:-100}" # set the look back for event to be 100 blocks diff --git a/scenarios/agglayer-upgrade-with-supplied-version/run.sh b/scenarios/agglayer-upgrade-with-supplied-version/run.sh index 11d391551..db530f9a4 100755 --- a/scenarios/agglayer-upgrade-with-supplied-version/run.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/run.sh @@ -74,19 +74,16 @@ run_verification_in_container() ( if command -v jq >/dev/null 2>&1; then ROLLUP_MANAGER=$(jq -r ".polygonRollupManagerAddress" "$FILE") - ROLLUP_ADDRESS=$(jq -r ".rollupAddress" "$FILE") else ROLLUP_MANAGER=$(grep -oP "\"polygonRollupManagerAddress\"\\s*:\\s*\"\\K0x[0-9a-fA-F]+" "$FILE") - ROLLUP_ADDRESS=$(grep -oP "\"rollupAddress\"\\s*:\\s*\"\\K0x[0-9a-fA-F]+" "$FILE") fi [[ -n "$ROLLUP_MANAGER" ]] || { echo "Could not parse polygonRollupManagerAddress"; exit 1; } - [[ -n "$ROLLUP_ADDRESS" ]] || { echo "Could not parse rollupAddress"; exit 1; } + echo "ROLLUP_MANAGER=$ROLLUP_MANAGER" - echo "ROLLUP_ADDRESS=$ROLLUP_ADDRESS" - sed -i "s/__ROLLUP_MANAGER__/$ROLLUP_MANAGER/g; s/__ROLLUP_ADDRESS__/$ROLLUP_ADDRESS/g" "'"$REMOTE_SCRIPT"'" + sed -i "s|__ROLLUP_MANAGER__|$ROLLUP_MANAGER|g" "'"$REMOTE_SCRIPT"'" chmod +x "'"$REMOTE_SCRIPT"'" "'"$REMOTE_SCRIPT"'" ' From 2cd8f6898b55b2a4516c48745c0f7c417377a6a6 Mon Sep 17 00:00:00 2001 From: obynonwane Date: Mon, 8 Sep 2025 12:08:49 +0000 Subject: [PATCH 11/13] update remove tmp file after execution --- .../agglayer-upgrade-with-supplied-version/check_verification.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh b/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh index aae73df54..dba586953 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh @@ -20,6 +20,7 @@ echo " event: $EVENT" echo " lookback: $LOOKBACK blocks" TMP_JSON="$(mktemp -t verify-logs.XXXXXX.json)" +trap 'rm -f "$TMP_JSON"' EXIT # Stream logs as pretty JSON to terminal (if jq is installed) and save raw JSON to file if command -v jq >/dev/null 2>&1; then From cb870d5f29241a0b1b2575e0760fc4f2b0bb9564 Mon Sep 17 00:00:00 2001 From: obynonwane Date: Mon, 8 Sep 2025 12:45:53 +0000 Subject: [PATCH 12/13] cleaned up using shellcheck --- .../agglayer-upgrade-with-supplied-version/run.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scenarios/agglayer-upgrade-with-supplied-version/run.sh b/scenarios/agglayer-upgrade-with-supplied-version/run.sh index db530f9a4..ad8cbeae9 100755 --- a/scenarios/agglayer-upgrade-with-supplied-version/run.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/run.sh @@ -89,7 +89,7 @@ run_verification_in_container() ( ' RC=$? # saves exits status of prev execution echo "---- $(date -Is) END ${SERVICE_NAME} rc=${RC} ----" - exit $RC + exit "$RC" } 2>&1 | tee -a "$LOG_FILE". # stdout & stderr from the prev cmd, pipes it & appends to log file shows also on terminal. # Preserve the exit code of the block (left side of the pipe) @@ -102,7 +102,7 @@ run_verification_in_container() ( else echo "[FINISH ${END_TS}] ${SERVICE_NAME} ❌ (rc=${RC}) | log: ${LOG_FILE}" fi - exit $RC + exit "$RC" ) @@ -226,7 +226,7 @@ if [[ "$ACTION" == "downgrade" ]]; then kurtosis service inspect cdk agglayer --output json \ | jq --arg img "$TO_IMAGE" '.image = $img' > "$TO_IMAGE_SERVICE_CONFIG_FILE" - echo $TO_IMAGE_SERVICE_CONFIG_FILE + echo "$TO_IMAGE_SERVICE_CONFIG_FILE" cat "$TO_IMAGE_SERVICE_CONFIG_FILE" kurtosis service rm "$KURTOSIS_ENCLAVE_NAME" agglayer @@ -289,7 +289,7 @@ else kurtosis service inspect cdk agglayer --output json \ | jq --arg img "$FROM_IMAGE" '.image = $img' > "$FROM_IMAGE_SERVICE_CONFIG_FILE" - echo $FROM_IMAGE_SERVICE_CONFIG_FILE + echo "$FROM_IMAGE_SERVICE_CONFIG_FILE" cat "$FROM_IMAGE_SERVICE_CONFIG_FILE" kurtosis service rm "$KURTOSIS_ENCLAVE_NAME" agglayer @@ -316,7 +316,7 @@ else kurtosis service inspect cdk agglayer --output json \ | jq --arg img "$TO_IMAGE" '.image = $img' > "$TO_IMAGE_SERVICE_CONFIG_FILE" - echo $TO_IMAGE_SERVICE_CONFIG_FILE + echo "$TO_IMAGE_SERVICE_CONFIG_FILE" cat "$TO_IMAGE_SERVICE_CONFIG_FILE" kurtosis service rm "$KURTOSIS_ENCLAVE_NAME" agglayer From 9fe791aa9ca2f34cfaa1d65fd300a4d7060b20f6 Mon Sep 17 00:00:00 2001 From: obynonwane Date: Mon, 8 Sep 2025 16:37:07 +0000 Subject: [PATCH 13/13] updated scriptformat to be consistent across board --- .../check_verification.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh b/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh index dba586953..fde18a26a 100644 --- a/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh +++ b/scenarios/agglayer-upgrade-with-supplied-version/check_verification.sh @@ -50,7 +50,7 @@ else fi fi -if (( FOUND > 0 )); then +if [[ $FOUND -gt 0 ]]; then echo "[SUCCESS---] Found ${FOUND} verification event(s) for $ROLLUP_MANAGER in the last $LOOKBACK blocks." if command -v jq >/dev/null 2>&1; then echo "--- summary ---"