Updating Execution Client

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 execution client.

Always review the release notes before updating. There may be changes requiring your attention.

🔥 Pro tip: Plan your update to overlap with the longest attestation gap. Learn how here.

Step 1: Select your execution client.

Nethermind

Option 1 - Download binaries

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

RELEASE_URL="https://api.github.com/repos/NethermindEth/nethermind/releases/latest"
BINARIES_URL="$(curl -s $RELEASE_URL | jq -r ".assets[] | select(.name) | .browser_download_url" | grep linux-x64)"

echo Downloading URL: $BINARIES_URL

cd $HOME
wget -O nethermind.zip $BINARIES_URL
unzip -o nethermind.zip -d $HOME/nethermind
rm nethermind.zip

Stop the services.

sudo systemctl stop execution

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

sudo rm -rf /usr/local/bin/nethermind
sudo mv $HOME/nethermind /usr/local/bin/nethermind
sudo systemctl start execution

Besu

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/hyperledger/besu/releases/latest"
FILE="https://hyperledger.jfrog.io/artifactory/besu-binaries/besu/[a-zA-Z0-9./?=_%:-]*.tar.gz"
BINARIES_URL="$(curl -s $RELEASE_URL | grep -Eo $FILE)"

echo Downloading URL: $BINARIES_URL

cd $HOME
wget -O besu.tar.gz $BINARIES_URL
tar -xzvf besu.tar.gz -C $HOME
rm besu.tar.gz
sudo mv $HOME/besu-* besu

Stop the services.

sudo systemctl stop execution

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

sudo rm -rf /usr/local/bin/besu
sudo mv $HOME/besu /usr/local/bin/besu
sudo systemctl start execution
Option 2 - Build from source code

Build the binaries.

cd ~/git/besu
# Get new tags
git fetch --tags
# Get latest tag name
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
# Checkout latest tag
git checkout $latestTag
# Build
./gradlew installDist

Verify Besu was properly built by checking the version.

./build/install/besu/bin/besu --version

Sample output of a compatible version.

besu/v23.4.0/linux-x86_64/openjdk-java-17

Stop the services.

sudo systemctl stop execution

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

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

Geth

Option 1 - Download binaries
RELEASE_URL="https://geth.ethereum.org/downloads"
FILE="https://gethstore.blob.core.windows.net/builds/geth-linux-amd64[a-zA-Z0-9./?=_%:-]*.tar.gz"
BINARIES_URL="$(curl -s $RELEASE_URL | grep -Eo $FILE | head -1)"

echo Downloading URL: $BINARIES_URL

cd $HOME
wget -O geth.tar.gz $BINARIES_URL
tar -xzvf geth.tar.gz -C $HOME
rm geth.tar.gz
sudo mv $HOME/geth-* geth

Stop the services.

sudo systemctl stop execution

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

sudo rm -rf /usr/local/bin/geth
sudo mv $HOME/geth/geth /usr/local/bin
sudo systemctl start execution
Option 2 - Build from source code

Build the binary.

cd $HOME/git/go-ethereum
# Get new tags
git fetch --tags
# Get latest tag name
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
# Checkout latest tag
git checkout $latestTag
# Build
make geth

Stop the services.

sudo systemctl stop execution

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

sudo rm -rf /usr/local/bin/geth
sudo cp $HOME/git/go-ethereum/build/bin/geth /usr/local/bin
sudo systemctl start execution

Erigon

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/ledgerwatch/erigon/releases/latest"
BINARIES_URL="$(curl -s $RELEASE_URL | jq -r ".assets[] | select(.name) | .browser_download_url" | grep linux_amd64)"

echo Downloading URL: $BINARIES_URL

cd $HOME
wget -O erigon.tar.gz $BINARIES_URL
tar -xzvf erigon.tar.gz -C $HOME
rm erigon.tar.gz

Stop the services.

sudo systemctl stop execution

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

sudo rm -rf /usr/local/bin/erigon
sudo mv $HOME/erigon /usr/local/bin/erigon
sudo systemctl start execution
Option 2 - Build from source code

Build the binary.

cd $HOME/git/erigon
git fetch --tags
# Get latest tag name
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
# Checkout latest tag
git checkout $latestTag
make erigon

Stop the services.

sudo systemctl stop execution

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

sudo rm -rf /usr/local/bin/erigon
sudo cp $HOME/git/erigon/build/bin/erigon /usr/local/bin
sudo systemctl start execution

Step 2: Verify services and logs are working properly

# Verify services status
sudo systemctl status execution
# Check logs
sudo journalctl -fu execution

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

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

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