CLI Cheatsheet
Key management
Section titled “Key management”Add new key
sourced keys add wallet
Recover existing key
sourced keys add wallet --recover
List all keys
sourced keys list
Delete key
sourced keys delete wallet
Export key to the file
sourced keys export wallet
Import key from the file
sourced keys import wallet wallet.backup
Wallet balance
sourced q bank balances $(sourced keys show wallet -a)
Token management
Section titled “Token management”Withdraw rewards from all validators
sourced tx distribution withdraw-all-rewards --from wallet --chain-id source-1 --fees=50000usource -y
Withdraw rewards and commissions from your validator
sourced tx distribution withdraw-rewards $(sourced keys show wallet --bech val -a) --commission --from wallet --chain-id source-1 --fees=50000usource -y
Delegate tokens to yourself
sourced tx staking delegate $(sourced keys show wallet --bech val -a) 1000000usource --from wallet --chain-id source-1 --fees=50000usource -y
Delegate tokens to validator
sourced tx staking delegate <TO_VALOPER_ADDRESS> 1000000usource --from wallet --chain-id source-1 --fees=50000usource -y
Redelegate tokens to another validator
sourced tx staking redelegate $(sourced keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000usource --from wallet --chain-id source-1 --fees=50000usource -y
Unbond tokens from your validator
sourced tx staking unbond $(sourced keys show wallet --bech val -a) 1000000usource --from wallet --chain-id source-1 --fees=50000usource -y
Send tokens to the wallet
sourced tx bank send wallet <TO_WALLET_ADDRESS> 1000000usource --from wallet --chain-id source-1 --fees=50000usource -y
Validator management
Section titled “Validator management”Validator info
sourced status 2>&1 | jq .validator_info
Validator details
sourced q staking validator $(sourced keys show wallet --bech val -a)
Check if validator key is correct
[[ $(sourced q staking validator $(sourced keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(sourced 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"
List all active validators
sourced q staking validators -oj --limit=1000 | 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
sourced q staking validators -oj --limit=1000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl
Edit existing validator
sourced tx staking edit-validator \ --new-moniker "YOUR_MONIKER_NAME" \ --identity "YOUR_KEYBASE_ID" \ --details "YOUR_DETAILS" \ --website "YOUR_WEBSITE_URL" \ --security-contact "YOUR_EMAIL_ADDRESS" \ --chain-id source-1 \ --commission-rate 0.05 \ --from wallet \ --fees=50000usource \ -y
Jail reason
sourced query slashing signing-info $(sourced tendermint show-validator)
Unjail validator
sourced tx slashing unjail --from wallet --chain-id source-1 --fees=50000usource -y
Governance
Section titled “Governance”Create a new offer
sourced tx gov submit-proposal \ --title "" \ --description "" \ --deposit 10000000usource \ --type Text --from wallet \ --fees=50000usource \ -y
List all proposals
sourced query gov proposals
View proposal by ID
sourced query gov proposal 1
Vote “YES”
sourced tx gov vote 1 yes --from wallet --chain-id source-1 --fees=50000usource -y
Vote “NO”
sourced tx gov vote 1 no --from wallet --chain-id source-1 --fees=50000usource -y
Vote “ABSTAIN”
sourced tx gov vote 1 abstain --from wallet --chain-id source-1 --fees=50000usource -y
Vote “NOWITHVETO”
sourced tx gov vote 1 NoWithVeto --from wallet --chain-id source-1 --fees=50000usource -y
Maintenance
Section titled “Maintenance”Get sync info
sourced status 2>&1 | jq .sync_info
Get node peer
echo $(sourced tendermint show-node-id)'@'$(wget -qO- eth0.me)':'$(cat $HOME/.source/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
Get live peers
curl -sS http://localhost:15557/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'
Enable Prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.source/config/config.toml
Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.025usource\"|" $HOME/.source/config/app.toml
Disable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.source/config/config.toml
Enable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.source/config/config.toml
Update pruning
sed -i -e 's|^pruning *=.*|pruning = "custom"|' $HOME/.source/config/app.tomlsed -i -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' $HOME/.source/config/app.tomlsed -i -e 's|^pruning-interval *=.*|pruning-interval = "19"|' $HOME/.source/config/app.toml
Filter peers and max peers
sed -i -e 's|^filter_peers *=.*|filter_peers = "true"|' $HOME/.source/config/config.tomlsed -i -e 's|^max_num_inbound_peers *=.*|max_num_inbound_peers = "50"|' $HOME/.source/config/config.tomlsed -i -e 's|^max_num_outbound_peers *=.*|max_num_outbound_peers = "20"|' $HOME/.source/config/config.toml
Update ports
CUSTOM_PORT=155sed -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/.source/config/config.tomlsed -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/.source/config/app.toml
Reset chain data
sourced tendermint unsafe-reset-all --keep-addr-book --home $HOME/.source
Delete node
sudo systemctl stop sourcedsudo systemctl disable sourcedsudo rm -rf /etc/systemd/system/sourced.servicesudo systemctl daemon-reloadsudo rm -f $(which sourced)sudo rm -rf $HOME/.sourcesudo rm -rf $HOME/source
Service Management
Section titled “Service Management”Status service
sudo systemctl status sourced
Start service
sudo systemctl start sourced
Stop service
sudo systemctl stop sourced
Restart service
sudo systemctl restart sourced
Logs service
sudo journalctl -u sourced -f --no-hostname -o cat
Reload service
sudo systemctl daemon-reload
Enable service
sudo systemctl enable sourced
Disable service
sudo systemctl disable sourced