Skip to content
Validators
Support external chains
Ethereum

Ethereum

Set up your Ethereum Mainnet or Goerli Testnet RPC node

Prerequisites

Steps

  1. Install execution client
  2. Install consensus layer client
  3. Configure systemd
  4. Configure vald

Install Execution client

Install an execution client (opens in a new tab) for Ethereum. In this sample guide we will be installing Geth with the built-in launchpad PPAs (Personal Package Archives) on Ubuntu. If you are on different OS, please refer to the official Documentation (opens in a new tab).

sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum

Install a consensus layer client

To sync after the latest merge in Goerli network geth nodes should run a consensus client to be able to keep in sync with the chain. The list of consensus clients can be found in https://ethereum.org/en/developers/docs/nodes-and-clients/#consensus-clients (opens in a new tab)

Users can opt for any Consensus client. The sample instructions below use Prysm as the Consensus client. Please refer to the Prysm docs (opens in a new tab) for the up-to-date instructions. For fast syncing, consider checkpoint sync (opens in a new tab) instead of genesis sync.

mkdir prysm && cd prysm
 
# Download installation script
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh
 
# Download the Goerli network genesis file
wget https://github.com/eth-clients/eth2-networks/raw/master/shared/prater/genesis.ssz
 
# Generate a 32 byte hex secret key for authentication, for e.g.
./prysm.sh beacon-chain generate-auth-secret
# Alternatively, `openssl rand -hex 32 | tr -d "\n" > "jwt.hex"`
 
# Start Prysm beacon chain.
# NOTE: For Goerli testnet, add `--prater` flag
./prysm.sh beacon-chain --http-web3provider=http://localhost:8551 --jwt-secret=/path/to/jwt.hex --genesis-state=./genesis.ssz

Configure systemd

1. Create systemd service file

After installation of go-ethereum, we are now ready to start the geth process but in order to ensure it is running in the background and auto-restarts in case of a server failure, we will setup a service file with systemd.

⚠️

Replace $USER and path to geth in the config below. For Goerli Testnet, add the --goerli flag to the geth command.

Add the following to /etc/systemd/system/geth.service

[Unit]
Description=Ethereum Node
After=network.target
 
[Service]
User=$USER
Type=simple
ExecStart=/usr/bin/geth --syncmode "snap" --http --http.api=eth,net,web3,engine --http.vhosts * --http.addr 0.0.0.0 --authrpc.jwtsecret=/path/to/jwt.hex --override.terminaltotaldifficulty 50000000000000000
Restart=on-failure
LimitNOFILE=65535
 
[Install]
WantedBy=multi-user.target
2. Start geth
sudo systemctl enable geth
sudo systemctl daemon-reload
sudo systemctl start geth

If everything was set-up correctly, your Ethereum node should now be starting the process of synchronization. This will take several hours, depending on your hardware.To check the status of the running service or to follow the logs, you can use:

sudo systemctl status geth
sudo journalctl -u geth -f