Cheat sheet is a quick reference for essential commands to control Tendermint blockchains.
Managing keys
Generate new key
Copy symphonyd keys add wallet
Recover key
Copy symphonyd keys add wallet --recover
List all key
Delete key
Copy symphonyd keys delete wallet
Export key
Copy symphonyd keys export wallet
Import key
Copy symphonyd keys import wallet wallet.backup
Query wallet balances
Copy symphonyd q bank balances $( symphonyd keys show wallet -a )
Managing validators
Ensure you've updated moniker, identity, details, and website to match your values. Create validator
Copy symphonyd tx staking create-validator \
--amount 1000000note \
--pubkey $( symphonyd tendermint show-validator ) \
--moniker "your-moniker-name" \
--identity "your-keybase-id" \
--details "your-details" \
--website "your-website" \
--security-contact "your-email" \
--chain-id symphony-testnet-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 800note \
-y
Edit validator
Copy symphonyd tx staking edit-validator \
--new-moniker "your-moniker-name" \
--identity "your-keybase-id" \
--details "your-details" \
--website "your-website" \
--security-contact "your-email" \
--chain-id symphony-testnet-2 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--fees 800note \
-y
Unjail validator
Copy symphonyd tx slashing unjail --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Validator jail reason
Copy symphonyd query slashing signing-info $( symphonyd tendermint show-validator )
List active validator
Copy symphonyd 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
Copy symphonyd 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
Copy symphonyd q staking validator $( symphonyd keys show wallet --bech val -a )
Managing Tokens
Withdraw reward from all validator
Copy symphonyd tx distribution withdraw-all-rewards --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Withdraw reward and commission
Copy symphonyd tx staking delegate $(symphonyd keys show wallet --bech val -a) 1000000note --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Delegate tokens to your validator
Copy symphonyd tx staking delegate $(symphonyd keys show wallet --bech val -a) 100000note --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.5 --gas auto --gas-prices 1note
Delegate token to other validator, change as you like
Copy symphonyd tx staking delegate <to-valoper-address> 1000000note --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Redelegate to another validator
Copy symphonyd tx staking redelegate $(symphonyd keys show wallet --bech val -a) <to-valoper-address> 1000000note --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Unbond token from your own validator
Copy symphonyd tx staking unbond $(symphonyd keys show wallet --bech val -a) 1000000note --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Send token to the wallet
Copy symphonyd tx bank send wallet <to-wallet-address> 1000000note --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Governance
Query list proposal
Copy symphonyd query gov proposals
View proposal by ID
Copy symphonyd query gov proposal 1
Vote option yes
Copy symphonyd tx gov vote 1 yes --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Vote option no
Copy symphonyd tx gov vote 1 no --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Vote option asbtain
Copy symphonyd tx gov vote 1 abstain --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Vote option NoWithVeto
Copy symphonyd tx gov vote 1 NoWithVeto --from wallet --chain-id symphony-testnet-2 --gas-adjustment 1.4 --gas auto --fees 800note -y
Usefulness
Please note that updating the custom port is optional! Update custom port
Copy CUSTOM_PORT = 248
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/.symphonyd/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/.symphonyd/config/app.toml
Disable indexer
Copy sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME /.symphonyd/config/config.toml
Enable indexer
Copy sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME /.symphonyd/config/config.toml
Pruning update
Copy 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 /.symphonyd/config/app.toml
Maintenance
Get validator information
Copy symphonyd status 2>&1 | jq .ValidatorInfo
Get sync information
Copy symphonyd status 2>&1 | jq .SyncInfo
Get node peer
Copy echo $(symphonyd tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.symphonyd/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
Check validator keys
Copy [[ $(symphonyd q staking validator $(symphonyd keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(symphonyd 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
Copy curl -sS http://localhost:24857/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'
Configure minimum gas prices
Copy sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0note\"/" $HOME /.symphonyd/config/app.toml
Enable prometheus
Copy sed -i -e "s/prometheus = false/prometheus = true/" $HOME /.symphonyd/config/config.toml
Reset chain data
Copy symphonyd tendermint unsafe-reset-all --keep-addr-book --home $HOME /.symphonyd --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
Copy cd $HOME
sudo systemctl stop symphony
sudo systemctl disable symphony
sudo rm /etc/systemd/system/symphony.service
sudo systemctl daemon-reload
sudo rm -f $( which symphonyd )
sudo rm -rf $HOME /.symphonyd
sudo rm -rf $HOME /symphony
sudo rm -rf $HOME /go