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.
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.
Step 2: Deposit 32 ETH per validator
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.
Step 3: Import New Validator Keys
This step assumes your new validator keys are located in
If Wagyu was used to generate validator keys, move the keystore files to the above location.
Stop your validator client.
Import your validator keys by importing your keystore file. Be sure to enter your keystore password correctly.
Verify that your keystore file was imported successfully.
Once successful, you will be shown your validator's public key.
For example, 0x8d9138fcf5676e2031dc4eae30a2c92e3306903eeec83ca83f4f851afbd4cb3b33f710e6f4ac516b4598697b30b04302
Setup ownership permissions, including hardening the access to this directory.
Finally, start your validator client.
Check your logs to confirm that the validator clients are up and functioning.
For example when using 2 validators, logs will show the following:
Stop your validator client.
Import your validator keys by importing your keystore file. Be sure to enter your keystore password correctly.
Verify that your keystore file was imported successfully.
Once successful, you will be shown your validator's public key.
For example, 0x8d9138fcf5676e2031dc4eae30a2c92e3306903eeec83ca83f4f851afbd4cb3b33f710e6f4ac516b4598697b30b04302
Setup ownership permissions, including hardening the access to this directory.
Finally, restart to use the new validators.
Check your logs to confirm that the validator clients are up and functioning.
For example when using 2 validators, logs will show the following:
Press Ctrl + C to exit the logs.
Option 1: For standalone validator
Stop your Teku client.
Storing your keystore password in a text file is required so that Teku can decrypt and load your validators automatically.
Create a temporary file to store your keystore password. Type your password in this file.
To exit and save, press Ctrl + X, then Y, then Enter.
Confirm that your keystore password is correct.
Run the following command to create a corresponding password file for every one of your validators.
Copy keystores to validator folder
Setup ownership permissions, including hardening the access to this directory.
Verify that your validator's keystore .json files and validator's passwords .txt files are present by checking the following directory.
Example output of two validator's keystore.json files with matching password.txt files.
Delete the temporary keystore password file.
Finally, restart Teku to use the new validators.
Check your logs to confirm that the validators are up and functioning.
For example when using 2 validators, logs will show the following:
Option 2: For Combined CL+VC
Stop your Teku client.
Storing your keystore password in a text file is required so that Teku can decrypt and load your validators automatically.
Create a temporary file to store your keystore password. Type your password in this file.
To exit and save, press Ctrl + X, then Y, then Enter.
Confirm that your keystore password is correct.
Run the following command to create a corresponding password file for every one of your validators.
Copy keystores to validator folder
Setup ownership permissions, including hardening the access to this directory.
Verify that your validator's keystore .json files and validator's passwords .txt files are present by checking the following directory.
Example output of two validator's keystore.json files with matching password.txt files.
Delete the temporary keystore password file.
Finally, restart Teku to use the new validators.
Check your logs to confirm that the validators are up and functioning.
For example when using 2 validators, logs will show the following:
Option 1: For standalone validator
Stop your Nimbus client.
Enter your keystore password to import accounts.
Now you can verify the accounts were imported successfully by doing a directory listing.
You should see a folder named for each of your validator's pubkey.
Setup ownership permissions, including hardening the access to this directory.
Finally, restart Nimbus to use the new validators.
Check your logs to confirm that the validators are up and functioning.
For example when using 2 validators, logs will show the following:
Option 2: For Combined CL+VC
Stop your Nimbus client.
Enter your keystore password to import accounts.
Now you can verify the accounts were imported successfully by doing a directory listing.
You should see a folder named for each of your validator's pubkey.
Setup ownership permissions, including hardening the access to this directory.
Finally, restart Nimbus to use the new validators.
Check your logs to confirm that the validators are up and functioning.
For example when using 2 validators, logs will show the following:
Stop your validator client.
Import your validator keys by importing your keystore file. When asked to create a new wallet password, enter your keystore password. When prompted for the imported accounts password, enter your keystore password again.
If using Binaries,
If Built from Source,
Verify that your keystore file was imported successfully.
If using Binaries,
If Built from Source,
Once successful, you will be shown your validator's public key. For example:
Setup ownership permissions, including hardening the access to this directory.
Finally, restart Prsym validator to use the new validators.
Check your logs to confirm that the validator clients are up and functioning.
For example when using 2 validators, logs will show the following:
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.
Step 5: Estimate when your new validator becomes active
In the below example, the wait time was approximately 11 days, 1 hour until a new validator became active.
Flag
Description
Option 1: Visit the
Option 2: Use to combine many validator deposits into just 1 transaction.
Your additional validators are now in the activation queue waiting their turn. Check the "Entry Queue" for your estimated wait time at
# 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>
info: 100% of local keystores imported. current=2 total=2 rate=975.61keys/m
info: 2 local keystores
info: 0x82b225f66476962b161ed015786df00a0b7b28231915e6d09e81ba8d5c4ae8502b6d5337e3bf101ad72741dc69f0a7cf
info: 0x95d39860a0d6ea3b92cba78069d21f3a987988f3b8417b14f0945353d79ed9e338bbe6e9d63d487abc044a710ce34866
sudo systemctl stop validator
sudo nano $HOME/validators-password.txt
sudo cat $HOME/validators-password.txt
for f in $HOME/staking-deposit-cli/validator_keys/keystore*.json; do sudo cp $HOME/validators-password.txt $HOME/staking-deposit-cli/validator_keys/$(basename $f .json).txt; done
INFO - Loading 2 validator keys...
INFO - Loaded 2 Validators: 95d3986, 82b225f
sudo systemctl stop consensus
sudo nano $HOME/validators-password.txt
sudo cat $HOME/validators-password.txt
for f in $HOME/staking-deposit-cli/validator_keys/keystore*.json; do sudo cp $HOME/validators-password.txt $HOME/staking-deposit-cli/validator_keys/$(basename $f .json).txt; done
cd /usr/local/bin/prysm
sudo bazel run //validator:validator -- accounts import \
--accept-terms-of-use \
--mainnet \
--wallet-dir=/var/lib/prysm/validators \
--keys-dir=$HOME/staking-deposit-cli/validator_keys
sudo /usr/local/bin/validator accounts list \
--wallet-dir=/var/lib/prysm/validators \
--mainnet
cd /usr/local/bin/prysm
sudo bazel run //validator:validator -- accounts list \
--wallet-dir=/var/lib/prysm/validator \
--mainnet
Showing 2 validator accounts
View the eth1 deposit transaction data for your accounts by running `validator accounts list --show-deposit-data`
Account 0 | gently-learning-chamois
[validating public key] 0x95d39860a0d6ea3b92cba78069d21f3a987988f3b8417b14f0945353d79ed9e338bbe6e9d63d487abc044a710ce34866
Account 1 | presumably-powerful-lynx
[validating public key] 0x82b225f66476962b161ed015786df00a0b7b28231915e6d09e81ba8d5c4ae8502b6d5337e3bf101ad72741dc69f0a7cf
level=info msg="Validating for public key" prefix=validator publicKey=0x95d39860a0d6
level=info msg="Validating for public key" prefix=validator publicKey=0x82b225f66476