Run a Validator#
This guide covers setting up an Ethwei testnet validator on a Hetzner VPS. The same steps work on any Linux VPS.
Recommended hardware (testnet)#
| Component | Minimum |
|---|---|
| CPU | 4 vCPU (x86-64) |
| RAM | 8 GB |
| Storage | 100 GB NVMe SSD |
| Network | 1 Gbps, unrestricted bandwidth |
| OS | Ubuntu 22.04 LTS |
A Hetzner CX32 or CPX31 covers this comfortably for testnet.
1. Provision the VPS#
Create a Hetzner project, spin up a server with Ubuntu 22.04, and SSH in:
ssh root@<your-server-ip>Create a non-root user:
adduser ethwei
usermod -aG sudo ethwei
su - ethwei2. Install dependencies#
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl jq build-essentialInstall Go (check go.dev/dl for the latest version):
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc
go version3. Build the chain binary#
git clone https://github.com/ethwei/ethwei-chain
cd ethwei-chain
make install
ethweid version4. Initialize the node#
ethweid init <your-moniker> --chain-id ethwei-testnet-1Download the genesis file:
curl -s https://rpc-testnet.ethwei.com/genesis | \
jq '.result.genesis' > ~/.ethwei/config/genesis.json5. Configure peers and seeds#
Edit ~/.ethwei/config/config.toml:
[p2p]
seeds = "" # fill in once published
persistent_peers = "" # fill in once publishedCheck the Network Info page for current seed / peer addresses.
6. Set minimum gas price#
Edit ~/.ethwei/config/app.toml:
minimum-gas-prices = "0.025WEI"7. Create a systemd service#
sudo tee /etc/systemd/system/ethweid.service > /dev/null <<EOF
[Unit]
Description=Ethwei Node
After=network-online.target
[Service]
User=ethwei
ExecStart=$(which ethweid) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable ethweid
sudo systemctl start ethweidCheck logs:
journalctl -u ethweid -fWait for the node to sync fully before creating the validator.
8. Create your validator key#
ethweid keys add validatorSave the mnemonic somewhere safe. Fund your address with testnet ETE before continuing.
9. Create the validator#
Once the node is synced:
ethweid tx staking create-validator \
--amount=1000000WEI \
--pubkey=$(ethweid tendermint show-validator) \
--moniker="<your-moniker>" \
--chain-id=ethwei-testnet-1 \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1" \
--gas="auto" \
--gas-adjustment=1.5 \
--fees="5000WEI" \
--from=validator \
--node=https://rpc-testnet.ethwei.com:443Verify your validator appears on the explorer.
Maintenance#
Check validator status#
ethweid query staking validator $(ethweid keys show validator --bech val -a)Check sync status#
ethweid status | jq '.SyncInfo'Update the binary#
cd ethwei-chain && git pull && make install
sudo systemctl restart ethweidSlashing: Validators that miss too many blocks or double-sign will be slashed and jailed. Keep your node online and never run duplicate signers from the same key.