Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
17 changes: 17 additions & 0 deletions main.star
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ get_prefunded_accounts = import_module(
"./src/prefunded_accounts/get_prefunded_accounts.star"
)
spamoor = import_module("./src/spamoor/spamoor.star")
slashoor = import_module("./src/slashoor/slashoor_launcher.star")
ews = import_module("./src/ews/ews_launcher.star")

GRAFANA_USER = "admin"
Expand Down Expand Up @@ -968,6 +969,22 @@ def run(plan, args={}):
index,
osaka_time,
)
plan.print("Successfully launched spamoor")
elif additional_service == "slashoor":
plan.print("Launching slashoor")
slashoor_config_template = read_file(
static_files.SLASHOOR_CONFIG_TEMPLATE_FILEPATH
)
slashoor.launch_slashoor(
plan,
slashoor_config_template,
all_participants,
args_with_right_defaults.participants,
args_with_right_defaults.slashoor_params,
global_node_selectors,
global_tolerations,
)
plan.print("Successfully launched slashoor")
elif additional_service == "ews":
plan.print("Launching execution-witness-sentry")
ews_config_template = read_file(static_files.EWS_CONFIG_TEMPLATE_FILEPATH)
Expand Down
1 change: 1 addition & 0 deletions src/package_io/constants.star
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ HELIX_MEV_TYPE = "helix"
DEFAULT_DORA_IMAGE = "ethpandaops/dora:latest"
DEFAULT_CHECKPOINTZ_IMAGE = "ethpandaops/checkpointz:latest"
DEFAULT_SPAMOOR_IMAGE = "ethpandaops/spamoor:latest"
DEFAULT_SLASHOOR_IMAGE = "ethpandaops/slashoor:master"
DEFAULT_ASSERTOOR_IMAGE = "ethpandaops/assertoor:latest"
DEFAULT_SNOOPER_IMAGE = "ethpandaops/rpc-snooper:latest"
DEFAULT_BOOTNODOOR_IMAGE = "ethpandaops/bootnodoor:latest"
Expand Down
23 changes: 23 additions & 0 deletions src/package_io/input_parser.star
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ ATTR_TO_BE_SKIPPED_AT_ROOT = (
"xatu_sentry_params",
"port_publisher",
"spamoor_params",
"slashoor_params",
"bootnodoor_params",
"mempool_bridge_params",
"ews_params",
Expand Down Expand Up @@ -127,6 +128,7 @@ def input_parser(plan, input_args):
result["global_node_selectors"] = {}
result["port_publisher"] = get_port_publisher_params("default")
result["spamoor_params"] = get_default_spamoor_params()
result["slashoor_params"] = get_default_slashoor_params()
result["mempool_bridge_params"] = get_default_mempool_bridge_params()
result["ews_params"] = get_default_ews_params()

Expand Down Expand Up @@ -202,6 +204,10 @@ def input_parser(plan, input_args):
for sub_attr in input_args["spamoor_params"]:
sub_value = input_args["spamoor_params"][sub_attr]
result["spamoor_params"][sub_attr] = sub_value
elif attr == "slashoor_params":
for sub_attr in input_args["slashoor_params"]:
sub_value = input_args["slashoor_params"][sub_attr]
result["slashoor_params"][sub_attr] = sub_value
elif attr == "mempool_bridge_params":
for sub_attr in input_args["mempool_bridge_params"]:
sub_value = input_args["mempool_bridge_params"][sub_attr]
Expand Down Expand Up @@ -1863,6 +1869,23 @@ def get_default_spamoor_params():
}


def get_default_slashoor_params():
return {
"image": constants.DEFAULT_SLASHOOR_IMAGE,
"min_cpu": 100,
"max_cpu": 1000,
"min_mem": 128,
"max_mem": 512,
"extra_args": [],
"log_level": "info",
"beacon_timeout": "30s",
"max_epochs_to_keep": 54000,
"detector_enabled": True,
"submitter_enabled": True,
"submitter_dry_run": False,
}


def get_default_custom_flood_params():
# this is a simple script that increases the balance of the coinbase address at a cadence
return {"interval_between_transactions": 1}
Expand Down
100 changes: 100 additions & 0 deletions src/slashoor/slashoor_launcher.star
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
shared_utils = import_module("../shared_utils/shared_utils.star")
constants = import_module("../package_io/constants.star")

SERVICE_NAME = "slashoor"

SLASHOOR_CONFIG_FILENAME = "config.yaml"
SLASHOOR_CONFIG_MOUNT_DIRPATH_ON_SERVICE = "/config"


def launch_slashoor(
plan,
config_template,
participant_contexts,
participant_configs,
slashoor_params,
global_node_selectors,
global_tolerations,
):
tolerations = shared_utils.get_tolerations(global_tolerations=global_tolerations)

beacon_endpoints = []
for index, participant in enumerate(participant_contexts):
beacon_http_url = participant.cl_context.beacon_http_url
beacon_endpoints.append(beacon_http_url)

template_data = new_config_template_data(
beacon_endpoints,
slashoor_params,
)

template_and_data = shared_utils.new_template_and_data(
config_template, template_data
)
template_and_data_by_rel_dest_filepath = {
SLASHOOR_CONFIG_FILENAME: template_and_data,
}

config_files_artifact_name = plan.render_templates(
template_and_data_by_rel_dest_filepath, "slashoor-config"
)

config = get_config(
plan,
config_files_artifact_name,
slashoor_params,
global_node_selectors,
tolerations,
)
plan.add_service(SERVICE_NAME, config)


def get_config(
plan,
config_files_artifact_name,
slashoor_params,
node_selectors,
tolerations,
):
config_file_path = shared_utils.path_join(
SLASHOOR_CONFIG_MOUNT_DIRPATH_ON_SERVICE,
SLASHOOR_CONFIG_FILENAME,
)

cmd = [
"--config={}".format(config_file_path),
]

if slashoor_params.log_level:
cmd.append("--log-level={}".format(slashoor_params.log_level))

for extra_arg in slashoor_params.extra_args:
cmd.append(extra_arg)

return ServiceConfig(
image=slashoor_params.image,
cmd=cmd,
min_cpu=slashoor_params.min_cpu,
max_cpu=slashoor_params.max_cpu,
min_memory=slashoor_params.min_mem,
max_memory=slashoor_params.max_mem,
node_selectors=node_selectors,
tolerations=tolerations,
files={
SLASHOOR_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_files_artifact_name,
},
)


def new_config_template_data(
beacon_endpoints,
slashoor_params,
):
return {
"BeaconEndpoints": beacon_endpoints,
"BeaconTimeout": slashoor_params.beacon_timeout,
"MaxEpochsToKeep": slashoor_params.max_epochs_to_keep,
"DetectorEnabled": slashoor_params.detector_enabled,
"SubmitterEnabled": slashoor_params.submitter_enabled,
"SubmitterDryRun": slashoor_params.submitter_dry_run,
}
16 changes: 16 additions & 0 deletions src/static_files/slashoor-config/config.yaml.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
beacon:
endpoints:
{{- range .BeaconEndpoints }}
- "{{ . }}"
{{- end }}
timeout: {{ .BeaconTimeout }}

indexer:
max_epochs_to_keep: {{ .MaxEpochsToKeep }}

detector:
enabled: {{ .DetectorEnabled }}

submitter:
enabled: {{ .SubmitterEnabled }}
dry_run: {{ .SubmitterDryRun }}
6 changes: 6 additions & 0 deletions src/static_files/static_files.star
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,12 @@ SPAMOOR_HOSTS_TEMPLATE_FILEPATH = (
STATIC_FILES_DIRPATH + SPAMOOR_CONFIG_DIRPATH + "/rpc-hosts.txt.tmpl"
)

# slashoor config
SLASHOOR_CONFIG_DIRPATH = "/slashoor-config"
SLASHOOR_CONFIG_TEMPLATE_FILEPATH = (
STATIC_FILES_DIRPATH + SLASHOOR_CONFIG_DIRPATH + "/config.yaml.tmpl"
)

# xatu-sentry config
XATU_SENTRY_CONFIG_DIRPATH = "/xatu-sentry-config"
XATU_SENTRY_CONFIG_TEMPLATE_FILEPATH = (
Expand Down
Loading