Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions main.star
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def run(plan, args={}):
l1_network = "local"
l1_network_params = l1.network_params
l1_network_id = l1.network_id
l1_rpc_url = all_l1_participants[0].el_context.rpc_http_url
l1_rpc_url = util.make_execution_rpc_url(all_l1_participants[0].el_context)
l1_priv_key = l1.pre_funded_accounts[
12
].private_key # reserved for L2 contract deployers
Expand Down Expand Up @@ -244,10 +244,18 @@ def run(plan, args={}):
def get_l1_config(all_l1_participants, l1_network_params, l1_network_id):
env_vars = {}
env_vars["L1_RPC_KIND"] = "standard"
env_vars["WEB3_RPC_URL"] = str(all_l1_participants[0].el_context.rpc_http_url)
env_vars["L1_RPC_URL"] = str(all_l1_participants[0].el_context.rpc_http_url)
env_vars["CL_RPC_URL"] = str(all_l1_participants[0].cl_context.beacon_http_url)
env_vars["L1_WS_URL"] = str(all_l1_participants[0].el_context.ws_url)
# Use utility functions to create URLs with service names instead of hardcoded IP addresses
env_vars["WEB3_RPC_URL"] = util.make_execution_rpc_url(
all_l1_participants[0].el_context
)
env_vars["L1_RPC_URL"] = util.make_execution_rpc_url(
all_l1_participants[0].el_context
)
env_vars["CL_RPC_URL"] = util.make_cl_beacon_url(all_l1_participants[0].cl_context)
env_vars["L1_WS_URL"] = util.make_ws_url(
all_l1_participants[0].el_context.service_name,
all_l1_participants[0].el_context.ws_port_num,
)
env_vars["L1_CHAIN_ID"] = str(l1_network_id)
env_vars["L1_BLOCK_TIME"] = str(l1_network_params.seconds_per_slot)
return env_vars
Expand Down Expand Up @@ -283,7 +291,7 @@ def _install_faucet(
faucet.faucet_data(
name=l2.name,
chain_id=chain_id,
el_rpc=l2.participants[0].el.context.rpc_http_url,
el_rpc=util.make_execution_rpc_url(l2.participants[0].el.context),
private_key=private_key,
)
)
Expand Down
14 changes: 10 additions & 4 deletions src/l2/launcher.star
Original file line number Diff line number Diff line change
Expand Up @@ -193,9 +193,7 @@ def launch(
supervisors_params=supervisors_params,
conductor_params=participant_params.conductor_params,
is_sequencer=is_sequencer,
el_context=sidecar_and_builders.el_builder.context
if sidecar_and_builders and sidecar_and_builders.el_builder
else el.context,
el_context=el.context,
cl_contexts=cl_contexts,
signer_context=signer,
jwt_file=jwt_file,
Expand Down Expand Up @@ -330,6 +328,7 @@ def _launch_sidecar_maybe(
sequencer_context=el_context,
builder_context=el_builder_context,
jwt_file=jwt_file,
observability_helper=observability_helper,
)

cl_builder = (
Expand Down Expand Up @@ -365,7 +364,13 @@ def _launch_sidecar_maybe(


def _launch_sidecar(
plan, mev_params, network_params, sequencer_context, builder_context, jwt_file
plan,
mev_params,
network_params,
sequencer_context,
builder_context,
jwt_file,
observability_helper,
):
if mev_params.type == "rollup-boost":
return _rollup_boost_launcher.launch(
Expand All @@ -375,6 +380,7 @@ def _launch_sidecar(
sequencer_context=sequencer_context,
builder_context=builder_context,
jwt_file=jwt_file,
observability_helper=observability_helper,
)
else:
fail("Invalid MEV type: {}".format(mev_params.type))
Expand Down
5 changes: 4 additions & 1 deletion src/mev/input_parser.star
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ _DEFAULT_ARGS = {
"type": "rollup-boost",
"builder_host": None,
"builder_port": None,
"builder_timeout": "1000",
"l2_timeout": "1000",
}

_IMAGE_IDS = {
Expand Down Expand Up @@ -63,7 +65,8 @@ def parse(mev_args, network_params, participant_name, participant_index, registr

# Add ports
mev_params["ports"] = {
_net.RPC_PORT_NAME: _net.port(number=8541),
_net.RPC_PORT_NAME: _net.port(number=8551),
_net.WS_PORT_NAME: _net.port(number=1112, application_protocol="ws"),
}

return struct(**mev_params)
Expand Down
31 changes: 28 additions & 3 deletions src/mev/rollup-boost/launcher.star
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ _constants = import_module(
)

_net = import_module("/src/util/net.star")
_observability = import_module("/src/observability/observability.star")

# FIXME This don't seem to be passed to the command
WS_PORT_NUM = 8546
_DEFAULT_FLASHBLOCKS_WS_PORT = 1111


def launch(
Expand All @@ -18,18 +18,21 @@ def launch(
sequencer_context,
builder_context,
jwt_file,
observability_helper,
):
config = get_service_config(
plan=plan,
params=params,
jwt_file=jwt_file,
sequencer_context=sequencer_context,
builder_context=builder_context,
observability_helper=observability_helper,
)

service = plan.add_service(params.service_name, config)

rpc_port = params.ports[_net.RPC_PORT_NAME]
ws_port = params.ports[_net.WS_PORT_NAME]

return struct(
service=service,
Expand All @@ -38,7 +41,7 @@ def launch(
enode=None,
ip_addr=service.ip_address,
rpc_port_num=rpc_port.number,
ws_port_num=WS_PORT_NUM,
ws_port_num=ws_port.number,
engine_rpc_port_num=rpc_port.number,
rpc_http_url=_net.service_url(params.service_name, rpc_port),
service_name=params.service_name,
Expand All @@ -52,6 +55,7 @@ def get_service_config(
jwt_file,
sequencer_context,
builder_context,
observability_helper,
):
L2_EXECUTION_ENGINE_ENDPOINT = _net.service_url(
sequencer_context.service_name,
Expand All @@ -68,17 +72,38 @@ def get_service_config(
cmd = [
"--l2-jwt-path=" + _constants.JWT_MOUNT_PATH_ON_CONTAINER,
"--l2-url={0}".format(L2_EXECUTION_ENGINE_ENDPOINT),
"--l2-timeout=" + params.l2_timeout,
"--builder-jwt-path=" + _constants.JWT_MOUNT_PATH_ON_CONTAINER,
"--builder-url={0}".format(BUILDER_EXECUTION_ENGINE_ENDPOINT),
"--builder-timeout=" + params.builder_timeout,
"--rpc-host=0.0.0.0",
"--rpc-port={0}".format(ports[_net.RPC_PORT_NAME].number),
"--log-level=debug",
# Flashblocks configuration
"--flashblocks",
"--flashblocks-host=0.0.0.0",
"--flashblocks-port={}".format(ports[_net.WS_PORT_NAME].number),
"--flashblocks-builder-url={}".format(
_net.service_url(
builder_context.service_name,
_net.port(
number=_DEFAULT_FLASHBLOCKS_WS_PORT, application_protocol="ws"
),
)
),
"--log-format=json",
]

env_vars = {
"DEBUG_HOST": "0.0.0.0",
"DEBUG_SERVER_PORT": "5555",
}

return ServiceConfig(
image=params.image,
ports=ports,
cmd=cmd,
env_vars=env_vars,
files={
_constants.JWT_MOUNTPOINT_ON_CLIENTS: jwt_file,
},
Expand Down
4 changes: 2 additions & 2 deletions src/package_io/registry.star
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@ OP_BLOCKSCOUT_VERIFIER = "op-blockscout-verifier"

_DEFAULT_IMAGES = {
# EL images
OP_GETH: "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1",
OP_GETH: "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1-rc.1@sha256:796b5bb67ff5986ea8b280914447ae8e3fedc9b167f5a65c366ea99c5839903e",
OP_RETH: "ghcr.io/paradigmxyz/op-reth:v1.6.0",
OP_ERIGON: "testinprod/op-erigon:v2.61.3-0.9.5",
OP_NETHERMIND: "nethermind/nethermind:1.32.4",
OP_BESU: "ghcr.io/optimism-java/op-besu:v0.2.2",
OP_RBUILDER: "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-rbuilder:sha-0ec0644",
# CL images
OP_NODE: "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.4",
OP_NODE: "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.5-rc.1@sha256:0ae0fe51989a85db6e653f26ad1d3bd52091f6857e799507fc601e59cad0ef50",
KONA_NODE: "ghcr.io/op-rs/kona/kona-node:1.0.0-rc.1",
HILDR: "ghcr.io/optimism-java/hildr:v0.4.5",
# Batching
Expand Down
12 changes: 10 additions & 2 deletions src/util.star
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
constants = import_module("./package_io/constants.star")
_net = import_module("./util/net.star")

DEPLOYMENT_UTILS_IMAGE = "mslipper/deployment-utils@sha256:4506b112e4261014329152b161997129e7ca577f39c85e59cfdfdcb47ab7b5cf"

Expand Down Expand Up @@ -124,13 +125,20 @@ def make_service_ws_url(service, port_id=constants.WS_PORT_ID):

def make_execution_engine_url(el_context):
return make_http_url(
el_context.ip_addr,
el_context.service_name,
el_context.engine_rpc_port_num,
)


def make_execution_rpc_url(el_context):
return make_http_url(
el_context.ip_addr,
el_context.service_name,
el_context.rpc_port_num,
)


def make_cl_beacon_url(cl_context):
return make_http_url(
cl_context.beacon_service_name,
cl_context.http_port,
)
1 change: 1 addition & 0 deletions test/cl/launcher_test.star
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ _default_el_context = struct(
ip_addr="0.0.0.0",
engine_rpc_port_num=8888,
rpc_port_num=9999,
service_name="0.0.0.0",
)
_default_cl_contexts = [struct(enr="enr.001"), struct(enr="enr.002")]

Expand Down
18 changes: 9 additions & 9 deletions test/l2/participant/input_parser_test.star
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def test_l2_participant_input_parser_defaults(plan):
sequencer="node0",
cl=struct(
type="op-node",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.4",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.5-rc.1@sha256:0ae0fe51989a85db6e653f26ad1d3bd52091f6857e799507fc601e59cad0ef50",
name="node0",
service_name="op-cl-1000-node0-op-node",
labels={
Expand All @@ -87,7 +87,7 @@ def test_l2_participant_input_parser_defaults(plan):
cl_builder=struct(
name="node0",
type="op-node",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.4",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.5-rc.1@sha256:0ae0fe51989a85db6e653f26ad1d3bd52091f6857e799507fc601e59cad0ef50",
service_name="op-clbuilder-1000-node0-op-node",
labels={
"op.kind": "clbuilder",
Expand All @@ -110,7 +110,7 @@ def test_l2_participant_input_parser_defaults(plan):
name="node0",
type="op-geth",
service_name="op-el-1000-node0-op-geth",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1-rc.1@sha256:796b5bb67ff5986ea8b280914447ae8e3fedc9b167f5a65c366ea99c5839903e",
labels={
"op.kind": "el",
"op.network.id": "1000",
Expand All @@ -134,8 +134,9 @@ def test_l2_participant_input_parser_defaults(plan):
el_builder=struct(
name="node0",
type="op-geth",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1-rc.1@sha256:796b5bb67ff5986ea8b280914447ae8e3fedc9b167f5a65c366ea99c5839903e",
service_name="op-elbuilder-1000-node0-op-geth",
key=None,
labels={
"op.kind": "elbuilder",
"op.network.id": "1000",
Expand All @@ -157,7 +158,6 @@ def test_l2_participant_input_parser_defaults(plan):
number=1111, application_protocol="ws"
),
},
key=None,
flashblocks_ms_per_slot=250,
**_shared_defaults,
),
Expand All @@ -170,7 +170,7 @@ def test_l2_participant_input_parser_defaults(plan):
cl=struct(
name="node1",
type="op-node",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.4",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.5-rc.1@sha256:0ae0fe51989a85db6e653f26ad1d3bd52091f6857e799507fc601e59cad0ef50",
service_name="op-cl-1000-node1-op-node",
labels={
"op.kind": "cl",
Expand All @@ -192,7 +192,7 @@ def test_l2_participant_input_parser_defaults(plan):
cl_builder=struct(
name="node1",
type="op-node",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.4",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.5-rc.1@sha256:0ae0fe51989a85db6e653f26ad1d3bd52091f6857e799507fc601e59cad0ef50",
service_name="op-clbuilder-1000-node1-op-node",
labels={
"op.kind": "clbuilder",
Expand All @@ -214,8 +214,8 @@ def test_l2_participant_input_parser_defaults(plan):
el=struct(
name="node1",
type="op-geth",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1",
service_name="op-el-1000-node1-op-geth",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1-rc.1@sha256:796b5bb67ff5986ea8b280914447ae8e3fedc9b167f5a65c366ea99c5839903e",
labels={
"op.kind": "el",
"op.network.id": "1000",
Expand All @@ -239,7 +239,7 @@ def test_l2_participant_input_parser_defaults(plan):
el_builder=struct(
name="node1",
type="op-geth",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1",
image="us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1-rc.1@sha256:796b5bb67ff5986ea8b280914447ae8e3fedc9b167f5a65c366ea99c5839903e",
service_name="op-elbuilder-1000-node1-op-geth",
labels={
"op.kind": "elbuilder",
Expand Down
10 changes: 8 additions & 2 deletions test/mev/input_parser_test.star
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ def test_mev_input_parser_default_args(plan):
type="rollup-boost",
builder_host=None,
builder_port=None,
builder_timeout="1000",
l2_timeout="1000",
service_name="op-mev-rollup-boost-1000-my-l2-node0",
labels={
"op.kind": "mev",
Expand All @@ -62,7 +64,8 @@ def test_mev_input_parser_default_args(plan):
"op.mev.type": "rollup-boost",
},
ports={
_net.RPC_PORT_NAME: _net.port(number=8541),
_net.RPC_PORT_NAME: _net.port(number=8551),
_net.WS_PORT_NAME: _net.port(number=1112, application_protocol="ws"),
},
)

Expand Down Expand Up @@ -139,6 +142,8 @@ def test_mev_input_parser_custom_params(plan):
type="rollup-boost",
builder_host="localhost",
builder_port=8080,
builder_timeout="1000",
l2_timeout="1000",
service_name="op-mev-rollup-boost-1000-my-l2-node0",
labels={
"op.kind": "mev",
Expand All @@ -148,7 +153,8 @@ def test_mev_input_parser_custom_params(plan):
"op.mev.type": "rollup-boost",
},
ports={
_net.RPC_PORT_NAME: _net.port(number=8541),
_net.RPC_PORT_NAME: _net.port(number=8551),
_net.WS_PORT_NAME: _net.port(number=1112, application_protocol="ws"),
},
),
)
Expand Down
4 changes: 2 additions & 2 deletions test/package_io/registry_test.star
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
registry = import_module("/src/package_io/registry.star")

DEFAULT_OP_GETH = "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1"
DEFAULT_OP_NODE = "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.4"
DEFAULT_OP_GETH = "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101511.1-rc.1@sha256:796b5bb67ff5986ea8b280914447ae8e3fedc9b167f5a65c366ea99c5839903e"
DEFAULT_OP_NODE = "us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.5-rc.1@sha256:0ae0fe51989a85db6e653f26ad1d3bd52091f6857e799507fc601e59cad0ef50"


def test_registry_default_images(_plan):
Expand Down
Loading