Key Management

Add new key

sourced keys add wallet

Recover existing key

sourced keys add wallet --recover

List All key

sourced keys list

Delete key

sourced keys delete wallet

Export Key (save to wallet.backup)

sourced keys export wallet

Import key

sourced keys import wallet wallet.backup

Query Wallet Balance

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

Validator Management

Create Validator

sourced tx staking create-validator \
  --amount "1000000usource" \
  --pubkey $(sourced tendermint show-validator) \
  --moniker "MONIKER" \
  --identity "KEYBASE_ID" \
  --details "YOUR DETAILS" \
  --website "YOUR WEBSITE" \
  --chain-id source-1 \
  --commission-rate "0.05" \
  --commission-max-rate "0.20" \
  --commission-max-change-rate "0.01" \
  --min-self-delegation "1" \
  --gas-prices "0.025usource" \
  --gas "auto" \
  --gas-adjustment "1.5" \
  --from wallet \
  -y

Edit Validator

sourced tx staking edit-validator \
--new-moniker="MONIKER" \
--identity="YOUR_KEYBASE_ID" \
--details="YOUR_DETAILS" \
--website="YOUR_WEBSITE_URL" \
--chain-id source-1 \
--commission-rate=0.05 \
--gas-prices "0.025usource" \
--gas="auto" \
--gas-adjustment="1.5" \
--from wallet \
-y

Unjail Validator

sourced tx slashing unjail --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 

Signing Info

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

List all active validators

sourced 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

sourced q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED") or .status=="BOND_STATUS_UNBONDING")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl 

View validators details

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

Token Management

Withdraw rewards from all validators

sourced tx distribution withdraw-all-rewards --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 

Withdraw comission and rewards from your validator

sourced tx distribution withdraw-rewards $(sourced keys show wallet --bech val -a) --commission --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 

Delegate to your validator

sourced tx staking delegate $(sourced keys show wallet --bech val -a) 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 

Delegate to other

c4ed tx staking delegate TO_VALOPER_ADDRESS 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 

Redelegate your stake to other validators

sourced tx staking redelegate $(sourced keys show wallet --bech val -a) TO_VALOPER_ADDRESS 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 

Unbond stake

sourced tx staking unbond $(sourced keys show wallet --bech val -a) 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 

Send tokens

sourced tx bank send wallet TO_WALLET_ADDRESS 1000000usource --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 

Governance

List all proposals

sourced query gov proposals

Vote YES / NO / ABSTAIN / NO_WITH_VETO

sourced tx gov vote 1 yes --from wallet --chain-id source-1 --gas-prices "0.025usource" --gas-adjustment 1.5 --gas "auto" -y 

Create new text proposal

sourced tx gov submit-proposal \
--title="Title" \
--description="Description" \
--deposit=100000000usource \
--type="Text" \
--from=wallet \
--gas-prices 0usource\ 
--gas-adjustment 1.5 \
--gas "auto" \
-y 

Utility

Set Indexer NULL / KV

sed -i 's|^indexer *=.*|indexer = "null"|' $HOME/.source/config/config.toml

Set Custom Port

CUSTOM_PORT=13
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}660\"%" $HOME/.source/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}317\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}091\"%; s%^address = \"0.0.0.0:8545\"%address = \"0.0.0.0:${CUSTOM_PORT}545\"%; s%^ws-address = \"0.0.0.0:8546\"%ws-address = \"0.0.0.0:${CUSTOM_PORT}546\"%" $HOME/.source/config/app.toml

Get Validator info

sourced status 2>&1 | jq .ValidatorInfo

Get denom info

sourced q bank denom-metadata -oj | jq

Get sync status

sourced status 2>&1 | jq .SyncInfo.catching_up

Get latest height

sourced status 2>&1 | jq .SyncInfo.latest_block_height

Reset Node

sourced tendermint unsafe-reset-all --home $HOME/.source --keep-addr-book

Delete Node

sudo systemctl stop sourced && sudo systemctl disable sourced && sudo rm /etc/systemd/system/sourced.service && sudo systemctl daemon-reload && rm -rf $HOME/.source && sudo rm -rf $(which sourced) 

Services Management

# Reload Service
sudo systemctl daemon-reload

# Enable Service
sudo systemctl enable sourced

# Disable Service
sudo systemctl disable sourced

# Start Service
sudo systemctl start sourced

# Stop Service
sudo systemctl stop sourced

# Restart Service
sudo systemctl restart sourced

# Check Service Status
sudo systemctl status sourced

# Check Service Logs
sudo journalctl -u sourced -f --no-hostname -o cat

Last updated