For the complete documentation index, see llms.txt. This page is also available as Markdown.

Step 5: Installing consensus client

Pick a consensus client

To strengthen Ethereum's resilience against potential attacks or consensus bugs, it's best practice to run a minority client in order to increase client diversity. Find the latest distribution of consensus clients here: https://clientdiversity.org

🛡️ Recommendation 🛡️: Lodestar

Your choice of Lighthouse, Nimbus, Teku, Prysm or Lodestar.

Lighthouse is an Eth client with a heavy focus on speed and security. The team behind it, Sigma Prime, is an information security and software engineering firm who have funded Lighthouse along with the Ethereum Foundation, Consensys, and private individuals. Lighthouse is built in Rust and offered under an Apache 2.0 License.

⚙️ 4.1. Install rust dependency

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Enter '1' to proceed with the default install.

Update your environment variables.

echo export PATH="$HOME/.cargo/bin:$PATH" >> ~/.bashrc
source ~/.bashrc

Install rust dependencies.

sudo apt-get update
sudo apt install -y git gcc g++ make cmake pkg-config libssl-dev libclang-dev clang protobuf-compiler

💡 4.2. Build Lighthouse from source

mkdir ~/git
cd ~/git
git clone -b stable https://github.com/sigp/lighthouse.git
cd lighthouse
make

Improve some Lighthouse benchmarks by around 20% at the expense of increased compile time? Use maxperf profile. To compile with maxperf, replace the above make command with

PROFILE=maxperf make

In case of compilation errors, run the following sequence.

This build process may take a few minutes.

Verify lighthouse was installed properly by checking the version number.

🎩 4.3. Import validator key

When you import your keys into Lighthouse, your validator signing key(s) are stored in the $HOME/.lighthouse/mainnet/validators folder.

Run the following command to import your validator keys from the eth2deposit-cli tool directory.

Enter your keystore password to import accounts.

Verify the accounts were imported successfully.

🔥 4.4. 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.

  • Lighthouse consensus client requires port 9000 for tcp and udp

  • Execution client requires port 30303 for tcp and udp

⛓️ 4.5. Start the beacon chain

Create a systemd unit file to define yourbeacon-chain.service configuration.

Paste the following configuration into the file.

Checkpoint Sync: allows consensus layer to start within minutes instead of days.

  • Refer to https://eth-clients.github.io/checkpoint-sync-endpoints/ and feel free to pick one of the random state providers from the list, instead of the above endpointhttps://beaconstate.info

  • Do not trust any single checkpoint provider. Verify the state root and block root against multiple checkpoints to ensure you're on the correct chain.

To exit and save, press Ctrl + X, then Y, thenEnter.

Update file permissions.

Run the following to enable auto-start at boot time and then start your beacon node service.

🧬 4.6. Start the validator

Create a systemd unit file to define your validator.service configuration.

Paste the following configuration into the file.

  • Replace0x_CHANGE_THIS_TO_MY_ETH_FEE_RECIPIENT_ADDRESS with your own Ethereum address that you control. Tips are sent to this address and are immediately spendable, unlike the validator's attestation and block proposal rewards.

To exit and save, press Ctrl + X, then Y, thenEnter.

Update file permissions.

Run the following to enable auto-start at boot time and then start your validator.

Nimbus is a research project and a client implementation for Ethereum 2.0 designed to perform well on embedded systems and personal mobile devices, including older smartphones with resource-restricted hardware. The Nimbus team are from Status the company best known for their messaging app/wallet/Web3 browser by the same name. Nimbus (Apache 2) is written in Nim, a language with Python-like syntax that compiles to C.

Note: Nimbus combines both validator client and beacon chain client into one process.

⚙️ 4.1. Build Nimbus from source

Install dependencies.

Install and build Nimbus.

The build process may take a few minutes.

Verify Nimbus was installed properly by displaying the version.

Copy the binary file to /usr/bin

🎩 4.2. Import validator key

Create a directory structure to store nimbus data.

Take ownership of this directory and set the correct permission level.

The following command will import your validator keys.

Enter your keystore password to import accounts.

Now you can verify the accounts were imported successfully by doing a directory listing.

You should see a folder named for each of your validator's pubkey.

🔥 4.3. 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.

  • Nimbus consensus client will use port 9000 for tcp and udp

  • Execution client requires port 30303 for tcp and udp

🏂 4.4. Start the beacon chain and validator

Running Checkpoint Sync

Checkpoint Sync: allows consensus layer to start within minutes instead of days.

  • Refer to https://eth-clients.github.io/checkpoint-sync-endpoints/ and feel free to pick one of the random state providers from the list, instead of the endpointhttps://beaconstate.info

  • Do not trust any single checkpoint provider. Verify the state root and block root against multiple checkpoints to ensure you're on the correct chain.

Run the following command.

When the checkpoint sync is complete, you'll see the following message:

Done, your beacon node is ready to serve you! Don't forget to check that you're on the canonical chain by comparing the checkpoint root with other online sources. See https://nimbus.guide/trusted-node-sync.html for more information.

🛠 Setup systemd service

Create a systemd unit file to define yourbeacon-chain.service configuration.

Paste the following configuration into the file.

  • Replace0x_CHANGE_THIS_TO_MY_ETH_FEE_RECIPIENT_ADDRESS with your own Ethereum address that you control. Tips are sent to this address and are immediately spendable, unlike the validator's attestation and block proposal rewards.

To exit and save, press Ctrl + X, then Y, thenEnter.

Update file permissions.

Run the following to enable auto-start at boot time and then start your beacon node service.

PegaSys Teku (formerly known as Artemis) is a Java-based Ethereum 2.0 client designed & built to meet institutional needs and security requirements. PegaSys is an arm of ConsenSys dedicated to building enterprise-ready clients and tools for interacting with the core Ethereum platform. Teku is Apache 2 licensed and written in Java, a language notable for its maturity & ubiquity.

Note: Teku combines both validator client and beacon chain client into one process.

⚙️ 4.1 Build Teku from source

Install git.

Install Java 17 LTS.

Verify Java 17+ is installed.

Install and build Teku.

This build process may take a few minutes.

Verify Teku was installed properly by displaying the version.

Copy the teku binary file to /usr/bin/teku

🔥 4.2. 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.

  • Teku consensus client will use port 9000 for tcp and udp

  • Execution client requires port 30303 for tcp and udp

🏂 4.3. Configure the beacon chain and validator

Teku combines both the beacon chain and validator into one process.

Setup a directory structure for Teku.

Copy your validator_files directory to the data directory we created above.

Remove the extra deposit_data file. Answer 'y' to remove write-protected regular file.

Storing your keystore password in a text file is required so that Teku can decrypt and load your validators automatically.

Replace <my_keystore_password_goes_here> with your keystore password between the single quotation marks and then run the command to save it to validators-password.txt

Confirm that your keystore password is correct.

Move the password file and make it read-only.

Clear the bash history in order to remove traces of keystore password.

Create your teku.yaml configuration file.

Paste the following configuration into the file.

Checkpoint Sync: allows consensus layer to start within minutes instead of days.

  • Refer to https://eth-clients.github.io/checkpoint-sync-endpoints/ and feel free to pick one of the random state providers from the list, instead of the above endpointhttps://beaconstate.info

  • Do not trust any single checkpoint provider. Verify the state root and block root against multiple checkpoints to ensure you're on the correct chain.

  • Replace<0x_CHANGE_THIS_TO_MY_ETH_FEE_RECIPIENT_ADDRESS> with your own Ethereum address that you control. Tips are sent to this address and are immediately spendable, unlike the validator's attestation and block proposal rewards.

🎩 4.4 Import validator key

When specifying directories for your validator-keys, Teku expects to find identically named keystore and password files.

For example keystore-m_12221_3600_1_0_0-11222333.json and keystore-m_12221_3600_1_0_0-11222333.txt

Create a corresponding password file for every one of your validators.

Verify that your validator's keystore and validator's passwords are present by checking the following directory.

Update directory ownership.

🏁 4.5. Start the beacon chain and validator

Use systemd to manage starting and stopping teku.


🛠️ Setup systemd service


Run the following to create a unit file to define yourbeacon-chain.service configuration. Simply copy and paste.

Move the unit file to /etc/systemd/system

Update file permissions.

Run the following to enable auto-start at boot time and then start your beacon node service.

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.

⚙️ 4.1. Install Prysm

🔥 4.2. 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 consensus client will use port 12000 for udp and port 13000 for tcp

  • Execution client requires port 30303 for tcp and udp

🎩 4.3. Import validator key


  • Type "accept" to accept terms of use

  • Press enter to accept default wallet location

  • Enter a new prysm-only password to encrypt your local prysm wallet files

  • and enter the keystore password for your imported accounts.

For simplicity, use the same password for the keystore and prysm-only password.

Verify your validators imported successfully.

Confirm your validator's pubkeys are listed.

#Example output:

Showing 1 validator account View the eth1 deposit transaction data for your accounts by running `validator accounts list --show-deposit-data

Account 0 | pens-brother-heat [validating public key] 0x2374.....7121

🏂 4.4. Start the beacon chain

🛠️ Setup systemd service

Create a systemd unit file to define yourbeacon-chain.service configuration.

Paste the following configuration into the file.

Checkpoint Sync: allows consensus layer to start within minutes instead of days.

  • Refer to https://eth-clients.github.io/checkpoint-sync-endpoints/ and feel free to pick one of the random state providers from the list, instead of the above endpointhttps://beaconstate.info

  • Do not trust any single checkpoint provider. Verify the state root and block root against multiple checkpoints to ensure you're on the correct chain.

  • Replace0x_CHANGE_THIS_TO_MY_ETH_FEE_RECIPIENT_ADDRESS with your own Ethereum address that you control. Tips are sent to this address and are immediately spendable, unlike the validator's attestation and block proposal rewards.

To exit and save, press Ctrl + X, then Y, thenEnter.

Update file permissions.

Run the following to enable auto-start at boot time and then start your beacon node service.

🧬 4.5. Start the validator

Store your prysm-only password in a file and make it read-only.

This is required so that Prysm can decrypt and load your validators.

Replace <my_password_goes_here> with your prysm-only password.

Verify your password is correct.

Clear the bash history in order to remove traces of your prysm-only password.

🛠️ Setup systemd service


Create a systemd unit file to define your validator.service configuration.

Paste the following configuration into the file.

  • Replace0x_CHANGE_THIS_TO_MY_ETH_FEE_RECIPIENT_ADDRESS with your own Ethereum address that you control. Tips are sent to this address and are immediately spendable, unlike the validator's attestation and block proposal rewards.

To exit and save, press Ctrl + X, then Y, thenEnter.

Update file permissions.

Run the following to enable auto-start at boot time and then start your validator.

Lodestar is a Typescript implementation of the official Ethereum 2.0 specification by the ChainSafe.io team. In addition to the beacon chain client, the team is also working on 22 packages and libraries. A complete list can be found here. Finally, the Lodestar team is leading the Eth2 space in light client research and development and has received funding from the EF and Moloch DAO for this purpose.

⚙️ 4.1 Build Lodestar from source

Install curl and git.

Install yarn.

Confirm yarn is installed properly.

Install nodejs.

Install and build Lodestar.

This build process may take a few minutes.

Verify Lodestar was installed properly by displaying the version.

Setup a directory structure for Lodestar.

🔥 4.2. 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.

  • Lodestar consensus client will use port 9000

  • Execution client requires port 30303

🎩 4.3. Import validator key

Enter your keystore password to import accounts.

Confirm your keys were imported properly.

🏂 4.4. Start the beacon chain and validator

Run the beacon chain automatically with systemd.


🛠 Setup systemd service

Create a systemd unit file to define yourbeacon-chain.service configuration.

Paste the following configuration into the file.

Checkpoint Sync: allows consensus layer to start within minutes instead of days.

  • Refer to https://eth-clients.github.io/checkpoint-sync-endpoints/ and feel free to pick one of the random state providers from the list, instead of the above endpointhttps://beaconstate.info

  • Do not trust any single checkpoint provider. Verify the state root and block root against multiple checkpoints to ensure you're on the correct chain.

  • Replace0x_CHANGE_THIS_TO_MY_ETH_FEE_RECIPIENT_ADDRESS with your own Ethereum address that you control. Tips are sent to this address and are immediately spendable, unlike the validator's attestation and block proposal rewards.

To exit and save, press Ctrl + X, then Y, thenEnter.

Update file permissions.

Run the following to enable auto-start at boot time and then start your beacon node service.

🧬 4.5. Start the validator

🛠️ Setup systemd service

Create a systemd unit file to define your validator.service configuration.

Paste the following configuration into the file.

  • Replace0x_CHANGE_THIS_TO_MY_ETH_FEE_RECIPIENT_ADDRESS with your own Ethereum address that you control. Tips are sent to this address and are immediately spendable, unlike the validator's attestation and block proposal rewards.

To exit and save, press Ctrl + X, then Y, thenEnter.

Update file permissions.

Run the following to enable auto-start at boot time and then start your validator.

🛠️ Helpful Consensus Client systemd commands

🗄 Viewing and filtering logs

🔎 View the status of the beacon chain

🔄 Restarting the beacon chain

🛑 Stopping the beacon chain

🗄 Viewing and filtering logs

🔎 View the status of the validator

🔄 Restarting the validator

🛑 Stopping the validator

⏭️ Next Steps

Sync Timeline: Syncing the consensus client is instantaneous with checkpoint sync but the execution client can take up to 1 week. On high-end machines with gigabit internet, expect your node to be fully syncing to take less than a day.

Activation Queue: Once your EL+CL is synced, validator up and running, you just wait for activation. This process can take 24+ hours. Only 900 new validators can join per day. Check the queue length: https://wenmerge.com

Activated: When you're activated, your validator will begin creating and voting on blocks while earning staking rewards.

Quick monitoring: Use https://beaconcha.in/ to create alerts and track your validator's performance.

  • Subscribe to your Execution Client and Consensus Client's Github repository to be notified of new releases. Hit the Notifications button.

  • Join the community on Discord and Reddit to discuss all things staking related.

  • Familiarize yourself with Part II - Maintenance section, as you'll need to keep your staking node running at its best.

  • Up your staking understanding with the EthStaker Knowledge Base

🏁 Optional Steps

☎️ Need extra live support?

💟 Like these guides?

Last Words

I stand upon the shoulders of giants and as such, invite you to stand upon mine. Use my work with or without attribution; I make no claim of "intellectual property." My ideas are the result of countless millenia of evolution - they belong to humanity.

This is Leslie, the official mascot of Eth Staking

Last updated