Skip to content

Commit

Permalink
feat: adds support for permissionless game, challenger interop support
Browse files Browse the repository at this point in the history
  • Loading branch information
zhwrd committed Feb 10, 2025
1 parent 0a1593a commit b83abba
Show file tree
Hide file tree
Showing 10 changed files with 220 additions and 177 deletions.
64 changes: 46 additions & 18 deletions main.star
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ l2_launcher = import_module("./src/l2.star")
op_supervisor_launcher = import_module(
"./src/interop/op-supervisor/op_supervisor_launcher.star"
)
op_challenger_launcher = import_module(
"./src/challenger/op-challenger/op_challenger_launcher.star"
)

observability = import_module("./src/observability/observability.star")
prometheus = import_module("./src/observability/prometheus/prometheus_launcher.star")
Expand Down Expand Up @@ -103,37 +106,62 @@ def run(plan, args):
name="op_jwt_file",
)

all_participants = []
l2s = []
for l2_num, chain in enumerate(optimism_args_with_right_defaults.chains):
all_participants += l2_launcher.launch_l2(
plan,
l2_num,
chain.network_params.name,
chain,
jwt_file,
deployment_output,
l1_config_env_vars,
l1_priv_key,
l1_rpc_url,
global_log_level,
global_node_selectors,
global_tolerations,
persistent,
observability_helper,
interop_params,
l2s.append(
l2_launcher.launch_l2(
plan,
l2_num,
chain.network_params.name,
chain,
jwt_file,
deployment_output,
l1_config_env_vars,
l1_priv_key,
l1_rpc_url,
global_log_level,
global_node_selectors,
global_tolerations,
persistent,
observability_helper,
interop_params,
)
)

if interop_params.enabled:
op_supervisor_launcher.launch(
plan,
l1_config_env_vars,
optimism_args_with_right_defaults.chains,
all_participants,
l2s,
jwt_file,
interop_params.supervisor_params,
observability_helper,
)

# challenger must launch after supervisor because it depends on it for interop
for l2_num, l2 in enumerate(l2s):
chain = optimism_args_with_right_defaults.chains[l2_num]
op_challenger_image = (
chain.challenger_params.image
if chain.challenger_params.image != ""
else input_parser.DEFAULT_CHALLENGER_IMAGES["op-challenger"]
)
op_challenger_launcher.launch(
plan,
l2_num,
"op-challenger-{0}".format(chain.network_params.name),
chain.challenger_params.image,
l2.participants[0].el_context,
l2.participants[0].cl_context,
l1_config_env_vars,
deployment_output,
chain.network_params,
chain.challenger_params,
interop_params,
observability_helper,
)

if observability_helper.enabled and len(observability_helper.metrics_jobs) > 0:
plan.print("Launching prometheus...")
prometheus_private_url = prometheus.launch_prometheus(
Expand Down
35 changes: 27 additions & 8 deletions src/challenger/op-challenger/op_challenger_launcher.star
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ ethereum_package_constants = import_module(
observability = import_module("../../observability/observability.star")
prometheus = import_module("../../observability/prometheus/prometheus_launcher.star")

interop_constants = import_module("../../interop/constants.star")
util = import_module("../../util.star")

#
# ---------------------------------- Challenger client -------------------------------------
CHALLENGER_DATA_DIRPATH_ON_SERVICE_CONTAINER = "/data/op-challenger/op-challenger-data"
Expand All @@ -22,32 +25,32 @@ def get_used_ports():

def launch(
plan,
l2_num,
service_name,
image,
el_context,
cl_context,
l1_config_env_vars,
gs_challenger_private_key,
game_factory_address,
deployment_output,
network_params,
challenger_params,
interop_params,
observability_helper,
):
challenger_service_name = "{0}".format(service_name)

config = get_challenger_config(
plan,
l2_num,
service_name,
image,
el_context,
cl_context,
l1_config_env_vars,
gs_challenger_private_key,
game_factory_address,
deployment_output,
network_params,
challenger_params,
interop_params,
observability_helper,
)

Expand All @@ -62,20 +65,33 @@ def launch(

def get_challenger_config(
plan,
l2_num,
service_name,
image,
el_context,
cl_context,
l1_config_env_vars,
gs_challenger_private_key,
game_factory_address,
deployment_output,
network_params,
challenger_params,
interop_params,
observability_helper,
):
ports = dict(get_used_ports())

game_factory_address = util.read_network_config_value(
plan,
deployment_output,
"state",
".opChainDeployments[{0}].disputeGameFactoryProxyAddress".format(l2_num),
)
challenger_key = util.read_network_config_value(
plan,
deployment_output,
"challenger-{0}".format(network_params.network_id),
".privateKey",
)

cmd = [
"op-challenger",
"--cannon-l2-genesis="
Expand All @@ -93,9 +109,9 @@ def get_challenger_config(
"--l1-beacon=" + l1_config_env_vars["CL_RPC_URL"],
"--l1-eth-rpc=" + l1_config_env_vars["L1_RPC_URL"],
"--l2-eth-rpc=" + el_context.rpc_http_url,
"--private-key=" + gs_challenger_private_key,
"--private-key=" + challenger_key,
"--rollup-rpc=" + cl_context.beacon_http_url,
"--trace-type=" + "cannon,permissioned",
"--trace-type=" + ",".join(challenger_params.cannon_trace_types),
]

# configure files
Expand All @@ -109,6 +125,9 @@ def get_challenger_config(
if observability_helper.enabled:
observability.configure_op_service_metrics(cmd, ports)

if interop_params.enabled:
cmd.append("--supervisor-rpc=" + interop_constants.SUPERVISOR_ENDPOINT)

if (
challenger_params.cannon_prestate_path
and challenger_params.cannon_prestates_url
Expand Down
Loading

0 comments on commit b83abba

Please sign in to comment.