Nibiru Installation
Chain ID: nibiru-itn-1 | Latest Version Tag: v0.19.2 | Custom Port: 139
System Requirements
Minimum Requirements
- CPU: 4 cores
- RAM: 8 GB
- Storage: 200 GB SSD
- Network: 100 Mbps
Recommended Requirements
- CPU: 8 cores
- RAM: 16 GB
- Storage: 500 GB NVMe SSD
- Network: 100 Mbps
Setup Validator Name
Replace YOUR_MONIKER_GOES_HERE with your validator name
MONIKER="YOUR_MONIKER_GOES_HERE"
Install Dependencies
# Update system and install build tools
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential
sudo apt -qy upgrade
# Install Go
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.19.9.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
Download and Build Binaries
# Clone project repository
cd $HOME
rm -rf nibiru
git clone https://github.com/NibiruChain/nibiru.git
cd nibiru
git checkout v0.19.2
# Build binaries
make build
# Install binaries
sudo cp build/nibid /usr/local/bin/
Configure Nibiru Node
# Set vars
nibid config keyring-backend test
nibid config chain-id nibiru-itn-1
nibid init $MONIKER --chain-id nibiru-itn-1
# Download genesis and addrbook
curl -Ls https://snapshots.kjnodes.com/nibiru/genesis.json > $HOME/.nibid/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/nibiru/addrbook.json > $HOME/.nibid/config/addrbook.json
# Add seeds
sed -i -e "s|^seeds *=.*|seeds = \"3f472746f46493309650e5a033076689996c8881@nibiru-testnet.rpc.kjnodes.com:13959\"|" $HOME/.nibid/config/config.toml
# Set custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:13958\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:13957\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:13960\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:13956\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":13966\"%" $HOME/.nibid/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:13917\"%; s%^address = \":8080\"%address = \":13980\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:13990\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:13991\"%" $HOME/.nibid/config/app.toml
Configure Pruning and Gas
# Set pruning
sed -i \
-e 's|^pruning *=.*|pruning = "custom"|' \
-e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
-e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
-e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
$HOME/.nibid/config/app.toml
# Set minimum gas price and enable prometheus
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.025unibiru\"|" $HOME/.nibid/config/app.toml
sed -i -e "s|prometheus = false|prometheus = true|" $HOME/.nibid/config/config.toml
Create Service File
sudo tee /etc/systemd/system/nibid.service > /dev/null <<EOF
[Unit]
Description=Nibiru node
After=network-online.target
[Service]
User=$USER
ExecStart=/usr/local/bin/nibid start --home $HOME/.nibid
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Enable and Start Service
sudo systemctl daemon-reload
sudo systemctl enable nibid
sudo systemctl restart nibid && sudo journalctl -u nibid -f --no-hostname -o cat
Download Latest Snapshot
To catch up quickly, you can download a recent snapshot:
1. Stop the service and reset data
sudo systemctl stop nibid && nibid tendermint unsafe-reset-all --home $HOME/.nibid --keep-addr-book
2. Download and extract snapshot
curl -L https://snapshots.kjnodes.com/nibiru-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.nibid
[[ -f $HOME/.nibid/data/upgrade-info.json ]] && cp $HOME/.nibid/data/upgrade-info.json $HOME/.nibid/cosmovisor/genesis/upgrade-info.json
3. Start the service
sudo systemctl start nibid && sudo journalctl -u nibid -f --no-hostname -o cat
Create Wallet
Create a new wallet for your validator
# Create wallet
nibid keys add wallet
# Save wallet and validator info
nibid_WALLET_ADDRESS=$(nibid keys show wallet -a)
nibid_VALOPER_ADDRESS=$(nibid keys show wallet --bech val -a)
echo "export NIBID_WALLET_ADDRESS=\"$NIBID_WALLET_ADDRESS\"" >> $HOME/.bash_profile
echo "export NIBID_VALOPER_ADDRESS=\"$NIBID_VALOPER_ADDRESS\"" >> $HOME/.bash_profile
source $HOME/.bash_profile
Fund Your Wallet
Before creating a validator, you need to fund your wallet with testnet tokens.
Wallet Address: Use the address from the command above
Faucet: Visit the official Nibiru faucet or ask in Discord
Create Validator
Once your wallet is funded and your node is synced, create your validator:
nibid tx staking create-validator \
--amount 1000000unibi \
--pubkey $(nibid tendermint show-validator) \
--moniker $MONIKER \
--identity "FFB0AA51A2DF5955" \
--website "https://kjnodes.com" \
--details "Providing professional staking services with love" \
--chain-id nibiru-itn-1 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.025unibi \
-y
Useful Commands
Check sync status
nibid status 2>&1 | jq .SyncInfo
Check validator key
[[ $(nibid q staking validator $NIBID_VALOPER_ADDRESS -oj | jq -r .consensus_pubkey.key) = $(nibid status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
Check validator
nibid query staking validator $NIBID_VALOPER_ADDRESS
Check balance
nibid query bank balances $NIBID_WALLET_ADDRESS
Monitoring
Monitor your validator performance:
- Explorer: https://explorer.nibiru.fi
- Logs:
sudo journalctl -u nibid -f --no-hostname -o cat
- Status:
nibid status 2>&1 | jq
Advanced Configuration
Set up a pricefeeder
{% hint style="warning" %}
To run pricefeeder you validator should be in active set. Otherwise price feeder will not vote on periods.
{% endhint %}
- Install the pricefeeder binary
curl -s https://get.nibiru.fi/pricefeeder! | bash
- Create new wallet for pricefeeder and save
24 word mnemonic phrase
nibid keys add pricefeeder-wallet
-
Top up the pricefeeder-wallet going to Nibiru Discord #faucet channel.
infoIn order to make pricefeeder work, it needs some testnet tokens to pay for transaction fees
-
Export pricefeeder mnemonic into environment variable
export FEEDER_MNEMONIC="my pricefeeder 24 word mnemonic phrase goes here ..."
- Setup the systemd service
export CHAIN_ID="nibiru-itn-1"
export GRPC_ENDPOINT="localhost:39090"
export WEBSOCKET_ENDPOINT="ws://localhost:39657/websocket"
export EXCHANGE_SYMBOLS_MAP='{ "bitfinex": { "ubtc:uusd": "tBTCUSD", "ueth:uusd": "tETHUSD", "uusdt:uusd": "tUSTUSD" }, "binance": { "ubtc:uusd": "BTCUSD", "ueth:uusd": "ETHUSD", "uusdt:uusd": "USDTUSD", "uusdc:uusd": "USDCUSD", "uatom:uusd": "ATOMUSD", "ubnb:uusd": "BNBUSD", "uavax:uusd": "AVAXUSD", "usol:uusd": "SOLUSD", "uada:uusd": "ADAUSD", "ubtc:unusd": "BTCUSD", "ueth:unusd": "ETHUSD", "uusdt:unusd": "USDTUSD", "uusdc:unusd": "USDCUSD", "uatom:unusd": "ATOMUSD", "ubnb:unusd": "BNBUSD", "uavax:unusd": "AVAXUSD", "usol:unusd": "SOLUSD", "uada:unusd": "ADAUSD" } }'
export VALIDATOR_ADDRESS=$(nibid keys show wallet --bech val -a)
sudo tee /etc/systemd/system/pricefeeder.service<<EOF
[Unit]
Description=Nibiru Pricefeeder
Requires=network-online.target
After=network-online.target
[Service]
Type=exec
User=$USER
Group=$USER
ExecStart=/usr/local/bin/pricefeeder
Restart=on-failure
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGTERM
PermissionsStartOnly=true
LimitNOFILE=65535
Environment=CHAIN_ID='$CHAIN_ID'
Environment=GRPC_ENDPOINT='$GRPC_ENDPOINT'
Environment=WEBSOCKET_ENDPOINT='$WEBSOCKET_ENDPOINT'
Environment=EXCHANGE_SYMBOLS_MAP='$EXCHANGE_SYMBOLS_MAP'
Environment=FEEDER_MNEMONIC='$FEEDER_MNEMONIC'
Environment=VALIDATOR_ADDRESS='$VALIDATOR_ADDRESS'
[Install]
WantedBy=multi-user.target
EOF
- Delegate pricefeeder responsibility
As a validator, if you'd like another account to post prices on your behalf (i.e. you don't want your validator mnemonic sending txs), you can delegate pricefeeder responsibilities to another nibi address.
nibid tx oracle set-feeder $(nibid keys show pricefeeder-wallet -a) --from wallet
- Register and start the systemd service
sudo systemctl daemon-reload && \
sudo systemctl enable pricefeeder && \
sudo systemctl start pricefeeder
- View pricefeeder logs
journalctl -fu pricefeeder
credit : kjnodes