Skip to content

Commit 8044dc3

Browse files
authored
Merge pull request #636 from 0xPolygon/atanmarko/integrate-mock-proposer
feat: switch to op-succinct-proposer v2.2.x
2 parents 76c09c2 + 4d02230 commit 8044dc3

17 files changed

Lines changed: 117 additions & 160 deletions

.github/tests/chains/op-succinct-real-prover.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ args:
1313
aggkit_prover_primary_prover: "network-prover"
1414
consensus_contract_type: fep
1515
pp_vkey_hash: "0x00e60517ac96bf6255d81083269e72c14ad006e5f336f852f7ee3efb91b966be"
16-
aggchain_vkey_hash: "0x6b649aca1ba2be1e509a1cce39f7f0a1601bfcf90f0a27104970669c22df59d5"
16+
aggchain_vkey_hash: "0x1e82b1193be48c5c6ba14dda2bcc29ab4d3dc3a2379198ac1f8571040d0a7a4d"
1717
# aggkit_prover_image: "ghcr.io/agglayer/aggkit-prover:feat-rust-proposer"
1818
# false = network
1919
# Using the network provers will use the real SP1 verifier contract which is also deployed together in the Kurtosis devnet.

.github/tests/chains/op-succinct.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ args:
1313
sp1_prover_key: "0xbcdf20249abf0ed6d944c0288fad489e33f66b3960d9e6229c1cd214ed3bbe31"
1414
consensus_contract_type: fep
1515
pp_vkey_hash: "0x00e60517ac96bf6255d81083269e72c14ad006e5f336f852f7ee3efb91b966be"
16-
aggchain_vkey_hash: "0x6b649aca1ba2be1e509a1cce39f7f0a1601bfcf90f0a27104970669c22df59d5"
17-
# aggkit_prover_image: "ghcr.io/agglayer/aggkit-prover:feat-rust-proposer"
16+
aggchain_vkey_hash: "0x1e82b1193be48c5c6ba14dda2bcc29ab4d3dc3a2379198ac1f8571040d0a7a4d"
1817
# true = mock
1918
# false = network
2019
# Using the network provers will use the real SP1 verifier contract which is also deployed together in the Kurtosis devnet.

.github/tests/chains/op2.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ args:
99
zkevm_rollup_id: 2
1010
consensus_contract_type: pessimistic
1111
pp_vkey_hash: "0x00e60517ac96bf6255d81083269e72c14ad006e5f336f852f7ee3efb91b966be"
12-
aggchain_vkey_hash: "0x6b649aca1ba2be1e509a1cce39f7f0a1601bfcf90f0a27104970669c22df59d5"
12+
aggchain_vkey_hash: "0x1e82b1193be48c5c6ba14dda2bcc29ab4d3dc3a2379198ac1f8571040d0a7a4d"
1313
# OP Stack EL RPC URL. Will be dynamically updated by args_sanity_check().
1414
op_el_rpc_url: "http://op-el-1-op-geth-op-node-002:8545"
1515
# OP Stack CL Node URL. Will be dynamically updated by args_sanity_check().

.github/tests/nightly/op-rollup/op-default.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ args:
66
consensus_contract_type: pessimistic
77
zkevm_rollup_chain_id: 2151908
88
pp_vkey_hash: "0x00e60517ac96bf6255d81083269e72c14ad006e5f336f852f7ee3efb91b966be"
9-
aggchain_vkey_hash: "0x6b649aca1ba2be1e509a1cce39f7f0a1601bfcf90f0a27104970669c22df59d5"
9+
aggchain_vkey_hash: "0x1e82b1193be48c5c6ba14dda2bcc29ab4d3dc3a2379198ac1f8571040d0a7a4d"
1010
# Arbitrary key for the SP1 prover. Replace with a valid SPN key if you want to use the network provers.
1111
# cast wallet private-key --mnemonic "giant issue aisle success illegal bike spike question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy very lucky have athlete"
1212
sp1_prover_key: "0xbcdf20249abf0ed6d944c0288fad489e33f66b3960d9e6229c1cd214ed3bbe31"

.github/workflows/deploy.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ jobs:
298298
enclave_name: ${{ env.ENCLAVE_NAME }}
299299
args_filename: deploy-to-external-l1
300300

301-
run-with-cdk-op-geth-succinct:
301+
run-with-op-succinct:
302302
runs-on: ubuntu-latest
303303
timeout-minutes: 40
304304
steps:
@@ -321,7 +321,10 @@ jobs:
321321
run: |
322322
LOGS=$(kurtosis service logs ${{ env.ENCLAVE_NAME }} op-succinct-proposer-001 2>&1)
323323
echo "$LOGS"
324-
if echo "$LOGS" | grep -i "error\|exception\|failed\|fatal"; then
324+
if [[ -z "$LOGS" ]]; then
325+
echo "Error: No logs found for op-succinct-proposer service! Service may not be functioning."
326+
exit 1 # Fail the workflow if logs are empty
327+
elif echo "$LOGS" | grep -i "error\|exception\|failed\|fatal"; then
325328
echo "Errors found in container logs!"
326329
exit 1 # Fail the workflow if errors are found
327330
else

agglayer.star

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def get_agglayer_ports(args):
203203
)
204204
if args["agglayer_admin_port"] != 0:
205205
ports["aglr-admin"] = PortSpec(
206-
args["agglayer_admin_port"], application_protocol="grpc"
206+
args["agglayer_admin_port"], application_protocol="http"
207207
)
208208
public_ports = ports_package.get_public_ports(ports, "agglayer_start_port", args)
209209
return (ports, public_ports)

deploy_zkevm_contracts.star

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,16 +147,48 @@ def run(plan, args, deployment_stages, op_stack_args):
147147
)
148148
artifacts.append(artifact)
149149

150+
# Base files artifacts to mount regardless of deployment type
151+
files = {
152+
"/opt/zkevm": Directory(persistent_key="zkevm-artifacts"),
153+
"/opt/contract-deploy/": Directory(artifact_names=artifacts),
154+
}
155+
# Create op-succinct artifacts
156+
if deployment_stages.get("deploy_op_succinct", False):
157+
fetch_rollup_config_artifact = plan.get_files_artifact(
158+
name="fetch-rollup-config",
159+
description="Get fetch-rollup-config files artifact",
160+
)
161+
deploy_op_succinct_contract_artifact = plan.render_templates(
162+
name="deploy-op-succinct-contracts.sh",
163+
config={
164+
"deploy-op-succinct-contracts.sh": struct(
165+
template=read_file(
166+
src="./templates/op-succinct/deploy-op-succinct-contracts.sh"
167+
),
168+
data=args,
169+
),
170+
},
171+
description="Create deploy_op_succinct_contract files artifact",
172+
)
173+
# Mount op-succinct specific artifacts
174+
files["/opt/op-succinct/"] = Directory(
175+
artifact_names=[fetch_rollup_config_artifact]
176+
)
177+
files["/opt/scripts/"] = Directory(
178+
artifact_names=[deploy_op_succinct_contract_artifact]
179+
)
180+
service_files = files
181+
else:
182+
# No op-succinct specific artifacts mounted
183+
service_files = files
184+
150185
# Create helper service to deploy contracts
151186
contracts_service_name = "contracts" + args["deployment_suffix"]
152187
plan.add_service(
153188
name=contracts_service_name,
154189
config=ServiceConfig(
155190
image=args["zkevm_contracts_image"],
156-
files={
157-
"/opt/zkevm": Directory(persistent_key="zkevm-artifacts"),
158-
"/opt/contract-deploy/": Directory(artifact_names=artifacts),
159-
},
191+
files=service_files,
160192
# These two lines are only necessary to deploy to any Kubernetes environment (e.g. GKE).
161193
entrypoint=["bash", "-c"],
162194
cmd=["sleep infinity"],

input_parser.star

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ DEFAULT_DEPLOYMENT_STAGES = {
3939
}
4040

4141
DEFAULT_IMAGES = {
42-
"aggkit_image": "ghcr.io/agglayer/aggkit:0.3.0-beta2", # https://github.com/agglayer/aggkit/pkgs/container/aggkit
43-
"agglayer_image": "ghcr.io/agglayer/agglayer:0.3.0-rc.20", # https://github.com/agglayer/agglayer/pkgs/container/agglayer
44-
"aggkit_prover_image": "ghcr.io/agglayer/aggkit-prover:0.1.0-rc.27", # https://github.com/agglayer/provers/pkgs/container/aggkit-prover
42+
"aggkit_image": "ghcr.io/agglayer/aggkit:0.3.0-beta6", # https://github.com/agglayer/aggkit/pkgs/container/aggkit
43+
"agglayer_image": "ghcr.io/agglayer/agglayer:0.3.0-rc.21", # https://github.com/agglayer/agglayer/pkgs/container/agglayer
44+
"aggkit_prover_image": "ghcr.io/agglayer/aggkit-prover:0.1.0-rc.29", # https://github.com/agglayer/provers/pkgs/container/aggkit-prover
4545
"cdk_erigon_node_image": "hermeznetwork/cdk-erigon:v2.61.19", # https://hub.docker.com/r/hermeznetwork/cdk-erigon/tags
4646
"cdk_node_image": "ghcr.io/0xpolygon/cdk:0.5.4-rc1", # https://github.com/0xpolygon/cdk/pkgs/container/cdk
4747
"cdk_validium_node_image": "ghcr.io/0xpolygon/cdk-validium-node:0.6.4-cdk.10", # https://github.com/0xPolygon/cdk-validium-node/pkgs/container/cdk-validium-node/
@@ -52,16 +52,15 @@ DEFAULT_IMAGES = {
5252
# This image has been built using the following branch: https://github.com/leovct/agglayer-contracts/tree/v10.1.0-rc.3-devtools
5353
# It includes two fixes, one for proxiedTokensManager param and another one for bridge initialize call.
5454
# It is not an official release made by the contracts team, thus we label it as a "devtools" image.
55-
"zkevm_contracts_image": "leovct/zkevm-contracts:v10.1.0-rc.3-devtools-fork.12",
55+
"zkevm_contracts_image": "jhkimqd/zkevm-contracts:v10.1.0-rc.5-fork.12",
5656
"zkevm_da_image": "ghcr.io/0xpolygon/cdk-data-availability:0.0.13", # https://github.com/0xpolygon/cdk-data-availability/pkgs/container/cdk-data-availability
5757
"zkevm_node_image": "hermeznetwork/zkevm-node:v0.7.3", # https://hub.docker.com/r/hermeznetwork/zkevm-node/tags
5858
"zkevm_pool_manager_image": "hermeznetwork/zkevm-pool-manager:v0.1.2", # https://hub.docker.com/r/hermeznetwork/zkevm-pool-manager/tags
5959
"zkevm_prover_image": "hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12", # https://hub.docker.com/r/hermeznetwork/zkevm-prover/tags
6060
"zkevm_sequence_sender_image": "hermeznetwork/zkevm-sequence-sender:v0.2.4", # https://hub.docker.com/r/hermeznetwork/zkevm-sequence-sender/tags
6161
"anvil_image": "ghcr.io/foundry-rs/foundry:v1.0.0", # https://github.com/foundry-rs/foundry/pkgs/container/foundry/versions?filters%5Bversion_type%5D=tagged
6262
"mitm_image": "mitmproxy/mitmproxy:11.1.3", # https://hub.docker.com/r/mitmproxy/mitmproxy/tags
63-
"op_succinct_contract_deployer_image": "jhkimqd/op-succinct-contract-deployer:v2.1.3-agglayer", # https://hub.docker.com/r/jhkimqd/op-succinct-contract-deployer
64-
"op_succinct_proposer_image": "ghcr.io/agglayer/op-succinct/op-succinct:v2.1.6-agglayer", # https://github.com/agglayer/op-succinct/pkgs/container/op-succinct%2Fop-proposer
63+
"op_succinct_proposer_image": "ghcr.io/agglayer/op-succinct/op-succinct:v2.2.1-agglayer", # https://github.com/agglayer/op-succinct/pkgs/container/op-succinct%2Fop-proposer
6564
"test_runner_image": "leovct/e2e:78df008-cdk",
6665
}
6766

lib/op_succinct.star

Lines changed: 8 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,8 @@
1-
ARTIFACTS = [
2-
{
3-
"name": "deploy-op-succinct-contracts.sh",
4-
"file": "../templates/op-succinct/deploy-op-succinct-contracts.sh",
5-
},
6-
{
7-
"name": "deploy-l2oo.sh",
8-
"file": "../templates/op-succinct/deploy-l2oo.sh",
9-
},
10-
]
11-
12-
13-
def create_op_succinct_contract_deployer_service_config(
14-
plan,
15-
args,
16-
):
17-
artifact_paths = list(ARTIFACTS)
18-
artifacts = []
19-
for artifact_cfg in artifact_paths:
20-
template = read_file(src=artifact_cfg["file"])
21-
artifact = plan.render_templates(
22-
name=artifact_cfg["name"],
23-
config={artifact_cfg["name"]: struct(template=template, data=args)},
24-
)
25-
artifacts.append(artifact)
26-
27-
op_succinct_name = "op-succinct-contract-deployer" + args["deployment_suffix"]
28-
op_succinct_contract_deployer_service_config = ServiceConfig(
29-
image=args["op_succinct_contract_deployer_image"],
30-
files={
31-
"/opt/scripts/": Directory(
32-
artifact_names=[
33-
artifacts[0],
34-
artifacts[1],
35-
],
36-
),
37-
},
38-
)
39-
40-
return {op_succinct_name: op_succinct_contract_deployer_service_config}
41-
42-
431
# The VERIFIER_ADDRESS, L2OO_ADDRESS will need to be dynamically parsed from the output of the contract deployer
442
# NETWORK_PRIVATE_KEY must be from user input
453
def create_op_succinct_proposer_service_config(
4+
plan,
465
args,
47-
op_succinct_env_vars,
486
db_artifact,
497
):
508
op_succinct_name = "op-succinct-proposer" + args["deployment_suffix"]
@@ -61,10 +19,8 @@ def create_op_succinct_proposer_service_config(
6119
"VERIFIER_ADDRESS": args["agglayer_gateway_address"],
6220
"AGG_PROOF_MODE": args["op_succinct_agg_proof_mode"],
6321
"L2OO_ADDRESS": args["zkevm_rollup_address"],
64-
"OP_SUCCINCT_MOCK": op_succinct_env_vars["op_succinct_mock"],
65-
"AGGLAYER": op_succinct_env_vars[
66-
"op_succinct_agglayer"
67-
], # agglayer/op-succinct specific.
22+
"OP_SUCCINCT_MOCK": args["op_succinct_mock"],
23+
"AGGLAYER": args["op_succinct_agglayer"], # agglayer/op-succinct specific.
6824
"GRPC_ADDRESS": "0.0.0.0:"
6925
+ str(args["op_succinct_proposer_grpc_port"]), # agglayer/op-succinct specific.
7026
"NETWORK_PRIVATE_KEY": args["sp1_prover_key"],
@@ -83,6 +39,9 @@ def create_op_succinct_proposer_service_config(
8339
# "SAFE_DB_FALLBACK": False, # Default: false. Whether to fallback to timestamp-based L1 head estimation even though SafeDB is not activated for op-node. When false, proposer will panic if SafeDB is not available. It is by default false since using the fallback mechanism will result in higher proving cost.
8440
# "SIGNER_URL": "", # URL for the Web3Signer. Note: This takes precedence over the `PRIVATE_KEY` environment variable.
8541
# "SIGNER_ADDRESS": "", # Address of the account that will be posting output roots to L1. Note: Only set this if the signer is a Web3Signer. Note: Required if `SIGNER_URL` is set.
42+
"RUST_LOG": args[
43+
"global_log_level"
44+
], # Kurtosis CDK specific. Required to see logs in the op-succinct-proposer after https://github.com/agglayer/op-succinct/commit/892085405a65a2b1c245beca3dcb9d9f5626af0e commit
8645
}
8746

8847
op_succinct_proposer_service_config = ServiceConfig(
@@ -107,12 +66,12 @@ def get_op_succinct_proposer_ports(args):
10766
"prometheus": PortSpec(
10867
args["op_succinct_proposer_metrics_port"],
10968
application_protocol="http",
110-
wait="5m",
69+
wait="60s",
11170
),
11271
"grpc": PortSpec(
11372
args["op_succinct_proposer_grpc_port"],
11473
application_protocol="grpc",
115-
wait="10m",
74+
wait="60s",
11675
),
11776
}
11877

lib/service.star

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ def get_sovereign_contract_setup_addresses(plan, args):
8181
command=["/bin/sh", "-c", "cat /opt/zkevm-contracts/sovereign-rollup-out.json"],
8282
extract=extract,
8383
)
84-
service_name = "contracts"
85-
service_name += args["deployment_suffix"]
84+
service_name = "contracts" + args["deployment_suffix"]
8685
result = plan.exec(
8786
description="Getting contract setup addresses from {} service".format(
8887
service_name
@@ -124,7 +123,7 @@ def get_op_succinct_env_vars(plan, args):
124123
command=["/bin/sh", "-c", "cat /opt/op-succinct/op-succinct-env-vars.json"],
125124
extract=extract,
126125
)
127-
service_name = "op-succinct-contract-deployer" + args["deployment_suffix"]
126+
service_name = "contracts" + args["deployment_suffix"]
128127
result = plan.exec(
129128
description="Getting op-succinct environment variables from {} service".format(
130129
service_name
@@ -203,8 +202,7 @@ def get_op_succinct_l2oo_config(plan, args):
203202
],
204203
extract=extract,
205204
)
206-
service_name = "op-succinct-contract-deployer"
207-
service_name += args["deployment_suffix"]
205+
service_name = "contracts" + args["deployment_suffix"]
208206
result = plan.exec(
209207
description="Reading the opsuccinctl2ooconfig JSON file from {} service".format(
210208
service_name

0 commit comments

Comments
 (0)