Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
ethereum-package
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
ethereum-package
Commits
485ac616
Commit
485ac616
authored
Dec 28, 2024
by
luxq
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add bunnyfinder launch
parent
808e4672
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
220 additions
and
0 deletions
+220
-0
main.star
main.star
+15
-0
bunnyfinder_launcher.star
src/bunnyfinder/bunnyfinder_launcher.star
+103
-0
input_parser.star
src/package_io/input_parser.star
+18
-0
sanity_check.star
src/package_io/sanity_check.star
+4
-0
static_files.star
src/static_files/static_files.star
+6
-0
config.yaml.tmpl
static_files/bunnyfinder-config/config.yaml.tmpl
+74
-0
No files found.
main.star
View file @
485ac616
...
@@ -62,6 +62,7 @@ get_prefunded_accounts = import_module(
...
@@ -62,6 +62,7 @@ get_prefunded_accounts = import_module(
"./src/prefunded_accounts/get_prefunded_accounts.star"
"./src/prefunded_accounts/get_prefunded_accounts.star"
)
)
spamoor = import_module("./src/spamoor/spamoor.star")
spamoor = import_module("./src/spamoor/spamoor.star")
bunnyfinder = import_module("./src/bunnyfinder/bunnyfinder_launcher.star")
GRAFANA_USER = "admin"
GRAFANA_USER = "admin"
GRAFANA_PASSWORD = "admin"
GRAFANA_PASSWORD = "admin"
...
@@ -696,6 +697,20 @@ def run(plan, args={}):
...
@@ -696,6 +697,20 @@ def run(plan, args={}):
args_with_right_defaults.spamoor_params,
args_with_right_defaults.spamoor_params,
global_node_selectors,
global_node_selectors,
)
)
elif additional_service == "bunnyfinder":
plan.print("Launching bunnyfinder")
bunnyfinder_config_template = read_file(
static_files.BUNNYFINDER_CONFIG_TEMPLATE_FILEPATH
)
bunnyfinder_params = args_with_right_defaults.bunnyfinder_params
bunnyfinder.launch_bunnyfinder(
plan,
bunnyfinder_config_template,
network_params,
bunnyfinder_params,
global_node_selectors,
)
plan.print("Successfully launched assertoor")
else:
else:
fail("Invalid additional service %s" % (additional_service))
fail("Invalid additional service %s" % (additional_service))
if launch_prometheus_grafana:
if launch_prometheus_grafana:
...
...
src/bunnyfinder/bunnyfinder_launcher.star
0 → 100644
View file @
485ac616
shared_utils = import_module("../shared_utils/shared_utils.star")
static_files = import_module("../static_files/static_files.star")
constants = import_module("../package_io/constants.star")
SERVICE_NAME = "bunnyfinder"
HTTP_PORT_ID = "http"
HTTP_PORT_NUMBER = 19000
SWAG_PORT_ID = "http"
SWAG_PORT_NUMBER = 19001
BUNNYFINDER_CONFIG_FILENAME = "bunnyfinder-config.yaml"
BUNNYFINDER_CONFIG_MOUNT_DIRPATH_ON_SERVICE = "/config"
BUNNYFINDER_TESTS_MOUNT_DIRPATH_ON_SERVICE = "/tests"
# The min/max CPU/memory that bunnyfinder can use
MIN_CPU = 100
MAX_CPU = 1000
MIN_MEMORY = 128
MAX_MEMORY = 2048
USED_PORTS = {
HTTP_PORT_ID: shared_utils.new_port_spec(
HTTP_PORT_NUMBER,
shared_utils.TCP_PROTOCOL,
shared_utils.HTTP_APPLICATION_PROTOCOL,
)
}
def launch_bunnyfinder(
plan,
config_template,
network_params,
bunnyfinder_params,
global_node_selectors,
):
template_data = new_config_template_data(
HTTP_PORT_NUMBER,
bunnyfinder_params,
)
template_and_data = shared_utils.new_template_and_data(
config_template, template_data
)
template_and_data_by_rel_dest_filepath = {}
template_and_data_by_rel_dest_filepath[
BUNNYFINDER_CONFIG_FILENAME
] = template_and_data
config_files_artifact_name = plan.render_templates(
template_and_data_by_rel_dest_filepath, "bunnyfinder-config"
)
config = get_config(
config_files_artifact_name,
network_params,
bunnyfinder_params,
global_node_selectors,
)
plan.add_service(SERVICE_NAME, config)
def get_config(
config_files_artifact_name,
network_params,
bunnyfinder_params,
node_selectors,
):
config_file_path = shared_utils.path_join(
BUNNYFINDER_CONFIG_MOUNT_DIRPATH_ON_SERVICE,
BUNNYFINDER_CONFIG_FILENAME,
)
IMAGE_NAME = bunnyfinder_params.image
return ServiceConfig(
image=IMAGE_NAME,
ports=USED_PORTS,
files={
BUNNYFINDER_CONFIG_MOUNT_DIRPATH_ON_SERVICE: config_files_artifact_name,
BUNNYFINDER_TESTS_MOUNT_DIRPATH_ON_SERVICE: tests_config_artifacts_name,
VALIDATOR_RANGES_MOUNT_DIRPATH_ON_SERVICE: VALIDATOR_RANGES_ARTIFACT_NAME,
},
cmd=["--config", config_file_path],
min_cpu=MIN_CPU,
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)
def new_config_template_data(
listen_port_num,
bunnyfinder_params,
):
strategy = bunnyfinder_params.strategy
return {
"ListenPortNum": listen_port_num,
"Strategy": strategy,
}
src/package_io/input_parser.star
View file @
485ac616
...
@@ -89,6 +89,7 @@ ATTR_TO_BE_SKIPPED_AT_ROOT = (
...
@@ -89,6 +89,7 @@ ATTR_TO_BE_SKIPPED_AT_ROOT = (
"xatu_sentry_params",
"xatu_sentry_params",
"port_publisher",
"port_publisher",
"spamoor_params",
"spamoor_params",
"bunnyfinder_params",
)
)
...
@@ -123,6 +124,7 @@ def input_parser(plan, input_args):
...
@@ -123,6 +124,7 @@ def input_parser(plan, input_args):
result["global_node_selectors"] = {}
result["global_node_selectors"] = {}
result["port_publisher"] = get_port_publisher_params("default")
result["port_publisher"] = get_port_publisher_params("default")
result["spamoor_params"] = get_default_spamoor_params()
result["spamoor_params"] = get_default_spamoor_params()
result["bunnyfinder_params"] = get_default_bunnyfinder_params()
if constants.NETWORK_NAME.shadowfork in result["network_params"]["network"]:
if constants.NETWORK_NAME.shadowfork in result["network_params"]["network"]:
shadow_base = result["network_params"]["network"].split("-shadowfork")[0]
shadow_base = result["network_params"]["network"].split("-shadowfork")[0]
...
@@ -192,6 +194,11 @@ def input_parser(plan, input_args):
...
@@ -192,6 +194,11 @@ def input_parser(plan, input_args):
for sub_attr in input_args["spamoor_params"]:
for sub_attr in input_args["spamoor_params"]:
sub_value = input_args["spamoor_params"][sub_attr]
sub_value = input_args["spamoor_params"][sub_attr]
result["spamoor_params"][sub_attr] = sub_value
result["spamoor_params"][sub_attr] = sub_value
elif attr == "bunnyfinder_params":
for sub_attr in input_args["bunnyfinder_params"]:
sub_value = input_args["bunnyfinder_params"][sub_attr]
result["bunnyfinder_params"][sub_attr] = sub_value
if result.get("disable_peer_scoring"):
if result.get("disable_peer_scoring"):
result = enrich_disable_peer_scoring(result)
result = enrich_disable_peer_scoring(result)
...
@@ -456,6 +463,10 @@ def input_parser(plan, input_args):
...
@@ -456,6 +463,10 @@ def input_parser(plan, input_args):
max_wallets=result["spamoor_params"]["max_wallets"],
max_wallets=result["spamoor_params"]["max_wallets"],
spamoor_extra_args=result["spamoor_params"]["spamoor_extra_args"],
spamoor_extra_args=result["spamoor_params"]["spamoor_extra_args"],
),
),
bunnyfinder_params=struct(
image=result["bunnyfinder_params"]["image"],
strategy=result["bunnyfinder_params"]["strategy"],
),
additional_services=result["additional_services"],
additional_services=result["additional_services"],
wait_for_finalization=result["wait_for_finalization"],
wait_for_finalization=result["wait_for_finalization"],
global_log_level=result["global_log_level"],
global_log_level=result["global_log_level"],
...
@@ -1192,6 +1203,12 @@ def get_default_spamoor_params():
...
@@ -1192,6 +1203,12 @@ def get_default_spamoor_params():
"spamoor_extra_args": [],
"spamoor_extra_args": [],
}
}
def get_default_bunnyfinder_params():
return {
"image": "tscel/bunnyfinder:latest",
"strategy": "random",
}
def get_default_custom_flood_params():
def get_default_custom_flood_params():
# this is a simple script that increases the balance of the coinbase address at a cadence
# this is a simple script that increases the balance of the coinbase address at a cadence
...
@@ -1389,6 +1406,7 @@ def docker_cache_image_override(plan, result):
...
@@ -1389,6 +1406,7 @@ def docker_cache_image_override(plan, result):
"prometheus_params.image",
"prometheus_params.image",
"grafana_params.image",
"grafana_params.image",
"spamoor_params.image",
"spamoor_params.image",
"bunnyfinder_params.image",
]
]
if result["docker_cache_params"]["url"] == "":
if result["docker_cache_params"]["url"] == "":
...
...
src/package_io/sanity_check.star
View file @
485ac616
...
@@ -254,6 +254,10 @@ SUBCATEGORY_PARAMS = {
...
@@ -254,6 +254,10 @@ SUBCATEGORY_PARAMS = {
"max_wallets",
"max_wallets",
"spamoor_extra_args",
"spamoor_extra_args",
],
],
"bunnyfinder_params": [
"image",
"strategy",
],
"port_publisher": [
"port_publisher": [
"nat_exit_ip",
"nat_exit_ip",
"el",
"el",
...
...
src/static_files/static_files.star
View file @
485ac616
...
@@ -104,3 +104,9 @@ FLASHBOTS_RBUILDER_CONFIG_FILEPATH = (
...
@@ -104,3 +104,9 @@ FLASHBOTS_RBUILDER_CONFIG_FILEPATH = (
COMMIT_BOOST_CONFIG_FILEPATH = (
COMMIT_BOOST_CONFIG_FILEPATH = (
STATIC_FILES_DIRPATH + "/mev/commit-boost/cb-config.toml.tmpl"
STATIC_FILES_DIRPATH + "/mev/commit-boost/cb-config.toml.tmpl"
)
)
# bunnyfinder config
BUNNYFINDER_CONFIG_DIRPATH = "/bunnyfinder-config"
BUNNYFINDER_CONFIG_TEMPLATE_FILEPATH = (
STATIC_FILES_DIRPATH + BUNNYFINDER_CONFIG_DIRPATH + "/config.yaml.tmpl"
)
static_files/bunnyfinder-config/config.yaml.tmpl
0 → 100644
View file @
485ac616
endpoints:
{{ range $client := .ClientInfo }}
- name: "{{ $client.Name }}"
consensusUrl: "{{ $client.CL_HTTP_URL }}"
executionUrl: "http://{{ $client.ELIPAddr }}:{{ $client.ELPortNum }}"
{{- if .ELSnooperEnabled }}
executionSnooperUrl: "{{ $client.ELSnooperUrl }}"
{{- end }}
{{- if .CLSnooperEnabled }}
consensusSnooperUrl: "{{ $client.CLSnooperUrl }}"
{{- end }}
{{- end }}
web:
server:
host: "0.0.0.0"
port: 8080
frontend:
enabled: true
debug: true
pprof: true
api:
enabled: true
database:
engine: "sqlite"
sqlite:
file: "/assertoor-database.sqlite"
validatorNames:
inventoryYaml: "/validator-ranges/validator-ranges.yaml"
globalVars:
walletPrivkey: "850643a0224065ecce3882673c21f56bcf6eef86274cc21cadff15930b59fc8c"
clientPairNames:
{{- range $client := .ClientInfo }}
- "{{ $client.Name }}"
{{- end }}
validatorPairNames: {{ if eq (len .ValidatorClientInfo) 0 }}[]{{ end }}
{{- range $client := .ValidatorClientInfo }}
- "{{ $client.Name }}"
{{- end }}
elSnooperClientPairNames: {{ if eq (len .ElSnooperClientInfo) 0 }}[]{{ end }}
{{- range $client := .ElSnooperClientInfo }}
- "{{ $client.Name }}"
{{- end }}
clSnooperClientPairNames: {{ if eq (len .ClSnooperClientInfo) 0 }}[]{{ end }}
{{- range $client := .ClSnooperClientInfo }}
- "{{ $client.Name }}"
{{- end }}
externalTests:
{{- if .RunStabilityCheck }}
- file: /tests/stability-check.yaml
{{- end }}
{{- if .RunBlockProposalCheck }}
- file: /tests/block-proposal-check.yaml
{{- end }}
{{- if .RunTransactionTest }}
- file: /tests/eoa-transactions-test.yaml
{{- end }}
{{- if .RunBlobTransactionTest }}
- file: /tests/blob-transactions-test.yaml
{{- end }}
{{- if .RunOpcodesTransactionTest }}
- file: /tests/all-opcodes-transaction-test.yaml
{{- end }}
{{- if .RunLifecycleTest }}
- file: /tests/validator-lifecycle-test.yaml
{{- end }}
{{- range $test := .AdditionalTests }}
- {{ $test }}
{{- end }}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment