{#_Validators}
with the number of validators you want to run (32ETH per), and {YourWithdrawalAddress}
with an Ethereum address you control.
NOTE: Once set, the withdrawal address CANNOT be changed, so be ABSOLUTELY SURE that it is an address you control the private keys for (or it’s a multisig and you control the private keys to the underlying wallets) and correctly specified. For example: —eth1_withdrawal_address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
DO NOT set the withdrawal address to a central exchange wallet or account. This MUST be an EOA or smart contract wallet, as ETH is not “transferred” but rather “generated” in the wallet via a state change, and that doesn’t play nicely with Coinbase/Kraken/etc.
Once you execute the above steps, confirm your withdrawal address within the generated files, and provide your language preferences. You will then be asked to create the validator keystore password. Note this password on the variables document. You will need this later to import the validator(s) into the Consensus Client. Please note that this document will be referenced a number of times below, and is meant to serve as an example for a way to keep a secure paper record of your passwords, file locations, etc.
Next, a seed phrase (mnemonic) will be generated. Back it up somewhere safe. This is CRITICAL. You will need this to add additional validators or to regenerate keys if lost. IF YOU LOSE THIS MNEMONIC, YOU MAY LOSE ACCESS TO THE VALIDATOR! Not your keys, not your coins.
Once you have confirmed your mnemonic your validator(s) will be created. The following files will be generated and placed on your desktop.
::1 localhost line
, create a new line, and add the local IP of your node (see: variables), then a few spaces so you’re aligned with the localhost text, and then enter the name of the Node you used above (see: variables).
Now, lets test to see if you can SSH into your Node. Simply open a new terminal window, and enter the following command, subbing in the name of the Node, user, and the SSH port (see: variables).
{user}@{node_name}
, you’re set! Once you see this, you can disconnect the Node from the monitor and keyboard, and can preform the remainder of tasks from any laptop or computer on the same LAN using the command above to SSH in. The Node only needs to remain connected to power and ethernet (powered via UPS if possible).
{your-username}
may run the following commands on {device-name}
: (ALL:ALL) ALL” you have sudo privileges with your current user.
Now, lock the root account:
NTP service: active
. If for some reason it is not, run the following command:
{FeeRecipientAddress}
with the address you’d like to receive the validator tip fees.
Make sure to replace {CheckpointSyncURL}
(x2) with a valid checkpoint sync URL see here for more information - be sure to select a Mainnet endpoint.
Press CTRL + X then Y then ENTER to save and exit.
Reload systemd to reflect the changes and start the service. Check the status to make sure it’s running correctly:
{FeeRecipientAddress}
with the address you’d like to receive the validator tip fees.
Make sure to replace {yourgraffiti}
with your own graffiti string (max 32 bytes). (e.g. —graffiti=“Endaoment.org”)
Press CTRL + X then Y then ENTER to save and exit.
Note that you can check the byte count by running a simple python command from terminal on your laptop:
deposit_data-1682896118.json keystore-m_12381_3600_0_0_0-1682896115.jsonNote that while you will only ever have 1 deposit file (regardless of the amount of validators), you will have 1 keystore file for each validator you are setting up on the Node. You only need to move the keystore file(s) to the validator_keys folder. Now that we have the file names, we issue a command to copy those files from /mnt/usb to $HOME/staking-deposit-cli/validator_keys:
Initiate All Transactions
.
This will pop open MetaMask (or one of the other supported wallets) where you can confirm and broadcast each transaction.
Once all the transactions have successfully completed you are done! WOOOOOOO! Congratulations you have deposited your stake!
Status
section that provides an activation estimate time for each validator.
That’s it. You now have a functioning Execution and Consensus client and the staking deposit done. Once your deposit is active you will automatically begin staking and earning rewards.
Probably a good time to touch grass.
validator_start_index
, which is the number of validators you already have created using your mnemonic.
validator_keys
validator_keys
directory (typically $HOME/staking-deposit-cli/validator_keys
) on a USB for emergencies.
After ensuring you have a backup of these files as described in Step 1 Generate Staking Data, you can safely remove the validator_keys directory. Note that this will not impact your existing validators, as in Step 11 Import Validator Keys the validator_keys are imported into the validator instance. The copies referenced above are “extra”:
{#_Existing_Validators}
with the number of validators you have already generated with this mnemonic, and replace {#_New_Validators}
with the number of additional validators you want to run (32ETH per), and {YourWithdrawalAddress}
with an Ethereum address you control.
NOTE: Once set, the withdrawal address CANNOT be changed, so be ABSOLUTELY SURE that it is an address you control the private keys for (or it’s a multisig and you control the private keys to the underlying wallets) and correctly specified. For example: —eth1_withdrawal_address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
DO NOT set the withdrawal address to a central exchange wallet or account. This MUST be an EOA or smart contract wallet, as ETH is not “transferred” but rather “generated” in the wallet via a state change, and that doesn’t play nicely with Coinbase/Kraken/etc.
Once you execute the above steps, confirm your withdrawal address within the generated files, and provide your language preferences. You will then be asked to create the validator keystore password. You must use the same one used with the other validators!
Once you have confirmed your mnemonic your validator(s) will be created. The following files will be generated and placed on your desktop.
validator_keys
generated during this process. Remember that they can be regenerated as needed!