Updating your consensus client
Scenario: In discord, you see an alert that your consensus client just announced a new release. How best to update?
⏩ Quick steps guide
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.
🔥 Pro tip: Plan your update to overlap with the longest attestation gap. Learn how here.
Select your consensus client.
Review release notes and check for breaking changes/features.
https://github.com/sigp/lighthouse/releases
Option 1: Download binaries
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 beacon-chain validator
# Remove old binaries, install new binaries, display version and restart the services.
sudo rm -r $HOME/.cargo/bin/lighthouse
sudo mv $HOME/lighthouse $HOME/.cargo/bin
$HOME/.cargo/bin/lighthouse --version
sudo systemctl restart beacon-chain validatorOption 2: Build from source
Pull the latest source and build it.
cd $HOME/git/lighthouse
git fetch --all && git checkout stable && git pull
makeVerify the build completed by checking the new version number.
lighthouse --versionRestart beacon chain and validator as per normal operating procedures.
sudo systemctl reload-or-restart beacon-chain validatorReview release notes and check for breaking changes/features.
https://github.com/status-im/nimbus-eth2/releases
Option 1: Download binaries
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 beacon-chain
# Remove old binaries, install new binaries, display version and restart the services.
sudo rm -r /usr/bin/nimbus_beacon_node
sudo mv nimbus/build/nimbus_beacon_node /usr/bin/nimbus_beacon_node
/usr/bin/nimbus_beacon_node --version
sudo systemctl restart beacon-chain
rm -r $HOME/nimbusOption 2: Build from source
Pull the latest source and build it.
cd $HOME/git/nimbus-eth2
git checkout stable && git pull && make -j$(nproc) update
make -j$(nproc) nimbus_beacon_nodeVerify the build completed by checking the new version number.
cd $HOME/git/nimbus-eth2/build
./nimbus_beacon_node --versionStop, copy new binary, and restart beacon chain and validator as per normal operating procedures.
sudo systemctl stop beacon-chain
sudo rm /usr/bin/nimbus_beacon_node
sudo cp $HOME/git/nimbus-eth2/build/nimbus_beacon_node /usr/bin
sudo systemctl reload-or-restart beacon-chainReview release notes and check for breaking changes/features.
Option 1: Download binaries
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-* teku
# Cleanup
rm teku.tar.gz
# Stop the services.
sudo systemctl stop beacon-chain
# Remove old binaries, install new binaries, display version and restart the services.
sudo rm -rf /usr/bin/teku
sudo mv $HOME/teku /usr/bin/teku
/usr/bin/teku/bin/teku --version
sudo systemctl restart beacon-chainOption 2: Build from source
Pull the latest release's tag and build it.
cd $HOME/git/teku
git fetch --all
RELEASETAG=$(curl -s https://api.github.com/repos/ConsenSys/teku/releases/latest | jq -r .tag_name)
git checkout tags/$RELEASETAG
echo "Updating to version: $RELEASETAG"
./gradlew distTar installDistVerify the build completed by checking the new version number.
cd $HOME/git/teku/build/install/teku/bin
./teku --versionRestart beacon chain and validator as per normal operating procedures.
sudo systemctl stop beacon-chain
sudo rm -rf /usr/bin/teku
sudo cp -r $HOME/git/teku/build/install/teku /usr/bin/teku
sudo systemctl reload-or-restart beacon-chainReview release notes and check for breaking changes/features.
https://github.com/prysmaticlabs/prysm/releases
#Simply restart the processes
sudo systemctl reload-or-restart beacon-chain validatorReview release notes and check for breaking changes/features.
https://github.com/ChainSafe/lodestar/releases
Pull the latest source and build it.
cd $HOME/git/lodestar
git checkout stable && git pull
yarn install
yarn run buildVerify the build completed by checking the new version number.
./lodestar --versionRestart beacon chain and validator as per normal operating procedures.
sudo systemctl restart beacon-chain validator2. Check the logs to verify the services are working properly and ensure there are no errors.
sudo systemctl status beacon-chain validatorsudo systemctl status beacon-chain3. Finally, verify your validator's attestations are working with public block explorer such as
https://beaconcha.in/ or https://beaconscan.com/
Enter your validator's pubkey to view its status.
Last updated