Awesome
BREAKING CHANGE
Use --network
flag instead of --devnetVars
for e.g. --network sepolia
instead of --devnetVars sepolia.vars
Easy script to join the Ethereum networks
This is a setup to run and join the merge devnets, testnets, shadowforks and mainnet as well! with a single shell command. This script will pull the appropriate images and config and spin up the EL client and lodestar.
This script is borne out of need to simplify putting together the various moving parts of the post merge ethereum setup so that the users can have super fast onboarding, easy switch/test EL clients as well as can take inspiration for how to match/debug the configurations for their customized setups.
So just give it a go and fire away your merge setup command!
A comprehensive setup guide on how to use this merge script can be found here: https://hackmd.io/@philknows/rJegZyH9q
Supported Networks
Look for the .vars file in the folder to see what networks are supported. There is a .vars file corresponding to a each network which will be loaded. Here are a few examples
- Mainnet:
--network mainnet
(readsmainnet.vars
) - Holesky Network:
--network holesky
(readsholesky.vars
) - Sepolia Network:
--network sepolia
(readssepolia.vars
) - Verkle Kautinen 7:
--network kaustinen7
(readskaustinen7.vars
) - Pectra devnet 4:
--network pectra4
(readspectra4.vars
) - Mekong Network:
--network mekong
(readsmekong.vars
)
Goerli network has been removed as it has been deprecated/sunsetted.
Requirements
- docker
- git
- A bash shell
Example quickstart commands with arguments
- Run with separate terminals launched & attached (best for testing in local) :
./setup.sh --dataDir sepolia-data --elClient nethermind --network sepolia --withTerminal "gnome-terminal --disable-factory --" --dockerWithSudo
- Run in-terminal attached with logs interleaved (best for testing in remote shell) :
./setup.sh --dataDir sepolia-data --elClient nethermind --network sepolia --dockerWithSudo
- Run detached (best for leaving it to run, typically after testing 1 or 2):
./setup.sh --dataDir sepolia-data --elClient nethermind --network sepolia --detached --dockerWithSudo
Supported EL clients
Look for the .vars file in the folder to see what networks are supported. Here are a few examples
- Geth:
--elClient geth
- Nethermind:
--elClient nethermind
- Besu:
--elClient besu
- Ethereumjs: (might sync only small size testnets for now):
--elClient ethereumjs
- Erigon:
--elClient erigon
- Reth:
--elClient reth
You can alternate between them (without needing to reset/cleanup) to experiment with the ELs being out of sync ( and catching up) with lodestar
via Optimistic Sync features.
Script parameters help
dataDir
: Where you want the script and client's configuration data to be setup. Should be non-existent one for the first run. (The directory if already present will skip fetching the configuration, assuming it has done previously). You can also clean indivizual directories of CL/EL between the re-runs.elClient
: Which EL client you want, currently working withgeth
andnethermind
network
: The network/chain you want to load, reads the corresponding.vars
(for e.g.sepolia.vars
) network configuration , like images, or urls for EL/CL to interact. Will be updated with new vars.dockerWithSudo
(optional): Provide this argument if your docker needs a sudo prefix--withTerminal
(optional): Provide the terminal command prefix for CL and EL processes to run in your favourite terminal. You may use an alias or a terminal launching script as long as it waits for the command it runs till ends and then closes.If not provided, it will launch the docker processes in in-terminal mode.--detached
(optional): By default the script will wait for processes and use user input (ctrl +c) to end the processes, however you can pass this option to skip this behavior and just return, for e.g. in case you just want to leave it running.--withValidatorKeystore | --withValidatorMnemonic
(optional): Launch a validator client usingLODESTAR_VALIDATOR_MNEMONIC_ARGS
(--withValidatorMnemonic
) or using a folder (--withValidatorKeystore <abs path to folder
) havingkeystores
andpass.txt
(which advance users may modify inLODESTAR_VALIDATOR_KEYSTORE_ARGS
as per their setup). Users can spin multiple validators using--withValidatorMnemonic <folder path> --justVC
connecting to same beacon node.--withMevBoost
(optional): Also launch amev-boost
container to interface with multiple relays picked for the corresponding network vars (for e.g. frommainnet.vars
). When paired with--justCL
or--justVC
this only activate the builder args in the beacon/validator and use the builder url set inMEVBOOST_URL
variable infixed.vars
--justEL | --justCL | --justVC | --justMevBoost
(optional) : Just launch only EL client or lodestar beacon or lodestar validator ormev-boost
relay at any given time. Gives you more control over the setup.--skipImagePull
(optional): Just work with local images, don't try updating them.LODESTAR_EXTRA_ARGS
for CL (andLODESTAR_VALIDATOR_ARGS
for VC) in.vars
file allows to supply additional parameters to enable features such as Checkpoint Sync (CL only) and Client monitoring.
Only one of --withTerminal
or --detached
should be provided.