Activating a validator

This section outlines the step-by-step process for GNU/Linux found on prylabs.net to submit a deposit and initialise a validator for participation in the testnet.

Step 1: Get Prysm

To begin, follow the instructions to fetch and install Prysm with either the Prysm Installation Script, Docker or Bazel.

Step 2: Get Göerli ETH - Test ether

You will be asked to link a wallet address to your validator with either the Metamask browser extension (recommended) or Portis. Select your preferred platform and click through the steps presented.

The wallet is scanned for the required amount of Göerli ETH after being linked. If the wallet does not have sufficient funds, you will be given the option to receive the required GöETH from our faucet.

Step 3a: Generating a validator keypair

Depending on your platform, issue the appropriate command from the examples below to generate a public / private keypair for your validator.

NOTICE: When prompted, provide a password to encrypt your new ETH2 validator and withdrawal keys.

Generating with prysm.sh

./prysm.sh validator accounts create --keystore-path=$HOME/.eth2validators

Generating with Docker

docker run -it -v $HOME/.eth2validators:/data \
gcr.io/prysmaticlabs/prysm/validator:latest \
accounts create --keystore-path=/data

Generating with Bazel

bazel run //validator -- accounts create --keystore-path=$HOME/.eth2validators

This command will output a Raw Transaction Data block:

Step 3b: Submitting the deposit data

NOTICE: The beacon-chain node you are using should be completely synced before submitting your deposit. You may incur minor inactivity balance penalties if the validator is unable to perform its duties by the time the deposit is processed and activated by the ETH2 network.

Method 1: Copy and paste the deposit data into the field on prylabs.net:

Method 2: Users may also choose to submit the required 32 GöETH along with the data directly to the current deposit contract ****(found here). To enable the hex data field on the Send page in Metamask, click your wallets avatar > Settings > Advanced > toggle 'Show hex data'.

Step 4a: Starting up the beacon node

NOTICE: If you have already started and syncronised your beacon node, this portion can be skipped.

The beacon node is a long running process that will require a dedicated terminal window. Depending on your platform, issue the appropriate command from the examples below to start the beacon node.

Starting the beacon-chain node with prysm.sh

./prysm.sh beacon-chain --datadir=$HOME/.eth2

Starting the beacon-chain node with Docker

docker run -it -v $HOME/.eth2:/data -p 4000:4000 -p 13000:13000 -p 12000:12000/udp \
gcr.io/prysmaticlabs/prysm/beacon-chain:latest \
--datadir=/data

Starting the beacon-chain node with Bazel

bazel run //beacon-chain -- --datadir=$HOME/.eth2

The beacon-chain node will spin up and immediately begin communicating with the Prysm testnet, outputting data similar to the image below.

The process of syncronising may take a while; the incoming block per second capacity is dependent upon the connection strength, network congestion and overall peer count.

Step 4b: Starting up the validator client

NOTICE: The beacon-chain node you are using should be completely synced before submitting your deposit. You may incur minor inactivity balance penalties if the validator is unable to perform its duties by the time the deposit is processed and activated by the ETH2 network.

Open a second terminal window. Depending on your platform, issue the appropriate command from the examples below to start the validator.

NOTICE: When prompted, provide the password used to encrypt your ETH2 validator key.

Starting the validator client with prysm.sh

./prysm.sh validator --keystore-path=$HOME/.eth2validators

Starting the validator client with Docker

docker run -it -v $HOME/.eth2validators:/data --network="host" \
gcr.io/prysmaticlabs/prysm/validator:latest \
--beacon-rpc-provider=127.0.0.1:4000 \
--keystore-path=/data

Starting the validator client with Bazel

bazel run //validator -- --keystore-path=$HOME/.eth2validators

Step 5: Submitting the deposit contract

Once both the beacon node and validator client are successfully running, make your deposit by clicking the button and following the steps presented in your wallet.

Step 6: Wait for your validator assignment

Please note that it may take up to 12 hours for nodes in the ETH2 network to process a deposit. In the meantime, leave both terminal windows open and running; once the node is activated by the ETH2 network, the validator will immediately begin receiving tasks and performing its responsibilities.

To check on the status of your validator, run the following command:

Check validator status with prysm.sh

./prysm.sh validator accounts status --keymanager=keystore --keymanageropts=$HOME/.eth2validators --beacon-rpc-provider=localhost:4000

Check validator status with Bazel

bazel run validator accounts status -- --keymanager=keystore --keymanageropts=$HOME/.eth2validator --beacon-rpc-provider=localhost:4000

Additional information about the validator and status of ETH1 deposits is also available on various testnet block explorers.

Running multiple validators

Multiple validator keys can easily be initialised on the same validator process.

Simply repeat the following steps:

  • Step 3a to generate additional validator keys in the same keystore path, using the same password.
  • Step 3b to deposit 32 Göerli ETH for each validator key
  • Now restart the validator process, and it will automatically detect the new keys!

For running multiple keypairs alongside multiple validator instances, or to use different passwords refer the wallet keymanager section of this documentation.

Congratulations, you are now fully participating in the Prysm ETH 2.0 Phase 0 testnet!

Still have questions? Stop by our Discord for further assistance!