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.

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.