Skip to content

Commit d3a0024

Browse files
authored
feat: Replacing mock builder (ethereum#864)
1 parent 04e13f3 commit d3a0024

File tree

7 files changed

+69
-22
lines changed

7 files changed

+69
-22
lines changed

.github/tests/mev-mock.yaml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
participants:
22
- el_type: geth
33
cl_type: lighthouse
4-
network_params:
5-
seconds_per_slot: 3
4+
count: 3
65
mev_type: mock
6+
additional_services:
7+
- dora
8+
- spamoor_blob
9+
- tx_spammer
10+
mev_params:
11+
mock_mev_image: "ethpandaops/rustic-builder:main"
Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,43 @@
1-
participants:
2-
- el_type: besu
3-
el_image: ethpandaops/besu:24.12-develop-b143a56
4-
cl_type: teku
5-
cl_image: consensys/teku:develop
6-
el_log_level: "debug"
7-
count: 3
1+
participants_matrix:
2+
el:
3+
- el_type: geth
4+
el_image: ethpandaops/geth:prague-devnet-5-a193537
5+
- el_type: reth
6+
el_image: ethpandaops/reth:devnet5-766390d
7+
- el_type: besu
8+
el_image: ethpandaops/besu:pectra-devnet-5-interop-cb1357e
9+
cl:
10+
- cl_type: teku
11+
cl_image: consensys/teku:develop
12+
- cl_type: nimbus
13+
cl_image: ethpandaops/nimbus-eth2:unstable-fb1c3ba
14+
- cl_type: lodestar
15+
cl_image: ethpandaops/lodestar:devnet-5-1c2b5ed
16+
- cl_type: grandine
17+
cl_image: ethpandaops/grandine:devnet5-db2c98f
18+
- cl_type: prysm
19+
cl_image: ethpandaops/prysm-beacon-chain:devnet5-ae44429
20+
vc_image: ethpandaops/prysm-validator:devnet5-ae44429
21+
822
network_params:
923
electra_fork_epoch: 1
1024
min_validator_withdrawability_delay: 1
1125
shard_committee_period: 1
1226
churn_limit_quotient: 16
13-
num_validator_keys_per_node: 256
27+
genesis_delay: 240
1428
additional_services:
1529
- dora
1630
- spamoor_blob
1731
- tx_spammer
32+
- assertoor
1833
dora_params:
1934
image: "ethpandaops/dora:master-latest"
20-
snooper_enabled: true
2135
spamoor_blob_params:
2236
throughput: 10
2337
max_blobs: 2
24-
max_pending: 40
38+
max_pending: 40
39+
40+
assertoor_params:
41+
image: "ethpandaops/assertoor:master"
42+
tests:
43+
- file: https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/pectra-dev/kurtosis/all.yaml

main.star

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,10 @@ def run(plan, args={}):
254254
plan,
255255
el_uri,
256256
beacon_uri,
257-
raw_jwt_secret,
257+
jwt_file,
258258
args_with_right_defaults.global_log_level,
259259
global_node_selectors,
260+
args_with_right_defaults.mev_params,
260261
)
261262
mev_endpoints.append(endpoint)
262263
mev_endpoint_names.append(constants.MOCK_MEV_TYPE)

src/mev/flashbots/mock_mev/mock_mev_launcher.star

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
constants = import_module("../../../package_io/constants.star")
22

3-
MOCK_MEV_IMAGE = "ethpandaops/mock-builder:latest"
3+
# Default image if none specified in mev_params
4+
45
MOCK_MEV_SERVICE_NAME = "mock-mev"
5-
MOCK_MEV_BUILDER_PORT = 18550
6+
MOCK_MEV_BUILDER_PORT = 8560
67

7-
# The min/max CPU/memory that mev-mock-builder can use
8+
# The min/max CPU/memory that rustic-builder can use
89
MIN_CPU = 100
910
MAX_CPU = 1000
1011
MIN_MEMORY = 128
@@ -15,26 +16,33 @@ def launch_mock_mev(
1516
plan,
1617
el_uri,
1718
beacon_uri,
18-
jwt_secret,
19+
jwt_file,
1920
global_log_level,
2021
global_node_selectors,
22+
mev_params,
2123
):
2224
mock_builder = plan.add_service(
2325
name=MOCK_MEV_SERVICE_NAME,
2426
config=ServiceConfig(
25-
image=MOCK_MEV_IMAGE,
27+
image=mev_params.mock_mev_image,
2628
ports={
2729
"rest": PortSpec(
2830
number=MOCK_MEV_BUILDER_PORT, transport_protocol="TCP"
2931
),
3032
},
3133
cmd=[
32-
"--jwt-secret={0}".format(jwt_secret),
33-
"--el={0}".format(el_uri),
34-
"--cl={0}".format(beacon_uri),
35-
"--bid-multiplier=5", # TODO: This could be customizable
34+
"--execution-endpoint=http://{0}".format(el_uri),
35+
"--beacon-node=http://{0}".format(beacon_uri),
36+
"--jwt-secret=" + constants.JWT_MOUNT_PATH_ON_CONTAINER,
37+
"--port={0}".format(MOCK_MEV_BUILDER_PORT),
38+
"--address=0.0.0.0",
39+
"--set-max-bid-value",
3640
"--log-level={0}".format(global_log_level),
41+
"--builder-secret-key=" + constants.DEFAULT_MEV_SECRET_KEY[2:],
3742
],
43+
files={
44+
constants.JWT_MOUNTPOINT_ON_CLIENTS: jwt_file,
45+
},
3846
min_cpu=MIN_CPU,
3947
max_cpu=MAX_CPU,
4048
min_memory=MIN_MEMORY,

src/package_io/constants.star

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ DEFAULT_FLASHBOTS_MEV_BOOST_IMAGE = "flashbots/mev-boost"
9797
DEFAULT_MEV_RS_IMAGE = "ethpandaops/mev-rs:main"
9898
DEFAULT_MEV_RS_IMAGE_MINIMAL = "ethpandaops/mev-rs:main-minimal"
9999
DEFAULT_COMMIT_BOOST_MEV_BOOST_IMAGE = "ghcr.io/commit-boost/pbs:latest"
100+
DEFAULT_MOCK_MEV_IMAGE = "ethpandaops/rustic-builder:main"
100101
DEFAULT_MEV_PUBKEY = "0xa55c1285d84ba83a5ad26420cd5ad3091e49c55a813eee651cd467db38a8c8e63192f47955e9376f6b42f6d190571cb5"
101102
DEFAULT_MEV_SECRET_KEY = (
102103
"0x607a11b45a7219cc61a3d9c5fd08c7eebd602a6a19a977f8d3771d5711a550f2"

src/package_io/input_parser.star

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@ def input_parser(plan, input_args):
380380
mev_flood_seconds_per_bundle=result["mev_params"][
381381
"mev_flood_seconds_per_bundle"
382382
],
383+
mock_mev_image=result["mev_params"]["mock_mev_image"],
383384
)
384385
if result["mev_params"]
385386
else None,
@@ -1109,9 +1110,16 @@ def get_default_mev_params(mev_type, preset):
11091110
"0x436F6D6D69742D426F6F737420F09F93BB" # Commit-Boost 📻
11101111
)
11111112

1113+
if mev_type == constants.MOCK_MEV_TYPE:
1114+
mev_builder_image = constants.DEFAULT_MOCK_MEV_IMAGE
1115+
mev_boost_image = constants.DEFAULT_FLASHBOTS_MEV_BOOST_IMAGE
1116+
11121117
return {
11131118
"mev_relay_image": mev_relay_image,
11141119
"mev_builder_image": mev_builder_image,
1120+
"mock_mev_image": mev_builder_image
1121+
if mev_type == constants.MOCK_MEV_TYPE
1122+
else None,
11151123
"mev_builder_cl_image": mev_builder_cl_image,
11161124
"mev_builder_extra_data": mev_builder_extra_data,
11171125
"mev_builder_extra_args": mev_builder_extra_args,
@@ -1364,6 +1372,10 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
13641372
}
13651373
)
13661374
parsed_arguments_dict["participants"].append(mev_participant)
1375+
if mev_type == constants.MOCK_MEV_TYPE:
1376+
parsed_arguments_dict["mev_params"]["mock_mev_image"] = parsed_arguments_dict[
1377+
"mev_params"
1378+
]["mock_mev_image"]
13671379
return parsed_arguments_dict
13681380

13691381

src/package_io/sanity_check.star

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ SUBCATEGORY_PARAMS = {
235235
"mev_flood_extra_args",
236236
"mev_flood_seconds_per_bundle",
237237
"custom_flood_params",
238+
"mock_mev_image",
238239
],
239240
"xatu_sentry_params": [
240241
"xatu_sentry_image",

0 commit comments

Comments
 (0)