Useful commands
Useful set of commands for node operators. From key management to chain governance.
Last updated
Useful set of commands for node operators. From key management to chain governance.
Last updated
Chain ID: jackal-1 | Latest Version Tag: null
canined keys add wallet
canined keys add wallet --recover
canined keys list
canined keys delete wallet
canined keys export wallet
canined keys import wallet wallet.backup
canined q bank balances $(canined keys show wallet -a)
canined tx staking create-validator \
--amount=1000000 \
--pubkey=$(canined tendermint show-validator) \
--moniker="YOUR_MONIKER_NAME" \
--identity="YOUR_KEYBASE_ID" \
--details="YOUR_DETAILS" \
--website="YOUR_WEBSITE_URL"
--chain-id=jackal-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 \
-y
canined tx staking edit-validator \
--moniker="YOUR_MONIKER_NAME" \
--identity="YOUR_KEYBASE_ID" \
--details="YOUR_DETAILS" \
--website="YOUR_WEBSITE_URL"
--chain-id=jackal-1 \
--commission-rate=0.05 \
--from=wallet \
--gas-adjustment=1.4 \
--gas=auto \
-y
canined tx slashing unjail --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
canined query slashing signing-info $(canined tendermint show-validator)
canined 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
canined 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
canined q staking validator $(canined keys show wallet --bech val
canined tx distribution withdraw-all-rewards --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
canined tx distribution withdraw-rewards $(canined keys show wallet --bech val -a) --commission --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto --y
canined tx staking delegate $(canined keys show wallet --bech val -a) 1000000 --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
canined tx staking delegate <TO_VALOPER_ADDRESS> 1000000.canine --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
canined tx staking redelegate $(canined keys show wallet --bech val <TO_VALOPER_ADDRESS> 1000000 --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
canined tx staking unbond $(canined keys show wallet --bech val -a) 1000000 --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
canined tx bank send wallet <TO_WALLET_ADDRESS> 1000000 --from wallet --chain-id jackal-1
canined query gov proposals
canined query gov proposal 1
canined tx gov vote 1 yes --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
canined tx gov vote 1 no --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
canined tx gov vote 1 abstain --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
canined tx gov vote 1 nowithveto --from wallet --chain-id jackal-1 --gas-adjustment 1.4 --gas auto -y
CUSTOM_PORT=175
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}60\"%" $HOME/.canine/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/.canine/config/app.toml
Disable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.canine/config/config.toml
Enable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.canine/config/config.toml
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/.canine/config/app.toml
canined status 2>&1 | jq .ValidatorInfo
canined status 2>&1 | jq .SyncInfo
echo $(canined tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.canine/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
[[ $(canined q staking validator $(canined keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(canined 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"
curl -sS http://localhost:26657/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.canine\"/" $HOME/.canine/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.canine/config/config.toml
canined tendermint unsafe-reset-all --home $HOME/.canine --keep-addr-book
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 canined
sudo systemctl disable canined
sudo rm /etc/systemd/system/canined.service
sudo systemctl daemon-reload
rm -f $(which canined)
rm -rf $HOME/.canine
rm -rf $HOME/jackal
sudo systemctl daemon-reload
sudo systemctl enable canined
sudo systemctl disable canined
sudo systemctl start canined
sudo systemctl stop canined
sudo systemctl restart canined
sudo systemctl status canined
sudo journalctl -u canined -f --no-hostname -o cat