Skip to content
Leonardo Arias edited this page Aug 11, 2022 · 75 revisions

All of these steps are for Ubuntu 22.04.

If you want to contribute with guides and testing, please open an issue.

Make sure that you are only using test ether, test accounts and test passwords. Do not reuse anything from your real accounts. When in doubt, please ask.

We will add instructions for more consensus clients as they complete the Builder API implementation. Look at the consensus clients implementation status.

Let's start...

Make a workspace directory:

mkdir -p ~/workspace/
cd ~/workspace/
sudo apt install git

Get the testnet configuration:

git clone https://github.com/eth-clients/merge-testnets

Generate a secret:

openssl rand -hex 32 | tr -d "\n" > ~/workspace/secret

Get the key generator:

cd ~/workspace
wget https://github.com/ethereum/staking-deposit-cli/releases/download/v2.2.0/staking_deposit-cli-9ab0b05-linux-amd64.tar.gz
tar xvf staking_deposit-cli-9ab0b05-linux-amd64.tar.gz

Install metamask.

Register as a validator

In kiln

  1. Get kiln test ether. See Where to get test ether?

  2. Add the kiln network to metamask with the following parameters:

  1. Create your validator keys:
cd ~/workspace/staking_deposit-cli-9ab0b05-linux-amd64/
./deposit new-mnemonic --num_validators 1 --chain kiln
mv validator_keys validator_keys-kiln
  1. Go to the kiln launchpad and follow the instructions to become a validator: https://kiln.launchpad.ethereum.org/en/

In ropsten

  1. Get ropsten test ether. See Where to get test ether?

  2. Connect your metamast to the ropsten network.

  3. Create your validator keys:

cd ~/workspace/staking_deposit-cli-9ab0b05-linux-amd64/
./deposit new-mnemonic --num_validators 1 --chain ropsten
mv validator_keys validator_keys-ropsten
  1. Go to the ropsten launchpad and follow the instructions to become a validator: https://ropsten.launchpad.ethereum.org/en/

mev-boost

Last verified: 2022-07-19

Install go.

Install development tools:

sudo apt install make gcc

Get the source code and compile:

cd ~/workspace
git clone https://github.com/flashbots/mev-boost
cd mev-boost
make build

Run in kiln:

./mev-boost -kiln -relays https://0xb5246e299aeb782fbc7c91b41b3284245b1ed5206134b0028b81dfb974e5900616c67847c2354479934fc4bb75519ee1@builder-relay-kiln.flashbots.net

Run in ropsten:

 ./mev-boost -ropsten -relays https://0xb124d80a00b80815397b4e7f1f05377ccc83aeeceb6be87963ba3649f1e6efa32ca870a88845917ec3f26a8e2aa25c77@builder-relay-ropsten.flashbots.net

Run an execution client

mev-boost is independent of the execution client. You can run anyone.

Nethermind

Last verified: 2022-08-10

Install dotnet:

cd ~/workspace
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install apt-transport-https
sudo apt update
sudo apt install dotnet-sdk-6.0

Install development libraries:

sudo apt install libsnappy-dev libc6-dev libc6
sudo ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2 /usr/lib/x86_64-linux-gnu/libdl.so

Get the source code and compile:

cd ~/workspace/
git clone --recursive https://github.com/NethermindEth/nethermind
cd nethermind/src/Nethermind
dotnet build Nethermind.sln -c Release

Make sure that you have opened the TCP and UDP port 30303.

Run in kiln:

cd ~/workspace/nethermind/src/Nethermind/Nethermind.Runner
dotnet run -c Release -- --config kiln --JsonRpc.Host=0.0.0.0 --JsonRpc.Enabled true --JsonRpc.JwtSecretFile=/home/$USER/workspace/secret 

Run in ropsten:

cd ~/workspace/nethermind/src/Nethermind/Nethermind.Runner
dotnet run -c Release -- --config ropsten --JsonRpc.Host=0.0.0.0 --JsonRpc.Enabled true --JsonRpc.JwtSecretFile=/home/$USER/workspace/secret --Merge.TerminalTotalDifficulty 100000000000000000000000 

Run a consensus client

We will add instructions for more consensus clients as they complete the Builder API implementation. Look at the consensus clients implementation status.

Teku

Last verified: 2022-07-19

Status: https://github.com/flashbots/mev-boost/issues/156

Known issues:

Install java:

sudo apt install default-jre

Get the source code and compile:

cd ~/workspace
git clone https://github.com/ConsenSys/teku
cd teku
./gradlew installDist

Prepare the validator keys. These are the keys created when you registered your validator. Teku requires you to put the password to the validator keys in a .txt file with the same name as the keystore. And then, to pass the paths as parameters as shown below, replacing <path-to-keystore.json>:<path-to-password.txt> with your paths.

More details: https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/#validator-keys

Also note to replace with the address of your test account for validators-proposer-default-fee-recipient in order to earn test rewards.

Run the validator and beacon nodes in kiln:

./build/install/teku/bin/teku \
  --data-path "datadir-teku-kiln" \
  --network kiln \
  --p2p-discovery-bootnodes "enr:-Iq4QMCTfIMXnow27baRUb35Q8iiFHSIDBJh6hQM5Axohhf4b6Kr_cOCu0htQ5WvVqKvFgY28893DHAg8gnBAXsAVqmGAX53x8JggmlkgnY0gmlwhLKAlv6Jc2VjcDI1NmsxoQK6S-Cii_KmfFdUJL2TANL3ksaKUnNXvTCv1tLwXs0QgIN1ZHCCIyk" \
  --ee-endpoint http://localhost:8551 \
  --Xee-version kilnv2 \
  --ee-jwt-secret-file "/home/$USER/workspace/secret" \
  --log-destination console \
  --validator-keys=<path-to-keystore.json>:<path-to-password.txt> \
  --validators-proposer-default-fee-recipient=<fee-recepient-eth-address> \
  --validators-builder-registration-default-enabled=true \
  --builder-endpoint="http://127.0.0.1:18550"

Run the validator and beacon nodes in ropsten:

./build/install/teku/bin/teku \
  --data-path "datadir-teku-ropsten" \
  --network ropsten \
  --ee-endpoint http://localhost:8551 \
  --ee-jwt-secret-file "/home/$USER/workspace/secret" \
  --log-destination console \
  --validator-keys=<path-to-keystore.json>:<path-to-password.txt> \
  --validators-proposer-default-fee-recipient=<fee-recepient-eth-address> \
  --validators-builder-registration-default-enabled=true \
  --builder-endpoint="http://127.0.0.1:18550" \
  --Xnetwork-total-terminal-difficulty-override=100000000000000000000000

Prysm

Last verified: 2022-07-06

Status: https://github.com/flashbots/mev-boost/issues/158

Known issues:

Install go.

Install libraries and development tools:

sudo apt install cmake libssl-dev libgmp-dev libtinfo5 libprotoc-dev g++
export PATH=$PATH:~/go/bin

Get the source code:

cd ~/workspace
git clone -b develop https://github.com/prysmaticlabs/prysm.git
cd prysm

Run in kiln

(note to replace with the address of your test account, to earn test rewards)

Run a beacon node:

go run ./cmd/beacon-chain/... \
  --genesis-state=/home/$USER/workspace/merge-testnets/kiln/genesis.ssz \
  --datadir=datadir-prysm-kiln  \
  --http-web3provider=http://localhost:8551  \
  --chain-config-file=/home/$USER/workspace/merge-testnets/kiln/config.yaml \
  --bootstrap-node=enr:-Iq4QMCTfIMXnow27baRUb35Q8iiFHSIDBJh6hQM5Axohhf4b6Kr_cOCu0htQ5WvVqKvFgY28893DHAg8gnBAXsAVqmGAX53x8JggmlkgnY0gmlwhLKAlv6Jc2VjcDI1NmsxoQK6S-Cii_KmfFdUJL2TANL3ksaKUnNXvTCv1tLwXs0QgIN1ZHCCIyk \
  --jwt-secret=/home/$USER/workspace/secret \
  --suggested-fee-recipient=<fee-recepient-eth-address> \
  --http-mev-relay=http://127.0.0.1:18550

To do: run a validator. See https://github.com/prysmaticlabs/prysm/issues/11001

Run in ropsten

(note to replace with the address of your test account, to earn test rewards)

Run a beacon node:

go run ./cmd/beacon-chain/... \
  --ropsten \
  --genesis-state=/home/$USER/workspace/merge-testnets/ropsten-beacon-chain/genesis.ssz \
  --datadir=datadir-prysm-ropsten  \
  --http-web3provider=http://localhost:8551  \
  --jwt-secret=/home/$USER/workspace/secret \
  --suggested-fee-recipient=<fee-recepient-eth-address> \
  --http-mev-relay=http://127.0.0.1:18550

Import the validator keys:

go run ./cmd/validator/... accounts import --keys-dir=/home/$USER/workspace/staking_deposit-cli-9ab0b05-linux-amd64/validator_keys-ropsten --ropsten

Run a validator node:

go run ./cmd/validator/... \
  --ropsten \
  --enable-validator-registration \
  --suggested-fee-recipient=<fee-recepient-eth-address>

Lighthouse

(in progress)

Install libraries and development tools:

sudo apt install -y git gcc g++ make cmake pkg-config llvm-dev libclang-dev clang curl

Install rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

Get the source code and compile:

cd ~/workspace
git clone -b builder-api https://github.com/sigp/lighthouse.git
cd lighthouse
make

Lodestar

(In progress)

Install nodejs:

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install nodejs
sudo corepack enable

Get the source code and compile:

cd ~/workspace
git clone https://github.com/chainsafe/lodestar
cd lodestar
yarn install --ignore-optional
yarn run build

Run in Kiln

Run the beacon node:

./lodestar beacon --network --builder.enabled --builder.urls http://127.0.0.1:18550 --jwt-secret=/home/$USER/workspace/secret                              

Run the validator node:

./lodestar validator --network kiln --defaultFeeRecipient <fee-recepient-eth-address> --builder.enabled --importKeystoresPath <path-to-keystore.json> --importKeystoresPassword <path-to-password.txt>

Nimbus

(In progress)

Install development tools:

sudo apt install build-essential

Get the source code and compile:

cd ~/workspace
git clone https://github.com/status-im/nimbus-eth2 --branch unstable
cd nimbus-eth2
make -j4 nimbus_beacon_node

Common requirements

Go

For prysm and mev-boost.

Install go:

cd ~/workspace/
wget https://go.dev/dl/go1.18.3.linux-amd64.tar.gz
sudo rm -rf /usr/local/go 
sudo tar -C /usr/local -xzf go1.18.3.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

References

Clone this wiki locally