Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 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
54 changes: 33 additions & 21 deletions .github/tests/bpo.yaml
Original file line number Diff line number Diff line change
@@ -1,37 +1,50 @@
participants_matrix:
el:
- el_type: nethermind
el_image: ethpandaops/nethermind:feature-peerdas
- el_type: reth
el_image: ethpandaops/reth:rkrasiuk-peerdas
# - el_type: nethermind
# el_image: ethpandaops/nethermind:feature-peerdas
# - el_type: reth
# el_image: ethpandaops/reth:rkrasiuk-peerdas
- el_type: geth
el_image: ethpandaops/geth:peerdas-devnet-7
el_image: ethpandaops/geth:fusaka-devnet-0
cl:
- cl_type: teku
cl_image: ethpandaops/teku:das
supernode: true
- cl_type: nimbus
cl_image: ethpandaops/nimbus-eth2:gbv2
supernode: true
# - cl_type: teku
# cl_image: ethpandaops/teku:das
# supernode: true
# - cl_type: nimbus
# cl_image: ethpandaops/nimbus-eth2:gbv2
# supernode: true
- cl_type: grandine
cl_image: ethpandaops/grandine:hangleang-peerdas-devnet-7
cl_image: ethpandaops/grandine:add-bpo-blob-schedule
supernode: true
cl_extra_env_vars: {"RUST_MIN_STACK": "5242880"}
- cl_type: prysm
cl_image: ethpandaops/prysm-beacon-chain:peerDAS
supernode: true
- cl_type: lighthouse
cl_image: ethpandaops/lighthouse:peerdas-devnet-7
supernode: true
# - cl_type: prysm
# cl_image: ethpandaops/prysm-beacon-chain:peerDAS
# supernode: true
# - cl_type: lighthouse
# cl_image: ethpandaops/lighthouse:peerdas-devnet-7
# supernode: true
- cl_type: lodestar
cl_image: ethpandaops/lodestar:peerDAS
supernode: true
cl_image: ethpandaops/lodestar:nc-BPO
# supernode: true

network_params:
fulu_fork_epoch: 1
bpo_1_epoch: 1
bpo_1_max_blobs: 9
bpo_1_target_blobs: 6
bpo_2_epoch: 2
bpo_2_max_blobs: 18
bpo_2_target_blobs: 12
bpo_3_epoch: 3
bpo_3_max_blobs: 9
bpo_3_target_blobs: 6
bpo_4_epoch: 4
bpo_4_max_blobs: 18
bpo_4_target_blobs: 12
bpo_5_epoch: 5
bpo_5_max_blobs: 9
bpo_5_target_blobs: 6

additional_services:
- dora
- spamoor
Expand All @@ -46,4 +59,3 @@ spamoor_params:
- scenario: blobs
config:
throughput: 20

18 changes: 18 additions & 0 deletions .github/tests/mix-public.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,21 @@ port_publisher:
mev:
enabled: true
public_port_start: 45000
other:
enabled: true
public_port_start: 46000
additional_services:
- tx_fuzz
- forkmon
- dora
- prometheus_grafana
- custom_flood
- blobscan
- dugtrio
- blutgang
- apache
- tracoor
- spamoor
ethereum_metrics_exporter_enabled: true
snooper_enabled: true
keymanager_enabled: true
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1100,6 +1100,14 @@ port_publisher:
mev:
enabled: false
public_port_start: 37000

# Other public port exposed to your local machine (like ethereum metrics exporter, snooper)
# Disabled by default
# Public port start defaults to 38000
# You can't run multiple enclaves on the same port settings
other:
enabled: false
public_port_start: 38000
```

#### Example configurations
Expand Down
5 changes: 3 additions & 2 deletions main.star
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,7 @@ def run(plan, args={}):
elif additional_service == "prometheus_grafana":
# Allow prometheus to be launched last so is able to collect metrics from other services
launch_prometheus_grafana = True
prometheus_grafana_index = index
elif additional_service == "assertoor":
plan.print("Launching assertoor")
assertoor_config_template = read_file(
Expand Down Expand Up @@ -705,7 +706,7 @@ def run(plan, args={}):
global_node_selectors,
args_with_right_defaults.prometheus_params,
args_with_right_defaults.port_publisher,
index,
prometheus_grafana_index,
)
plan.print("Launching grafana...")
grafana.launch_grafana(
Expand All @@ -716,7 +717,7 @@ def run(plan, args={}):
global_node_selectors,
args_with_right_defaults.grafana_params,
args_with_right_defaults.port_publisher,
index + 1,
prometheus_grafana_index,
)
plan.print("Successfully launched grafana")

Expand Down
5 changes: 5 additions & 0 deletions src/cl/cl_launcher.star
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ def launch(
validator_data,
prysm_password_relative_filepath,
prysm_password_artifact_uuid,
global_other_index,
):
plan.print("Launching CL network")

Expand Down Expand Up @@ -130,8 +131,11 @@ def launch(
snooper_service_name,
el_context,
node_selectors,
args_with_right_defaults.port_publisher,
global_other_index,
args_with_right_defaults.docker_cache_params,
)
global_other_index += 1
plan.print(
"Successfully added {0} snooper participants".format(
snooper_engine_context
Expand Down Expand Up @@ -214,4 +218,5 @@ def launch(
all_cl_contexts,
all_snooper_engine_contexts,
preregistered_validator_keys_for_nodes,
global_other_index,
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ static_files = import_module("../static_files/static_files.star")
ethereum_metrics_exporter_context = import_module(
"../ethereum_metrics_exporter/ethereum_metrics_exporter_context.star"
)

HTTP_PORT_ID = "http"
METRICS_PORT_NUMBER = 9090

Expand All @@ -23,8 +22,17 @@ def launch(
el_context,
cl_context,
node_selectors,
port_publisher,
global_other_index,
docker_cache_params,
):
public_ports = shared_utils.get_other_public_port(
port_publisher,
HTTP_PORT_ID,
global_other_index,
0,
)

exporter_service = plan.add_service(
ethereum_metrics_exporter_service_name,
ServiceConfig(
Expand All @@ -39,6 +47,7 @@ def launch(
shared_utils.HTTP_APPLICATION_PROTOCOL,
)
},
public_ports=public_ports,
cmd=[
"--metrics-port",
str(METRICS_PORT_NUMBER),
Expand Down
4 changes: 2 additions & 2 deletions src/grafana/grafana_launcher.star
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,9 @@ def launch_grafana(

public_ports = shared_utils.get_additional_service_standard_public_port(
port_publisher,
constants.HTTP_PORT_ID,
HTTP_PORT_ID,
index,
0,
1,
)

config = get_config(
Expand Down
5 changes: 5 additions & 0 deletions src/package_io/input_parser.star
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,10 @@ def input_parser(plan, input_args):
]["public_port_start"],
mev_enabled=result["port_publisher"]["mev"]["enabled"],
mev_public_port_start=result["port_publisher"]["mev"]["public_port_start"],
other_enabled=result["port_publisher"]["other"]["enabled"],
other_public_port_start=result["port_publisher"]["other"][
"public_port_start"
],
),
)

Expand Down Expand Up @@ -1363,6 +1367,7 @@ def get_port_publisher_params(parameter_type, input_args=None):
"remote_signer": {"enabled": False, "public_port_start": 35000},
"additional_services": {"enabled": False, "public_port_start": 36000},
"mev": {"enabled": False, "public_port_start": 37000},
"other": {"enabled": False, "public_port_start": 38000},
}
if parameter_type == "default":
return port_publisher_parameters
Expand Down
1 change: 1 addition & 0 deletions src/package_io/sanity_check.star
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,7 @@ SUBCATEGORY_PARAMS = {
"remote_signer",
"additional_services",
"mev",
"other",
],
}

Expand Down
9 changes: 9 additions & 0 deletions src/participant_network.star
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def launch_participant_network(
num_participants = len(args_with_right_defaults.participants)
total_number_of_validator_keys = 0
latest_block = ""
global_other_index = 0
if (
network_params.network == constants.NETWORK_NAME.kurtosis
or constants.NETWORK_NAME.shadowfork in network_params.network
Expand Down Expand Up @@ -160,6 +161,7 @@ def launch_participant_network(
all_cl_contexts,
all_snooper_engine_contexts,
preregistered_validator_keys_for_nodes,
global_other_index,
) = cl_client_launcher.launch(
plan,
network_params,
Expand All @@ -175,6 +177,7 @@ def launch_participant_network(
validator_data,
prysm_password_relative_filepath,
prysm_password_artifact_uuid,
global_other_index,
)

ethereum_metrics_exporter_context = None
Expand Down Expand Up @@ -224,8 +227,11 @@ def launch_participant_network(
el_context,
cl_context,
node_selectors,
args_with_right_defaults.port_publisher,
global_other_index,
args_with_right_defaults.docker_cache_params,
)
global_other_index += 1
plan.print(
"Successfully added {0} ethereum metrics exporter participants".format(
ethereum_metrics_exporter_context
Expand Down Expand Up @@ -303,8 +309,11 @@ def launch_participant_network(
snooper_service_name,
cl_context,
node_selectors,
args_with_right_defaults.port_publisher,
global_other_index,
args_with_right_defaults.docker_cache_params,
)
global_other_index += 1
plan.print(
"Successfully added {0} snooper participants".format(
snooper_beacon_context
Expand Down
19 changes: 19 additions & 0 deletions src/shared_utils/shared_utils.star
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ MAX_PORTS_PER_VC_NODE = 3
MAX_PORTS_PER_REMOTE_SIGNER_NODE = 2
MAX_PORTS_PER_ADDITIONAL_SERVICE = 2
MAX_PORTS_PER_MEV_NODE = 2
MAX_PORTS_PER_OTHER_NODE = 1


def new_template_and_data(template, template_data_json):
Expand Down Expand Up @@ -253,6 +254,12 @@ def get_public_ports_for_component(
MAX_PORTS_PER_MEV_NODE,
participant_index,
)
elif component == "other":
public_port_range = __get_port_range(
port_publisher_params.other_public_port_start,
MAX_PORTS_PER_OTHER_NODE,
participant_index,
)
return [port for port in range(public_port_range[0], public_port_range[1], 1)]


Expand Down Expand Up @@ -321,6 +328,18 @@ def get_mev_public_port(port_publisher, port_id, additional_service_index, port_
return public_ports


def get_other_public_port(
port_publisher, port_id, additional_service_index, port_index
):
public_ports = {}
if port_publisher.other_enabled:
public_ports_for_component = get_public_ports_for_component(
"other", port_publisher, additional_service_index
)
public_ports = get_port_specs({port_id: public_ports_for_component[port_index]})
return public_ports


def get_cpu_mem_resource_limits(
min_cpu, max_cpu, min_mem, max_mem, volume_size, network_name, client_type
):
Expand Down
12 changes: 12 additions & 0 deletions src/snooper/snooper_beacon_launcher.star
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,25 @@ def launch(
service_name,
cl_context,
node_selectors,
port_publisher,
global_other_index,
docker_cache_params,
):
snooper_service_name = "{0}".format(service_name)

public_ports = shared_utils.get_other_public_port(
port_publisher,
SNOOPER_BEACON_RPC_PORT_ID,
global_other_index,
0,
)

snooper_config = get_config(
service_name,
cl_context,
node_selectors,
docker_cache_params,
public_ports,
)

snooper_service = plan.add_service(snooper_service_name, snooper_config)
Expand All @@ -49,6 +59,7 @@ def get_config(
cl_context,
node_selectors,
docker_cache_params,
public_ports,
):
beacon_rpc_port_num = "{0}".format(
cl_context.beacon_http_url,
Expand All @@ -65,6 +76,7 @@ def get_config(
docker_cache_params, constants.DEFAULT_SNOOPER_IMAGE
),
ports=SNOOPER_USED_PORTS,
public_ports=public_ports,
cmd=cmd,
min_cpu=MIN_CPU,
max_cpu=MAX_CPU,
Expand Down
Loading