Updating Consensus Client

Scenario: In discord, you see an alert that your consensus client just announced a new release. How best to update?

🚀 Automated Updates

💊Install EthPillar: a simple companion UI for node management!

Update your software with a keystroke.

To update, navigate to

EthPillar > Consensus Client > Update to latest release

EthPillar Update

Manual Updates

When a new release is cut, you will want to update to the latest stable release. The following shows you how to update your beacon chain and validator.

Step 1: Select your consensus client.

Did you know you can use EthPillar?

🚀 EthPillar: your node's buddy for easy and fast node management! Update your software with a keystroke.

▶️ EthPillar Quickstart: Ubuntu One-liner Install

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/coincashew/EthPillar/main/install.sh)"

Lighthouse

Option 1 - Download binaries

Run the following to automatically download the latest linux release, un-tar and cleanup.

RELEASE_URL="https://api.github.com/repos/sigp/lighthouse/releases/latest"
BINARIES_URL="$(curl -s $RELEASE_URL | jq -r ".assets[] | select(.name) | .browser_download_url" | grep x86_64-unknown-linux-gnu.tar.gz$)"

echo Downloading URL: $BINARIES_URL

cd $HOME
# Download
wget -O lighthouse.tar.gz $BINARIES_URL
# Untar
tar -xzvf lighthouse.tar.gz -C $HOME
# Cleanup
rm lighthouse.tar.gz

Stop the services.

sudo systemctl stop consensus validator

Remove old binaries, install new binaries and restart the services.

sudo rm /usr/local/bin/lighthouse
sudo mv $HOME/lighthouse /usr/local/bin/lighthouse
sudo systemctl start consensus validator
Option 2 - Build from source code

Build the binaries.

cd ~/git/lighthouse
git fetch --all && git checkout stable && git pull
make

💡Tip: 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.

rustup update
cargo clean
make

Verify lighthouse was built properly by checking the version number.

lighthouse --version

Stop the services.

sudo systemctl stop consensus validator

Remove old binaries, install new binaries and restart the services.

sudo rm /usr/local/bin/lighthouse
sudo cp $HOME/.cargo/bin/lighthouse /usr/local/bin/lighthouse
sudo systemctl start consensus validator

Lodestar

Option 1 - Download binaries

Run the following to automatically download the latest linux release, un-tar and cleanup.

RELEASE_URL="https://api.github.com/repos/ChainSafe/lodestar/releases/latest"
LATEST_TAG="$(curl -s $RELEASE_URL | jq -r ".tag_name")"
BINARIES_URL="https://github.com/ChainSafe/lodestar/releases/download/${LATEST_TAG}/lodestar-${LATEST_TAG}-linux-amd64.tar.gz"
	
echo Downloading URL: $BINARIES_URL

cd $HOME
# Download
wget -O lodestar.tar.gz $BINARIES_URL
# Untar
tar -xzvf lodestar.tar.gz -C $HOME
# Cleanup
rm lodestar.tar.gz

Stop the services.

sudo systemctl stop consensus validator

Remove old binaries, install new binaries and restart the services.

sudo rm -rf /usr/local/bin/lodestar && sudo mkdir -p /usr/local/bin/lodestar
sudo mv $HOME/lodestar /usr/local/bin/lodestar
sudo systemctl start consensus validator
Option 2 - Build from source code

Pull the latest source and build Lodestar.

cd ~/git/lodestar
git checkout stable && git pull
yarn install
yarn run build

⚠️ In case of build errors or missing dependencies, run the following command.

yarn clean:nm && yarn install

Verify Lodestar was installed properly by displaying the version.

./lodestar --version

Sample output of a compatible version.

🌟 Lodestar: TypeScript Implementation of the Ethereum Consensus Beacon Chain.
  * Version: v1.8.0/stable/a4b29cf
  * by ChainSafe Systems, 2018-2022

Stop the services.

sudo systemctl stop consensus validator

Remove old binaries, install new binaries and restart the services.

sudo rm -rf /usr/local/bin/lodestar
sudo cp -a $HOME/git/lodestar /usr/local/bin/lodestar
sudo systemctl start consensus validator

Teku

Option 1 - Download binaries

Run the following to automatically download the latest linux release, un-tar and cleanup.

RELEASE_URL="https://api.github.com/repos/ConsenSys/teku/releases/latest"
LATEST_TAG="$(curl -s $RELEASE_URL | jq -r ".tag_name")"
BINARIES_URL="https://artifacts.consensys.net/public/teku/raw/names/teku.tar.gz/versions/${LATEST_TAG}/teku-${LATEST_TAG}.tar.gz"
echo Downloading URL: $BINARIES_URL

cd $HOME
# Download
wget -O teku.tar.gz $BINARIES_URL
# Untar
tar -xzvf teku.tar.gz -C $HOME
# Rename folder
mv teku-${LATEST_TAG} teku
# Cleanup
rm teku.tar.gz

Stop the services.

sudo systemctl stop consensus

# If running Standalone Teku Validator
sudo systemctl stop validator

Remove old binaries, install new binaries and restart the services.

sudo rm -rf /usr/local/bin/teku
sudo mv $HOME/teku /usr/local/bin/teku
sudo systemctl start consensus

# If running Standalone Teku Validator
sudo systemctl start validator
Option 2 - Build from source code

Fetch the latest tags and build the binaries.

cd ~/git/teku
# Get new tags
git fetch --tags
RELEASETAG=$(curl -s https://api.github.com/repos/ConsenSys/teku/releases/latest | jq -r .tag_name)
git checkout tags/$RELEASETAG
./gradlew distTar installDist

Verify Teku was built properly by displaying the version.

cd $HOME/git/teku/build/install/teku/bin
./teku --version

Stop the services.

sudo systemctl stop consensus

# If running Standalone Teku Validator
sudo systemctl stop validator

Remove old binaries, install new binaries and restart the services.

sudo rm -rf /usr/local/bin/teku
sudo cp -a $HOME/git/teku/build/install/teku /usr/local/bin/teku
sudo systemctl start consensus

# If running Standalone Teku Validator
sudo systemctl start validator

Nimbus

Option 1 - Download binaries

Run the following to automatically download the latest linux release, un-tar and cleanup.

RELEASE_URL="https://api.github.com/repos/status-im/nimbus-eth2/releases/latest"
BINARIES_URL="$(curl -s $RELEASE_URL | jq -r ".assets[] | select(.name) | .browser_download_url" | grep _Linux_amd64.*.tar.gz$)"

echo Downloading URL: $BINARIES_URL

cd $HOME
# Download
wget -O nimbus.tar.gz $BINARIES_URL
# Untar
tar -xzvf nimbus.tar.gz -C $HOME
# Rename folder
mv nimbus-eth2_Linux_amd64_* nimbus
# Cleanup
rm nimbus.tar.gz

Stop the services.

sudo systemctl stop consensus
# If running standalone Nimbus Validator
sudo systemctl stop validator

Remove old binaries, install new binaries, cleanup and restart the services.

sudo rm /usr/local/bin/nimbus_beacon_node
sudo rm /usr/local/bin/nimbus_validator_client
sudo mv nimbus/build/nimbus_beacon_node /usr/local/bin
sudo mv nimbus/build/nimbus_validator_client /usr/local/bin
rm -r nimbus
sudo systemctl start consensus
# If running standalone Nimbus Validator
sudo systemctl start validator

Reminder: In combined CL+VC Nimbus configuration, there will be no validator systemctl service.

Option 2 - Build from source code

Pull the latest source code and build the binary.

cd ~/git/nimbus-eth2
git checkout stable && git pull
make -j$(nproc) update
make -j$(nproc) nimbus_beacon_node
make -j$(nproc) nimbus_validator_client

Verify Nimbus was built properly by displaying the version.

cd $HOME/git/nimbus-eth2/build
./nimbus_beacon_node --version

Stop the services.

sudo systemctl stop consensus
# If running standalone Nimbus Validator
sudo systemctl stop validator

Remove old binaries, install new binaries and restart the services.

sudo rm /usr/local/bin/nimbus_beacon_node
sudo rm /usr/local/bin/nimbus_validator_client
sudo cp $HOME/git/nimbus-eth2/build/nimbus_beacon_node /usr/local/bin
sudo cp $HOME/git/nimbus-eth2/build/nimbus_validator_client /usr/local/bin
sudo systemctl start consensus
# If running standalone Nimbus Validator
sudo systemctl start validator

Reminder: In combined CL+VC Nimbus configuration, there will be no validator systemctl service.

Prysm

Option 1 - Download binaries

Run the following to automatically download the latest binaries.

cd $HOME
prysm_version=$(curl -f -s https://prysmaticlabs.com/releases/latest)
file_beacon=beacon-chain-${prysm_version}-linux-amd64
file_validator=validator-${prysm_version}-linux-amd64
curl -f -L "https://prysmaticlabs.com/releases/${file_beacon}" -o beacon-chain
curl -f -L "https://prysmaticlabs.com/releases/${file_validator}" -o validator
chmod +x beacon-chain validator

Stop the services.

sudo systemctl stop consensus validator

Remove old binaries, install new binaries and restart the services.

sudo rm /usr/local/bin/beacon-chain
sudo rm /usr/local/bin/validator
sudo mv beacon-chain validator /usr/local/bin
sudo systemctl start consensus validator
Option 2 - Build from source code

Pull the latest source code and build the binaries.

cd $HOME/git/prysm
git fetch --tags
RELEASETAG=$(curl -s https://api.github.com/repos/OffchainLabs/prysm/releases/latest | jq -r .tag_name)
git checkout tags/$RELEASETAG
go build -o=./build/beacon-chain ./cmd/beacon-chain
go build -o=./build/validator ./cmd/validator

Stop the services.

sudo systemctl stop consensus validator

Remove old binaries, install new binaries and restart the services.

sudo rm /usr/local/bin/beacon-chain
sudo rm /usr/local/bin/validator
sudo cp $HOME/git/prysm/build/beacon-chain /usr/local/bin
sudo cp $HOME/git/prysm/build/validator /usr/local/bin
sudo systemctl start consensus validator

Step 2: Verify services and logs are working properly

# Verify services status
sudo systemctl status consensus validator
# Check logs
sudo journalctl -fu consensus
sudo journalctl -fu validator

Step 3: Optional - Verify your validator's attestations on public block explorer

1) Visit https://holesky.beaconcha.in

2) Enter your validator's pubkey into the search bar and look for successful attestations.

Last updated