A guide to setting up a testnet validator node on the Nibiru testnet

Prerequisites

# Dependencies
sudo apt-get update
sudo apt-get upgrade
sudo apt install git build-essential ufw curl jq snapd --yes

# Install Go

wget <https://golang.org/dl/go1.18.2.linux-amd64.tar.gz>
sudo tar -C /usr/local -xzf go1.18.2.linux-amd64.tar.gz

echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.profile
source ~/.profile

nibid Binary

cd $HOME
git clone <https://github.com/NibiruChain/nibiru>
cd nibiru
git checkout v0.15.0
make install

Cosmovisor

# Install from source
git clone <https://github.com/cosmos/cosmos-sdk>
cd cosmos-sdk
git checkout cosmovisor/v1.2.0
make cosmovisor
cp cosmovisor/cosmovisor /home/ubuntu/go/bin/cosmovisor
cd $HOME

# Environment variables
export DAEMON_NAME=nibid
export DAEMON_HOME=$HOME/.nibid
source ~/.profile

# Create required directories
mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin
mkdir -p $DAEMON_HOME/cosmovisor/upgrades

# Copy nibid binary to cosmosvisor genesis folder
cp /home/ubuntu/go/bin/nibid $DAEMON_HOME/cosmovisor/genesis/bin

# Create system service for cosmovisor
sudo nano /etc/systemd/system/cosmovisor.service

[Unit]
Description=Cosmovisor for Nibiru Node
Requires=network-online.target
After=network-online.target

[Service]
Type=exec
User=ubuntu
ExecStart=/home/ubuntu/go/bin/cosmovisor run start --home /home/ubuntu/.nibid
Restart=on-failure
RestartSec=3
Environment="DAEMON_NAME=nibid"
Environment="DAEMON_HOME=/home/ubuntu/.nibid"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_LOG_BUFFER_SIZE=512"
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

# Enable service
sudo systemctl daemon-reload
sudo systemctl enable cosmovisor.service
sudo systemctl start cosmovisor

# Monitor
journalctl -fu cosmovisor -o cat

Validator Registration

Make sure your node is fully synced before you register, you can check with

nibid status | jq .SyncInfo, make sure catching_up is false before you proceed.

Faucet

FAUCET_URL="<https://faucet.testnet-1.nibiru.fi/>"
ADDR="..." # your address 
curl -X POST -d '{"address": "'"$ADDR"'", "coins": ["10000000unibi","100000000000unusd"]}' $FAUCET_URL

ADDR1="nibi1706u4adcy2uktjf8pj5qlx7ry2s75a9xlv5epv"
ADDR2="nibi1z7xek8tlss4vcgerxr9sw34x59ds4kjfwzh59z"
ADDR3="nibi1xw6cxkqdpe2l7eegl39s2gej06kyry46urt6xe"

Register

nibid tx staking create-validator \\
--amount 9000000unibi \\
--commission-max-change-rate "0.1" \\
--commission-max-rate "0.20" \\
--commission-rate "0.1" \\
--min-self-delegation "1" \\
--pubkey=$(nibid tendermint show-validator) \\
--moniker "Lydia Labs" \\
--chain-id nibiru-testnet-1 \\
--gas-prices 0.025unibi \\
--from LLKeyKeplr