Useful commands

Useful set of commands for node operators. From key management to chain governance.

Daemon configuration

xplad config node https://xpla-rpc.lavenderfive.com:443
xplad config chain-id dimension_37-1

🔑 Key management

Add new key

xplad keys add wallet

Recover existing key

xplad keys add wallet --recover

List all keys

xplad keys list

Delete key

xplad keys delete wallet

Export key to the file

xplad keys export wallet

Import key from the file

xplad keys import wallet wallet.backup

Query wallet balance

xplad q bank balances $(xplad keys show wallet -a)

👷 Validator management

Please make sure you have adjusted moniker, identity, details and website to match your values.

Create new validator

xplad tx staking create-validator \
--amount 850000000000axpla \
--pubkey $(xplad tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id dimension_37-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 850000000000axpla \
-y

Edit existing validator

xplad tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id dimension_37-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 850000000000axpla \
-y

Unjail validator

xplad tx slashing unjail --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Jail reason

xplad query slashing signing-info $(xplad tendermint show-validator)

List all active validators

xplad q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl

List all inactive validators

xplad q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl

View validator details

xplad q staking validator $(xplad keys show wallet --bech val -a)

💲 Token management

Withdraw rewards from all validators

xplad tx distribution withdraw-all-rewards --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Withdraw commission and rewards from your validator

xplad tx distribution withdraw-rewards $(xplad keys show wallet --bech val -a) --commission --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Delegate tokens to yourself

xplad tx staking delegate $(xplad keys show wallet --bech val -a) 850000000000axpla --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Delegate tokens to validator

xplad tx staking delegate <TO_VALOPER_ADDRESS> 850000000000axpla --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Redelegate tokens to another validator

xplad tx staking redelegate $(xplad keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 850000000000axpla --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Unbond tokens from your validator

xplad tx staking unbond $(xplad keys show wallet --bech val -a) 850000000000axpla --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Send tokens to the wallet

xplad tx bank send wallet <TO_WALLET_ADDRESS> 850000000000axpla --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

🗳 Governance

List all proposals

xplad query gov proposals

View proposal by id

xplad query gov proposal 1

Vote 'Yes'

xplad tx gov vote 1 yes --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Vote 'No'

xplad tx gov vote 1 no --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Vote 'Abstain'

xplad tx gov vote 1 abstain --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

Vote 'NoWithVeto'

xplad tx gov vote 1 NoWithVeto --from wallet --chain-id dimension_37-1 --gas-adjustment 1.4 --gas auto --gas-prices 850000000000axpla -y

⚡️ Utility

Update ports

CUSTOM_PORT=201
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.xpla/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.xpla/config/app.toml

Update Indexer

Disable indexer

sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.xpla/config/config.toml

Enable indexer

sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.xpla/config/config.toml

Update pruning

sed -i \
  -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "107"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "13"|' \
  $HOME/.xpla/config/app.toml

🚨 Maintenance

Get validator info

xplad status 2>&1 | jq .ValidatorInfo

Get sync info

xplad status 2>&1 | jq .SyncInfo

Get node peer

echo $(xplad tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.xpla/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')

Check if validator key is correct

[[ $(xplad q staking validator $(xplad keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(xplad 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"

Get live peers

curl -sS http://localhost:20157/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'

Set minimum gas price

sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"850000000000axpla\"/" $HOME/.xpla/config/app.toml

Enable prometheus

sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.xpla/config/config.toml

Reset chain data

xplad tendermint unsafe-reset-all --home $HOME/.xpla --keep-addr-book

Remove node

Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv_validator_key.json!

cd $HOME
sudo systemctl stop xplad
sudo systemctl disable xplad
sudo rm /etc/systemd/system/xplad.xplad
sudo systemctl daemon-reload
rm -f $(which xplad)
rm -rf $HOME/.xpla
rm -rf $HOME/osmosis

⚙️ Service Management

Reload xplad configuration

sudo systemctl daemon-reload

Enable xplad

sudo systemctl enable xplad

Disable xplad

sudo systemctl disable xplad

Start xplad

sudo systemctl start xplad

Stop xplad

sudo systemctl stop xplad

Restart xplad

sudo systemctl restart xplad

Check xplad status

sudo systemctl status xplad

Check xplad logs

sudo journalctl -u xplad -f --no-hostname -o cat

Last updated