From c3eb76014c09988febe419b3022dcec5ad83916e Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Mon, 9 Sep 2024 15:48:30 -0400 Subject: [PATCH 01/31] fix: pool manager --- cdk_erigon.star | 9 +++++++++ main.star | 14 +++++++------- params.yml | 6 +++--- templates/cdk-erigon/config.yml | 1 + 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/cdk_erigon.star b/cdk_erigon.star index 5164851d..fe56d4fc 100644 --- a/cdk_erigon.star +++ b/cdk_erigon.star @@ -34,6 +34,14 @@ def run_rpc(plan, args): zkevm_sequencer_service.ports["data-streamer"].number, ) + pool_manager_service = plan.get_service( + name= "zkevm-pool-manager" + args["deployment_suffix"] + ) + pool_manager_url = "{}:{}".format( + pool_manager_service.ip_address, + pool_manager_service.ports["http"].number, + ) + cdk_erigon_node_config_template = read_file(src="./templates/cdk-erigon/config.yml") contract_setup_addresses = service_package.get_contract_setup_addresses(plan, args) cdk_erigon_node_config_artifact = plan.render_templates( @@ -45,6 +53,7 @@ def run_rpc(plan, args): "zkevm_sequencer_url": zkevm_sequence_url, "zkevm_datastreamer_url": zkevm_datastreamer_url, "is_sequencer": False, + "pool_manager_url": pool_manager_url, } | args | contract_setup_addresses, diff --git a/main.star b/main.star index c0aa24d2..04dfce3f 100644 --- a/main.star +++ b/main.star @@ -102,13 +102,6 @@ def run( else: plan.print("Skipping the deployment of cdk-erigon sequencer") - # Deploy cdk-erigon node. - if deploy_cdk_erigon_node: - plan.print("Deploying cdk-erigon node") - cdk_erigon_package.run_rpc(plan, args) - else: - plan.print("Skipping the deployment of cdk-erigon node") - # Deploy zkevm-pool-manager service. if deploy_cdk_erigon_node: plan.print("Deploying zkevm-pool-manager service") @@ -116,6 +109,13 @@ def run( else: plan.print("Skipping the deployment of zkevm-pool-manager service") + # Deploy cdk-erigon node. + if deploy_cdk_erigon_node: + plan.print("Deploying cdk-erigon node") + cdk_erigon_package.run_rpc(plan, args) + else: + plan.print("Skipping the deployment of cdk-erigon node") + plan.print("Deploying cdk central/trusted environment") central_environment_args = dict(args) central_environment_args["genesis_artifact"] = genesis_artifact diff --git a/params.yml b/params.yml index 8878e10a..89d87ed0 100644 --- a/params.yml +++ b/params.yml @@ -55,7 +55,7 @@ args: additional_services: [] # Docker images and repositories used to spin up services. - zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.3-RC20 + zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.0-RC30-fork.11 zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk cdk_node_image: ghcr.io/0xpolygon/cdk:0.0.15 @@ -68,7 +68,7 @@ args: zkevm_bridge_ui_image: leovct/zkevm-bridge-ui:multi-network zkevm_bridge_proxy_image: haproxy:2.9.9-bookworm zkevm_sequence_sender_image: hermeznetwork/zkevm-sequence-sender:v0.2.0-RC4 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.0.0-beta17 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:acceptance-2.0.0-beta18-bde1b5e zkevm_pool_manager_image: hermeznetwork/zkevm-pool-manager:v0.1.0-RC1 # Port configuration. @@ -144,7 +144,7 @@ args: zkevm_rollup_id: 1 # The fork id of the new rollup. It indicates the prover (zkROM/executor) version. - zkevm_rollup_fork_id: 9 + zkevm_rollup_fork_id: 11 # If erigon is being used as the sequencer, # This flag will enable a stateless executor to verify the execution of the batches. diff --git a/templates/cdk-erigon/config.yml b/templates/cdk-erigon/config.yml index 154fced7..07829f01 100644 --- a/templates/cdk-erigon/config.yml +++ b/templates/cdk-erigon/config.yml @@ -69,4 +69,5 @@ zkevm.data-stream-port: {{.zkevm_data_stream_port}} txpool.disable: true zkevm.l2-sequencer-rpc-url: {{.zkevm_sequencer_url}} zkevm.l2-datastreamer-url: {{.zkevm_datastreamer_url}} +zkevm.pool-manager-url: {{.pool_manager_url}} # end {{end}} From a33ca3b145b0094ed6d40ed7e36e4c1d7453eb05 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Mon, 9 Sep 2024 16:25:43 -0400 Subject: [PATCH 02/31] feat: adding flag for the verifier --- params.yml | 3 +++ templates/contract-deploy/create_rollup_parameters.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/params.yml b/params.yml index 53de7932..69e01b6e 100644 --- a/params.yml +++ b/params.yml @@ -147,6 +147,9 @@ args: # The fork id of the new rollup. It indicates the prover (zkROM/executor) version. zkevm_rollup_fork_id: 11 + # By default a mock verifier is deployed. Change to true to deploye a real verifier which will require a real prover + zkevm_use_real_verifier: false + # If erigon is being used as the sequencer, # This flag will enable a stateless executor to verify the execution of the batches. erigon_strict_mode: true diff --git a/templates/contract-deploy/create_rollup_parameters.json b/templates/contract-deploy/create_rollup_parameters.json index 25778b7f..d8283e32 100644 --- a/templates/contract-deploy/create_rollup_parameters.json +++ b/templates/contract-deploy/create_rollup_parameters.json @@ -11,7 +11,7 @@ "maxPriorityFeePerGas": "", "multiplierGas": "", "networkName": "kurtosis-test", - "realVerifier": "false", + "realVerifier": "{{.zkevm_use_real_verifier}}", "trustedSequencer": "{{.zkevm_l2_sequencer_address}}", "trustedSequencerURL": "http://{{.sequencer_name}}{{.deployment_suffix}}:{{.zkevm_rpc_http_port}}", "trustedAggregator":"{{.zkevm_l2_aggregator_address}}" From ba9f830f11d0d3ed172dfb379d1d2c5bd8617438 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Mon, 9 Sep 2024 17:45:36 -0400 Subject: [PATCH 03/31] feat: adding some more error checks --- params.yml | 8 +++-- .../create_rollup_parameters.json | 2 +- .../contract-deploy/run-contract-setup.sh | 33 +++++++++++++------ 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/params.yml b/params.yml index 69e01b6e..0900a0a2 100644 --- a/params.yml +++ b/params.yml @@ -61,7 +61,9 @@ args: cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk cdk_node_image: ghcr.io/0xpolygon/cdk:0.0.17 zkevm_da_image: 0xpolygon/cdk-data-availability:0.0.9 - zkevm_contracts_image: leovct/zkevm-contracts # the tag is automatically replaced by the value of /zkevm_rollup_fork_id/ + + #####DO NOT MERGE TO MAIN + zkevm_contracts_image: local/zkevm-contracts # the tag is automatically replaced by the value of /zkevm_rollup_fork_id/ # zkevm_agglayer_image: 0xpolygon/agglayer:0.1.3 zkevm_agglayer_image: ghcr.io/agglayer/agglayer-rs:main @@ -145,10 +147,10 @@ args: zkevm_rollup_id: 1 # The fork id of the new rollup. It indicates the prover (zkROM/executor) version. - zkevm_rollup_fork_id: 11 + zkevm_rollup_fork_id: 12 # By default a mock verifier is deployed. Change to true to deploye a real verifier which will require a real prover - zkevm_use_real_verifier: false + zkevm_use_real_verifier: true # If erigon is being used as the sequencer, # This flag will enable a stateless executor to verify the execution of the batches. diff --git a/templates/contract-deploy/create_rollup_parameters.json b/templates/contract-deploy/create_rollup_parameters.json index d8283e32..86ff221f 100644 --- a/templates/contract-deploy/create_rollup_parameters.json +++ b/templates/contract-deploy/create_rollup_parameters.json @@ -11,7 +11,7 @@ "maxPriorityFeePerGas": "", "multiplierGas": "", "networkName": "kurtosis-test", - "realVerifier": "{{.zkevm_use_real_verifier}}", + "realVerifier": {{.zkevm_use_real_verifier}}, "trustedSequencer": "{{.zkevm_l2_sequencer_address}}", "trustedSequencerURL": "http://{{.sequencer_name}}{{.deployment_suffix}}:{{.zkevm_rpc_http_port}}", "trustedAggregator":"{{.zkevm_l2_aggregator_address}}" diff --git a/templates/contract-deploy/run-contract-setup.sh b/templates/contract-deploy/run-contract-setup.sh index 15dd4255..b285f94b 100755 --- a/templates/contract-deploy/run-contract-setup.sh +++ b/templates/contract-deploy/run-contract-setup.sh @@ -104,11 +104,11 @@ wait_for_rpc_to_be_available "{{.l1_rpc_url}}" echo_ts "L1 RPC is now available" if [[ -e "/opt/contract-deploy/genesis.json" && -e "/opt/contract-deploy/combined.json" ]]; then - 2>&1 echo "We have a genesis and combined output file from a previous deployment" + echo_ts "We have a genesis and combined output file from a previous deployment" cp /opt/contract-deploy/* /opt/zkevm/ exit else - 2>&1 echo "No previous output detected. Starting clean contract deployment" + echo_ts "No previous output detected. Starting clean contract deployment" fi # Fund accounts on L1. @@ -177,19 +177,32 @@ cast send --private-key "{{.zkevm_rollup_manager_deployer_private_key}}" --rpc-u echo_ts "Deploying zkevm contracts to L1" echo_ts "Step 1: Preparing tesnet" -npx hardhat run deployment/testnet/prepareTestnet.ts --network localhost | tee 01_prepare_testnet.out +npx hardhat run deployment/testnet/prepareTestnet.ts --network localhost 2>&1 | tee 01_prepare_testnet.out echo_ts "Step 2: Creating genesis" -MNEMONIC="{{.l1_preallocated_mnemonic}}" npx ts-node deployment/v2/1_createGenesis.ts | tee 02_create_genesis.out +MNEMONIC="{{.l1_preallocated_mnemonic}}" npx ts-node deployment/v2/1_createGenesis.ts 2>&1 | tee 02_create_genesis.out +if [[ ! -e deployment/v2/genesis.json ]]; then + echo_ts "The genesis file was not created after running createGenesis" + exit 1 +fi echo_ts "Step 3: Deploying PolygonZKEVMDeployer" -npx hardhat run deployment/v2/2_deployPolygonZKEVMDeployer.ts --network localhost | tee 03_zkevm_deployer.out +npx hardhat run deployment/v2/2_deployPolygonZKEVMDeployer.ts --network localhost 2>&1 | tee 03_zkevm_deployer.out echo_ts "Step 4: Deploying contracts" -npx hardhat run deployment/v2/3_deployContracts.ts --network localhost | tee 04_deploy_contracts.out +npx hardhat run deployment/v2/3_deployContracts.ts --network localhost 2>&1 | tee 04_deploy_contracts.out +if [[ ! -e deployment/v2/deploy_output.json ]]; then + echo_ts "The deploy_output.json file was not created after running deployContracts" + exit 1 +fi echo_ts "Step 5: Creating rollup" -npx hardhat run deployment/v2/4_createRollup.ts --network localhost | tee 05_create_rollup.out +npx hardhat run deployment/v2/4_createRollup.ts --network localhost 2>&1 | tee 05_create_rollup.out +if [[ ! -e deployment/v2/create_rollup_output.json ]]; then + echo_ts "The create_rollup_output.json file was not created after running createRollup" + exit 1 +fi + # Combine contract deploy files. # At this point, all of the contracts /should/ have been deployed. @@ -285,18 +298,18 @@ output_json=$(jq "$jq_script" /opt/zkevm/genesis.json) # Handle jq errors if [[ $? -ne 0 ]]; then - echo "Error processing JSON with jq" + echo_ts "Error processing JSON with jq" exit 1 fi # Write the output JSON to a file echo "$output_json" | jq . > dynamic-kurtosis-allocs.json if [[ $? -ne 0 ]]; then - echo "Error writing to file dynamic-kurtosis-allocs.json" + echo_ts "Error writing to file dynamic-kurtosis-allocs.json" exit 1 fi -echo "Transformation complete. Output written to dynamic-kurtosis-allocs.json" +echo_ts "Transformation complete. Output written to dynamic-kurtosis-allocs.json" jq '{"root": .root, "timestamp": 0, "gasLimit": 0, "difficulty": 0}' /opt/zkevm/genesis.json > dynamic-kurtosis-conf.json From 996195efeec827712df04e39f4ff17752e491c99 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Mon, 9 Sep 2024 18:11:08 -0400 Subject: [PATCH 04/31] feat: adding v8 prover --- params.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/params.yml b/params.yml index 0900a0a2..a63f286b 100644 --- a/params.yml +++ b/params.yml @@ -56,7 +56,7 @@ args: additional_services: [] # Docker images and repositories used to spin up services. - zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.0-RC31-fork.11 + zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC10-fork.12 zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk cdk_node_image: ghcr.io/0xpolygon/cdk:0.0.17 @@ -150,7 +150,7 @@ args: zkevm_rollup_fork_id: 12 # By default a mock verifier is deployed. Change to true to deploye a real verifier which will require a real prover - zkevm_use_real_verifier: true + zkevm_use_real_verifier: true #####DO NOT MERGE TO MAIN # If erigon is being used as the sequencer, # This flag will enable a stateless executor to verify the execution of the batches. From 6c7538deb0773d8ad1e40128f557e28bf52e04e2 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Wed, 11 Sep 2024 09:32:34 -0400 Subject: [PATCH 05/31] fix: pool manager --- cdk_erigon.star | 9 +++++++++ main.star | 14 +++++++------- params.yml | 12 +++++++++--- templates/cdk-erigon/config.yml | 1 + 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/cdk_erigon.star b/cdk_erigon.star index 5164851d..fe56d4fc 100644 --- a/cdk_erigon.star +++ b/cdk_erigon.star @@ -34,6 +34,14 @@ def run_rpc(plan, args): zkevm_sequencer_service.ports["data-streamer"].number, ) + pool_manager_service = plan.get_service( + name= "zkevm-pool-manager" + args["deployment_suffix"] + ) + pool_manager_url = "{}:{}".format( + pool_manager_service.ip_address, + pool_manager_service.ports["http"].number, + ) + cdk_erigon_node_config_template = read_file(src="./templates/cdk-erigon/config.yml") contract_setup_addresses = service_package.get_contract_setup_addresses(plan, args) cdk_erigon_node_config_artifact = plan.render_templates( @@ -45,6 +53,7 @@ def run_rpc(plan, args): "zkevm_sequencer_url": zkevm_sequence_url, "zkevm_datastreamer_url": zkevm_datastreamer_url, "is_sequencer": False, + "pool_manager_url": pool_manager_url, } | args | contract_setup_addresses, diff --git a/main.star b/main.star index 85e03a21..111c15c4 100644 --- a/main.star +++ b/main.star @@ -103,13 +103,6 @@ def run( else: plan.print("Skipping the deployment of cdk-erigon sequencer") - # Deploy cdk-erigon node. - if deploy_cdk_erigon_node: - plan.print("Deploying cdk-erigon node") - cdk_erigon_package.run_rpc(plan, args) - else: - plan.print("Skipping the deployment of cdk-erigon node") - # Deploy zkevm-pool-manager service. if deploy_cdk_erigon_node: plan.print("Deploying zkevm-pool-manager service") @@ -117,6 +110,13 @@ def run( else: plan.print("Skipping the deployment of zkevm-pool-manager service") + # Deploy cdk-erigon node. + if deploy_cdk_erigon_node: + plan.print("Deploying cdk-erigon node") + cdk_erigon_package.run_rpc(plan, args) + else: + plan.print("Skipping the deployment of cdk-erigon node") + plan.print("Deploying cdk central/trusted environment") central_environment_args = dict(args) central_environment_args["genesis_artifact"] = genesis_artifact diff --git a/params.yml b/params.yml index 776749b5..1b77a6f8 100644 --- a/params.yml +++ b/params.yml @@ -56,7 +56,7 @@ args: additional_services: [] # Docker images and repositories used to spin up services. - zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.3-RC20 + zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.0-RC30-fork.11 zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk cdk_node_image: ghcr.io/0xpolygon/cdk:0.0.16 @@ -69,7 +69,7 @@ args: zkevm_bridge_ui_image: leovct/zkevm-bridge-ui:multi-network zkevm_bridge_proxy_image: haproxy:2.9.9-bookworm zkevm_sequence_sender_image: hermeznetwork/zkevm-sequence-sender:v0.2.0-RC4 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.0.0-beta18 + cdk_erigon_node_image: hermeznetwork/cdk-erigon:acceptance-2.0.0-beta18-bde1b5e zkevm_pool_manager_image: hermeznetwork/zkevm-pool-manager:v0.1.0-RC1 # Port configuration. @@ -144,6 +144,12 @@ args: # The rollupID of the CDK. zkevm_rollup_id: 1 +<<<<<<< HEAD +======= + # The fork id of the new rollup. It indicates the prover (zkROM/executor) version. + zkevm_rollup_fork_id: 11 + +>>>>>>> c3eb760 (fix: pool manager) # If erigon is being used as the sequencer, # This flag will enable a stateless executor to verify the execution of the batches. erigon_strict_mode: true @@ -171,4 +177,4 @@ args: trusted_sequencer_node_uri: zkevm-node-sequencer-001:6900 zkevm_aggregator_host: zkevm-node-aggregator-001 genesis_file: templates/permissionless-node/genesis.json - \ No newline at end of file + diff --git a/templates/cdk-erigon/config.yml b/templates/cdk-erigon/config.yml index 154fced7..07829f01 100644 --- a/templates/cdk-erigon/config.yml +++ b/templates/cdk-erigon/config.yml @@ -69,4 +69,5 @@ zkevm.data-stream-port: {{.zkevm_data_stream_port}} txpool.disable: true zkevm.l2-sequencer-rpc-url: {{.zkevm_sequencer_url}} zkevm.l2-datastreamer-url: {{.zkevm_datastreamer_url}} +zkevm.pool-manager-url: {{.pool_manager_url}} # end {{end}} From 3aff24ce692e3d8cf9560500c734e3565bbcdcd0 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Wed, 11 Sep 2024 09:39:37 -0400 Subject: [PATCH 06/31] fix: copypaste --- params.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/params.yml b/params.yml index b423a48c..5f01cec8 100644 --- a/params.yml +++ b/params.yml @@ -61,7 +61,7 @@ args: cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk cdk_node_image: ghcr.io/0xpolygon/cdk:0.0.17 zkevm_da_image: 0xpolygon/cdk-data-availability:0.0.9 - zkevm_contracts_image: leovct/zkevm-contracts:leovct/zkevm-contracts:v6.0.0-rc.1-fork.9 + zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.2-fork.12 # zkevm_agglayer_image: 0xpolygon/agglayer:0.1.3 zkevm_agglayer_image: ghcr.io/agglayer/agglayer-rs:main From 8a5fc9956e040b8c91e2d6b2d957f11935a26831 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Wed, 11 Sep 2024 10:43:50 -0400 Subject: [PATCH 07/31] fix: temp image --- params.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/params.yml b/params.yml index 5f01cec8..37c7742c 100644 --- a/params.yml +++ b/params.yml @@ -61,7 +61,7 @@ args: cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk cdk_node_image: ghcr.io/0xpolygon/cdk:0.0.17 zkevm_da_image: 0xpolygon/cdk-data-availability:0.0.9 - zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.2-fork.12 + zkevm_contracts_image: leovct/zkevm-contracts:feature-verified-number-e2ef9ca-fork.12 # zkevm_agglayer_image: 0xpolygon/agglayer:0.1.3 zkevm_agglayer_image: ghcr.io/agglayer/agglayer-rs:main From 5014a5a6fb81f02438c181dc0ba3b5dbb69bb6d0 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Wed, 11 Sep 2024 12:17:34 -0400 Subject: [PATCH 08/31] ops: config change --- templates/cdk-erigon/config.yml | 6 ++---- templates/trusted-node/cdk-node-config.toml | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/templates/cdk-erigon/config.yml b/templates/cdk-erigon/config.yml index 07829f01..1d334543 100644 --- a/templates/cdk-erigon/config.yml +++ b/templates/cdk-erigon/config.yml @@ -42,10 +42,8 @@ zkevm.executor-urls: zkevm-stateless-executor{{.deployment_suffix}}:{{.zkevm_exe zkevm.executor-strict: false # end {{end}} -zkevm.sequencer-batch-seal-time: 12s # 12s -zkevm.sequencer-block-seal-time: 6s # 6s - -zkevm.pool-manager-url: "http://zkevm-pool-manager{{.deployment_suffix}}:{{.zkevm_pool_manager_port}}" +zkevm.sequencer-batch-seal-time: 600s # DO NOT MERGE THIS LINE +zkevm.sequencer-block-seal-time: 6s zkevm.l1-chain-id: {{.l1_chain_id}} zkevm.l1-first-block: {{.zkevm_rollup_manager_block_number}} diff --git a/templates/trusted-node/cdk-node-config.toml b/templates/trusted-node/cdk-node-config.toml index 2158a7b4..a6f47091 100644 --- a/templates/trusted-node/cdk-node-config.toml +++ b/templates/trusted-node/cdk-node-config.toml @@ -61,6 +61,7 @@ GetBatchWaitInterval = "10s" HTTPHeaders = [] [Aggregator] + FinalProofSanityCheckEnabled = false Host = "0.0.0.0" Port = "{{.zkevm_aggregator_port}}" RetryTime = "30s" From 1ceb76fa1665fa46cb7d24ca8834ac3a35bd3f73 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Mon, 16 Sep 2024 09:16:50 -0400 Subject: [PATCH 09/31] feat: basic sanity check script --- scripts/sanity-check.sh | 99 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100755 scripts/sanity-check.sh diff --git a/scripts/sanity-check.sh b/scripts/sanity-check.sh new file mode 100755 index 00000000..62aa3442 --- /dev/null +++ b/scripts/sanity-check.sh @@ -0,0 +1,99 @@ +#!/bin/bash + +# Sanity checks to do +# - Log check +# - All contianers running +# - Matching values from rpc and sequencer +# - Batch verification gap + +# Local +# l1_rpc_url=$(kurtosis port print erigon07 el-1-geth-lighthouse rpc) +# l2_rpc_url=$(kurtosis port print erigon07 sequencer001 sequencer8123) +# rollup_manager_addr="0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2" +# rollup_id=1 + +# BALI +# l1_rpc_url="https://rpc2.sepolia.org" +# l2_rpc_url="https://rpc.internal.zkevm-rpc.com" +# rollup_manager_addr="0xe2ef6215adc132df6913c8dd16487abf118d1764" +# rollup_id=1 + +# CARDONA +l1_rpc_url="https://rpc2.sepolia.org" +l2_rpc_url="https://rpc.cardona.zkevm-rpc.com" +rollup_manager_addr="0x32d33D5137a7cFFb54c5Bf8371172bcEc5f310ff" +rollup_id=1 + +sig_rollup_id_to_data='rollupIDToRollupData(uint32)(address,uint64,address,uint64,bytes32,uint64,uint64,uint64,uint64,uint64,uint64,uint8)' +sig_get_sequenced_batches='getRollupSequencedBatches(uint32,uint64)(bytes32,uint64,uint64)' +sig_get_stateroot='getRollupBatchNumToStateRoot(uint32,uint64)(bytes32)' + +rollup_data_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_rollup_id_to_data $rollup_id) + +rollup_contract=$(echo $rollup_data_json | jq -r '.[0]') +chain_id=$(echo $rollup_data_json | jq -r '.[1]') +verifier=$(echo $rollup_data_json | jq -r '.[2]') +fork_id=$(echo $rollup_data_json | jq -r '.[3]') +last_local_exit_root=$(echo $rollup_data_json | jq -r '.[4]') +last_batch_sequenced=$(echo $rollup_data_json | jq -r '.[5]') +last_verified_batch=$(echo $rollup_data_json | jq -r '.[6]') +last_pending_state=$(echo $rollup_data_json | jq -r '.[7]') +last_pending_state_consolidated=$(echo $rollup_data_json | jq -r '.[8]') +last_verified_batch_before_upgrade=$(echo $rollup_data_json | jq -r '.[9]') +rollup_type_id=$(echo $rollup_data_json | jq -r '.[10]') +rollup_compatibility_id=$(echo $rollup_data_json | jq -r '.[11]') + +latest_batch_number=$(cast rpc --rpc-url $l2_rpc_url zkevm_batchNumber | jq -r '.') + +echo "Rollup Contract: $rollup_contract" +echo "Chain ID: $chain_id" +echo "Verifier Address: $verifier" +echo "Fork ID: $fork_id" +echo "Last LER: $last_local_exit_root" +echo "Last Sequenced Batch: $last_batch_sequenced" +echo "Last Verified Batch: $last_verified_batch" +echo "Last Pending State: $last_pending_state" +echo "Last Pending State Consolidated: $last_pending_state_consolidated" +echo "Last Verified Batch Before Upgrade: $last_verified_batch_before_upgrade" +echo "Rollup Type ID: $rollup_type_id" +echo "Rollup Compatibility ID: $rollup_compatibility_id" + +simple_batch_info=$(cast rpc --rpc-url $l2_rpc_url zkevm_getBatchByNumber $latest_batch_number | jq '.') +simple_simple_batch=$(echo $simple_batch_info | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') +echo $simple_simple_batch | jq '.' + +virtual_batch_info=$(cast rpc --rpc-url $l2_rpc_url zkevm_getBatchByNumber $(printf "0x%x" $last_batch_sequenced) | jq '.') +simple_virtual_batch=$(echo $virtual_batch_info | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') +echo $simple_virtual_batch | jq '.' + +verified_batch_info=$(cast rpc --rpc-url $l2_rpc_url zkevm_getBatchByNumber $(printf "0x%x" $last_verified_batch) | jq '.') +simple_verifed_batch=$(echo $verified_batch_info | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') +echo $simple_verifed_batch | jq '.' + +sequenced_batch_data_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_get_sequenced_batches $rollup_id $last_batch_sequenced) +sequenced_batch_sr_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_get_stateroot $rollup_id $last_batch_sequenced) + +seq_acc_input_hash=$(echo $sequenced_batch_data_json | jq -r '.[0]') +sequenced_timestamp=$(echo $sequenced_batch_data_json | jq -r '.[1]') +seq_previous_last_batch_sequenced=$(echo $sequenced_batch_data_json | jq -r '.[2]') +seq_state_root=$(echo $sequenced_batch_sr_json | jq -r '.[0]') + +echo "Batch $last_batch_sequenced accInputHash: $seq_acc_input_hash" +echo "Batch $last_batch_sequenced sequencedTimestamp: $sequenced_timestamp" +echo "Batch $last_batch_sequenced previousLastBatchSequenced: $seq_previous_last_batch_sequenced" +echo "Batch $last_batch_sequenced stateRoot: $seq_state_root" + +verified_batch_data_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_get_sequenced_batches $rollup_id $last_verified_batch) +verified_batch_sr_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_get_stateroot $rollup_id $last_verified_batch) + +verified_acc_input_hash=$(echo $verified_batch_data_json | jq -r '.[0]') +verified_timestamp=$(echo $verified_batch_data_json | jq -r '.[1]') +verif_previous_last_batch_sequenced=$(echo $verified_batch_data_json | jq -r '.[2]') +verif_state_root=$(echo $verified_batch_sr_json | jq -r '.[0]') + +echo "Batch $last_verified_batch accInputHash: $verified_acc_input_hash" +echo "Batch $last_verified_batch sequencedTimestamp: $verified_timestamp" +echo "Batch $last_verified_batch previousLastBatchSequenced: $verif_previous_last_batch_sequenced" +echo "Batch $last_verified_batch stateRoot: $verif_state_root" + + From 12b95b8c62b0c5ba6f1ec67e3ac24ca45acce363 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Mon, 16 Sep 2024 09:53:45 -0400 Subject: [PATCH 10/31] feat: lint fix and removing test lines --- .github/scripts/compare-default-params.sh | 4 ++-- input_parser.star | 1 + params.yml | 2 +- templates/cdk-erigon/config.yml | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/scripts/compare-default-params.sh b/.github/scripts/compare-default-params.sh index 35d1e77f..b9a3863a 100755 --- a/.github/scripts/compare-default-params.sh +++ b/.github/scripts/compare-default-params.sh @@ -9,13 +9,13 @@ PARAMS_YML_PATH="../../params.yml" # Extracting default parameters from the different files. echo "Extracting default parameters from input_parser.star..." -if ! sed -n '/^DEFAULT_ARGS = {/,/^}/ { s/DEFAULT_ARGS = //; s/}/}/; p; }' "$INPUT_PARSER_PATH" | yq --yaml-output >.input_parser.star; then +if ! sed -n '/^DEFAULT_ARGS = {/,/^}/ { s/DEFAULT_ARGS = //; s/}/}/; p; }' "$INPUT_PARSER_PATH" | yq -S --yaml-output >.input_parser.star; then echo "Error: Failed to extract parameters from input_parser.star." exit 1 fi echo "Extracting default parameters from params.yml..." -if ! yq --yaml-output .args "$PARAMS_YML_PATH" >.params.yml; then +if ! yq -S --yaml-output .args "$PARAMS_YML_PATH" >.params.yml; then echo "Error: Failed to extract parameters from params.yml." exit 1 fi diff --git a/input_parser.star b/input_parser.star index ec6b6cbb..8921d200 100644 --- a/input_parser.star +++ b/input_parser.star @@ -62,6 +62,7 @@ DEFAULT_ARGS = { "l1_seconds_per_slot": 1, "zkevm_rollup_chain_id": 10101, "zkevm_rollup_id": 1, + "zkevm_use_real_verifier": False, "erigon_strict_mode": True, "erigon_pre_eip155_transactions": True, "polygon_zkevm_explorer": "https://explorer.private/", diff --git a/params.yml b/params.yml index 7dd7eaf0..e9bdfcae 100644 --- a/params.yml +++ b/params.yml @@ -149,7 +149,7 @@ args: # By default a mock verifier is deployed. Change to true to deploye a real verifier which will require a real prover - zkevm_use_real_verifier: true #####DO NOT MERGE TO MAIN + zkevm_use_real_verifier: false # If erigon is being used as the sequencer, # This flag will enable a stateless executor to verify the execution of the batches. diff --git a/templates/cdk-erigon/config.yml b/templates/cdk-erigon/config.yml index 771e804f..4e8ad77d 100644 --- a/templates/cdk-erigon/config.yml +++ b/templates/cdk-erigon/config.yml @@ -42,7 +42,7 @@ zkevm.executor-urls: zkevm-stateless-executor{{.deployment_suffix}}:{{.zkevm_exe zkevm.executor-strict: false # end {{end}} -zkevm.sequencer-batch-seal-time: 600s # DO NOT MERGE THIS LINE +zkevm.sequencer-batch-seal-time: 12s zkevm.sequencer-block-seal-time: 6s zkevm.l1-chain-id: {{.l1_chain_id}} From 6727408f58b11def1e0a82599af178cccc3df4c0 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Mon, 16 Sep 2024 09:55:30 -0400 Subject: [PATCH 11/31] chore: lint --- cdk_erigon.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdk_erigon.star b/cdk_erigon.star index fe56d4fc..f42ddfad 100644 --- a/cdk_erigon.star +++ b/cdk_erigon.star @@ -35,7 +35,7 @@ def run_rpc(plan, args): ) pool_manager_service = plan.get_service( - name= "zkevm-pool-manager" + args["deployment_suffix"] + name="zkevm-pool-manager" + args["deployment_suffix"] ) pool_manager_url = "{}:{}".format( pool_manager_service.ip_address, From 236e639e00ad26fc5f5d8616b8f6ed2c27159f94 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Wed, 18 Sep 2024 17:42:35 -0400 Subject: [PATCH 12/31] feat: latest versions --- params.yml | 6 +++--- scripts/sanity-check.sh | 18 ++++++++++++------ templates/bridge-infra/simple-ui/index.js | 14 ++++++++++++-- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/params.yml b/params.yml index e9bdfcae..fb351d6a 100644 --- a/params.yml +++ b/params.yml @@ -60,13 +60,13 @@ args: # https://github.com/0xPolygonHermez/zkevm-contracts/pull/323 zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.3-fork.12 #zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.2-fork.12 - zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC10-fork.12 + zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC11-fork.12 zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3-RC1 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk - cdk_node_image: ghcr.io/0xpolygon/cdk:0.0.17 - zkevm_da_image: 0xpolygon/cdk-data-availability:0.0.9 + cdk_node_image: ghcr.io/0xpolygon/cdk:0.1.1 + zkevm_da_image: 0xpolygon/cdk-data-availability:0.0.10 agglayer_image: ghcr.io/agglayer/agglayer-rs:pr-96 zkevm_bridge_service_image: hermeznetwork/zkevm-bridge-service:v0.5.0-RC12 zkevm_bridge_ui_image: leovct/zkevm-bridge-ui:multi-network diff --git a/scripts/sanity-check.sh b/scripts/sanity-check.sh index 62aa3442..3f1eb959 100755 --- a/scripts/sanity-check.sh +++ b/scripts/sanity-check.sh @@ -7,11 +7,17 @@ # - Batch verification gap # Local -# l1_rpc_url=$(kurtosis port print erigon07 el-1-geth-lighthouse rpc) -# l2_rpc_url=$(kurtosis port print erigon07 sequencer001 sequencer8123) +# l1_rpc_url=$(kurtosis port print cdk-v1-01 el-1-geth-lighthouse rpc) +# l2_rpc_url=$(kurtosis port print cdk-v1-01 cdk-erigon-sequencer-001 rpc) # rollup_manager_addr="0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2" # rollup_id=1 +# Xavi +l1_rpc_url=$(kurtosis port print erigon-18-4 el-1-geth-lighthouse rpc) +l2_rpc_url=$(kurtosis port print erigon-18-4 sequencer001 sequencer8123) +rollup_manager_addr="0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2" +rollup_id=1 + # BALI # l1_rpc_url="https://rpc2.sepolia.org" # l2_rpc_url="https://rpc.internal.zkevm-rpc.com" @@ -19,10 +25,10 @@ # rollup_id=1 # CARDONA -l1_rpc_url="https://rpc2.sepolia.org" -l2_rpc_url="https://rpc.cardona.zkevm-rpc.com" -rollup_manager_addr="0x32d33D5137a7cFFb54c5Bf8371172bcEc5f310ff" -rollup_id=1 +# l1_rpc_url="https://rpc2.sepolia.org" +# l2_rpc_url="https://rpc.cardona.zkevm-rpc.com" +# rollup_manager_addr="0x32d33D5137a7cFFb54c5Bf8371172bcEc5f310ff" +# rollup_id=1 sig_rollup_id_to_data='rollupIDToRollupData(uint32)(address,uint64,address,uint64,bytes32,uint64,uint64,uint64,uint64,uint64,uint64,uint8)' sig_get_sequenced_batches='getRollupSequencedBatches(uint32,uint64)(bytes32,uint64,uint64)' diff --git a/templates/bridge-infra/simple-ui/index.js b/templates/bridge-infra/simple-ui/index.js index ff08f2fc..4f569aa5 100644 --- a/templates/bridge-infra/simple-ui/index.js +++ b/templates/bridge-infra/simple-ui/index.js @@ -103,7 +103,11 @@ document.getElementById('connectButton').addEventListener('click', async () => { let txData = ba.apply(ba, depositArgs).encodeABI(); console.log(txData); - await addChain(curNet); + try { + await addChain(curNet); + } catch (e) { + console.warn(e); + } await window.ethereum.request({ method: 'wallet_switchEthereumChain', params: [{"chainId": curNet.chainIdHex}] }); let bridgeValue = "0x0"; @@ -147,6 +151,7 @@ async function addChain(net) { "params": [ { "chainId": net.chainIdHex, + "blockExplorerUrls": null, "chainName": `TEST Network - ${net.chainId} - ${net.rollupId}`, "rpcUrls": [ net.rpcUrl @@ -237,7 +242,12 @@ async function attemptClaimTx(defaultBridgeService, bridgeAddress, deposit) { return; } - await addChain(net); + try { + await addChain(net); + } catch (e) { + console.warn(e); + } + await window.ethereum.request({ method: 'wallet_switchEthereumChain', params: [{"chainId": net.chainIdHex}] }); let txData = net.bridge.methods.claimAsset(merkleProof, rollupMerkleProof, globalIndex, mainExitRoot, rollupExitRoot, origNet, origAddr, destNet, destAddr, amount, metadata).encodeABI(); From ac50d2c8a857fdf949864bd84a7707fa78682baf Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Wed, 18 Sep 2024 18:26:29 -0400 Subject: [PATCH 13/31] feat: jerry image --- params.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/params.yml b/params.yml index fb351d6a..f946f0ac 100644 --- a/params.yml +++ b/params.yml @@ -72,7 +72,7 @@ args: zkevm_bridge_ui_image: leovct/zkevm-bridge-ui:multi-network zkevm_bridge_proxy_image: haproxy:3.0-bookworm zkevm_sequence_sender_image: hermeznetwork/zkevm-sequence-sender:v0.2.0-RC12 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.0.0-beta18.3 + cdk_erigon_node_image: jerrycgh/cdk-erigon:8b4732a73f23a27990320f014bbad64b67d70bb7 zkevm_pool_manager_image: hermeznetwork/zkevm-pool-manager:v0.1.0-RC1 # Port configuration. From c248174bf1f8d085fe13206e185b89a199139bbb Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Wed, 18 Sep 2024 18:32:48 -0400 Subject: [PATCH 14/31] feat: agg sync sqlite --- templates/trusted-node/cdk-node-config.toml | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/templates/trusted-node/cdk-node-config.toml b/templates/trusted-node/cdk-node-config.toml index d7340df7..cfb63981 100644 --- a/templates/trusted-node/cdk-node-config.toml +++ b/templates/trusted-node/cdk-node-config.toml @@ -96,7 +96,6 @@ GetBatchWaitInterval = "10s" [Aggregator.SequencerPrivateKey] Path = "/etc/cdk/sequencer.keystore" Password = "{{.zkevm_l2_keystore_password}}" - [Aggregator.DB] Name = "{{.aggregator_db.name}}" User = "{{.aggregator_db.user}}" @@ -138,14 +137,17 @@ GetBatchWaitInterval = "10s" L1ChainID = {{.l1_chain_id}} HTTPHeaders = [] [Aggregator.Synchronizer] - [Aggregator.Synchronizer.DB] - Name = "{{.aggregator_syncer_db.name}}" - User = "{{.aggregator_syncer_db.user}}" - Password = "{{.aggregator_syncer_db.password}}" - Host = "{{.aggregator_syncer_db.hostname}}" - Port = "{{.aggregator_syncer_db.port}}" - EnableLog = false - MaxConns = 10 + [Aggregator.Synchronizer.SQLDB] + DriverName = "sqlite3" + DataSourceName = "file:/tmp/aggregator_sync_db.sqlite" + # [Aggregator.Synchronizer.DB] + # Name = "{{.aggregator_syncer_db.name}}" + # User = "{{.aggregator_syncer_db.user}}" + # Password = "{{.aggregator_syncer_db.password}}" + # Host = "{{.aggregator_syncer_db.hostname}}" + # Port = "{{.aggregator_syncer_db.port}}" + # EnableLog = false + # MaxConns = 10 [Aggregator.Synchronizer.Synchronizer] SyncInterval = "10s" SyncChunkSize = 1000 From 03ca990b8ac84ff5e6d60685a6421d9ee2ba4367 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Wed, 18 Sep 2024 20:03:00 -0400 Subject: [PATCH 15/31] fix: pool manager config bug --- cdk_erigon.star | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdk_erigon.star b/cdk_erigon.star index f42ddfad..cc947500 100644 --- a/cdk_erigon.star +++ b/cdk_erigon.star @@ -37,7 +37,7 @@ def run_rpc(plan, args): pool_manager_service = plan.get_service( name="zkevm-pool-manager" + args["deployment_suffix"] ) - pool_manager_url = "{}:{}".format( + pool_manager_url = "http://{}:{}".format( pool_manager_service.ip_address, pool_manager_service.ports["http"].number, ) From ed863f17654b6f82c6e814bfe1d7bd77b0ed8999 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 07:37:46 -0400 Subject: [PATCH 16/31] feat: adding some comments --- scripts/sanity-check.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/sanity-check.sh b/scripts/sanity-check.sh index 3f1eb959..78188fc0 100755 --- a/scripts/sanity-check.sh +++ b/scripts/sanity-check.sh @@ -4,6 +4,9 @@ # - Log check # - All contianers running # - Matching values from rpc and sequencer +# - Matching values from rpc and data stream +# - Is this a validium or a rollup +# - Dac Committe Members # - Batch verification gap # Local From a8fba146e141eb5893ac28de85bee00dedd9e423 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Wed, 11 Sep 2024 09:32:34 -0400 Subject: [PATCH 17/31] fix: pool manager --- cdk_erigon.star | 9 +++++++++ main.star | 14 +++++++------- templates/cdk-erigon/config.yml | 1 + 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/cdk_erigon.star b/cdk_erigon.star index 5164851d..fe56d4fc 100644 --- a/cdk_erigon.star +++ b/cdk_erigon.star @@ -34,6 +34,14 @@ def run_rpc(plan, args): zkevm_sequencer_service.ports["data-streamer"].number, ) + pool_manager_service = plan.get_service( + name= "zkevm-pool-manager" + args["deployment_suffix"] + ) + pool_manager_url = "{}:{}".format( + pool_manager_service.ip_address, + pool_manager_service.ports["http"].number, + ) + cdk_erigon_node_config_template = read_file(src="./templates/cdk-erigon/config.yml") contract_setup_addresses = service_package.get_contract_setup_addresses(plan, args) cdk_erigon_node_config_artifact = plan.render_templates( @@ -45,6 +53,7 @@ def run_rpc(plan, args): "zkevm_sequencer_url": zkevm_sequence_url, "zkevm_datastreamer_url": zkevm_datastreamer_url, "is_sequencer": False, + "pool_manager_url": pool_manager_url, } | args | contract_setup_addresses, diff --git a/main.star b/main.star index edc31990..64ebc26d 100644 --- a/main.star +++ b/main.star @@ -105,13 +105,6 @@ def run( else: plan.print("Skipping the deployment of cdk-erigon sequencer") - # Deploy cdk-erigon node. - if deploy_cdk_erigon_node: - plan.print("Deploying cdk-erigon node") - cdk_erigon_package.run_rpc(plan, args) - else: - plan.print("Skipping the deployment of cdk-erigon node") - # Deploy zkevm-pool-manager service. if deploy_cdk_erigon_node: plan.print("Deploying zkevm-pool-manager service") @@ -119,6 +112,13 @@ def run( else: plan.print("Skipping the deployment of zkevm-pool-manager service") + # Deploy cdk-erigon node. + if deploy_cdk_erigon_node: + plan.print("Deploying cdk-erigon node") + cdk_erigon_package.run_rpc(plan, args) + else: + plan.print("Skipping the deployment of cdk-erigon node") + plan.print("Deploying cdk central/trusted environment") central_environment_args = dict(args) central_environment_args["genesis_artifact"] = genesis_artifact diff --git a/templates/cdk-erigon/config.yml b/templates/cdk-erigon/config.yml index 14459587..340a2e35 100644 --- a/templates/cdk-erigon/config.yml +++ b/templates/cdk-erigon/config.yml @@ -69,4 +69,5 @@ zkevm.data-stream-port: {{.zkevm_data_stream_port}} txpool.disable: true zkevm.l2-sequencer-rpc-url: {{.zkevm_sequencer_url}} zkevm.l2-datastreamer-url: {{.zkevm_datastreamer_url}} +zkevm.pool-manager-url: {{.pool_manager_url}} # end {{end}} From a72a4395131409a424952b4aae4e55f82a263600 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 07:52:30 -0400 Subject: [PATCH 18/31] fix: lint --- scripts/sanity-check.sh | 86 ++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/scripts/sanity-check.sh b/scripts/sanity-check.sh index 78188fc0..212175e5 100755 --- a/scripts/sanity-check.sh +++ b/scripts/sanity-check.sh @@ -10,17 +10,17 @@ # - Batch verification gap # Local -# l1_rpc_url=$(kurtosis port print cdk-v1-01 el-1-geth-lighthouse rpc) -# l2_rpc_url=$(kurtosis port print cdk-v1-01 cdk-erigon-sequencer-001 rpc) -# rollup_manager_addr="0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2" -# rollup_id=1 - -# Xavi -l1_rpc_url=$(kurtosis port print erigon-18-4 el-1-geth-lighthouse rpc) -l2_rpc_url=$(kurtosis port print erigon-18-4 sequencer001 sequencer8123) +l1_rpc_url=$(kurtosis port print cdk-v1 el-1-geth-lighthouse rpc) +l2_rpc_url=$(kurtosis port print cdk-v1 cdk-erigon-sequencer-001 rpc) rollup_manager_addr="0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2" rollup_id=1 +# Xavi +# l1_rpc_url=$(kurtosis port print erigon-18-4 el-1-geth-lighthouse rpc) +# l2_rpc_url=$(kurtosis port print erigon-18-4 sequencer001 sequencer8123) +# rollup_manager_addr="0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2" +# rollup_id=1 + # BALI # l1_rpc_url="https://rpc2.sepolia.org" # l2_rpc_url="https://rpc.internal.zkevm-rpc.com" @@ -37,22 +37,22 @@ sig_rollup_id_to_data='rollupIDToRollupData(uint32)(address,uint64,address,uint6 sig_get_sequenced_batches='getRollupSequencedBatches(uint32,uint64)(bytes32,uint64,uint64)' sig_get_stateroot='getRollupBatchNumToStateRoot(uint32,uint64)(bytes32)' -rollup_data_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_rollup_id_to_data $rollup_id) +rollup_data_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_rollup_id_to_data" "$rollup_id") -rollup_contract=$(echo $rollup_data_json | jq -r '.[0]') -chain_id=$(echo $rollup_data_json | jq -r '.[1]') -verifier=$(echo $rollup_data_json | jq -r '.[2]') -fork_id=$(echo $rollup_data_json | jq -r '.[3]') -last_local_exit_root=$(echo $rollup_data_json | jq -r '.[4]') -last_batch_sequenced=$(echo $rollup_data_json | jq -r '.[5]') -last_verified_batch=$(echo $rollup_data_json | jq -r '.[6]') -last_pending_state=$(echo $rollup_data_json | jq -r '.[7]') -last_pending_state_consolidated=$(echo $rollup_data_json | jq -r '.[8]') -last_verified_batch_before_upgrade=$(echo $rollup_data_json | jq -r '.[9]') -rollup_type_id=$(echo $rollup_data_json | jq -r '.[10]') -rollup_compatibility_id=$(echo $rollup_data_json | jq -r '.[11]') +rollup_contract=$(echo "$rollup_data_json" | jq -r '.[0]') +chain_id=$(echo "$rollup_data_json" | jq -r '.[1]') +verifier=$(echo "$rollup_data_json" | jq -r '.[2]') +fork_id=$(echo "$rollup_data_json" | jq -r '.[3]') +last_local_exit_root=$(echo "$rollup_data_json" | jq -r '.[4]') +last_batch_sequenced=$(echo "$rollup_data_json" | jq -r '.[5]') +last_verified_batch=$(echo "$rollup_data_json" | jq -r '.[6]') +last_pending_state=$(echo "$rollup_data_json" | jq -r '.[7]') +last_pending_state_consolidated=$(echo "$rollup_data_json" | jq -r '.[8]') +last_verified_batch_before_upgrade=$(echo "$rollup_data_json" | jq -r '.[9]') +rollup_type_id=$(echo "$rollup_data_json" | jq -r '.[10]') +rollup_compatibility_id=$(echo "$rollup_data_json" | jq -r '.[11]') -latest_batch_number=$(cast rpc --rpc-url $l2_rpc_url zkevm_batchNumber | jq -r '.') +latest_batch_number=$(cast rpc --rpc-url "$l2_rpc_url" zkevm_batchNumber | jq -r '.') echo "Rollup Contract: $rollup_contract" echo "Chain ID: $chain_id" @@ -67,38 +67,38 @@ echo "Last Verified Batch Before Upgrade: $last_verified_batch_before_upgrade" echo "Rollup Type ID: $rollup_type_id" echo "Rollup Compatibility ID: $rollup_compatibility_id" -simple_batch_info=$(cast rpc --rpc-url $l2_rpc_url zkevm_getBatchByNumber $latest_batch_number | jq '.') -simple_simple_batch=$(echo $simple_batch_info | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') -echo $simple_simple_batch | jq '.' +simple_batch_info=$(cast rpc --rpc-url "$l2_rpc_url" zkevm_getBatchByNumber "$latest_batch_number" | jq '.') +simple_simple_batch=$(echo "$simple_batch_info" | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') +echo "$simple_simple_batch" | jq '.' -virtual_batch_info=$(cast rpc --rpc-url $l2_rpc_url zkevm_getBatchByNumber $(printf "0x%x" $last_batch_sequenced) | jq '.') -simple_virtual_batch=$(echo $virtual_batch_info | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') -echo $simple_virtual_batch | jq '.' +virtual_batch_info=$(cast rpc --rpc-url "$l2_rpc_url" zkevm_getBatchByNumber "$(printf "0x%x" "$last_batch_sequenced")" | jq '.') +simple_virtual_batch=$(echo "$virtual_batch_info" | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') +echo "$simple_virtual_batch" | jq '.' -verified_batch_info=$(cast rpc --rpc-url $l2_rpc_url zkevm_getBatchByNumber $(printf "0x%x" $last_verified_batch) | jq '.') -simple_verifed_batch=$(echo $verified_batch_info | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') -echo $simple_verifed_batch | jq '.' +verified_batch_info=$(cast rpc --rpc-url "$l2_rpc_url" zkevm_getBatchByNumber "$(printf "0x%x" "$last_verified_batch")" | jq '.') +simple_verifed_batch=$(echo "$verified_batch_info" | jq '.transactions = (.transactions | length) | .blocks = (.blocks | length) | del(.batchL2Data)') +echo "$simple_verifed_batch" | jq '.' -sequenced_batch_data_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_get_sequenced_batches $rollup_id $last_batch_sequenced) -sequenced_batch_sr_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_get_stateroot $rollup_id $last_batch_sequenced) +sequenced_batch_data_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_sequenced_batches" "$rollup_id" "$last_batch_sequenced") +sequenced_batch_sr_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_stateroot" "$rollup_id" "$last_batch_sequenced") -seq_acc_input_hash=$(echo $sequenced_batch_data_json | jq -r '.[0]') -sequenced_timestamp=$(echo $sequenced_batch_data_json | jq -r '.[1]') -seq_previous_last_batch_sequenced=$(echo $sequenced_batch_data_json | jq -r '.[2]') -seq_state_root=$(echo $sequenced_batch_sr_json | jq -r '.[0]') +seq_acc_input_hash=$(echo "$sequenced_batch_data_json" | jq -r '.[0]') +sequenced_timestamp=$(echo "$sequenced_batch_data_json" | jq -r '.[1]') +seq_previous_last_batch_sequenced=$(echo "$sequenced_batch_data_json" | jq -r '.[2]') +seq_state_root=$(echo "$sequenced_batch_sr_json" | jq -r '.[0]') echo "Batch $last_batch_sequenced accInputHash: $seq_acc_input_hash" echo "Batch $last_batch_sequenced sequencedTimestamp: $sequenced_timestamp" echo "Batch $last_batch_sequenced previousLastBatchSequenced: $seq_previous_last_batch_sequenced" echo "Batch $last_batch_sequenced stateRoot: $seq_state_root" -verified_batch_data_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_get_sequenced_batches $rollup_id $last_verified_batch) -verified_batch_sr_json=$(cast call -j --rpc-url $l1_rpc_url $rollup_manager_addr $sig_get_stateroot $rollup_id $last_verified_batch) +verified_batch_data_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_sequenced_batches" "$rollup_id" "$last_verified_batch") +verified_batch_sr_json=$(cast call -j --rpc-url "$l1_rpc_url" "$rollup_manager_addr" "$sig_get_stateroot" "$rollup_id" "$last_verified_batch") -verified_acc_input_hash=$(echo $verified_batch_data_json | jq -r '.[0]') -verified_timestamp=$(echo $verified_batch_data_json | jq -r '.[1]') -verif_previous_last_batch_sequenced=$(echo $verified_batch_data_json | jq -r '.[2]') -verif_state_root=$(echo $verified_batch_sr_json | jq -r '.[0]') +verified_acc_input_hash=$(echo "$verified_batch_data_json" | jq -r '.[0]') +verified_timestamp=$(echo "$verified_batch_data_json" | jq -r '.[1]') +verif_previous_last_batch_sequenced=$(echo "$verified_batch_data_json" | jq -r '.[2]') +verif_state_root=$(echo "$verified_batch_sr_json" | jq -r '.[0]') echo "Batch $last_verified_batch accInputHash: $verified_acc_input_hash" echo "Batch $last_verified_batch sequencedTimestamp: $verified_timestamp" From 00de9c994dddfd04c03c822c726764f1544c9a77 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 07:56:08 -0400 Subject: [PATCH 19/31] fix: version mismatch --- input_parser.star | 8 ++++---- params.yml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/input_parser.star b/input_parser.star index 8921d200..3fdd92e3 100644 --- a/input_parser.star +++ b/input_parser.star @@ -7,17 +7,17 @@ DEFAULT_ARGS = { "data_availability_mode": "cdk-validium", "additional_services": [], "zkevm_contracts_image": "leovct/zkevm-contracts:v8.0.0-rc.3-fork.12", - "zkevm_prover_image": "hermeznetwork/zkevm-prover:v8.0.0-RC10-fork.12", + "zkevm_prover_image": "hermeznetwork/zkevm-prover:v8.0.0-RC12-fork.12", "zkevm_node_image": "hermeznetwork/zkevm-node:v0.7.3-RC1", "cdk_validium_node_image": "0xpolygon/cdk-validium-node:0.7.0-cdk", - "cdk_node_image": "ghcr.io/0xpolygon/cdk:0.0.17", - "zkevm_da_image": "0xpolygon/cdk-data-availability:0.0.9", + "cdk_node_image": "ghcr.io/0xpolygon/cdk:0.1.1", + "zkevm_da_image": "0xpolygon/cdk-data-availability:0.0.10", "agglayer_image": "ghcr.io/agglayer/agglayer-rs:pr-96", "zkevm_bridge_service_image": "hermeznetwork/zkevm-bridge-service:v0.5.0-RC12", "zkevm_bridge_ui_image": "leovct/zkevm-bridge-ui:multi-network", "zkevm_bridge_proxy_image": "haproxy:3.0-bookworm", "zkevm_sequence_sender_image": "hermeznetwork/zkevm-sequence-sender:v0.2.0-RC12", - "cdk_erigon_node_image": "hermeznetwork/cdk-erigon:v2.0.0-beta18.3", + "cdk_erigon_node_image": "jerrycgh/cdk-erigon:8b4732a73f23a27990320f014bbad64b67d70bb7", "zkevm_pool_manager_image": "hermeznetwork/zkevm-pool-manager:v0.1.0-RC1", "zkevm_hash_db_port": 50061, "zkevm_executor_port": 50071, diff --git a/params.yml b/params.yml index f437c322..bb87bb7b 100644 --- a/params.yml +++ b/params.yml @@ -61,7 +61,7 @@ args: # https://github.com/0xPolygonHermez/zkevm-contracts/pull/323 zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.3-fork.12 #zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.2-fork.12 - zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC11-fork.12 + zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC12-fork.12 zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3-RC1 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk From 175e11057cb77087f1ff6452662442d5d6d46447 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 16:10:54 -0400 Subject: [PATCH 20/31] refactor: removing code from run-contract-setup --- .../contract-deploy/run-contract-setup.sh | 308 ++++++------------ 1 file changed, 100 insertions(+), 208 deletions(-) diff --git a/templates/contract-deploy/run-contract-setup.sh b/templates/contract-deploy/run-contract-setup.sh index b285f94b..5f680578 100755 --- a/templates/contract-deploy/run-contract-setup.sh +++ b/templates/contract-deploy/run-contract-setup.sh @@ -1,20 +1,26 @@ #!/bin/bash # This script is responsible for deploying the contracts for zkEVM/CDK. -set -x +global_log_level="{{.global_log_level}}" +if [[ $global_log_level == "debug" ]]; then + set -x +fi echo_ts() { + green="\e[32m" + end_color="\e[0m" + timestamp=$(date +"[%Y-%m-%d %H:%M:%S]") - echo "$timestamp $1" + echo -e "$green$timestamp$end_color $1" >&2 } wait_for_rpc_to_be_available() { rpc_url="$1" counter=0 max_retries=20 - until cast send --rpc-url "{{.l1_rpc_url}}" --mnemonic "{{.l1_preallocated_mnemonic}}" --value 0 "{{.zkevm_l2_sequencer_address}}"; do + until cast send --rpc-url "{{.l1_rpc_url}}" --mnemonic "{{.l1_preallocated_mnemonic}}" --value 0 "{{.zkevm_l2_sequencer_address}}" &> /dev/null; do ((counter++)) - echo_ts "L1 RPC might not be ready... Retrying ($counter)..." - if [ $counter -ge $max_retries ]; then + echo_ts "Can't send L1 transfers yet... Retrying ($counter)..." + if [[ $counter -ge $max_retries ]]; then echo_ts "Exceeded maximum retry attempts. Exiting." exit 1 fi @@ -25,9 +31,9 @@ wait_for_rpc_to_be_available() { wait_for_finalized_block() { counter=0 max_retries=100 - until cast block --rpc-url "{{.l1_rpc_url}}" finalized; do + until cast block --rpc-url "{{.l1_rpc_url}}" finalized &> /dev/null; do ((counter++)) - echo_ts "L1 RPC might not be ready... Retrying ($counter)..." + echo_ts "No finalized block yet... Retrying ($counter)..." if [[ $counter -ge $max_retries ]]; then echo_ts "Exceeded maximum retry attempts. Exiting." exit 1 @@ -47,103 +53,63 @@ fund_account_on_l1() { "$address" } -mint_gas_token_on_l1() { - address="$1" - echo_ts "Minting POL to $address" - cast send \ - --rpc-url "{{.l1_rpc_url}}" \ - --private-key "{{.zkevm_l2_admin_private_key}}" \ - "{{.zkevm_gas_token_address}}" 'mint(address,uint256)' "$address" 10000000000000000000000 +deploy_rollup_manager() { + # Deploy contracts. + echo_ts "Step 1: Preparing tesnet" + npx hardhat run deployment/testnet/prepareTestnet.ts --network localhost 2>&1 | tee 01_prepare_testnet.out + + echo_ts "Step 2: Creating genesis" + MNEMONIC="{{.l1_preallocated_mnemonic}}" npx ts-node deployment/v2/1_createGenesis.ts 2>&1 | tee 02_create_genesis.out + if [[ ! -e deployment/v2/genesis.json ]]; then + echo_ts "The genesis file was not created after running createGenesis" + exit 1 + fi + + echo_ts "Step 3: Deploying PolygonZKEVMDeployer" + npx hardhat run deployment/v2/2_deployPolygonZKEVMDeployer.ts --network localhost 2>&1 | tee 03_zkevm_deployer.out + + echo_ts "Step 4: Deploying contracts" + npx hardhat run deployment/v2/3_deployContracts.ts --network localhost 2>&1 | tee 04_deploy_contracts.out + if [[ ! -e deployment/v2/deploy_output.json ]]; then + echo_ts "The deploy_output.json file was not created after running deployContracts" + exit 1 + fi } -# We want to avoid running this script twice. -# In the future it might make more sense to exit with an error code. -# We want to run this script again when deploying a second CDK. -# shellcheck disable=SC1054,SC1083 -{{if .deploy_agglayer}} -if [[ -e "/opt/zkevm/.init-complete.lock" ]]; then - 2>&1 echo "This script has already been executed" + +if [[ -e "/opt/zkevm/.init-complete{{.deployment_suffix}}.lock" ]]; then + echo_ts "This script has already been executed" exit 1 fi -# If there is already a successful deployment with an Agglayer service -# then we want to deploy the rollup onchain to attach it. -{{else}} -if [[ -e "/opt/zkevm/.init-complete.lock" ]]; then -fund_account_on_l1 "admin-002" "{{.zkevm_l2_admin_address}}" - -echo_ts "Deploying rollup onchain using the L1 rollup manager contract" -rpc_url="{{.l1_rpc_url}}" -rollup_manager_address="{{.rollup_manager_address}}" -zkevm_rollup_manager_deployer="{{.zkevm_rollup_manager_deployer}}" -zkevm_rollup_manager_deployer_private_key="{{.zkevm_rollup_manager_deployer_private_key}}" -zkevm_rollup_type_id="{{.zkevm_rollup_type_id}}" -zkevm_rollup_chain_id="{{.zkevm_rollup_chain_id}}" -zkevm_l2_admin_address="{{.zkevm_l2_admin_address}}" -zkevm_l2_sequencer_address="{{.zkevm_l2_sequencer_address}}" -zkevm_gas_token_address="{{.zkevm_gas_token_address}}" -zkevm_l2_sequencer_url="http://zkevm-node-sequencer{{.deployment_suffix}}:8123" -zkevm_network_name="Kurtosis CDK" -tx_input=$(cast calldata 'createNewRollup(uint32,uint64,address,address,address,string,string)' "$zkevm_rollup_type_id" "$zkevm_rollup_chain_id" "$zkevm_l2_admin_address" "$zkevm_l2_sequencer_address" "$zkevm_gas_token_address" "$zkevm_l2_sequencer_url" "$zkevm_network_name") -cast send --private-key $zkevm_rollup_manager_deployer_private_key --rpc-url $rpc_url $rollup_manager_address $tx_input --legacy -echo_ts "Onchain rollup has been created" - -echo_ts "Retrieve rollup data" -pushd /opt/zkevm-contracts || exit 1 -jq '.polygonRollupManagerAddress = "{{.rollup_manager_address}}"' /opt/zkevm-contracts/tools/getRollupData/rollupDataParams.json.example > /opt/zkevm-contracts/tools/getRollupData/tmp && mv /opt/zkevm-contracts/tools/getRollupData/tmp /opt/zkevm-contracts/tools/getRollupData/rollupDataParams.json -jq '.rollupID = {{.zkevm_rollup_id}}' /opt/zkevm-contracts/tools/getRollupData/rollupDataParams.json > /opt/zkevm-contracts/tools/getRollupData/tmp && mv /opt/zkevm-contracts/tools/getRollupData/tmp /opt/zkevm-contracts/tools/getRollupData/rollupDataParams.json -awk '!/upgradeToULxLyBlockNumber/' /opt/zkevm-contracts/tools/getRollupData/getRollupData.ts > /opt/zkevm-contracts/tools/getRollupData/tmp && mv /opt/zkevm-contracts/tools/getRollupData/tmp /opt/zkevm-contracts/tools/getRollupData/getRollupData.ts -sed -i 's#http://127.0.0.1:8545#{{.l1_rpc_url}}#' /opt/zkevm-contracts/hardhat.config.ts -npx hardhat run --network localhost /opt/zkevm-contracts/tools/getRollupData/getRollupData.ts -sed -i 's#{{.l1_rpc_url}}#http://127.0.0.1:8545#' /opt/zkevm-contracts/hardhat.config.ts -fi -{{end}} - -# Wait for the L1 RPC to be available. -echo_ts "Waiting for the L1 RPC to be available" -wait_for_rpc_to_be_available "{{.l1_rpc_url}}" -echo_ts "L1 RPC is now available" +# If we had a genesis, and combined that were created outside of +# kurtosis entirely, we'll use those and exit. This is like a +# permissionless use case if [[ -e "/opt/contract-deploy/genesis.json" && -e "/opt/contract-deploy/combined.json" ]]; then echo_ts "We have a genesis and combined output file from a previous deployment" cp /opt/contract-deploy/* /opt/zkevm/ exit -else - echo_ts "No previous output detected. Starting clean contract deployment" fi -# Fund accounts on L1. +echo_ts "Waiting for the L1 RPC to be available" +wait_for_rpc_to_be_available "{{.l1_rpc_url}}" +echo_ts "L1 RPC is now available" + echo_ts "Funding important accounts on l1" fund_account_on_l1 "admin" "{{.zkevm_l2_admin_address}}" fund_account_on_l1 "sequencer" "{{.zkevm_l2_sequencer_address}}" fund_account_on_l1 "aggregator" "{{.zkevm_l2_aggregator_address}}" fund_account_on_l1 "agglayer" "{{.zkevm_l2_agglayer_address}}" -fund_account_on_l1 "claimtxmanager" "{{.zkevm_l2_claimtxmanager_address}}" - -# Only fund POL for attaching CDK. -# shellcheck disable=SC1054,SC1083 -{{if not .deploy_agglayer}} -mint_gas_token_on_l1 "{{.zkevm_l2_admin_address}}" -mint_gas_token_on_l1 "{{.zkevm_l2_sequencer_address}}" -mint_gas_token_on_l1 "{{.zkevm_l2_aggregator_address}}" -mint_gas_token_on_l1 "{{.zkevm_l2_agglayer_address}}" -mint_gas_token_on_l1 "{{.zkevm_l2_claimtxmanager_address}}" -mint_gas_token_on_l1 "{{.zkevm_l2_timelock_address}}" -mint_gas_token_on_l1 "{{.zkevm_l2_loadtest_address}}" -mint_gas_token_on_l1 "{{.zkevm_l2_dac_address}}" -mint_gas_token_on_l1 "{{.zkevm_l2_proofsigner_address}}" -{{end}} - -# Configure zkevm contract deploy parameters. + +echo_ts "Setting up local zkevm-contracts repo for deployment" pushd /opt/zkevm-contracts || exit 1 -cp /opt/contract-deploy/deploy_parameters.json /opt/zkevm-contracts/deployment/v2/deploy_parameters.json -cp /opt/contract-deploy/create_rollup_parameters.json /opt/zkevm-contracts/deployment/v2/create_rollup_parameters.json -sed -i 's#http://127.0.0.1:8545#{{.l1_rpc_url}}#' hardhat.config.ts +# setup a foundry toml in case we do a gas token or dac deployment +printf "[profile.default]\nsrc = 'contracts'\nout = 'out'\nlibs = ['node_modules']\n" > foundry.toml -# Deploy gas token. -# shellcheck disable=SC1054,SC1083 -{{if .zkevm_use_gas_token_contract}} +# Deploy gas token +# TODO in the future this should be configurable. I.e. we should be able to specify a token address that has already been deployed +# {{if .zkevm_use_gas_token_contract}} echo_ts "Deploying gas token to L1" -printf "[profile.default]\nsrc = 'contracts'\nout = 'out'\nlibs = ['node_modules']\n" > foundry.toml forge create \ --json \ --rpc-url "{{.l1_rpc_url}}" \ @@ -153,57 +119,30 @@ forge create \ # In this case, we'll configure the create rollup parameters to have a gas token jq --slurpfile c gasToken-erc20.json '.gasTokenAddress = $c[0].deployedTo' /opt/contract-deploy/create_rollup_parameters.json > /opt/zkevm-contracts/deployment/v2/create_rollup_parameters.json -# shellcheck disable=SC1056,SC1072,SC1073,SC1009 -{{end}} +# {{end}} -# Deploy the DAC contracts if deploying an attaching CDK. -# Then transfer ownership, and activate the DAC. -# shellcheck disable=SC1054,SC1083 -{{if not .deploy_agglayer}} -pushd /opt/zkevm-contracts || exit 1 -echo_ts "Deploying DAC for attaching CDK" -jq '.admin = "{{.zkevm_l2_admin_address}}"' /opt/zkevm-contracts/tools/deployPolygonDataCommittee/deploy_dataCommittee_parameters.example > /opt/zkevm-contracts/tools/deployPolygonDataCommittee/tmp && mv /opt/zkevm-contracts/tools/deployPolygonDataCommittee/tmp /opt/zkevm-contracts/tools/deployPolygonDataCommittee/deploy_dataCommittee_parameters.json -jq '.deployerPvtKey = "{{.zkevm_rollup_manager_deployer_private_key}}"' /opt/zkevm-contracts/tools/deployPolygonDataCommittee/deploy_dataCommittee_parameters.json > /opt/zkevm-contracts/tools/deployPolygonDataCommittee/tmp && mv /opt/zkevm-contracts/tools/deployPolygonDataCommittee/tmp /opt/zkevm-contracts/tools/deployPolygonDataCommittee/deploy_dataCommittee_parameters.json -npx hardhat run /opt/zkevm-contracts/tools/deployPolygonDataCommittee/deployPolygonDataCommittee.ts --network localhost > /opt/zkevm-contracts/tools/deployPolygonDataCommittee/output.json - -# Transfer ownership of the deployed DAC. -echo_ts "Transferring ownership of the DAC" -dac_address=$(grep "PolygonDataCommittee deployed to:" /opt/zkevm-contracts/tools/deployPolygonDataCommittee/output.json | awk '{print $NF}') -cast call --rpc-url "{{.l1_rpc_url}}" $dac_address 'owner()(address)' -cast send --private-key "{{.zkevm_rollup_manager_deployer_private_key}}" --rpc-url "{{.l1_rpc_url}}" $dac_address 'transferOwnership(address)' "{{.zkevm_l2_admin_address}}" -{{end}} - -# Deploy contracts. -echo_ts "Deploying zkevm contracts to L1" - -echo_ts "Step 1: Preparing tesnet" -npx hardhat run deployment/testnet/prepareTestnet.ts --network localhost 2>&1 | tee 01_prepare_testnet.out - -echo_ts "Step 2: Creating genesis" -MNEMONIC="{{.l1_preallocated_mnemonic}}" npx ts-node deployment/v2/1_createGenesis.ts 2>&1 | tee 02_create_genesis.out -if [[ ! -e deployment/v2/genesis.json ]]; then - echo_ts "The genesis file was not created after running createGenesis" - exit 1 -fi - -echo_ts "Step 3: Deploying PolygonZKEVMDeployer" -npx hardhat run deployment/v2/2_deployPolygonZKEVMDeployer.ts --network localhost 2>&1 | tee 03_zkevm_deployer.out +cp /opt/contract-deploy/deploy_parameters.json /opt/zkevm-contracts/deployment/v2/deploy_parameters.json +cp /opt/contract-deploy/create_rollup_parameters.json /opt/zkevm-contracts/deployment/v2/create_rollup_parameters.json +sed -i 's#http://127.0.0.1:8545#{{.l1_rpc_url}}#' hardhat.config.ts -echo_ts "Step 4: Deploying contracts" -npx hardhat run deployment/v2/3_deployContracts.ts --network localhost 2>&1 | tee 04_deploy_contracts.out -if [[ ! -e deployment/v2/deploy_output.json ]]; then - echo_ts "The deploy_output.json file was not created after running deployContracts" - exit 1 +is_first_rollup=0 # an indicator if this deployment is doing the first setup of the agglayer etc +if [[ ! -e /opt/zkevm/combined.json ]]; then + echo_ts "It looks like this is the first rollup so we'll deploy the LxLy and Rollup Manager" + deploy_rollup_manager + is_first_rollup=1 +else + echo_ts "Skipping deployment of the Rollup Manager and LxLy" + cp /opt/zkevm/genesis.json /opt/zkevm-contracts/deployment/v2/ + cp /opt/zkevm/deploy_output.json /opt/zkevm-contracts/deployment/v2/ fi -echo_ts "Step 5: Creating rollup" +echo_ts "Step 5: Creating Rollup/Validium" npx hardhat run deployment/v2/4_createRollup.ts --network localhost 2>&1 | tee 05_create_rollup.out if [[ ! -e deployment/v2/create_rollup_output.json ]]; then echo_ts "The create_rollup_output.json file was not created after running createRollup" exit 1 fi - # Combine contract deploy files. # At this point, all of the contracts /should/ have been deployed. # Now we can combine all of the files and put them into the general zkevm folder. @@ -215,14 +154,12 @@ cp /opt/zkevm-contracts/deployment/v2/create_rollup_output.json /opt/zkevm/ cp /opt/zkevm-contracts/deployment/v2/create_rollup_parameters.json /opt/zkevm/ popd -# Combine contract deploy data. -pushd /opt/zkevm/ || exit 1 echo_ts "Creating combined.json" +pushd /opt/zkevm/ || exit 1 + cp genesis.json genesis.original.json jq --slurpfile rollup create_rollup_output.json '. + $rollup[0]' deploy_output.json > combined.json -# Extract L2 Bridge contract address. -polygonZkEVML2BridgeAddress=$(grep "PolygonZkEVMBridge deployed to:" /opt/zkevm-contracts/04_deploy_contracts.out | awk '{print $NF}') -jq --arg polygonZkEVML2BridgeAddress "$polygonZkEVML2BridgeAddress" '.polygonZkEVML2BridgeAddress = $polygonZkEVML2BridgeAddress' combined.json > c.json; mv c.json combined.json +jq '.polygonZkEVML2BridgeAddress = .polygonZkEVMBridgeAddress' combined.json > c.json; mv c.json combined.json # Add the L2 GER Proxy address in combined.json (for panoptichain). zkevm_global_exit_root_l2_address=$(jq -r '.genesis[] | select(.contractName == "PolygonZkEVMGlobalExitRootL2 proxy") | .address' /opt/zkevm/genesis.json) @@ -232,6 +169,7 @@ jq --arg a "$zkevm_global_exit_root_l2_address" '.polygonZkEVMGlobalExitRootL2Ad # older fork7 code to be compatible with some of the fork8 # automations. This schema matching can be dropped once this is # versioned up to 8 +# DEPRECATED we will likely remove support for anything before fork 9 soon fork_id="{{.zkevm_rollup_fork_id}}" if [[ fork_id -lt 8 ]]; then jq '.polygonRollupManagerAddress = .polygonRollupManager' combined.json > c.json; mv c.json combined.json @@ -242,8 +180,6 @@ if [[ fork_id -lt 8 ]]; then fi # NOTE there is a disconnect in the necessary configurations here between the validium node and the zkevm node -# shellcheck disable=SC1054,SC1083 -{{if .deploy_agglayer}} jq --slurpfile c combined.json '.rollupCreationBlockNumber = $c[0].createRollupBlockNumber' genesis.json > g.json; mv g.json genesis.json jq --slurpfile c combined.json '.rollupManagerCreationBlockNumber = $c[0].upgradeToULxLyBlockNumber' genesis.json > g.json; mv g.json genesis.json jq --slurpfile c combined.json '.genesisBlockNumber = $c[0].createRollupBlockNumber' genesis.json > g.json; mv g.json genesis.json @@ -252,36 +188,13 @@ jq --slurpfile c combined.json '.L1Config.polygonZkEVMGlobalExitRootAddress = $c jq --slurpfile c combined.json '.L1Config.polygonRollupManagerAddress = $c[0].polygonRollupManagerAddress' genesis.json > g.json; mv g.json genesis.json jq --slurpfile c combined.json '.L1Config.polTokenAddress = $c[0].polTokenAddress' genesis.json > g.json; mv g.json genesis.json jq --slurpfile c combined.json '.L1Config.polygonZkEVMAddress = $c[0].rollupAddress' genesis.json > g.json; mv g.json genesis.json - jq --slurpfile c combined.json '.bridgeGenBlockNumber = $c[0].createRollupBlockNumber' combined.json > c.json; mv c.json combined.json -{{else}} -rollupCreationBlockNumber=$(jq -r '.createRollupBlockNumber' /opt/zkevm-contracts/tools/getRollupData/create_rollup_output.json) -rollupManagerCreationBlockNumber=$(jq -r '.deploymentRollupManagerBlockNumber' /opt/zkevm-contracts/tools/getRollupData/deploy_output.json) -genesisBlockNumber=$(jq -r '.createRollupBlockNumber' /opt/zkevm-contracts/tools/getRollupData/create_rollup_output.json) -polygonZkEVMGlobalExitRootAddress=$(jq -r '.polygonZkEVMGlobalExitRootAddress' /opt/zkevm-contracts/tools/getRollupData/deploy_output.json) -polygonRollupManagerAddress=$(jq -r '.polygonRollupManagerAddress' /opt/zkevm-contracts/tools/getRollupData/deploy_output.json) -polTokenAddress=$(jq -r '.polTokenAddress' /opt/zkevm-contracts/tools/getRollupData/deploy_output.json) -polygonZkEVMAddress=$(jq -r '.rollupAddress' /opt/zkevm-contracts/tools/getRollupData/create_rollup_output.json) -polygonZkEVMBridgeAddress=$(cast call --rpc-url "{{.l1_rpc_url}}" "$polygonRollupManagerAddress" "bridgeAddress()(address)") - -jq --argjson rollupCreationBlockNumber "$rollupCreationBlockNumber" '.rollupCreationBlockNumber = $rollupCreationBlockNumber' genesis.json > g.json; mv g.json genesis.json -jq --argjson rollupManagerCreationBlockNumber "$rollupManagerCreationBlockNumber" '.rollupManagerCreationBlockNumber = $rollupManagerCreationBlockNumber' genesis.json > g.json; mv g.json genesis.json -jq --argjson genesisBlockNumber "$genesisBlockNumber" '.genesisBlockNumber = $genesisBlockNumber' genesis.json > g.json; mv g.json genesis.json -jq '.L1Config = {chainId:{{.l1_chain_id}}}' genesis.json > g.json; mv g.json genesis.json -jq --arg polygonZkEVMGlobalExitRootAddress "$polygonZkEVMGlobalExitRootAddress" '.L1Config.polygonZkEVMGlobalExitRootAddress = $polygonZkEVMGlobalExitRootAddress' genesis.json > g.json; mv g.json genesis.json -jq --arg polygonRollupManagerAddress "$polygonRollupManagerAddress" '.L1Config.polygonRollupManagerAddress = $polygonRollupManagerAddress' genesis.json > g.json; mv g.json genesis.json -jq --arg polTokenAddress "$polTokenAddress" '.L1Config.polTokenAddress = $polTokenAddress' genesis.json > g.json; mv g.json genesis.json -jq --arg polygonZkEVMAddress "$polygonZkEVMAddress" '.L1Config.polygonZkEVMAddress = $polygonZkEVMAddress' genesis.json > g.json; mv g.json genesis.json - -# Extract newly deployed DAC address and genesisBlockNumber -polygonDataCommitteeAddress=$(grep "PolygonDataCommittee deployed to:" /opt/zkevm-contracts/tools/deployPolygonDataCommittee/output.json | awk '{print $NF}') -jq --arg polygonDataCommitteeAddress "$polygonDataCommitteeAddress" '.polygonDataCommitteeAddress = $polygonDataCommitteeAddress' combined.json > c.json; mv c.json combined.json -jq --arg polygonZkEVMAddress "$polygonZkEVMAddress" '.rollupAddress = $polygonZkEVMAddress' combined.json > c.json; mv c.json combined.json -jq --arg genesisBlockNumber "$genesisBlockNumber" '.bridgeGenBlockNumber = $genesisBlockNumber' combined.json > c.json; mv c.json combined.json -{{end}} - -# Create cdk-erigon node configs +echo_ts "Final combined.json is ready:" +cp combined.json combined{{.deployment_suffix}}.json +cat combined.json + +# This is a jq script to transform the CDK-style genesis file into an allocs file for erigon jq_script=' .genesis | map({ (.address): { @@ -310,22 +223,37 @@ if [[ $? -ne 0 ]]; then fi echo_ts "Transformation complete. Output written to dynamic-kurtosis-allocs.json" - jq '{"root": .root, "timestamp": 0, "gasLimit": 0, "difficulty": 0}' /opt/zkevm/genesis.json > dynamic-kurtosis-conf.json - batch_timestamp=$(jq '.firstBatchData.timestamp' combined.json) - jq --arg bt "$batch_timestamp" '.timestamp |= ($bt | tonumber)' dynamic-kurtosis-conf.json > tmp_output.json - mv tmp_output.json dynamic-kurtosis-conf.json -cat dynamic-kurtosis-conf.json - # Configure contracts. +if [[ $is_first_rollup -eq 1 ]]; then + # Grant the aggregator role to the agglayer so that it can also verify batches. + # cast keccak "TRUSTED_AGGREGATOR_ROLE" + echo_ts "Granting the aggregator role to the agglayer so that it can also verify batches" + cast send \ + --private-key "{{.zkevm_l2_admin_private_key}}" \ + --rpc-url "{{.l1_rpc_url}}" \ + "$(jq -r '.polygonRollupManagerAddress' combined.json)" \ + 'grantRole(bytes32,address)' \ + "0x084e94f375e9d647f87f5b2ceffba1e062c70f6009fdbcf80291e803b5c9edd4" "{{.zkevm_l2_agglayer_address}}" +fi + # The sequencer needs to pay POL when it sequences batches. -# This gets refunded when the batches are proved. +# This gets refunded when the batches are verified on L1. # In order for this to work t,he rollup address must be approved to transfer the sequencers' POL tokens. +echo_ts "Minting POL token on L1 for the sequencer" +cast send \ + --private-key "{{.zkevm_l2_sequencer_private_key}}" \ + --legacy \ + --rpc-url "{{.l1_rpc_url}}" \ + "$(jq -r '.polTokenAddress' combined.json)" \ + 'mint(address,uint256)' \ + "{{.zkevm_l2_sequencer_address}}" 1000000000000000000000000000 + echo_ts "Approving the rollup address to transfer POL tokens on behalf of the sequencer" cast send \ --private-key "{{.zkevm_l2_sequencer_private_key}}" \ @@ -335,7 +263,7 @@ cast send \ 'approve(address,uint256)(bool)' \ "$(jq -r '.rollupAddress' combined.json)" 1000000000000000000000000000 -{{if and .is_cdk_validium .deploy_agglayer}} +# {{if .is_cdk_validium}} # The DAC needs to be configured with a required number of signatures. # Right now the number of DAC nodes is not configurable. # If we add more nodes, we'll need to make sure the urls and keys are sorted. @@ -355,44 +283,7 @@ cast send \ "$(jq -r '.rollupAddress' combined.json)" \ 'setDataAvailabilityProtocol(address)' \ "$(jq -r '.polygonDataCommitteeAddress' combined.json)" -{{else}} -echo_ts "Setting the data availability committee" -dac_address=$(grep "PolygonDataCommittee deployed to:" /opt/zkevm-contracts/tools/deployPolygonDataCommittee/output.json | awk '{print $NF}') -cast send \ - --private-key "{{.zkevm_l2_admin_private_key}}" \ - --rpc-url "{{.l1_rpc_url}}" \ - $dac_address \ - 'function setupCommittee(uint256 _requiredAmountOfSignatures, string[] urls, bytes addrsBytes) returns()' \ - 1 ["http://zkevm-dac{{.deployment_suffix}}:{{.zkevm_dac_port}}"] "{{.zkevm_l2_dac_address}}" - -echo_ts "Activate the DAC" -rollup_address=$(jq -r '.rollupAddress' /opt/zkevm-contracts/tools/getRollupData/create_rollup_output.json) -dac_address=$(grep "PolygonDataCommittee deployed to:" /opt/zkevm-contracts/tools/deployPolygonDataCommittee/output.json | awk '{print $NF}') -cast call --rpc-url "{{.l1_rpc_url}}" $rollup_address 'dataAvailabilityProtocol()' -cast send --private-key "{{.zkevm_l2_admin_private_key}}" --rpc-url "{{.l1_rpc_url}}" $rollup_address 'setDataAvailabilityProtocol(address)' $dac_address -{{end}} - -{{if .deploy_agglayer}} -# Grant the aggregator role to the agglayer so that it can also verify batches. -# cast keccak "TRUSTED_AGGREGATOR_ROLE" -echo_ts "Granting the aggregator role to the agglayer so that it can also verify batches" -cast send \ - --private-key "{{.zkevm_l2_admin_private_key}}" \ - --rpc-url "{{.l1_rpc_url}}" \ - "$(jq -r '.polygonRollupManagerAddress' combined.json)" \ - 'grantRole(bytes32,address)' \ - "0x084e94f375e9d647f87f5b2ceffba1e062c70f6009fdbcf80291e803b5c9edd4" "{{.zkevm_l2_agglayer_address}}" -{{else}} -echo_ts "Granting the aggregator role to the agglayer so that it can also verify batches" -polygonRollupManagerAddress=$(jq -r '.polygonRollupManagerAddress' /opt/zkevm-contracts/tools/getRollupData/deploy_output.json) -cast send \ - --private-key "{{.zkevm_l2_admin_private_key}}" \ - --rpc-url "{{.l1_rpc_url}}" \ - $polygonRollupManagerAddress \ - 'grantRole(bytes32,address)' \ - "0x084e94f375e9d647f87f5b2ceffba1e062c70f6009fdbcf80291e803b5c9edd4" "{{.zkevm_l2_agglayer_address}}" -{{end}} - +# {{end}} # If we've configured the l1 network with the minimal preset, we # should probably wait for the first finalized block. This isn't @@ -405,4 +296,5 @@ if [[ $l1_preset == "minimal" ]]; then fi # The contract setup is done! -touch .init-complete.lock +touch "/opt/zkevm/.init-complete{{.deployment_suffix}}.lock" + From 38558ade4bfaf9a7aacfdb1cf8d729794d1c130d Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 16:11:36 -0400 Subject: [PATCH 21/31] chore: version bumping --- params.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/params.yml b/params.yml index bb87bb7b..ddd62cef 100644 --- a/params.yml +++ b/params.yml @@ -69,11 +69,11 @@ args: cdk_node_image: ghcr.io/0xpolygon/cdk:0.1.1 zkevm_da_image: 0xpolygon/cdk-data-availability:0.0.10 agglayer_image: ghcr.io/agglayer/agglayer-rs:pr-96 - zkevm_bridge_service_image: hermeznetwork/zkevm-bridge-service:v0.5.0-RC12 + zkevm_bridge_service_image: hermeznetwork/zkevm-bridge-service:v0.5.0 zkevm_bridge_ui_image: leovct/zkevm-bridge-ui:multi-network zkevm_bridge_proxy_image: haproxy:3.0-bookworm zkevm_sequence_sender_image: hermeznetwork/zkevm-sequence-sender:v0.2.0-RC12 - cdk_erigon_node_image: jerrycgh/cdk-erigon:8b4732a73f23a27990320f014bbad64b67d70bb7 + cdk_erigon_node_image: jerrycgh/cdk-erigon:c69caf5bf62b2ad9c907184ad257ed2aef5c4bfc zkevm_pool_manager_image: hermeznetwork/zkevm-pool-manager:v0.1.0-RC1 # Port configuration. From 2dea2cae2f0c3f82e1d8526f7d812ab7041a09bc Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 16:18:23 -0400 Subject: [PATCH 22/31] chore: params --- agglayer-attach-cdk-params.yml | 22 ++++++++-------------- params.yml | 1 - 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/agglayer-attach-cdk-params.yml b/agglayer-attach-cdk-params.yml index 2cb4a083..4e777515 100644 --- a/agglayer-attach-cdk-params.yml +++ b/agglayer-attach-cdk-params.yml @@ -50,6 +50,7 @@ args: # - arpeggio # - blockscout # - blutgang + # - erpc # - pless_zkevm_node # - prometheus_grafana # - tx_spammer @@ -60,19 +61,19 @@ args: # https://github.com/0xPolygonHermez/zkevm-contracts/pull/323 zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.3-fork.12 #zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.2-fork.12 - zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC10-fork.12 + zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC12-fork.12 zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3-RC1 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk - cdk_node_image: ghcr.io/0xpolygon/cdk:0.0.17 - zkevm_da_image: 0xpolygon/cdk-data-availability:0.0.9 + cdk_node_image: ghcr.io/0xpolygon/cdk:0.1.1 + zkevm_da_image: 0xpolygon/cdk-data-availability:0.0.10 agglayer_image: ghcr.io/agglayer/agglayer-rs:pr-96 - zkevm_bridge_service_image: hermeznetwork/zkevm-bridge-service:v0.5.0-RC12 + zkevm_bridge_service_image: hermeznetwork/zkevm-bridge-service:v0.5.0 zkevm_bridge_ui_image: leovct/zkevm-bridge-ui:multi-network zkevm_bridge_proxy_image: haproxy:3.0-bookworm zkevm_sequence_sender_image: hermeznetwork/zkevm-sequence-sender:v0.2.0-RC12 - cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.0.0-beta18.3 + cdk_erigon_node_image: jerrycgh/cdk-erigon:c69caf5bf62b2ad9c907184ad257ed2aef5c4bfc zkevm_pool_manager_image: hermeznetwork/zkevm-pool-manager:v0.1.0-RC1 # Port configuration. @@ -148,8 +149,8 @@ args: # This should increment by 1 with each additional CDKs being created using the rollup manager contract. zkevm_rollup_id: 2 - # The rollup type ID. - zkevm_rollup_type_id: "1" + # By default a mock verifier is deployed. Change to true to deploye a real verifier which will require a real prover + zkevm_use_real_verifier: false # If erigon is being used as the sequencer, # This flag will enable a stateless executor to verify the execution of the batches. @@ -157,13 +158,6 @@ args: # This flag will allow pre EIP155 transactions. erigon_pre_eip155_transactions: true - # The address of the rollup manager contract deployer on L1. - zkevm_rollup_manager_deployer: "0xE34aaF64b29273B7D567FCFc40544c014EEe9970" - zkevm_rollup_manager_deployer_private_key: "0x12d7de8621a77640c9241b2595ba78ce443d05e94090365ab3bb5e19df82c625" - rollup_manager_address: "0x2F50ef6b8e8Ee4E579B17619A92dE3E2ffbD8AD2" - # The address of the L2 gas token. - zkevm_gas_token_address: "0xEdE9cf798E0fE25D35469493f43E88FeA4a5da0E" - # The address of the rollup manager contract on L1. # If specified, the rollup data will be retrieved from this contract instead of using the contracts service. # zkevm_rollup_manager_address: "" diff --git a/params.yml b/params.yml index ddd62cef..ed85f4b3 100644 --- a/params.yml +++ b/params.yml @@ -148,7 +148,6 @@ args: # The rollupID of the CDK. zkevm_rollup_id: 1 - # By default a mock verifier is deployed. Change to true to deploye a real verifier which will require a real prover zkevm_use_real_verifier: false From a76ef0ac2dd9bde467c3fa11b193a93e5aa63a76 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 16:42:46 -0400 Subject: [PATCH 23/31] fix: lint --- templates/contract-deploy/run-contract-setup.sh | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/templates/contract-deploy/run-contract-setup.sh b/templates/contract-deploy/run-contract-setup.sh index 5f680578..40071154 100755 --- a/templates/contract-deploy/run-contract-setup.sh +++ b/templates/contract-deploy/run-contract-setup.sh @@ -14,7 +14,6 @@ echo_ts() { } wait_for_rpc_to_be_available() { - rpc_url="$1" counter=0 max_retries=20 until cast send --rpc-url "{{.l1_rpc_url}}" --mnemonic "{{.l1_preallocated_mnemonic}}" --value 0 "{{.zkevm_l2_sequencer_address}}" &> /dev/null; do @@ -152,7 +151,7 @@ cp /opt/zkevm-contracts/deployment/v2/deploy_*.json /opt/zkevm/ cp /opt/zkevm-contracts/deployment/v2/genesis.json /opt/zkevm/ cp /opt/zkevm-contracts/deployment/v2/create_rollup_output.json /opt/zkevm/ cp /opt/zkevm-contracts/deployment/v2/create_rollup_parameters.json /opt/zkevm/ -popd +popd || exit 1 echo_ts "Creating combined.json" pushd /opt/zkevm/ || exit 1 @@ -191,7 +190,7 @@ jq --slurpfile c combined.json '.L1Config.polygonZkEVMAddress = $c[0].rollupAddr jq --slurpfile c combined.json '.bridgeGenBlockNumber = $c[0].createRollupBlockNumber' combined.json > c.json; mv c.json combined.json echo_ts "Final combined.json is ready:" -cp combined.json combined{{.deployment_suffix}}.json +cp combined.json "combined{{.deployment_suffix}}.json" cat combined.json # This is a jq script to transform the CDK-style genesis file into an allocs file for erigon @@ -207,17 +206,13 @@ jq_script=' }) | add' # Use jq to transform the input JSON into the desired format -output_json=$(jq "$jq_script" /opt/zkevm/genesis.json) - -# Handle jq errors -if [[ $? -ne 0 ]]; then +if ! output_json=$(jq "$jq_script" /opt/zkevm/genesis.json); then echo_ts "Error processing JSON with jq" exit 1 fi # Write the output JSON to a file -echo "$output_json" | jq . > dynamic-kurtosis-allocs.json -if [[ $? -ne 0 ]]; then +if ! echo "$output_json" | jq . > dynamic-kurtosis-allocs.json; then echo_ts "Error writing to file dynamic-kurtosis-allocs.json" exit 1 fi From 1ca7c93b963b1b37d773fed2da97b94e51d53a44 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 16:45:24 -0400 Subject: [PATCH 24/31] fix: versions --- input_parser.star | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/input_parser.star b/input_parser.star index 3fdd92e3..4225d16c 100644 --- a/input_parser.star +++ b/input_parser.star @@ -13,11 +13,11 @@ DEFAULT_ARGS = { "cdk_node_image": "ghcr.io/0xpolygon/cdk:0.1.1", "zkevm_da_image": "0xpolygon/cdk-data-availability:0.0.10", "agglayer_image": "ghcr.io/agglayer/agglayer-rs:pr-96", - "zkevm_bridge_service_image": "hermeznetwork/zkevm-bridge-service:v0.5.0-RC12", + "zkevm_bridge_service_image": "hermeznetwork/zkevm-bridge-service:v0.5.0", "zkevm_bridge_ui_image": "leovct/zkevm-bridge-ui:multi-network", "zkevm_bridge_proxy_image": "haproxy:3.0-bookworm", "zkevm_sequence_sender_image": "hermeznetwork/zkevm-sequence-sender:v0.2.0-RC12", - "cdk_erigon_node_image": "jerrycgh/cdk-erigon:8b4732a73f23a27990320f014bbad64b67d70bb7", + "cdk_erigon_node_image": "jerrycgh/cdk-erigon:c69caf5bf62b2ad9c907184ad257ed2aef5c4bfc", "zkevm_pool_manager_image": "hermeznetwork/zkevm-pool-manager:v0.1.0-RC1", "zkevm_hash_db_port": 50061, "zkevm_executor_port": 50071, From dff626e586dad65e6f8327a80bef9b5634b0ba4e Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 16:54:40 -0400 Subject: [PATCH 25/31] chore: enable limbo by default --- templates/cdk-erigon/config.yml | 1 + templates/trusted-node/cdk-node-config.toml | 228 ++++++++++---------- 2 files changed, 111 insertions(+), 118 deletions(-) diff --git a/templates/cdk-erigon/config.yml b/templates/cdk-erigon/config.yml index 4e8ad77d..7a2f6a44 100644 --- a/templates/cdk-erigon/config.yml +++ b/templates/cdk-erigon/config.yml @@ -55,6 +55,7 @@ zkevm.l2-chain-id: {{.zkevm_rollup_chain_id}} zkevm.rpc-ratelimit: 250 zkevm.disable-virtual-counters: false zkevm.allow-pre-eip155-transactions: {{.erigon_pre_eip155_transactions}} +zkevm.limbo: true nodiscover: true maxpeers: 0 diff --git a/templates/trusted-node/cdk-node-config.toml b/templates/trusted-node/cdk-node-config.toml index cfb63981..6cba5d3e 100644 --- a/templates/trusted-node/cdk-node-config.toml +++ b/templates/trusted-node/cdk-node-config.toml @@ -34,130 +34,122 @@ BlockFinality="SafeBlock" # TODO: should be finalized but it breaks :) RPCURL = "http://{{.l2_rpc_name}}{{.deployment_suffix}}:{{.zkevm_rpc_http_port}}" GetBatchWaitInterval = "10s" {{end}} - [SequenceSender.StreamClient] - Server = "{{.sequencer_name}}{{.deployment_suffix}}:{{.zkevm_data_streamer_port}}" - [SequenceSender.EthTxManager] - FrequencyToMonitorTxs = "1s" - WaitTxToBeMined = "2m" - ConsolidationL1ConfirmationBlocks = 5 - {{if eq .zkevm_rollup_fork_id "12"}} - FinalizedStatusL1NumberOfBlocks = 10 - WaitReceiptMaxTime = "250ms" - WaitReceiptCheckInterval = "8s" - {{else}} - FinalizationL1ConfirmationBlocks = 10 - WaitReceiptToBeGenerated = "8s" - {{end}} - PrivateKeys = [ - {Path = "/etc/cdk/sequencer.keystore", Password = "{{.zkevm_l2_keystore_password}}"}, - ] - ForcedGas = 0 - GasPriceMarginFactor = 1 - MaxGasPriceLimit = 0 - PersistenceFilename = "/data/ethtxmanager.json" - [SequenceSender.EthTxManager.Etherman] - URL = "{{.l1_rpc_url}}" - L1ChainID = {{.l1_chain_id}} - HTTPHeaders = [] + [SequenceSender.StreamClient] + Server = "{{.sequencer_name}}{{.deployment_suffix}}:{{.zkevm_data_streamer_port}}" + [SequenceSender.EthTxManager] + FrequencyToMonitorTxs = "1s" + WaitTxToBeMined = "2m" + ConsolidationL1ConfirmationBlocks = 5 + {{if eq .zkevm_rollup_fork_id "12"}} + FinalizedStatusL1NumberOfBlocks = 10 + WaitReceiptMaxTime = "250ms" + WaitReceiptCheckInterval = "8s" + {{else}} + FinalizationL1ConfirmationBlocks = 10 + WaitReceiptToBeGenerated = "8s" + {{end}} + PrivateKeys = [ + {Path = "/etc/cdk/sequencer.keystore", Password = "{{.zkevm_l2_keystore_password}}"}, + ] + ForcedGas = 0 + GasPriceMarginFactor = 1 + MaxGasPriceLimit = 0 + PersistenceFilename = "/data/ethtxmanager.json" + [SequenceSender.EthTxManager.Etherman] + URL = "{{.l1_rpc_url}}" + L1ChainID = {{.l1_chain_id}} + HTTPHeaders = [] [Aggregator] - FinalProofSanityCheckEnabled = false - Host = "0.0.0.0" - Port = "{{.zkevm_aggregator_port}}" - RetryTime = "30s" - VerifyProofInterval = "30s" - ProofStatePollingInterval = "5s" - TxProfitabilityCheckerType = "acceptall" - TxProfitabilityMinReward = "1.1" - IntervalAfterWhichBatchConsolidateAnyway = "0s" - ChainID = "{{.zkevm_rollup_chain_id}}" - ForkId = {{.zkevm_rollup_fork_id}} - CleanupLockedProofsInterval = "2m0s" - GeneratingProofCleanupThreshold = "10m" - GasOffset = 150000 - UpgradeEtrogBatchNumber = "{{.zkevm_rollup_manager_block_number}}" - WitnessURL = "http://{{.l2_rpc_name}}{{.deployment_suffix}}:{{.zkevm_rpc_http_port}}" - {{if .is_cdk_validium}} - SenderAddress = "{{.zkevm_l2_agglayer_address}}" - SettlementBackend = "agglayer" - AggLayerTxTimeout = "600s" - AggLayerURL = "http://agglayer:{{.agglayer_port}}" - {{else}} - SenderAddress = "{{.zkevm_l2_aggregator_address}}" - {{end}} + FinalProofSanityCheckEnabled = false + Host = "0.0.0.0" + Port = "{{.zkevm_aggregator_port}}" + RetryTime = "30s" + VerifyProofInterval = "30s" + ProofStatePollingInterval = "5s" + TxProfitabilityCheckerType = "acceptall" + TxProfitabilityMinReward = "1.1" + IntervalAfterWhichBatchConsolidateAnyway = "0s" + ChainID = "{{.zkevm_rollup_chain_id}}" + ForkId = {{.zkevm_rollup_fork_id}} + CleanupLockedProofsInterval = "2m0s" + GeneratingProofCleanupThreshold = "10m" + GasOffset = 150000 + UpgradeEtrogBatchNumber = "{{.zkevm_rollup_manager_block_number}}" + WitnessURL = "http://{{.l2_rpc_name}}{{.deployment_suffix}}:{{.zkevm_rpc_http_port}}" + {{if .is_cdk_validium}} + SenderAddress = "{{.zkevm_l2_agglayer_address}}" + SettlementBackend = "agglayer" + AggLayerTxTimeout = "600s" + AggLayerURL = "http://agglayer:{{.agglayer_port}}" + {{else}} + SenderAddress = "{{.zkevm_l2_aggregator_address}}" + {{end}} - {{if eq .zkevm_rollup_fork_id "12"}} - UseL1BatchData = true - UseFullWitness = false - MaxWitnessRetrievalWorkers = 2 - SyncModeOnlyEnabled = false - {{end}} + {{if eq .zkevm_rollup_fork_id "12"}} + UseL1BatchData = true + UseFullWitness = false + MaxWitnessRetrievalWorkers = 2 + SyncModeOnlyEnabled = false + {{end}} - [Aggregator.SequencerPrivateKey] - Path = "/etc/cdk/sequencer.keystore" - Password = "{{.zkevm_l2_keystore_password}}" - [Aggregator.DB] - Name = "{{.aggregator_db.name}}" - User = "{{.aggregator_db.user}}" - Password = "{{.aggregator_db.password}}" - Host = "{{.aggregator_db.hostname}}" - Port = "{{.aggregator_db.port}}" - EnableLog = false - MaxConns = 200 - [Aggregator.Log] - Environment = "development" # "production" or "development" - Level = "{{.global_log_level}}" - Outputs = ["stderr"] - [Aggregator.StreamClient] - Server = "{{.sequencer_name}}{{.deployment_suffix}}:{{.zkevm_data_streamer_port}}" - [Aggregator.EthTxManager] - FrequencyToMonitorTxs = "1s" - WaitTxToBeMined = "2m" + [Aggregator.SequencerPrivateKey] + Path = "/etc/cdk/sequencer.keystore" + Password = "{{.zkevm_l2_keystore_password}}" + [Aggregator.DB] + Name = "{{.aggregator_db.name}}" + User = "{{.aggregator_db.user}}" + Password = "{{.aggregator_db.password}}" + Host = "{{.aggregator_db.hostname}}" + Port = "{{.aggregator_db.port}}" + EnableLog = false + MaxConns = 200 + [Aggregator.Log] + Environment = "development" # "production" or "development" + Level = "{{.global_log_level}}" + Outputs = ["stderr"] + [Aggregator.StreamClient] + Server = "{{.sequencer_name}}{{.deployment_suffix}}:{{.zkevm_data_streamer_port}}" + [Aggregator.EthTxManager] + FrequencyToMonitorTxs = "1s" + WaitTxToBeMined = "2m" - {{if eq .zkevm_rollup_fork_id "12"}} - WaitReceiptMaxTime = "250ms" - WaitReceiptCheckInterval = "1s" - {{else}} - GetReceiptMaxTime = "250ms" - GetReceiptWaitInterval = "1s" - {{end}} - - PrivateKeys = [ - {Path = "/etc/cdk/aggregator.keystore", Password = "{{.zkevm_l2_keystore_password}}"}, - ] - ForcedGas = 0 - GasPriceMarginFactor = 1 - MaxGasPriceLimit = 0 - PersistenceFilename = "" - ReadPendingL1Txs = false - SafeStatusL1NumberOfBlocks = 0 - FinalizedStatusL1NumberOfBlocks = 0 - [Aggregator.EthTxManager.Etherman] - URL = "{{.l1_rpc_url}}" - L1ChainID = {{.l1_chain_id}} - HTTPHeaders = [] - [Aggregator.Synchronizer] + {{if eq .zkevm_rollup_fork_id "12"}} + WaitReceiptMaxTime = "250ms" + WaitReceiptCheckInterval = "1s" + {{else}} + GetReceiptMaxTime = "250ms" + GetReceiptWaitInterval = "1s" + {{end}} + + PrivateKeys = [ + {Path = "/etc/cdk/aggregator.keystore", Password = "{{.zkevm_l2_keystore_password}}"}, + ] + ForcedGas = 0 + GasPriceMarginFactor = 1 + MaxGasPriceLimit = 0 + PersistenceFilename = "" + ReadPendingL1Txs = false + SafeStatusL1NumberOfBlocks = 0 + FinalizedStatusL1NumberOfBlocks = 0 + [Aggregator.EthTxManager.Etherman] + URL = "{{.l1_rpc_url}}" + L1ChainID = {{.l1_chain_id}} + HTTPHeaders = [] + [Aggregator.Synchronizer] [Aggregator.Synchronizer.SQLDB] - DriverName = "sqlite3" - DataSourceName = "file:/tmp/aggregator_sync_db.sqlite" - # [Aggregator.Synchronizer.DB] - # Name = "{{.aggregator_syncer_db.name}}" - # User = "{{.aggregator_syncer_db.user}}" - # Password = "{{.aggregator_syncer_db.password}}" - # Host = "{{.aggregator_syncer_db.hostname}}" - # Port = "{{.aggregator_syncer_db.port}}" - # EnableLog = false - # MaxConns = 10 - [Aggregator.Synchronizer.Synchronizer] - SyncInterval = "10s" - SyncChunkSize = 1000 - GenesisBlockNumber = "{{.zkevm_rollup_manager_block_number}}" - SyncUpToBlock = "latest" - BlockFinality = "latest" - OverrideStorageCheck = false - [Aggregator.Synchronizer.Etherman] - [Aggregator.Synchronizer.Etherman.Validium] - Enabled = {{.is_cdk_validium}} + DriverName = "sqlite3" + DataSourceName = "file:/tmp/aggregator_sync_db.sqlite" + [Aggregator.Synchronizer.Synchronizer] + SyncInterval = "10s" + SyncChunkSize = 1000 + GenesisBlockNumber = "{{.zkevm_rollup_manager_block_number}}" + SyncUpToBlock = "latest" + BlockFinality = "latest" + OverrideStorageCheck = false + [Aggregator.Synchronizer.Etherman] + [Aggregator.Synchronizer.Etherman.Validium] + Enabled = {{.is_cdk_validium}} {{if eq .zkevm_rollup_fork_id "12"}} [L1InfoTreeSync] From 679a35c5ae22b5736eb08a8ce4eed7cc32a72e89 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 18:00:53 -0400 Subject: [PATCH 26/31] feat: simplifying the ci a little --- .github/scripts/batch-filler.yul | 8 ++++++ .github/scripts/monitor-verified-batches.sh | 2 +- .github/workflows/deploy.yml | 30 --------------------- 3 files changed, 9 insertions(+), 31 deletions(-) create mode 100644 .github/scripts/batch-filler.yul diff --git a/.github/scripts/batch-filler.yul b/.github/scripts/batch-filler.yul new file mode 100644 index 00000000..6bf256e9 --- /dev/null +++ b/.github/scripts/batch-filler.yul @@ -0,0 +1,8 @@ +// solc --bin --strict-assembly batch-filler.yul +{ + mstore(0x7000,1) + let bigContract := create(0, 0x1000, 0x6000) + for {} gt(gas(), 2500) {} { + extcodecopy(bigContract, 0x1000, 0x1000, 0x6000) + } +} diff --git a/.github/scripts/monitor-verified-batches.sh b/.github/scripts/monitor-verified-batches.sh index 2d05dabb..23916e89 100755 --- a/.github/scripts/monitor-verified-batches.sh +++ b/.github/scripts/monitor-verified-batches.sh @@ -83,7 +83,7 @@ while true; do --rpc-url "$rpc_url" \ --private-key "0x12d7de8621a77640c9241b2595ba78ce443d05e94090365ab3bb5e19df82c625" \ --gas-limit 100000 \ - --create 0x600160015B810190630000000456 + --create 0x6001617000526160006110005ff05b6109c45a111560245761600061100080833c600e565b50 echo "Waiting a few seconds before the next iteration..." echo diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 40fecc0f..f422728b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -162,32 +162,12 @@ jobs: - name: Deploy L1 chain and a first CDK L2 chain (cdk-erigon sequencer + cdk stack) run: | - yq -Y --in-place '.args.sequencer_type = "erigon"' params.yml - yq -Y --in-place '.args.sequence_sender_aggregator_type = "cdk"' params.yml - yq -Y --in-place '.args.additional_services = ["tx_spammer"]' params.yml kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --show-enclave-inspect=false --args-file=params.yml . - - name: Inspect enclave - run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} - - - name: List first CDK L2 chain databases - run: | - postgres1_port=$(kurtosis port print ${{ env.ENCLAVE_NAME }} postgres-001 postgres | cut -d':' -f3) - PGPASSWORD=master_password psql --host 127.0.0.1 --port "$postgres1_port" --username master_user --dbname master --list - - name: Attach a second CDK L2 chain (cdk-erigon sequencer + cdk stack) run: | - yq -Y --in-place '.args.additional_services = ["tx_spammer"]' agglayer-attach-cdk-params.yml kurtosis run --enclave=${{ env.ENCLAVE_NAME }} --show-enclave-inspect=false --args-file=agglayer-attach-cdk-params.yml . - - name: Inspect enclave - run: kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} - - - name: List second CDK L2 chain databases - run: | - postgres2_port=$(kurtosis port print ${{ env.ENCLAVE_NAME }} postgres-002 postgres | cut -d':' -f3) - PGPASSWORD=master_password psql --host 127.0.0.1 --port "$postgres2_port" --username master_user --dbname master --list - - name: Update the agglayer config run: | # Download the agglayer config file. @@ -195,8 +175,6 @@ jobs: cd agglayer-config-artifact # Update the config by adding the rpc and proof signer of the second chain. tomlq -Y --toml-output --in-place '.FullNodeRPCs += {"2": "http://cdk-erigon-node-002:8123"}' agglayer-config.toml - proof_signer_2="$(yq --raw-output .args.zkevm_l2_sequencer_address ../agglayer-attach-cdk-params.yml)" - tomlq -Y --toml-output --arg proofSigner2 "$proof_signer_2" --in-place '.ProofSigners += {"2": $proofSigner2}' agglayer-config.toml # Replace the agglayer config. agglayer_container_id="$(docker ps --filter "name=agglayer" --format "{{.ID}}")" docker cp agglayer-config.toml "$agglayer_container_id:/etc/zkevm/agglayer-config.toml" @@ -208,14 +186,6 @@ jobs: working-directory: .github/scripts run: ./monitor-verified-batches.sh --rpc-url "$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 http-rpc)" - # - name: Monitor verified batches of the first L2 chain (zkEVM Node Permissionless RPC) - # working-directory: .github/scripts - # run: ./monitor-verified-batches.sh --rpc-url "$(kurtosis port print ${{ env.ENCLAVE_NAME }} zkevm-node-rpc-pless-001 http-rpc)" - - name: Monitor verified batches of the second L2 chain (CDK Erigon Permissionless RPC) working-directory: .github/scripts run: ./monitor-verified-batches.sh --rpc-url "$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-002 http-rpc)" - - # - name: Monitor verified batches of the second L2 chain (zkEVM Node Permissionless RPC) - # working-directory: .github/scripts - # run: ./monitor-verified-batches.sh --rpc-url "$(kurtosis port print ${{ env.ENCLAVE_NAME }} zkevm-node-rpc-pless-002 http-rpc)" From e41a8f1ad1e09359199fbf03efb1fbfc5b0a8638 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 18:35:53 -0400 Subject: [PATCH 27/31] feat: adding additional ci logs --- .github/scripts/monitor-verified-batches.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/scripts/monitor-verified-batches.sh b/.github/scripts/monitor-verified-batches.sh index 23916e89..f9595f24 100755 --- a/.github/scripts/monitor-verified-batches.sh +++ b/.github/scripts/monitor-verified-batches.sh @@ -58,6 +58,13 @@ end_time=$((start_time + timeout)) # Main loop to monitor batch verification. while true; do + + if kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} | grep STOPPED ; then + echo "It looks like there is a stopped service in the enclave. Something must have halted" + kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} + kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} --full-uuids | grep STOPPED | awk '{print $2 "--" $1}' | while read -r container; do echo "printing logs for $container"; docker logs --tail 50 $container; done + exit 1 + fi # Query the number of verified batches from the RPC URL. batch_number="$(cast to-dec "$(cast rpc --rpc-url "$rpc_url" zkevm_batchNumber | sed 's/"//g')")" virtual_batch_number="$(cast to-dec "$(cast rpc --rpc-url "$rpc_url" zkevm_virtualBatchNumber | sed 's/"//g')")" From 1a4c942fc0c6f7132b3b19d10529562092e58685 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 18:40:30 -0400 Subject: [PATCH 28/31] fix: lint --- .github/scripts/monitor-verified-batches.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/scripts/monitor-verified-batches.sh b/.github/scripts/monitor-verified-batches.sh index f9595f24..95e49bcc 100755 --- a/.github/scripts/monitor-verified-batches.sh +++ b/.github/scripts/monitor-verified-batches.sh @@ -59,10 +59,10 @@ end_time=$((start_time + timeout)) # Main loop to monitor batch verification. while true; do - if kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} | grep STOPPED ; then + if kurtosis enclave inspect '${{ env.ENCLAVE_NAME }}' | grep STOPPED ; then echo "It looks like there is a stopped service in the enclave. Something must have halted" - kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} - kurtosis enclave inspect ${{ env.ENCLAVE_NAME }} --full-uuids | grep STOPPED | awk '{print $2 "--" $1}' | while read -r container; do echo "printing logs for $container"; docker logs --tail 50 $container; done + kurtosis enclave inspect '${{ env.ENCLAVE_NAME }}' + kurtosis enclave inspect '${{ env.ENCLAVE_NAME }}' --full-uuids | grep STOPPED | awk '{print $2 "--" $1}' | while read -r container; do echo "printing logs for $container"; docker logs --tail 50 "$container"; done exit 1 fi # Query the number of verified batches from the RPC URL. From 3c1949909f152b16565a6df059a142e83a6c9d0a Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 18:44:06 -0400 Subject: [PATCH 29/31] fix: noisy lint --- .github/scripts/monitor-verified-batches.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/scripts/monitor-verified-batches.sh b/.github/scripts/monitor-verified-batches.sh index 95e49bcc..46af67ed 100755 --- a/.github/scripts/monitor-verified-batches.sh +++ b/.github/scripts/monitor-verified-batches.sh @@ -59,9 +59,12 @@ end_time=$((start_time + timeout)) # Main loop to monitor batch verification. while true; do + # shellcheck disable=SC2016 if kurtosis enclave inspect '${{ env.ENCLAVE_NAME }}' | grep STOPPED ; then echo "It looks like there is a stopped service in the enclave. Something must have halted" + # shellcheck disable=SC2016 kurtosis enclave inspect '${{ env.ENCLAVE_NAME }}' + # shellcheck disable=SC2016 kurtosis enclave inspect '${{ env.ENCLAVE_NAME }}' --full-uuids | grep STOPPED | awk '{print $2 "--" $1}' | while read -r container; do echo "printing logs for $container"; docker logs --tail 50 "$container"; done exit 1 fi From 5f2ad1445919c9f8d694ec7d454b1fd1793ce609 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 18:56:51 -0400 Subject: [PATCH 30/31] fix: dropping context --- .github/scripts/monitor-verified-batches.sh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/scripts/monitor-verified-batches.sh b/.github/scripts/monitor-verified-batches.sh index 46af67ed..6a94d81b 100755 --- a/.github/scripts/monitor-verified-batches.sh +++ b/.github/scripts/monitor-verified-batches.sh @@ -59,13 +59,10 @@ end_time=$((start_time + timeout)) # Main loop to monitor batch verification. while true; do - # shellcheck disable=SC2016 - if kurtosis enclave inspect '${{ env.ENCLAVE_NAME }}' | grep STOPPED ; then + if kurtosis enclave inspect "$ENCLAVE_NAME" | grep STOPPED ; then echo "It looks like there is a stopped service in the enclave. Something must have halted" - # shellcheck disable=SC2016 - kurtosis enclave inspect '${{ env.ENCLAVE_NAME }}' - # shellcheck disable=SC2016 - kurtosis enclave inspect '${{ env.ENCLAVE_NAME }}' --full-uuids | grep STOPPED | awk '{print $2 "--" $1}' | while read -r container; do echo "printing logs for $container"; docker logs --tail 50 "$container"; done + kurtosis enclave inspect "$ENCLAVE_NAME" + kurtosis enclave inspect "$ENCLAVE_NAME" --full-uuids | grep STOPPED | awk '{print $2 "--" $1}' | while read -r container; do echo "printing logs for $container"; docker logs --tail 50 "$container"; done exit 1 fi # Query the number of verified batches from the RPC URL. From 0621352e3ee16acc54c34424b77d203cbf774715 Mon Sep 17 00:00:00 2001 From: John Hilliard Date: Fri, 20 Sep 2024 19:09:21 -0400 Subject: [PATCH 31/31] fix: the txspammer seems to be broken now that we have some visibility into stop service, it's a bit more clear that the tx spammer is not functional. All of our tests failed due to this check. ``` printing logs for tx-spammer-001--9a1d7d2bf172420ab8f1a9474aecf2f7 /usr/local/bin/spam.sh: line 14: cast: command not found Deploying an ERC20 token... ``` --- .github/tests/additional-services.yml | 1 - .github/tests/forks/fork11.yml | 6 +++--- .github/tests/forks/fork12.yml | 4 ++-- .github/tests/forks/fork9.yml | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/tests/additional-services.yml b/.github/tests/additional-services.yml index 2f188815..1438dcba 100644 --- a/.github/tests/additional-services.yml +++ b/.github/tests/additional-services.yml @@ -5,6 +5,5 @@ args: - blutgang - erpc - prometheus_grafana - - tx_spammer #- pless_zkevm_node # zkevm-node doesn't support fork12 diff --git a/.github/tests/forks/fork11.yml b/.github/tests/forks/fork11.yml index 2bedc2ca..88cacc86 100644 --- a/.github/tests/forks/fork11.yml +++ b/.github/tests/forks/fork11.yml @@ -1,8 +1,8 @@ args: zkevm_contracts_image: leovct/zkevm-contracts:v7.0.0-rc.2-fork.11 zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.0-RC31-fork.11 - + zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0-fork11-RC1 - additional_services: - - tx_spammer + additional_services: [] + diff --git a/.github/tests/forks/fork12.yml b/.github/tests/forks/fork12.yml index 6366577d..b23c1c3f 100644 --- a/.github/tests/forks/fork12.yml +++ b/.github/tests/forks/fork12.yml @@ -5,5 +5,5 @@ args: #zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.2-fork.12 zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC10-fork.12 - additional_services: - - tx_spammer + additional_services: [] + diff --git a/.github/tests/forks/fork9.yml b/.github/tests/forks/fork9.yml index 99f47288..abfd2ed3 100644 --- a/.github/tests/forks/fork9.yml +++ b/.github/tests/forks/fork9.yml @@ -4,7 +4,7 @@ args: zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3-RC1 cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk - + additional_services: - pless_zkevm_node - - tx_spammer +