This documentation under development by nodex.one team! πŸ‘·β€β™‚οΈπŸ‘‹
Networks
Testnet
πŸ“ Cheat Sheet

Cheat Sheet

A Tendermint cheat sheet is a quick reference for essential commands to control Tendermint blockchains.

Managing keys

Managing keys on a Tendermint-based chain involves securing and controlling access to cryptographic keys used for chain operations.

Generate new key
babylond keys add wallet
Recover key
babylond keys add wallet --recover

Validators are required to provide a BLS signature at the conclusion of each epoch. To accomplish this, a validator must possess a BLS key pair for signing information.

Create BLS key
babylond create-bls-key $(babylond keys show wallet -a)

The provided command will generate a BLS key and append it to the $HOME/.babylond/config/priv_validator_key.json file. This file is also used to store the private key used by the validator for signing blocks. It's essential to ensure that this file is adequately secured.

πŸ’‘

Once you've generated a BLS key, you should restart your node to load this key into memory.

Restart babylon service
sudo systemctl restart babylond.service
List all key
babylond keys list
Delete key
babylond keys delete wallet
Export key
babylond keys export wallet
Import key
babylond keys import wallet wallet.backup
Query wallet balances
babylond q bank balances $(babylond keys show wallet -a)

Managing validators

Ensure you've updated moniker, identity, details, and website to match your values.

Create validator
babylond tx checkpointing create-validator \
--amount 1000000ubbn \
--pubkey $(babylond tendermint show-validator) \
--moniker "your-moniker-name" \
--identity "your-keybase-id" \
--details "your-details" \
--website "your-website" \
--security-contact "your-email" \
--chain-id bbn-test-2 \
--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 \
--fees 10ubbn \
-y
Edit validator
babylond tx checkpointing edit-validator \
--new-moniker "your-moniker-name" \
--identity "your-keybase-id" \
--details "your-details" \
--website "your-website" \
--security-contact "your-email" \
--chain-id bbn-test-2 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--fees 10ubbn \
-y
Unjail validator
babylond tx slashing unjail --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Validator jail reason
babylond query slashing signing-info $(babylond tendermint show-validator)
List active validator
babylond 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 incative validator
babylond 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
babylond q staking validator $(babylond keys show wallet --bech val -a)

Managing Tokens

Withdraw reward from all validator
babylond tx distribution withdraw-all-rewards --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Withdraw reward and commission
babylond tx distribution withdraw-rewards $(babylond keys show wallet --bech val -a) --commission --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Delegate tokens to your validator
babylond tx staking delegate $(babylond keys show wallet --bech val -a) 1000000ubbn --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Delegate token to other validator, change <to-valoper-address> as you like
babylond tx staking delegate <to-valoper-address> 1000000ubbn --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Redelegate to another validator
babylond tx staking redelegate $(babylond keys show wallet --bech val -a) <to-valoper-address> 1000000ubbn --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Unbond token from your own validator
babylond tx staking unbond $(babylond keys show wallet --bech val -a) 1000000ubbn --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Send token to the wallet
babylond tx bank send wallet <to-wallet-address> 1000000ubbn --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y

Governance

Query list proposal
babylond query gov proposals
View proposal by ID
babylond query gov proposal 1
Vote option yes
babylond tx gov vote 1 yes --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Vote option no
babylond tx gov vote 1 no --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Vote option asbtain
babylond tx gov vote 1 abstain --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
Vote option NoWithVeto
babylond tx gov vote 1 NoWithVeto --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y

Usefulness

Please note that updating the custom port is optional!

Update custom port
CUSTOM_PORT=217
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/.babylond/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/.babylond/config/app.toml
Disable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.babylond/config/config.toml
Enable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.babylond/config/config.toml
Pruning update
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/.babylond/config/app.toml

Maintenance

Get validator information
babylond status 2>&1 | jq .ValidatorInfo
Get sync information
babylond status 2>&1 | jq .SyncInfo
Get node peer
echo $(babylond tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.babylond/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
Check validator keys
[[ $(babylond q staking validator $(babylond keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(babylond 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:21757/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'
Configure minimum gas prices
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025ubbn\"/" $HOME/.babylond/config/app.toml
Enable prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.babylond/config/config.toml
Reset chain data
babylond tendermint unsafe-reset-all --keep-addr-book --home $HOME/.babylond --keep-addr-book
🚨

Before moving on to the next step, be aware that all chain data will be erased. Ensure you've created a backup of your priv_validator_key.json!

Remove node
cd $HOME
sudo systemctl stop babylon
sudo systemctl disable babylon
sudo rm /etc/systemd/system/babylon.service
sudo systemctl daemon-reload
sudo rm -f $(which babylond)
sudo rm -rf $HOME/.babylond
sudo rm -rf $HOME/babylon
sudo rm -rf $HOME/go