Skip to content

Commit c2af143

Browse files
feat: add vero vc_type (ethereum#827)
Adds the Vero validator client as a supported `vc_type`. The Vero VC doesn't handle keys and requires a remote signer to be used (`use_remote_signer: true`). It can handle the minimal preset, as well as custom `seconds_per_slot` values. I've added the "Vero - Detailed" Grafana dashboard. I'm not sure if it's a good fit for this repo, let me know if you'd like me to remove it. --------- Co-authored-by: Barnabas Busa <[email protected]>
1 parent 2871703 commit c2af143

File tree

12 files changed

+5697
-6
lines changed

12 files changed

+5697
-6
lines changed

.github/tests/vero-all.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
participants:
2+
- el_type: besu
3+
cl_type: grandine
4+
use_separate_vc: true
5+
vc_type: vero
6+
use_remote_signer: true
7+
- el_type: erigon
8+
cl_type: lighthouse
9+
use_separate_vc: true
10+
vc_type: vero
11+
use_remote_signer: true
12+
- el_type: ethereumjs
13+
cl_type: lodestar
14+
use_separate_vc: true
15+
vc_type: vero
16+
use_remote_signer: true
17+
- el_type: geth
18+
cl_type: nimbus
19+
use_separate_vc: true
20+
vc_type: vero
21+
use_remote_signer: true
22+
- el_type: nethermind
23+
cl_type: prysm
24+
use_separate_vc: true
25+
vc_type: vero
26+
use_remote_signer: true
27+
- el_type: reth
28+
cl_type: teku
29+
use_separate_vc: true
30+
vc_type: vero
31+
use_remote_signer: true

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ participants:
289289

290290
# VC (Validator Client) Specific flags
291291
# The type of validator client that should be used
292-
# Valid values are nimbus, lighthouse, lodestar, teku, and prysm
292+
# Valid values are nimbus, lighthouse, lodestar, teku, prysm and vero
293293
# ( The prysm validator only works with a prysm CL client )
294294
# Defaults to matching the chosen CL client (cl_type)
295295
vc_type: ""
@@ -301,6 +301,7 @@ participants:
301301
# - nimbus: statusim/nimbus-validator-client:multiarch-latest
302302
# - prysm: gcr.io/prysmaticlabs/prysm/validator:latest
303303
# - teku: consensys/teku:latest
304+
# - vero: ghcr.io/serenita-org/vero:master
304305
vc_image: ""
305306

306307
# The number of validator clients to run for this participant

src/package_io/constants.star

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ VC_TYPE = struct(
2424
nimbus="nimbus",
2525
prysm="prysm",
2626
teku="teku",
27+
vero="vero",
2728
)
2829

2930
REMOTE_SIGNER_TYPE = struct(web3signer="web3signer")

src/package_io/input_parser.star

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ DEFAULT_VC_IMAGES = {
4141
"prysm": "gcr.io/prysmaticlabs/prysm/validator:stable",
4242
"teku": "consensys/teku:latest",
4343
"grandine": "sifrai/grandine:stable",
44+
"vero": "ghcr.io/serenita-org/vero:master",
4445
}
4546

4647
DEFAULT_VC_IMAGES_MINIMAL = {
@@ -50,6 +51,7 @@ DEFAULT_VC_IMAGES_MINIMAL = {
5051
"prysm": "ethpandaops/prysm-validator:develop-minimal",
5152
"teku": "consensys/teku:latest",
5253
"grandine": "ethpandaops/grandine:develop-minimal",
54+
"vero": "ghcr.io/serenita-org/vero:master",
5355
}
5456

5557
DEFAULT_REMOTE_SIGNER_IMAGES = {
@@ -1201,6 +1203,9 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
12011203
if participant["cl_type"] == "grandine":
12021204
participant["cl_extra_params"].append("--builder-url={0}".format(mev_url))
12031205

1206+
if participant["vc_type"] == "vero":
1207+
participant["vc_extra_params"].append("--use-external-builder")
1208+
12041209
num_participants = len(parsed_arguments_dict["participants"])
12051210
index_str = shared_utils.zfill_custom(
12061211
num_participants + 1, len(str(num_participants + 1))

src/vc/lighthouse.star

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def get_config(
117117
"files": files,
118118
"env_vars": env,
119119
"labels": shared_utils.label_maker(
120-
client=constants.CL_TYPE.lighthouse,
120+
client=constants.VC_TYPE.lighthouse,
121121
client_type=constants.CLIENT_TYPES.validator,
122122
image=image,
123123
connected_client=cl_context.client_name,

src/vc/lodestar.star

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def get_config(
133133
"files": files,
134134
"env_vars": env_vars,
135135
"labels": shared_utils.label_maker(
136-
client=constants.CL_TYPE.lodestar,
136+
client=constants.VC_TYPE.lodestar,
137137
client_type=constants.CLIENT_TYPES.validator,
138138
image=image,
139139
connected_client=cl_context.client_name,

src/vc/nimbus.star

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def get_config(
105105
"files": files,
106106
"env_vars": participant.vc_extra_env_vars,
107107
"labels": shared_utils.label_maker(
108-
client=constants.CL_TYPE.nimbus,
108+
client=constants.VC_TYPE.nimbus,
109109
client_type=constants.CLIENT_TYPES.validator,
110110
image=image,
111111
connected_client=cl_context.client_name,

src/vc/prysm.star

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def get_config(
123123
"files": files,
124124
"env_vars": participant.vc_extra_env_vars,
125125
"labels": shared_utils.label_maker(
126-
client=constants.CL_TYPE.prysm,
126+
client=constants.VC_TYPE.prysm,
127127
client_type=constants.CLIENT_TYPES.validator,
128128
image=image,
129129
connected_client=cl_context.client_name,

src/vc/teku.star

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def get_config(
119119
"files": files,
120120
"env_vars": participant.vc_extra_env_vars,
121121
"labels": shared_utils.label_maker(
122-
client=constants.CL_TYPE.teku,
122+
client=constants.VC_TYPE.teku,
123123
client_type=constants.CLIENT_TYPES.validator,
124124
image=image,
125125
connected_client=cl_context.client_name,

src/vc/vc_launcher.star

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ lodestar = import_module("./lodestar.star")
88
nimbus = import_module("./nimbus.star")
99
prysm = import_module("./prysm.star")
1010
teku = import_module("./teku.star")
11+
vero = import_module("./vero.star")
1112
vc_shared = import_module("./shared.star")
1213
shared_utils = import_module("../shared_utils/shared_utils.star")
1314

@@ -151,6 +152,24 @@ def launch(
151152
port_publisher=port_publisher,
152153
vc_index=vc_index,
153154
)
155+
elif vc_type == constants.VC_TYPE.vero:
156+
if remote_signer_context == None:
157+
fail("vero VC requires `use_remote_signer` to be true")
158+
if keymanager_enabled:
159+
fail("vero VC doesn't support the Keymanager API")
160+
config = vero.get_config(
161+
participant=participant,
162+
image=image,
163+
global_log_level=global_log_level,
164+
beacon_http_url=beacon_http_url,
165+
cl_context=cl_context,
166+
remote_signer_context=remote_signer_context,
167+
full_name=full_name,
168+
tolerations=tolerations,
169+
node_selectors=node_selectors,
170+
port_publisher=port_publisher,
171+
vc_index=vc_index,
172+
)
154173
elif vc_type == constants.VC_TYPE.grandine:
155174
fail("Grandine VC is not yet supported")
156175
else:

0 commit comments

Comments
 (0)