Joining Eth2 Mainnet

This section outlines the step-by-step process for how to join eth2 mainnet to run a Prysm eth2 beacon node and validator.

image

Ensure You Are Not Being Scammed

The correct address for the launchpad is https://launchpad.ethereum.org and the only, official validator deposit contract is 0x00000000219ab540356cbb839cbe05303d7705fa. Do not send ETH directly to the contract, and only join by using the eth2 launchpad.

Step 1: Get Prysm

To begin, follow the instructions to fetch and install Prysm for your operating system.

Step 2: Run your beacon node

image

Beacon node

First, let's run the beacon node connected to the main eth2 network. To run a beacon node, you will need access to an eth1 node. We have dedicated instructions for this here.

Using the Prysm installation script

./prysm.sh beacon-chain --http-web3provider=<YOUR_ETH1_NODE_ENDPOINT>

Where <YOUR_ETH1_NODE_ENDPOINT> is in the format of an http endpoint such as http://host:port (ex: http://localhost:8545 for geth) or an IPC path such as /path/to/geth.ipc

Using Docker

docker run -it -v $HOME/.eth2:/data -p 4000:4000 -p 13000:13000 -p 12000:12000/udp --name beacon-node \
gcr.io/prysmaticlabs/prysm/beacon-chain:stable \
--datadir=/data \
--rpc-host=0.0.0.0 \
--monitoring-host=0.0.0.0 \
--http-web3provider=<YOUR_ETH1_NODE_ENDPOINT>

Where <YOUR_ETH1_NODE_ENDPOINT> is in the format of an http endpoint such as http://host:port (ex: http://localhost:8545 for geth) or an IPC path such as /path/to/geth.ipc

Using Bazel

bazel run //beacon-chain -- --http-web3provider=<YOUR_ETH1_NODE_ENDPOINT>

Where <YOUR_ETH1_NODE_ENDPOINT> is in the format of an http endpoint such as http://host:port (ex: http://localhost:8545 for geth) or an IPC path such as /path/to/geth.ipc

Syncing your node

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. You do not need to worry about this if the chain has not started yet.

Step 3: Complete the onboarding process in the official eth2 launchpad

The Official Eth2 Launchpad is the easiest way to go through a step-by-step process to deposit your 32 ETH to become a validator. Throughout the process, you'll be asked to generate new validator credentials using the official Ethereum deposit command-line-tool here. Make sure you use the mainnet option when generating keys with the deposit CLI. During the process, you will have generated a validator_keys folder under the eth2.0-deposit-cli directory. You can import all of your validator accounts into Prysm from that folder in the next step.

Step 4: Import your validator accounts into Prysm

For this step, you'll need to copy the path to the validator_keys folder under the eth2.0-deposit-cli directory you created during the launchpad process. For example, if your eth2.0-deposit-cli installation is in your $HOME (or %LOCALAPPDATA% on Windows) directory, you can then run the following commands for your operating system

Using the Prysm installation script

./prysm.sh validator accounts import --keys-dir=$HOME/eth2.0-deposit-cli/validator_keys

You will be asked to do a one time acknowledgement of our Terms of Use. You can also read the legal terms first, then confirm them via a flag using --accept-terms-of-use in both your beacon node and validator.

Using Docker

docker run -it -v $HOME/eth2.0-deposit-cli/validator_keys:/keys \
-v $HOME/Eth2Validators/prysm-wallet-v2:/wallet \
--name validator \
gcr.io/prysmaticlabs/prysm/validator:stable \
accounts import --keys-dir=/keys --wallet-dir=/wallet

You will be asked to do a one time acknowledgement of our Terms of Use. You can also read the legal terms first, then confirm them via a flag using --accept-terms-of-use in both your beacon node and validator.

Using Bazel

bazel run //validator:validator -- accounts import --keys-dir=$HOME/eth2.0-deposit-cli/validator_keys

You will be asked to do a one time acknowledgement of our Terms of Use. You can also read the legal terms first, then confirm them via a flag using --accept-terms-of-use in both your beacon node and validator.

Step 5: Run your validator

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

Using the Prysm installation script

./prysm.sh validator

Using Docker

docker run -it -v $HOME/Eth2Validators/prysm-wallet-v2:/wallet \
-v $HOME/Eth2:/validatorDB \
--network="host" --name validator \
gcr.io/prysmaticlabs/prysm/validator:stable \
--beacon-rpc-provider=127.0.0.1:4000 \
--wallet-dir=/wallet \
--datadir=/validatorDB

Using Bazel

bazel run //validator

Step 6: Wait for your validator assignment

Please note that it may take from 5-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. If the chain has not yet started, it will be ready to start proposing blocks and signing votes as soon as the genesis time is reached.

To check on the status of your validator, we recommend checking out the popular block explorers: beaconcha.in by Bitfly and beacon.etherscan.io by the Etherscan team.

image

Advanced wallet setups

For running an advanced wallet setups, our documentation includes comprehensive guides as to how to use the wallet built into Prysm to recover another wallet, use a remote signing server, and more. You can read more about it here.

Congratulations, you are now fully participating in eth2

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