English
Guide: How to stake on ETH2 Mainnet with Prysm on Ubuntu
Become a validator and help secure eth2, a proof-of-stake blockchain. Anyone with 32 ETH can join.
Nov 24 2020 Update: The new mainnet guide is located here.
Instructions below are now deprecated and for reference only.
Prysm is a Go implementation of Ethereum 2.0 protocol with a focus on usability, security, and reliability. Prysm is developed by Prysmatic Labs, a company with the sole focus on the development of their client. Prysm is written in Go and released under a GPL-3.0 license.

🏁
0. Prerequisites

👩💻
Skills for operating a eth2 validator and beacon node

As a validator for eth2, you will typically have the following abilities:

🎗
Minimum Setup Requirements

  • Operating system: 64-bit Linux (i.e. Ubuntu 20.04 LTS)
  • Processor: Dual core CPU, Intel Core i5–760 or AMD FX-8100 or better
  • Memory: 8GB RAM
  • Storage: 20GB SSD
  • Internet: Broadband internet connection with speeds at least 1 Mbps.
  • Power: Reliable electrical power.
  • ETH balance: at least 32 ETH and some ETH for deposit transaction fees
  • Wallet: Metamask installed
  • Operating system: 64-bit Linux (i.e. Ubuntu 20.04 LTS)
  • Processor: Quad core CPU, Intel Core i7–4770 or AMD FX-8310 or better
  • Memory: 16 GB RAM or more
  • Storage: 1TB SSD or more
  • Internet: Broadband internet connections with speeds at least 10 Mbps
  • Power: Reliable electrical power with uninterruptible power supply (UPS)
  • ETH balance: at least 32 ETH and some ETH for deposit transaction fees
  • Wallet: Metamask installed
Pro Validator Tip: Highly recommend you begin with a brand new instance of an OS, VM, and/or machine. Avoid headaches by NOT reusing testnet keys, wallets, or databases for your mainnet validator.
If you need ideas or a reminder on how to secure your validator, refer to

🛠
Setup Ubuntu

If you need to install Ubuntu, refer to

🎭
Setup Metamask

If you need to install Metamask, refer to

🌱
1. Buy/exchange or consolidate ETH

Every 32 ETH you own allows you to make 1 validator. You can run thousands of validators with your beacon node.
Your ETH (or multiples of 32 ETH) should be consolidated into a single address accessible with Metamask.
If you need to buy/exchange or top up your ETH to a multiple of 32, check out:

👩💻
2. Signup to be a validator at the Launchpad

  1. 1.
    Install dependencies, the ethereum foundation deposit tool and generate your two sets of key pairs.
Each validator will have two sets of key pairs. A signing key and a withdrawal key. These keys are derived from a single mnemonic phrase. Learn more about keys.
You have the choice of downloading the pre-built ethereum foundation deposit tool or building it from source.
Pre-built eth2deposit-cli
Build from source code
Advanced - Most Secure
Download eth2deposit-cli.
1
cd $HOME
2
wget https://github.com/ethereum/eth2.0-deposit-cli/releases/download/v1.0.0/eth2deposit-cli-9310de0-linux-amd64.tar.gz
Copied!
Verify the SHA256 Checksum matches the checksum on the releases page.
1
sha256sum eth2deposit-cli-9310de0-linux-amd64.tar.gz
2
# SHA256 should be
3
# b09da136895a7f77a4b430924ea2ae5827fa47b2bf444c4ea6fcfac5b04b8c8a
Copied!
Extract the archive.
1
tar -xvf eth2deposit-cli-9310de0-linux-amd64.tar.gz
2
cd eth2deposit-cli-9310de0-linux-amd64
Copied!
Make a new mnemonic.
1
./deposit new-mnemonic --chain mainnet
Copied!
Install dependencies.
1
sudo apt update
2
sudo apt install python3-pip git -y
Copied!
Download source code and install.
1
mkdir ~/git
2
cd ~/git
3
git clone https://github.com/ethereum/eth2.0-deposit-cli.git
4
cd eth2.0-deposit-cli
5
sudo ./deposit.sh install
Copied!
Make a new mnemonic.
1
./deposit.sh new-mnemonic --chain mainnet
Copied!
🔥[ Optional ] Pro Security Tip: Run the eth2deposit-cli tool and generate your mnemonic seed for your validator keys on an air-gapped offline machine.
You can copy via USB key the pre-built eth2deposit-cli binaries from an online machine to an air-gapped offline machine.
  • Protects against key-logging attacks, malware/virus based attacks and other firewall or security exploits.
  • Physically isolated from the rest of your network.
  • Must not have a network connection, wired or wireless.
  • Is not a VM on a machine with a network connection.
  • Learn more about air-gapping at wikipedia.
  1. 1.
    Follow the prompts and pick a password. Write down your mnemonic and keep this safe and offline.
  2. 2.
    Follow the steps at https://launchpad.ethereum.org/ while skipping over the steps you already just completed. Study the eth2 phase 0 overview material. Understanding eth2 is the key to success!
  3. 3.
    Back on the launchpad website, upload yourdeposit_data-#########.json found in the validator_keys directory.
  4. 4.
    Connect to the launchpad with your Metamask wallet, review and accept terms.
  5. 5.
    Confirm the transaction(s). There's one deposit transaction of 32 ETH for each validator.
Your transaction is sending and depositing your ETH to the official ETH2 deposit contract address.
Check, double-check, triple-check that the official Eth2 deposit contract address is correct.0x00000000219ab540356cBB839Cbe05303d7705Fa
Be sure to write down or record your mnemonic seed offline. Not email. Not cloud.
Make offline backups, such as to a USB key, of your validator_keys ``directory.

🛸
3. Install a ETH1 node

Ethereum 2.0 requires a connection to Ethereum 1.0 in order to monitor for 32 ETH validator deposits. Hosting your own Ethereum 1.0 node is the best way to maximize decentralization and minimize dependency on third parties such as Infura.
The subsequent steps assume you have completed the best practices security guide.
Your choice of either OpenEthereum, Geth, Besu or Nethermind.
OpenEthereum (Parity)
Geth
Besu
Nethermind
Minimum Hardware Setup

🤖
Install and run OpenEthereum.

1
mkdir ~/openethereum && cd ~/openethereum
2
wget https://github.com/openethereum/openethereum/releases/download/v3.0.1/openethereum-linux-v3.0.1.zip
3
unzip openethereum*.zip
4
chmod +x openethereum
5
rm openethereum*.zip
Copied!
Setup and configure systemd
Run the following to create a unit file to define your eth1.service configuration.
1
cat > $HOME/eth1.service << EOF
2
[Unit]
3
Description = openethereum eth1 service
4
Wants = network-online.target
5
After = network-online.target
6
7
[Service]
8
User = $(whoami)
9
WorkingDirectory= /home/$(whoami)/openethereum
10
ExecStart = /home/$(whoami)/openethereum/openethereum --chain foundation
11
Restart = on-failure
12
13
[Install]
14
WantedBy = multi-user.target
15
EOF
Copied!
Move the unit file to /etc/systemd/system and give it permissions.
1
sudo mv $HOME/eth1.service /etc/systemd/system/eth1.service
Copied!
1
sudo chmod 644 /etc/systemd/system/eth1.service
Copied!
Run the following to enable auto-start at boot time.
1
sudo systemctl daemon-reload
2
sudo systemctl enable eth1
Copied!

Start OpenEthereum on mainnet.

1
sudo systemctl start eth1
Copied!

🧬 Install from the repository.

1
sudo add-apt-repository -y ppa:ethereum/ethereum
2
sudo apt-get update -y
3
sudo apt-get install ethereum -y
Copied!
Setup and configure systemd
Run the following to create a unit file to define your eth1.service configuration.
1
cat > $HOME/eth1.service << EOF
2
[Unit]
3
Description = geth eth1 service
4
Wants = network-online.target
5
After = network-online.target
6
7
[Service]
8
User = $(whoami)
9
ExecStart = /usr/bin/geth --rpc --http
10
Restart = on-failure
11
12
[Install]
13
WantedBy = multi-user.target
14
EOF
Copied!
Move the unit file to /etc/systemd/system and give it permissions.
1
sudo mv $HOME/eth1.service /etc/systemd/system/eth1.service
2
sudo chmod 644 /etc/systemd/system/eth1.service
Copied!
Run the following to enable auto-start at boot time.
1
sudo systemctl daemon-reload
2
sudo systemctl enable eth1
Copied!

⛓ Start geth on mainnet.

1
sudo systemctl start eth1
Copied!

🧬 Install java dependency.

1
sudo apt install openjdk-11-jdk
Copied!

🌜 Download and unzip Besu.

1
cd
2
wget -O besu.tar.gz https://bintray.com/hyperledger-org/besu-repo/download_file?file_path=besu-1.5.0.tar.gz
3
tar -xvf besu.tar.gz
4
rm besu.tar.gz
5
mv besu-1.5.0 besu
Copied!
Setup and configure systemd
Run the following to create a unit file to define your eth1.service configuration.
1
cat > $HOME/eth1.service << EOF
2
[Unit]
3
Description = openethereum eth1 service
4
Wants = network-online.target
5
After = network-online.target
6
7
[Service]
8
User = $(whoami)
9
WorkingDirectory= /home/$(whoami)/besu/bin
10
ExecStart = /home/$(whoami)/besu/bin/besu --data-path="$HOME/.ethereum_besu"
11
Restart = on-failure
12
13
[Install]
14
WantedBy = multi-user.target
15
EOF
Copied!
Move the unit file to /etc/systemd/system and give it permissions.
1
sudo mv $HOME/eth1.service /etc/systemd/system/eth1.service
2
sudo chmod 644 /etc/systemd/system/eth1.service
Copied!
Run the following to enable auto-start at boot time.
1
sudo systemctl daemon-reload
2
sudo systemctl enable eth1
Copied!

⛓ Start besu on mainnet.

1
sudo systemctl start eth1
Copied!

⚙ Install dependencies.

1
sudo apt-get update && sudo apt-get install libsnappy-dev libc6-dev libc6 unzip -y
Copied!

🌜 Download and unzip Nethermind.

1
mkdir ~/nethermind && cd ~/nethermind
2
wget -O nethermind.zip https://nethdev.blob.core.windows.net/builds/nethermind-linux-amd64-1.8.77-9d3a58a.zip
3
unzip nethermind.zip
4
rm nethermind.zip
Copied!

🛸 Launch Nethermind.

1
./Nethermind.Launcher
Copied!
  • Select Ethereum Node
  • Select Ethereum (mainnet) then select Fast sync
  • Yes to enable web3 / JSON RPC
  • Accept default IP
  • Skip ethstats registration
Infura is suitable for limited disk space setups. Always run your own full eth1 node when possible.
Sign up for an API access key at https://infura.io/
  1. 1.
    Sign up for a free account.
  2. 2.
    Confirm your email address.
  3. 3.
    Visit your dashboard https://infura.io/dashboard
  4. 4.
    Create a project, give it a name.
  5. 5.
    Select Mainnet as the ENDPOINT
  6. 6.
    Copy your API key.
  7. 7.
    Update the parameter http-web3provider in the start beacon chain section.
1
#example parameter
2
--http-web3provider=https://infura.io/v3/<YOUR_API_KEY>
Copied!
Syncing the eth1 node could take up to 24 hour.
Your eth1 node is fully sync'd when these events occur.
  • OpenEthereum: Imported #<block number>
  • Geth: Imported new chain segment
  • Besu: Imported #<block number>
  • Nethermind: No longer syncing Old Headers

🛠 Helpful eth1.service commands

​​
🗒
To view and follow eth1 logs
1
journalctl -u eth1 -f
Copied!
🗒
To stop eth1 service
1
sudo systemctl stop eth1
Copied!
🛑
Before continuing the rest of this guide, we recommend you wait until closer to Dec 1st as the Prysm code is rapidly preparing for mainnet.
🚧

💡
4. Install Prysm

1
mkdir ~/prysm && cd ~/prysm
2
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh
Copied!
Prysm is a Ethereum 2.0 client and it comes in two components.
Beacon chain client - Responsible for managing the state of the beacon chain, validator shuffling, and more.
Validator client - Responsible for producing new blocks and attestations in the beacon chain and shard chains.

🔥
5. Configure port forwarding and/or firewall

Specific to your networking setup or cloud provider settings, ensure your validator's firewall ports are open and reachable.
  • Prysm beacon chain node will use port 12000 for udp and port 13000 for tcp
  • eth1 node requires port 30303 for tcp and udp
Port Forwarding Tip: You'll need to forward and open ports to your validator. Verify it's working with https://www.yougetsignal.com/tools/open-ports/ or https://canyouseeme.org/ .

🎩
6. Import validator key

Choose the correct command depending on how you installed eth2deposit-cli.
Pre-built eth2deposit-cli
Built from source code
1
$HOME/prysm/prysm.sh validator accounts import --keys-dir=$HOME/eth2deposit-cli-9310de0-linux-amd64/validator_keys
Copied!
1
$HOME/prysm/prysm.sh validator accounts import --keys-dir=$HOME/git/eth2.0-deposit-cli/validator_keys
Copied!
Accept default wallet location, enter a new password to encrypt your wallet and enter the password for your imported accounts.
WARNING: DO NOT USE THE ORIGINAL KEYSTORES TO VALIDATE WITH ANOTHER CLIENT, OR YOU WILL GET SLASHED.

🏂
7. Start the beacon chain

If you participated in any of the prior test nets, you need to clear the database.
1
$HOME/prysm/prysm.sh beacon-chain --clear-db
Copied!
Your choice of running a beacon chain and validator manually from command line or automatically with systemd.
Systemd - Automated
CLI - Manual

🍰
Benefits of using systemd for your beacon chain and validator

  1. 1.
    Auto-start your beacon chain when the computer reboots due to maintenance, power outage, etc.
  2. 2.
    Automatically restart crashed beacon chain processes.
  3. 3.
    Maximize your beacon chain up-time and performance.

🛠
Setup Instructions

Run the following to create a unit file to define yourbeacon-chain.service configuration.
1
cat > $HOME/beacon-chain.service << EOF
2
# The eth2 beacon chain service (part of systemd)
3
# file: /etc/systemd/system/beacon-chain.service
4
5
[Unit]
6
Description = eth2 beacon chain service
7
Wants = network-online.target
8
After = network-online.target
9
10
[Service]
11
User = $(whoami)
12
Environment = "ClientIP=$(curl -s v4.ident.me)"
13
WorkingDirectory= /home/$(whoami)/prysm
14
ExecStart = /home/$(whoami)/prysm/prysm.sh beacon-chain --p2p-host-ip=${ClientIP} --monitoring-host="0.0.0.0" --http-web3provider=http://127.0.0.1:8545 --accept-terms-of-use
15
Restart = on-failure
16
17
[Install]
18
WantedBy = multi-user.target
19
EOF
Copied!
Geth users can achieve higher performance with
1
--http-web3provider=$HOME/.ethereum/geth.ipc
Copied!
Move the unit file to /etc/systemd/system and give it permissions.
1
sudo mv $HOME/beacon-chain.service /etc/systemd/system/beacon-chain.service
2
sudo chmod 644 /etc/systemd/system/beacon-chain.service
Copied!
Run the following to enable auto-start at boot time and then start your beacon node service.
1
sudo systemctl daemon-reload
2
sudo systemctl enable beacon-chain
3
sudo systemctl start beacon-chain
Copied!
Nice work. Your beacon chain is now managed by the reliability and robustness of systemd. Below are some commands for using systemd.

🛠
Some helpful systemd commands

Check whether the beacon chain is active

1
sudo systemctl is-active beacon-chain
Copied!

🔎
View the status of the beacon chain

1
sudo systemctl status beacon-chain
Copied!

🔄
Restarting the beacon chain

1
sudo systemctl reload-or-restart beacon-chain
Copied!

🛑
Stopping the beacon chain

1
sudo systemctl stop beacon-chain
Copied!

🗒
Viewing and filtering logs

1
journalctl --unit=beacon-chain --since=yesterday
2
journalctl --unit=beacon-chain --since=today
3
journalctl --unit=beacon-chain --since='2020-12-01 00:00:00' --until='2020-12-02 12:00:00'
Copied!
In a new terminal, start the beacon chain.
1
$HOME/prysm/prysm.sh beacon-chain \
2
--p2p-host-ip=$(curl -s v4.ident.me) \
3
--http-web3provider="http://127.0.0.1:8545"
4
--monitoring-host="0.0.0.0" \
5
--accept-terms-of-use
Copied!
Geth users can achieve higher performance with
1
--http-web3provider=$HOME/.ethereum/geth.ipc
Copied!

🧬
8. Start the validator

Store your validator's password in a file and make it read-only.
1
echo "my_password_goes_here" > $HOME/.eth2validators/validators-password.txt
2
sudo chmod 600 $HOME/.eth2validators/validators-password.txt
Copied!
Your choice of running a validator manually from command line or automatically with systemd.
Systemd - Automated
CLI - Manual

🍰
Benefits of using systemd for your validator

  1. 1.
    Auto-start your validator when the computer reboots due to maintenance, power outage, etc.
  2. 2.
    Automatically restart crashed validator processes.
  3. 3.
    Maximize your validator up-time and performance.

🛠
Setup Instructions

Run the following to create a unit file to define yourvalidator.service configuration.
1
cat > $HOME/validator.service << EOF
2
# The eth2 validator service (part of systemd)
3
# file: /etc/systemd/system/validator.service
4
5
[Unit]
6
Description = eth2 validator service
7
Wants = network-online.target beacon-chain.service
8
After = network-online.target
9
10
[Service]
11
User = $(whoami)
12
WorkingDirectory= /home/$(whoami)/prysm
13
ExecStart = /home/$(whoami)/prysm/prysm.sh validator --accept-terms-of-use --wallet-password-file /home/$(whoami)/.eth2validators/validators-password.txt
14
Restart = on-failure
15
16
[Install]
17
WantedBy = multi-user.target
18
EOF
Copied!
Move the unit file to /etc/systemd/system and give it permissions.
1
sudo mv $HOME/validator.service /etc/systemd/system/validator.service
2
sudo chmod 644 /etc/systemd/system/validator.service
Copied!
Run the following to enable auto-start at boot time and then start your validator.
1
sudo systemctl daemon-reload
2
sudo systemctl enable validator
3
sudo systemctl start validator
Copied!

🛠
Some helpful systemd commands

Check whether the validator is active

1
sudo systemctl is-active validator
Copied!

🔎
View the status of the validator

1
sudo systemctl status validator
Copied!

🔄
Restarting the validator

1
sudo systemctl reload-or-restart validator
Copied!

🛑
Stopping the validator

1
sudo systemctl stop validator
Copied!

🗄 Viewing and filtering logs

1
journalctl --unit=validator --since=yesterday
2
journalctl --unit=validator --since=today
3
journalctl --unit=validator --since='2020-12-01 00:00:00' --until='2020-12-02 12:00:00'
Copied!
In a new terminal, start the validator.
1
$HOME/prysm/prysm.sh validator \
2
--accept-terms-of-use \
3
--wallet-password-file /home/$(whoami)/.eth2validators/validators-password.txt
Copied!
Verify that your validator public key appears in the logs. Example below:
1
INFO Enabled validator voting_pubkey: 0x2374.....7121
Copied!
Validator client - Responsible for producing new blocks and attestations in the beacon chain and shard chains.
Beacon chain client - Responsible for managing the state of the beacon chain, validator shuffling, and more.
Congratulations. Once your beacon-chain is sync'd, validator up and running, you just wait for activation. This process takes up to 24 hours. When you're assigned, your validator will begin creating and voting on blocks while earning ETH staking rewards.
Use beaconcha.in and register an account to create alerts and track your validator's performance.

🕒
9. Time Synchronization

Because beacon chain relies on accurate times to perform attestations and produce blocks, your computer's time must be accurate to real NTP or NTS time within 0.5 seconds.
Setup Chrony with the following guide.
chrony is an implementation of the Network Time Protocol and helps to keep your computer's time synchronized with NTP.

🔎
10. Monitoring your validator with Grafana and Prometheus

Prometheus is a monitoring platform that collects metrics from monitored targets by scraping metrics HTTP endpoints on these targets. Official documentation is available here. Grafana is a dashboard used to visualize the collected data.

🐣
10.1 Installation

Install prometheus and prometheus node exporter.
1
sudo apt-get install -y prometheus prometheus-node-exporter
Copied!
Install grafana.
1
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
2
echo "deb https://packages.grafana.com/oss/deb stable main" > grafana.list
3
sudo mv grafana.list /etc/apt/sources.list.d/grafana.list
4
sudo apt-get update && sudo apt-get install -y grafana
Copied!
Enable services so they start automatically.
1
sudo systemctl enable grafana-server.service
2
sudo systemctl enable prometheus.service
3
sudo systemctl enable prometheus-node-exporter.service
Copied!
Update prometheus.yml located in /etc/prometheus/prometheus.yml
1
cat > $HOME/prometheus.yml << EOF
2
global:
3
scrape_interval: 15s # By default, scrape targets every 15 seconds.
4
5
# Attach these labels to any time series or alerts when communicating with
6
# external systems (federation, remote storage, Alertmanager).
7
external_labels:
8
monitor: 'codelab-monitor'
9
10
# A scrape configuration containing exactly one endpoint to scrape:
11
# Here it's Prometheus itself.
12
scrape_configs:
13
- job_name: 'node_exporter'
14
static_configs:
15
- targets: ['localhost:9100']
16
- job_name: 'validator'
17
static_configs:
18
- targets: ['localhost:8081']
19
- job_name: 'beacon node'
20
static_configs:
21
- targets: ['localhost:8080']
22
- job_name: 'slasher'
23
static_configs:
24
- targets: ['localhost:8082']
25
EOF
26
sudo mv $HOME/prometheus.yml /etc/prometheus/prometheus.yml
Copied!
Finally, restart the services.
1
sudo systemctl restart grafana-server.service
2
sudo systemctl restart prometheus.service
3
sudo systemctl restart prometheus-node-exporter.service
Copied!
Verify that the services are running properly:
1
sudo systemctl status grafana-server.service prometheus.service prometheus-node-exporter.service
Copied!
💡
Reminder: Ensure port 3000 is open on the firewall and/or port forwarded if you intend to view monitoring info from a different machine.

📶
10.2 Setting up Grafana Dashboards

  1. 1.
    Open http://localhost:3000 or http://<your validator's ip address>:3000 in your local browser.
  2. 2.
    Login with admin / admin
  3. 3.
    Change password
  4. 4.
    Click the configuration gear icon, then Add data Source
  5. 5.
    Select Prometheus
  6. 6.
    Set Name to "Prometheus"
  7. 7.
    Set URL to http://localhost:9090
  8. 8.
    Click Save & Test
  9. 9.
    Download and save this json file. Or if you have more than 10 validators, use this json file.
  10. 10.
    Click Create + icon > Import
  11. 11.
    Add dashboard by Upload JSON file
  12. 12.
    Click the Import button.
Prysm dashboard

10.3 Setup Alert Notifications

Setup alerts to get notified if your validators go offline.
Get notified of problems with your validators. Choose between email, telegram, discord or slack.
Email Notifications
Telegram Notifications
Discord Notifications
Slack Notifications
  1. 2.
    Sign Up for an account
  2. 3.
    Verify your email
  3. 4.
    Search for your validator's public address
  4. 5.
    Add validators to your watchlist by clicking the bookmark symbol.
  1. 1.
    On the menu of Grafana, select Notification channels under the bell icon.
  2. 2.
    Click on Add channel.
  3. 3.
    Give the notification channel a name.
  4. 4.
    Select Telegram from the Type list.
  5. 5.
    To complete the Telegram API settings, a Telegram channel and bot are required. For instructions on setting up a bot with @Botfather, see this section of the Telegram documentation.
  6. 6.
    Once completed, invite the bot to the newly created channel.
  1. 1.
    On the menu of Grafana, select Notification channels under the bell icon.
  2. 2.
    Click on Add channel.
  3. 3.
    Add a name to the notification channel.
  4. 4.
    Select Discord from the Type list.
  5. 5.
    To complete the set up, a Discord server (and a text channel available) as well as a Webhook URL are required. For instructions on setting up a Discord's Webhooks, see this section of their documentation.
  6. 6.
    Enter the Webhook URL in the Discord notification settings panel.
  7. 7.
    Click Send Test, which will push a confirmation message to the Discord channel.
  1. 1.
    On the menu of Grafana, select Notification channels under the bell icon.
  2. 2.
    Click on Add channel.
  3. 3.
    Add a name to the notification channel.
  4. 4.
    Select Slack from the Type list.
  5. 5.
    For instructions on setting up a Slack's Incoming Webhooks, see this section of their documentation.
  6. 6.
    Enter the Slack Incoming Webhook URL in the URL field.
  7. 7.
    Click Send Test, which will push a confirmation message to the Slack channel.
🎉
Congrats on setting up your validator! You're good to go on eth2.0.
Did you find our guide useful? Let us know with a tip and we'll keep updating it.
Any feedback and all pull requests much appreciated.
😃
Hang out and chat with fellow stakers on telegram @ https://t.me/coincashew
🌛

🧙♂
11. Updating Prysm

Restart beacon chain and validator as per normal operating procedures.
Systemd - Automated
CLI - Manual
1
sudo systemctl reload-or-restart beacon-chain
2
sudo systemctl reload-or-restart validator
Copied!
1
#Control C to exit both your beacon-chain and validator processes
2
#Press up arrow and enter to restart.
Copied!

🧩
12. Reference Material

Appreciate the hard work done by the fine folks at the following links which served as a foundation for creating this guide.
Discord - A New Way to Chat with Friends & Communities
Discord
https://launchpad.ethereum.org/
ethereum
Ethereum 2.0 - Phase 0 Testnet
Prysmatic Labs
Prysm Ethereum Client Documentation | Prysm

🎉
13. Bonus Links

🌰
CoinCashew Guides for other ETH2 Clients

🧱
ETH2 Block Explorers

Ethereum 2.0 Beacon Chain (Phase 0) Block Chain Explorer - Index - beaconcha.in - 2022
beaconcha.in
Mainnet | Beacon Chain Explorer (Phase 0) for Ethereum 2.0
Etherscan Beacon Chain (Phase 0) Ethereum 2.0 Explorer

🗒
Latest Eth2 Info

r/ethstaker
reddit
Home
Custom Discord Invite Links
INVITE.GG
What’s New in Eth2 - HackMD
HackMD

🔥
14. Additional Useful Tips

🛑
14.1 Voluntary exit a validator

Use this command to signal your intentions to stop validating with your validator. This means you no longer want to stake with your validator and want to turn off your node.
  • Voluntary exiting takes a minimum of 2048 epochs (or ~9days). There is a queue to exit and a delay before your validator is finally exited.
  • Once a validator is exited in phase 0, this is non-reversible and you can no longer restart validating again.
  • Your funds will not be available for withdrawal until phase 1.5 or later.
  • After your validator leaves the exit queue and is truely exited, it is safe to turn off your beacon node and validator.
1
$HOME/prysm/prysm.sh validator accounts voluntary-exit
Copied!

🔐
14.2 Verify your mnemonic phrase

Using the eth2deposit-cli tool, ensure you can regenerate the same eth2 key pairs by restoring your validator_keys
1
./deposit existing-mnemonic --chain mainnet
Copied!
When the pubkey is identical, this means your keystore file you correctly verified your mnemonic phrase. Other fields will be different because of salting.

🤖
14.3 Add additional validators

Using the eth2deposit-cli tool, you can add more validators by creating a new deposit data file and validator_keys
For example, in case we originally created 3 validators but now wish to add 5 more validators, we could use the following command.
1
./deposit existing-mnemonic --validator_start_index 3 --num_validators 5 --chain mainnet
Copied!
Complete the steps of uploading the deposit_data-#########.json to the launch pad site.