Commit 3ac4d2a4 authored by Barnabas Busa's avatar Barnabas Busa Committed by GitHub

feat: add grandine (#517)

parent 0615cd1b
participants:
- el_type: geth
cl_type: grandine
- el_type: nethermind
cl_type: grandine
- el_type: erigon
cl_type: grandine
- el_type: besu
cl_type: grandine
- el_type: reth
cl_type: grandine
- el_type: ethereumjs
cl_type: grandine
additional_services: []
...@@ -9,6 +9,8 @@ participants: ...@@ -9,6 +9,8 @@ participants:
cl_type: lighthouse cl_type: lighthouse
- el_type: reth - el_type: reth
cl_type: lodestar cl_type: lodestar
- el_type: ethereumjs - el_type: nimbus
cl_type: teku cl_type: teku
- el_type: ethereumjs
cl_type: grandine
additional_services: [] additional_services: []
...@@ -258,7 +258,7 @@ participants: ...@@ -258,7 +258,7 @@ participants:
# CL(Consensus Layer) Specific flags # CL(Consensus Layer) Specific flags
# The type of CL client that should be started # The type of CL client that should be started
# Valid values are nimbus, lighthouse, lodestar, teku, and prysm # Valid values are nimbus, lighthouse, lodestar, teku, prysm, and grandine
cl_type: lighthouse cl_type: lighthouse
# The Docker image that should be used for the CL client; leave blank to use the default for the client type # The Docker image that should be used for the CL client; leave blank to use the default for the client type
......
...@@ -3,6 +3,7 @@ lodestar = import_module("./lodestar/lodestar_launcher.star") ...@@ -3,6 +3,7 @@ lodestar = import_module("./lodestar/lodestar_launcher.star")
nimbus = import_module("./nimbus/nimbus_launcher.star") nimbus = import_module("./nimbus/nimbus_launcher.star")
prysm = import_module("./prysm/prysm_launcher.star") prysm = import_module("./prysm/prysm_launcher.star")
teku = import_module("./teku/teku_launcher.star") teku = import_module("./teku/teku_launcher.star")
grandine = import_module("./grandine/grandine_launcher.star")
constants = import_module("../package_io/constants.star") constants = import_module("../package_io/constants.star")
input_parser = import_module("../package_io/input_parser.star") input_parser = import_module("../package_io/input_parser.star")
...@@ -76,6 +77,14 @@ def launch( ...@@ -76,6 +77,14 @@ def launch(
), ),
"launch_method": teku.launch, "launch_method": teku.launch,
}, },
constants.CL_TYPE.grandine: {
"launcher": grandine.new_grandine_launcher(
el_cl_data,
jwt_file,
network_params.network,
),
"launch_method": grandine.launch,
},
} }
all_snooper_engine_contexts = [] all_snooper_engine_contexts = []
......
This diff is collapsed.
...@@ -15,6 +15,7 @@ CL_TYPE = struct( ...@@ -15,6 +15,7 @@ CL_TYPE = struct(
nimbus="nimbus", nimbus="nimbus",
prysm="prysm", prysm="prysm",
lodestar="lodestar", lodestar="lodestar",
grandine="grandine",
) )
VC_TYPE = struct( VC_TYPE = struct(
...@@ -147,6 +148,7 @@ VOLUME_SIZE = { ...@@ -147,6 +148,7 @@ VOLUME_SIZE = {
"teku_volume_size": 500000, # 500GB "teku_volume_size": 500000, # 500GB
"nimbus_volume_size": 500000, # 500GB "nimbus_volume_size": 500000, # 500GB
"lodestar_volume_size": 500000, # 500GB "lodestar_volume_size": 500000, # 500GB
"grandine_volume_size": 500000, # 500GB
}, },
"goerli": { "goerli": {
"geth_volume_size": 800000, # 800GB "geth_volume_size": 800000, # 800GB
...@@ -161,6 +163,7 @@ VOLUME_SIZE = { ...@@ -161,6 +163,7 @@ VOLUME_SIZE = {
"teku_volume_size": 300000, # 300GB "teku_volume_size": 300000, # 300GB
"nimbus_volume_size": 300000, # 300GB "nimbus_volume_size": 300000, # 300GB
"lodestar_volume_size": 300000, # 300GB "lodestar_volume_size": 300000, # 300GB
"grandine_volume_size": 300000, # 300GB
}, },
"sepolia": { "sepolia": {
"geth_volume_size": 300000, # 300GB "geth_volume_size": 300000, # 300GB
...@@ -175,6 +178,7 @@ VOLUME_SIZE = { ...@@ -175,6 +178,7 @@ VOLUME_SIZE = {
"teku_volume_size": 150000, # 150GB "teku_volume_size": 150000, # 150GB
"nimbus_volume_size": 150000, # 150GB "nimbus_volume_size": 150000, # 150GB
"lodestar_volume_size": 150000, # 150GB "lodestar_volume_size": 150000, # 150GB
"grandine_volume_size": 150000, # 150GB
}, },
"holesky": { "holesky": {
"geth_volume_size": 100000, # 100GB "geth_volume_size": 100000, # 100GB
...@@ -189,6 +193,7 @@ VOLUME_SIZE = { ...@@ -189,6 +193,7 @@ VOLUME_SIZE = {
"teku_volume_size": 100000, # 100GB "teku_volume_size": 100000, # 100GB
"nimbus_volume_size": 100000, # 100GB "nimbus_volume_size": 100000, # 100GB
"lodestar_volume_size": 100000, # 100GB "lodestar_volume_size": 100000, # 100GB
"grandine_volume_size": 100000, # 100GB
}, },
"devnets": { "devnets": {
"geth_volume_size": 100000, # 100GB "geth_volume_size": 100000, # 100GB
...@@ -203,6 +208,7 @@ VOLUME_SIZE = { ...@@ -203,6 +208,7 @@ VOLUME_SIZE = {
"teku_volume_size": 100000, # 100GB "teku_volume_size": 100000, # 100GB
"nimbus_volume_size": 100000, # 100GB "nimbus_volume_size": 100000, # 100GB
"lodestar_volume_size": 100000, # 100GB "lodestar_volume_size": 100000, # 100GB
"grandine_volume_size": 100000, # 100GB
}, },
"ephemery": { "ephemery": {
"geth_volume_size": 5000, # 5GB "geth_volume_size": 5000, # 5GB
...@@ -217,6 +223,7 @@ VOLUME_SIZE = { ...@@ -217,6 +223,7 @@ VOLUME_SIZE = {
"teku_volume_size": 1000, # 1GB "teku_volume_size": 1000, # 1GB
"nimbus_volume_size": 1000, # 1GB "nimbus_volume_size": 1000, # 1GB
"lodestar_volume_size": 1000, # 1GB "lodestar_volume_size": 1000, # 1GB
"grandine_volume_size": 1000, # 1GB
}, },
"kurtosis": { "kurtosis": {
"geth_volume_size": 5000, # 5GB "geth_volume_size": 5000, # 5GB
...@@ -231,6 +238,7 @@ VOLUME_SIZE = { ...@@ -231,6 +238,7 @@ VOLUME_SIZE = {
"teku_volume_size": 1000, # 1GB "teku_volume_size": 1000, # 1GB
"nimbus_volume_size": 1000, # 1GB "nimbus_volume_size": 1000, # 1GB
"lodestar_volume_size": 1000, # 1GB "lodestar_volume_size": 1000, # 1GB
"grandine_volume_size": 1000, # 1GB
}, },
} }
...@@ -260,6 +268,8 @@ RAM_CPU_OVERRIDES = { ...@@ -260,6 +268,8 @@ RAM_CPU_OVERRIDES = {
"nimbus_max_cpu": 4000, # 4 cores "nimbus_max_cpu": 4000, # 4 cores
"lodestar_max_mem": 16384, # 16GB "lodestar_max_mem": 16384, # 16GB
"lodestar_max_cpu": 4000, # 4 cores "lodestar_max_cpu": 4000, # 4 cores
"grandine_max_mem": 16384, # 16GB
"grandine_max_cpu": 4000, # 4 cores
}, },
"goerli": { "goerli": {
"geth_max_mem": 8192, # 8GB "geth_max_mem": 8192, # 8GB
...@@ -286,6 +296,8 @@ RAM_CPU_OVERRIDES = { ...@@ -286,6 +296,8 @@ RAM_CPU_OVERRIDES = {
"nimbus_max_cpu": 2000, # 2 cores "nimbus_max_cpu": 2000, # 2 cores
"lodestar_max_mem": 8192, # 8GB "lodestar_max_mem": 8192, # 8GB
"lodestar_max_cpu": 2000, # 2 cores "lodestar_max_cpu": 2000, # 2 cores
"grandine_max_mem": 8192, # 8GB
"grandine_max_cpu": 2000, # 2 cores
}, },
"sepolia": { "sepolia": {
"geth_max_mem": 4096, # 4GB "geth_max_mem": 4096, # 4GB
...@@ -312,6 +324,8 @@ RAM_CPU_OVERRIDES = { ...@@ -312,6 +324,8 @@ RAM_CPU_OVERRIDES = {
"nimbus_max_cpu": 1000, # 1 core "nimbus_max_cpu": 1000, # 1 core
"lodestar_max_mem": 4096, # 4GB "lodestar_max_mem": 4096, # 4GB
"lodestar_max_cpu": 1000, # 1 core "lodestar_max_cpu": 1000, # 1 core
"grandine_max_mem": 4096, # 4GB
"grandine_max_cpu": 1000, # 1 core
}, },
"holesky": { "holesky": {
"geth_max_mem": 8192, # 8GB "geth_max_mem": 8192, # 8GB
...@@ -338,6 +352,8 @@ RAM_CPU_OVERRIDES = { ...@@ -338,6 +352,8 @@ RAM_CPU_OVERRIDES = {
"nimbus_max_cpu": 2000, # 2 cores "nimbus_max_cpu": 2000, # 2 cores
"lodestar_max_mem": 8192, # 8GB "lodestar_max_mem": 8192, # 8GB
"lodestar_max_cpu": 2000, # 2 cores "lodestar_max_cpu": 2000, # 2 cores
"grandine_max_mem": 8192, # 8GB
"grandine_max_cpu": 2000, # 2 cores
}, },
"devnets": { "devnets": {
"geth_max_mem": 4096, # 4GB "geth_max_mem": 4096, # 4GB
...@@ -364,6 +380,8 @@ RAM_CPU_OVERRIDES = { ...@@ -364,6 +380,8 @@ RAM_CPU_OVERRIDES = {
"nimbus_max_cpu": 1000, # 1 core "nimbus_max_cpu": 1000, # 1 core
"lodestar_max_mem": 4096, # 4GB "lodestar_max_mem": 4096, # 4GB
"lodestar_max_cpu": 1000, # 1 core "lodestar_max_cpu": 1000, # 1 core
"grandine_max_mem": 4096, # 4GB
"grandine_max_cpu": 1000, # 1 core
}, },
"ephemery": { "ephemery": {
"geth_max_mem": 1024, # 1GB "geth_max_mem": 1024, # 1GB
...@@ -390,6 +408,8 @@ RAM_CPU_OVERRIDES = { ...@@ -390,6 +408,8 @@ RAM_CPU_OVERRIDES = {
"nimbus_max_cpu": 1000, # 1 core "nimbus_max_cpu": 1000, # 1 core
"lodestar_max_mem": 1024, # 1GB "lodestar_max_mem": 1024, # 1GB
"lodestar_max_cpu": 1000, # 1 core "lodestar_max_cpu": 1000, # 1 core
"grandine_max_mem": 1024, # 1GB
"grandine_max_cpu": 1000, # 1 core
}, },
"kurtosis": { "kurtosis": {
"geth_max_mem": 1024, # 1GB "geth_max_mem": 1024, # 1GB
...@@ -416,5 +436,7 @@ RAM_CPU_OVERRIDES = { ...@@ -416,5 +436,7 @@ RAM_CPU_OVERRIDES = {
"nimbus_max_cpu": 1000, # 1 core "nimbus_max_cpu": 1000, # 1 core
"lodestar_max_mem": 2048, # 2GB "lodestar_max_mem": 2048, # 2GB
"lodestar_max_cpu": 1000, # 1 core "lodestar_max_cpu": 1000, # 1 core
"grandine_max_mem": 2048, # 2GB
"grandine_max_cpu": 1000, # 1 core
}, },
} }
...@@ -20,6 +20,7 @@ DEFAULT_CL_IMAGES = { ...@@ -20,6 +20,7 @@ DEFAULT_CL_IMAGES = {
"nimbus": "statusim/nimbus-eth2:multiarch-latest", "nimbus": "statusim/nimbus-eth2:multiarch-latest",
"prysm": "gcr.io/prysmaticlabs/prysm/beacon-chain:latest", "prysm": "gcr.io/prysmaticlabs/prysm/beacon-chain:latest",
"lodestar": "chainsafe/lodestar:latest", "lodestar": "chainsafe/lodestar:latest",
"grandine": "ethpandaops/grandine:develop",
} }
DEFAULT_VC_IMAGES = { DEFAULT_VC_IMAGES = {
...@@ -28,6 +29,7 @@ DEFAULT_VC_IMAGES = { ...@@ -28,6 +29,7 @@ DEFAULT_VC_IMAGES = {
"nimbus": "statusim/nimbus-validator-client:multiarch-latest", "nimbus": "statusim/nimbus-validator-client:multiarch-latest",
"prysm": "gcr.io/prysmaticlabs/prysm/validator:latest", "prysm": "gcr.io/prysmaticlabs/prysm/validator:latest",
"teku": "consensys/teku:latest", "teku": "consensys/teku:latest",
"grandine": "sifrai/grandine:latest",
} }
MEV_BOOST_RELAY_DEFAULT_IMAGE = "flashbots/mev-boost-relay:0.27" MEV_BOOST_RELAY_DEFAULT_IMAGE = "flashbots/mev-boost-relay:0.27"
...@@ -381,6 +383,7 @@ def parse_network_params(input_args): ...@@ -381,6 +383,7 @@ def parse_network_params(input_args):
if cl_type in ( if cl_type in (
constants.CL_TYPE.nimbus, constants.CL_TYPE.nimbus,
constants.CL_TYPE.teku, constants.CL_TYPE.teku,
constants.CL_TYPE.grandine,
): ):
participant["use_separate_vc"] = False participant["use_separate_vc"] = False
else: else:
...@@ -391,6 +394,12 @@ def parse_network_params(input_args): ...@@ -391,6 +394,12 @@ def parse_network_params(input_args):
vc_type = cl_type vc_type = cl_type
participant["vc_type"] = vc_type participant["vc_type"] = vc_type
if (
cl_type == constants.CL_TYPE.grandine
and vc_type != constants.CL_TYPE.grandine
):
fail("grandine does not support running a different validator client")
vc_image = participant["vc_image"] vc_image = participant["vc_image"]
if vc_image == "": if vc_image == "":
if cl_image == "": if cl_image == "":
...@@ -753,6 +762,8 @@ def enrich_disable_peer_scoring(parsed_arguments_dict): ...@@ -753,6 +762,8 @@ def enrich_disable_peer_scoring(parsed_arguments_dict):
participant["cl_extra_params"].append("--Xp2p-gossip-scoring-enabled") participant["cl_extra_params"].append("--Xp2p-gossip-scoring-enabled")
if participant["cl_type"] == "lodestar": if participant["cl_type"] == "lodestar":
participant["cl_extra_params"].append("--disablePeerScoring") participant["cl_extra_params"].append("--disablePeerScoring")
if participant["cl_type"] == "grandine":
participant["cl_extra_params"].append("--disable-peer-scoring")
return parsed_arguments_dict return parsed_arguments_dict
...@@ -795,6 +806,8 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ ...@@ -795,6 +806,8 @@ def enrich_mev_extra_params(parsed_arguments_dict, mev_prefix, mev_port, mev_typ
participant["cl_extra_params"].append( participant["cl_extra_params"].append(
"--http-mev-relay={0}".format(mev_url) "--http-mev-relay={0}".format(mev_url)
) )
if participant["cl_type"] == "grandine":
participant["cl_extra_params"].append("--builder-url={0}".format(mev_url))
num_participants = len(parsed_arguments_dict["participants"]) num_participants = len(parsed_arguments_dict["participants"])
index_str = shared_utils.zfill_custom( index_str = shared_utils.zfill_custom(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment