Useful commands

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

Daemon configuration

sommelier config node https://sommelier-rpc.lavenderfive.com:443
sommelier config chain-id sommelier-3

🔑 Key management

Add new key

sommelier keys add wallet

Recover existing key

sommelier keys add wallet --recover

List all keys

sommelier keys list

Delete key

sommelier keys delete wallet

Export key to the file

sommelier keys export wallet

Import key from the file

sommelier keys import wallet wallet.backup

Query wallet balance

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

👷 Validator management

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

Create new validator

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

Edit existing validator

sommelier tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id sommelier-3 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0usomm \
-y

Unjail validator

sommelier tx slashing unjail --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Jail reason

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

List all active validators

sommelier 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

sommelier 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

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

💲 Token management

Withdraw rewards from all validators

sommelier tx distribution withdraw-all-rewards --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Withdraw commission and rewards from your validator

sommelier tx distribution withdraw-rewards $(sommelier keys show wallet --bech val -a) --commission --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Delegate tokens to yourself

sommelier tx staking delegate $(sommelier keys show wallet --bech val -a) 0usomm --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Delegate tokens to validator

sommelier tx staking delegate <TO_VALOPER_ADDRESS> 0usomm --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Redelegate tokens to another validator

sommelier tx staking redelegate $(sommelier keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 0usomm --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Unbond tokens from your validator

sommelier tx staking unbond $(sommelier keys show wallet --bech val -a) 0usomm --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Send tokens to the wallet

sommelier tx bank send wallet <TO_WALLET_ADDRESS> 0usomm --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

🗳 Governance

List all proposals

sommelier query gov proposals

View proposal by id

sommelier query gov proposal 1

Vote 'Yes'

sommelier tx gov vote 1 yes --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Vote 'No'

sommelier tx gov vote 1 no --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Vote 'Abstain'

sommelier tx gov vote 1 abstain --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

Vote 'NoWithVeto'

sommelier tx gov vote 1 NoWithVeto --from wallet --chain-id sommelier-3 --gas-adjustment 1.4 --gas auto --gas-prices 0usomm -y

⚡️ Utility

Update ports

CUSTOM_PORT=141
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/.sommelier/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/.sommelier/config/app.toml

Update Indexer

Disable indexer

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

Enable indexer

sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.sommelier/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/.sommelier/config/app.toml

🚨 Maintenance

Get validator info

sommelier status 2>&1 | jq .ValidatorInfo

Get sync info

sommelier status 2>&1 | jq .SyncInfo

Get node peer

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

Check if validator key is correct

[[ $(sommelier q staking validator $(sommelier keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(sommelier 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:14157/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 = \"0usomm\"/" $HOME/.sommelier/config/app.toml

Enable prometheus

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

Reset chain data

sommelier tendermint unsafe-reset-all --home $HOME/.sommelier --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 sommelier
sudo systemctl disable sommelier
sudo rm /etc/systemd/system/sommelier.sommelier
sudo systemctl daemon-reload
rm -f $(which sommelier)
rm -rf $HOME/.sommelier
rm -rf $HOME/osmosis

⚙️ Service Management

Reload sommelier configuration

sudo systemctl daemon-reload

Enable sommelier

sudo systemctl enable sommelier

Disable sommelier

sudo systemctl disable sommelier

Start sommelier

sudo systemctl start sommelier

Stop sommelier

sudo systemctl stop sommelier

Restart sommelier

sudo systemctl restart sommelier

Check sommelier status

sudo systemctl status sommelier

Check sommelier logs

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

Last updated