Updating Consensus Client
Scenario: In discord, you see an alert that your consensus client just announced a new release. How best to update?
Last updated
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.gzsudo systemctl stop consensus validatorsudo rm /usr/local/bin/lighthouse
sudo mv $HOME/lighthouse /usr/local/bin/lighthouse
sudo systemctl start consensus validatorcd ~/git/lighthouse
git fetch --all && git checkout stable && git pull
makePROFILE=maxperf makerustup update
cargo clean
makelighthouse --versionsudo systemctl stop consensus validatorsudo rm /usr/local/bin/lighthouse
sudo cp $HOME/.cargo/bin/lighthouse /usr/local/bin/lighthouse
sudo systemctl start consensus validatorcd ~/git/lodestar
git checkout stable && git pull
yarn install
yarn run buildyarn clean:nm && yarn install./lodestar --version🌟 Lodestar: TypeScript Implementation of the Ethereum Consensus Beacon Chain.
* Version: v1.8.0/stable/a4b29cf
* by ChainSafe Systems, 2018-2022sudo systemctl stop consensus validatorsudo rm -rf /usr/local/bin/lodestar
sudo cp -a $HOME/git/lodestar /usr/local/bin/lodestar
sudo systemctl start consensus validatorRELEASE_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.gzsudo systemctl stop consensus
# If running Standalone Teku Validator
sudo systemctl stop validatorsudo 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 validatorcd ~/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 installDistcd $HOME/git/teku/build/install/teku/bin
./teku --versionsudo systemctl stop consensus
# If running Standalone Teku Validator
sudo systemctl stop validatorsudo 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 validatorRELEASE_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.gzsudo systemctl stop consensus
# If running standalone Nimbus Validator
sudo systemctl stop validatorsudo 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 validatorcd ~/git/nimbus-eth2
git checkout stable && git pull
make -j$(nproc) update
make -j$(nproc) nimbus_beacon_node
make -j$(nproc) nimbus_validator_clientcd $HOME/git/nimbus-eth2/build
./nimbus_beacon_node --versionsudo systemctl stop consensus
# If running standalone Nimbus Validator
sudo systemctl stop validatorsudo 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 validatorcd $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 validatorsudo systemctl stop consensus validatorsudo rm /usr/local/bin/beacon-chain
sudo rm /usr/local/bin/validator
sudo mv beacon-chain validator /usr/local/bin
sudo systemctl start consensus validatorcd $HOME/git/prysm
git fetch --tags
RELEASETAG=$(curl -s https://api.github.com/repos/prysmaticlabs/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/validatorsudo systemctl stop consensus validatorsudo 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# Verify services status
sudo systemctl status consensus validator# Check logs
sudo journalctl -fu consensussudo journalctl -fu validator# Check services status
sudo systemctl status consensus # Check logs
sudo journalctl -fu consensus