Skip to main content

Upgrade / Resync / Migrate Node

Node Update Procedure

1. Halting Geth

First, stop the Geth process with the following command:

$ systemctl stop geth

2. Secure Your Keystore

Navigate to the default installation directory, /home/geth/.ethereum/. Confirm that your secret key is in /home/geth/.ethereum/keystore/ and that password.txt is in /home/geth/.ethereum/. Before moving on, back up both the secret key and password.txt.

Secret key file Example:


3. Download the Latest Release

Download from Oasys Validator GitHub Releases. For setup details, consult the code in the GitHub repository.


Ensure you download the latest version suitable for your CPU architecture:

  • For Intel or AMD CPUs: Download
  • For ARM-based CPUs: Download

4. Restart Geth

Restart Geth with:

$ sudo systemctl start geth

5. Verify Geth Status

Check Geth's status with:

$ sudo systemctl status geth

To confirm the upgrade, refer to journalctl and look for the line indicating the new version:

INFO [11-02|11:16:11.821] Starting peer-to-peer node   instance=Geth/v1.0.1-54aae939/linux-amd64/go1.17.8

Or use geth -h to display version info:

$ geth -h 


If you encounter issues, please confirm the Geth's syncing status:

$ sudo -u geth geth attach ipc:/home/geth/.ethereum/geth.ipc --exec eth.syncing

The output should be false. If it displays true, proceed to the Resync Nodes section below for troubleshooting steps.

Resyncing Nodes

1. Halt Geth

First, stop the Geth service with this command:

$ systemctl stop geth

2. Relocate Sync Data

Move the existing sync data from /home/geth/.ethereum/geth to a backup location:

$ mv /home/geth/.ethereum/geth /home/geth/.ethereum/geth-backup

3. Initialize Genesis Block

Download the latest genesis.json file from GitHub and initialize the genesis block with:

$ sudo geth init genesis/mainnet.json

4. Restart Geth

Restart the Geth service using:

$ systemctl start geth

By following these steps, you should be able to successfully resync your node.

Migrating Validator to new Server

Follow these steps to migrate the validator node to a new server:

1. Stop old validator node

In the old validator node, run the following command to stop the geth service:

# In old validator node
systemctl stop geth

2. Setup new validator node

On the new validator node, execute as part of the Express setup.


When running the, you will be prompted to enter the passphrase for the private key.

Enter the passphrase for the private key

This passphrase is the password specified to create the validator operator address in the old validator node.

3. Copy old validator data

In the old validator node, Copy the old validator data to the new validator node:

# In old validator node
rsync -av /usr/lib/systemd/system/geth.service <NEW_VALIDATOR_NODE>:/usr/lib/systemd/system/geth.service # service file
rsync -av /home/geth/.ethereum <NEW_VALIDATOR_NODE>:/home/geth/.ethereum # geth data

4. Remove old validator data

In the old validator node, remove the old validator data:

# In old validator node
rm -rf /usr/lib/systemd/system/geth.service

5. Start new validator node

# In new validator node
systemctl daemon-reload
systemctl enable geth
systemctl start geth