Try   HackMD

Lodestar Setup for Kiln🔥🧱 Public Testnet

Setting up Lodestar for the Kiln testnet is as simple as configuring a variable file and running a setup command. Our setup script will take care of most of the configuration for you.

Reference: https://github.com/ChainSafe/lodestar/tree/master/kiln/devnets

Setup Instructions

Prerequistes

You will need to have the following installed:

  1. Docker
  2. Git
  3. Bash shell

Install Docker Engine (if required)

We must install Docker Engine to run the images on your local machine.

sudo apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

If you're prompted to add new packages, press y.

sudo docker run hello-world

Clone our Repository

git clone https://github.com/ChainSafe/lodestar.git

Edit the Kiln variables file

Navigate to the kiln.vars file

cd lodestar/kiln/devnets

Use a text editor like nano to edit the kiln.vars file

nano kiln.vars

Inside the kiln.vars file, you can add, remove or modify configurations related to the execution layer client you intend to use, Lodestar beacon configurations and the validator configurations.

If running validators (optional)

Ensure you edit the LODESTAR_VALIDATOR_ARGS= by replacing the mnemonic under --fromMnemonic and the --mnemonicIndexes in the format that is provided.

Startup Instructions

Run the script with arguments

cd kiln/devnets ./setup.sh --dataDir kiln-data --elClient geth --devnetVars ./kiln.vars [--dockerWithSudo --withTerminal "gnome-terminal --disable-factory --" --withValidator]
Example scenarios
  1. Run with separate terminals launched & attached (best for testing in local) :
    ./setup.sh --dataDir kiln-data --elClient nethermind --devnetVars ./kiln.vars --withTerminal "gnome-terminal --disable-factory --" --dockerWithSudo

  2. Run in-terminal attached with logs interleaved (best for testing in remote shell) :
    ./setup.sh --dataDir kiln-data --elClient nethermind --devnetVars ./kiln.vars --dockerWithSudo

  3. Run detached (best for leaving it to run, typically after testing 1 or 2):
    ./setup.sh --dataDir kiln-data --elClient nethermind --devnetVars ./kiln.vars --detached --dockerWithSudo

You can alternate between geth and nethermind to experiment with the ELs being out of sync ( and catching up) with lodestar.

Script Parameters Help

  1. 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.
  2. elClient: Which EL client you want, currently working with geth or nethermind or ethereumjs
  3. devnetVars: Contains the configuration specific to a devnet, like images, or urls for EL/CL to interact. Will be updated with new vars.
  4. dockerWithSudo(optional): Provide this argument if your docker needs a sudo prefix
  5. --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.
  6. --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.
  7. --withValidator (optional): Launch a validator client using LODESTAR_VALIDATOR_ARGS as set in the devnet vars file.

Only one of --withTerminal or --detached should be provided.