Useful commands

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

Symbiotic
Symbiotic

Daemon configuration

symd config node https://testnet-symbiotic-rpc.lavenderfive.com:443
symd config chain-id chain-4CVePy

🔑 Key management

Add new key

symd keys add wallet

Recover existing key

symd keys add wallet --recover

List all keys

symd keys list

Delete key

symd keys delete wallet

Export key to the file

symd keys export wallet

Import key from the file

symd keys import wallet wallet.backup

Query wallet balance

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

👷 Validator management

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

Create new validator

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

Edit existing validator

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

Unjail validator

symd tx slashing unjail --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Jail reason

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

List all active validators

symd 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

symd 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

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

💲 Token management

Withdraw rewards from all validators

symd tx distribution withdraw-all-rewards --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Withdraw commission and rewards from your validator

symd tx distribution withdraw-rewards $(symd keys show wallet --bech val -a) --commission --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Delegate tokens to yourself

symd tx staking delegate $(symd keys show wallet --bech val -a)  --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Delegate tokens to validator

symd tx staking delegate <TO_VALOPER_ADDRESS>  --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Redelegate tokens to another validator

symd tx staking redelegate $(symd keys show wallet --bech val -a) <TO_VALOPER_ADDRESS>  --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Unbond tokens from your validator

symd tx staking unbond $(symd keys show wallet --bech val -a)  --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Send tokens to the wallet

symd tx bank send wallet <TO_WALLET_ADDRESS>  --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

🗳 Governance

List all proposals

symd query gov proposals

View proposal by id

symd query gov proposal 1

Vote 'Yes'

symd tx gov vote 1 yes --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Vote 'No'

symd tx gov vote 1 no --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Vote 'Abstain'

symd tx gov vote 1 abstain --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

Vote 'NoWithVeto'

symd tx gov vote 1 NoWithVeto --from wallet --chain-id chain-4CVePy --gas-adjustment 1.4 --gas auto --gas-prices  -y

⚡️ Utility

Update ports

CUSTOM_PORT=294
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\"%" .symapp/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\"%" .symapp/config/app.toml

Update Indexer

Disable indexer

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

Enable indexer

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

🚨 Maintenance

Get validator info

symd status 2>&1 | jq .ValidatorInfo

Get sync info

symd status 2>&1 | jq .SyncInfo

Get node peer

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

Check if validator key is correct

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

Enable prometheus

sed -i -e "s/prometheus = false/prometheus = true/" .symapp/config/config.toml

Reset chain data

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

⚙️ Service Management

Reload symd configuration

sudo systemctl daemon-reload

Enable symd

sudo systemctl enable symd

Disable symd

sudo systemctl disable symd

Start symd

sudo systemctl start symd

Stop symd

sudo systemctl stop symd

Restart symd

sudo systemctl restart symd

Check symd status

sudo systemctl status symd

Check symd logs

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

Last updated