ETH 2.0 - Validator

Eth2 || Validator || Generate Keys

Eth2 keys should be generated in a safe environment.

Please see this guide on how to securely generate Eth2 keys offline using Ubuntu to boot into a live USB.

Once you have generated your keys, the next step is to submit a deposit using the Launchpad.

Eth2 || Prater || Launchpad

There is currently a shortage of Goerli ETH (testnet ETH) and you may not be able to find the 32 Goerli ETH + fees needed to make a testnet deposit.

As a temporary workaround, the EthStaker community has created a Discord bot that will make a deposit to Prater on your behalf using data from your Metamask transaction.

The deposit process still uses the launchpad, but instead of confirming the transaction through Metamask, you copy the transaction data and submit it to the Discord bot.

This section of the guide has been updated to reflect those changes.

You already installed an Eth1 node, synced an Eth2 beacon node, and generated the key pairs, so click continue until you reach "Upload Deposit File".

Upload Deposit File

Drag and drop your Deposit Data file onto the launchpad site

Select Metamask Wallet

Never send real ETH to the testnet deposit contract!

Ensure Metamask is connected to the Goerli Test Network as shown below

Metamask (Insufficient Balance)

You'll notice warnings that you don't have enough GoETH and the continue button is faded. Not a problem since you won't actually be sending the 32 GoETH through the launchpad.

Right click and "Inspect (Q)":

You can't click CONTINUE because you're GoETH balance is too low, so we need to edit a command in the HTML code which will allow us to proceed.

Right click on the CONTINUE button and select Inspect (Q)

Change Disabled to Enabled

Change disabled to enabled as shown in this link, then close the editor.

After that change, you should be able to click CONTINUE and advance to the next page.

Accept the Risks and Continue

Initiate transaction by clicking "SEND DEPOSIT":

Confirm Prater Deposit Address is Correct:

Check in the upper right corner in Metamask to ensure you are sending to the correct address

  • Prater Deposit Contract: 0xff50ed3d0ec03aC01D4C79aAd74928BFF48a7b2b

Click "DATA" and scroll down to "HEX DATA":

Copy the "HEX DATA" - (Below is a sample)

0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001205d12b827982c2850ff7e23d4c818049f9d9a588cdba8e2913e48651ab370f75f0000000000000000000000000000000000000000000000000000000000000030b8af108a4185d7704b9d9665e269e3d6dc785601a405450a922a99411d9b01b6f23b9beeea4871a87478c8a95f4202540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200094b5b364368c7f6ed0464ddf89fa20a78f0eb92e50d29c6d96b11d70a755b600000000000000000000000000000000000000000000000000000000000000608d34c9a2aed60e6cd9d74a4c2b9e087cb18c83c7251059fc4edb13e4364db334e49c558a365bb258da86edcecf81d2160bd7c14e8250d10068ef85b64a5a8ca296fdeff5763fe5f76bac1dd32928a754814923920bbcbed3a368c7587b015f0b

Join EthStaker Discord

Join the EthStaker Discord and find the channel named "request-goerli-eth"

Submit HEX DATA to EthStaker bot as shown below (add !goerliETH in front)

!goerliEth 0x22895118000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001205d12b827982c2850ff7e23d4c818049f9d9a588cdba8e2913e48651ab370f75f0000000000000000000000000000000000000000000000000000000000000030b8af108a4185d7704b9d9665e269e3d6dc785601a405450a922a99411d9b01b6f23b9beeea4871a87478c8a95f4202540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200094b5b364368c7f6ed0464ddf89fa20a78f0eb92e50d29c6d96b11d70a755b600000000000000000000000000000000000000000000000000000000000000608d34c9a2aed60e6cd9d74a4c2b9e087cb18c83c7251059fc4edb13e4364db334e49c558a365bb258da86edcecf81d2160bd7c14e8250d10068ef85b64a5a8ca296fdeff5763fe5f76bac1dd32928a754814923920bbcbed3a368c7587b015f0b

Transaction Successful

The bot should respond with a confirmation, but it may take some time to complete the deposit on chain if there is congestion on the Goerli testnet.

Use http://prater.beaconcha.in/ to search your validator and check the status

The deposit_data-[timestamp].json file contains your validator"pubkey" which you can use to check the status of Eth1 and Eth2 deposits.

Once the deposit is confirmed, you'll enter the queue and be assigned an activation epoch.

Click Deposits

Eth2 || Validator || Import Keys

Change Ownership of Lighthouse Directory:

DO NOT JUST COPY THE NEXT COMMAND

You must change YOURUSERNAME:YOURUSERNAME to your username in the command below.

sudo chown -R YOURUSERNAME:YOURUSERNAME /var/lib/lighthouse

Note: If you don't know your username, use the command whoami

Change directory to lighthouse

cd ~/lighthouse

Import keystore into Lighthouse:

Copy your keystore file from the USB to the HOME folder then run the following command:

lighthouse --network prater account validator import --directory $HOME --datadir /var/lib/lighthouse

Keys Successfully Imported

Once the keystore is imported, you can delete the keystore from the HOME folder.

You should save an offline copy of the keystore on the USB, but you can always generate a new keystore file using the 24 word mnemonic if needed.

Change ownership of /var/lib/lighthouse back to root:

sudo chown root:root /var/lib/lighthouse

Change ownership of /var/lib/lighthouse/beacon :

sudo chown -R lighthousebeacon:lighthousebeacon /var/lib/lighthouse/beacon

Eth2 || Validator || Systemd

Create lighthousevalidator user:

sudo useradd --no-create-home --shell /bin/false lighthousevalidator

Create /var/lib/lighthouse/validators directory:

sudo mkdir -p /var/lib/lighthouse/validators

Set permissions for /var/lib/lighthouse/validators :

sudo chown -R lighthousevalidator:lighthousevalidator /var/lib/lighthouse/validators

Create lighthousevalidator.service:

sudo nano /etc/systemd/system/lighthousevalidator.service

Paste the following into the file:

[Unit] Description=Lighthouse Validator Wants=network-online.target After=network-online.target [Service] User=lighthousevalidator Group=lighthousevalidator Type=simple Restart=always RestartSec=5 ExecStart=/usr/local/bin/lighthouse validator_client --datadir /var/lib/lighthouse --network prater [Install] WantedBy=multi-user.target

The file should look like this:

Use Ctrl + X to exit, Y to save, then Enter to confirm.

Below is a description of the commands used to in the validator service file:

  • /usr/local/bin/lighthouse validator_client - start validator client

  • --datadir /var/lib/lighthouse/validator - data directory for lighthouse validator

Reload Daemon:

sudo systemctl daemon-reload

ETH2 || Validator || Run

Start lighthousevalidator.service:

sudo systemctl start lighthousevalidator

Check lighthousevalidator.service output:

sudo journalctl -fu lighthousevalidator.service

This shows running journal entries created by lighthousevalidator.service . You can use Ctrl + C to close the window, but the program will continue running in the background.

Use sudo systemctl stop lighthousevalidator if you need to stop the service.

Validator || Waiting for Beacon Node to Sync

If the beacon node has not finished syncing, the validator will provide a warning:

Validator || Awaiting Activation

You can use https://prater.beaconcha.in/ to check the status of your validator.

Beaconcha.in || Awaiting Activation

Validator || Successful Attestation

Congratulations, you are officially staking! No other action is needed, but you should ocassionally check to ensure all software is up to date (both Geth and Lighthouse).

Update Geth (and other system software)

sudo apt update && sudo apt upgrade

Update Lighthouse

Lighthouse does not automatically update. Follow these instructions to install updates:

1. Stop lighthousebeacon and lighthousevalidator

sudo systemctl stop lighthousebeacon
sudo systemctl stop lighthousevalidator

2. Change directories, pull master, and make:

cd ~/lighthouse
git pull origin master
make

3. Copy into /usr/local/bin:

sudo cp /$HOME/.cargo/bin/lighthouse /usr/local/bin

4. Start beacon node and check output:

sudo systemctl start lighthousebeacon
sudo journalctl -fu lighthousebeacon.service

5. Start validator and check output:

sudo systemctl start lighthousevalidator
sudo journalctl -fu lighthousevalidator.service

Lighthouse is updated! Check https://prater.beaconcha.in/ to ensure you are attesting again.

Last updated