Adding a New Validator to an Existing Setup with Existing Seed Words

Scenario: Genesis block is long passed and now you would like to add more validators with your existing mnemonic seed.

Requirements

Before continuing please have the following ready:

  • Existing 24 word validator mnemonic phrase

  • Existing keystore password

  • ETH Withdrawal Address from your hardware wallet

Optional Step 0: Cleanup leftover validator_keys

Verify that you have backups of validator_keys directory. The contents are the keystore files.

Having backup copies of your validator_keys directory on USB media can make recovery from node problems quicker. Validator keys can always be regenerated from secret recovery mnemonic phrase.

You may safely delete the directory.

# Remove default validator_key directory
sudo rm -r $HOME/staking-deposit-cli/validator_keys

Step 1: Create new deposit_data json file and new validator_keys

In this example, using the staking-deposit-cli tool, you can add more validators by creating a new deposit data file and validator_keys

Security recommendation reminder: For best security practices, key management and other activities where you type your 24 word mnemonic seed should be completed on an air-gapped offline cold machine booted from USB drive.

Reminder to use the same keystore password as existing validators.

For example, in case we originally created 3 validators but now wish to add 5 more validators, we could use the following command.

# Generate from an existing mnemonic 5 more validators when 3 were previously already made
./deposit existing-mnemonic \
--validator_start_index 3 \
--num_validators 5 \
--chain mainnet \
--execution_address <ETH_ADDRESS_FROM_HARDWARE_WALLET>

FlagDescription

--validator_start_index

Number of validators you ALREADY created

--num_validators

Number of NEW validators you want to create

--chain

Options: mainnet holesky goerli

--execution_address

Critically important: Your Ethereum Address from a Hardware Wallet.

Withdrawals will be sent to this address. If you stop validating and exit your validator, your 32 ETH will be sent here.

This ETH withdrawal address is one such that you control the private keys to, ideally one from a hardware wallet.

Step 2: Deposit 32 ETH per validator

Option 1: Visit the official Ethereum Launchpad site

Two important tasks to complete at the launchpad.

  • Upload the deposit_data-#########.json

  • Make the 32 ETH deposit transaction(s), 32 ETH per validator. 1 deposit transaction per validator.

Option 2: Use Abyss's Batch Ethereum Depositor to combine many validator deposits into just 1 transaction.

Step 3: Import New Validator Keys

This step assumes your new validator keys are located in

$HOME/staking-deposit-cli/validator_keys

If Wagyu was used to generate validator keys, move the keystore files to the above location.

Stop your validator client.

sudo systemctl stop validator

Import your validator keys by importing your keystore file. Be sure to enter your keystore password correctly.

sudo lighthouse account validator import \
  --network mainnet \
  --datadir /var/lib/lighthouse \
  --directory=$HOME/staking-deposit-cli/validator_keys \
  --reuse-password

Verify that your keystore file was imported successfully.

sudo lighthouse account_manager validator list \
  --network mainnet \
  --datadir /var/lib/lighthouse

Once successful, you will be shown your validator's public key.

For example, 0x8d9138fcf5676e2031dc4eae30a2c92e3306903eeec83ca83f4f851afbd4cb3b33f710e6f4ac516b4598697b30b04302

Setup ownership permissions, including hardening the access to this directory.

sudo chown -R validator:validator /var/lib/lighthouse/validators
sudo chmod 700 /var/lib/lighthouse/validators

Finally, start your validator client.

sudo systemctl restart validator

Check your logs to confirm that the validator clients are up and functioning.

sudo journalctl -fu validator | ccze

For example when using 2 validators, logs will show the following:

INFO Enabled validator          voting_pubkey: 0x82b225f66476962b161ed015786df00a0b7b28231915e6d09e81ba8d5c4ae8502b6d5337e3bf101ad72741dc69f0a7cf, signing_method: local_keystore
INFO Enabled validator          voting_pubkey: 0x95d39860a0d6ea3b92cba78069d21f3a987988f3b8417b14f0945353d79ed9e338bbe6e9d63d487abc044a710ce34866, signing_method: local_keystore
INFO Initialized validators     enabled: 2, disabled: 0

Step 4: Backup and Delete validator_keys directory

Make backup copies of your validator_keys directory to USB media or other devices. These validator keys can always be regenerated from secret recovery mnemonic phrase.

Afterwards, you may safely delete the directory.

# Remove default validator_key directory
sudo rm -r $HOME/staking-deposit-cli/validator_keys

Step 5: Estimate when your new validator becomes active

Your additional validators are now in the activation queue waiting their turn. Check the "Entry Queue" for your estimated wait time at https://www.validatorqueue.com

In the below example, the wait time was approximately 11 days, 1 hour until a new validator became active.

Last updated