Wallet operations
Create wallet
⚠️ store seed phrase, important during recovering
sourced keys add <YOUR_WALLET_NAME>
Recover wallet
⚠️ store seed phrase, important during recovering
sourced keys add <YOUR_WALLET_NAME> --recover
List of all wallets
Delete wallet
sourced keys delete <YOUR_WALLET_NAME>
Export wallet
⚠️ save to wallet.backup
sourced keys export <YOUR_WALLET_NAME>
Import wallet
sourced keys import <WALLET_NAME> wallet.backup
Check wallet balance
sourced q bank balances $(sourced keys show <YOUR_WALLET_NAME> -a)
Validator operations
Create validator
sourced tx staking create-validator \
--amount=1000000usource \
--pubkey=$(sourced tendermint show-validator) \
--moniker="<Your moniker>" \
--identity=<Your identity> \
--details="<Your details>" \
--chain-id=source-1 \
--commission-rate=0.10 \
--commission-max-rate=0.20 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1 \
--from=<YOUR_WALLET> \
--gas-prices=0.5usource \
--gas-adjustment=1.5 \
--gas=auto \
-y
Edit validator
sourced tx staking edit-validator \
--new-moniker="<Your moniker>" \
--identity=<your identity> \
--details="<Your details>" \
--chain-id=source-1 \
--commission-rate=0.1 \
--from=<YOUR_WALLET> \
--gas-prices=0.5usource \
--gas-adjustment=1.5 \
--gas=auto \
-y
Unjail your validator
sourced tx slashing unjail --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Check blocks info processed by your validator
sourced query slashing signing-info $(sourced tendermint show-validator)
List of 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 of 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
Info about your validator
sourced q staking validator $(sourced keys show <YOUR_WALLET_NAME> --bech val -a)
Transactions
Get your rewards from all validators
sourced tx distribution withdraw-all-rewards --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Get rewards and commissions from your validator
sourced tx distribution withdraw-rewards $(sourced keys show <YOUR_WALLET_NAME> --bech val -a) --commission --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Delegate tokens to your validator
sourced tx staking delegate $(sourced keys show <YOUR_WALLET_NAME> --bech val -a) 1000000usource --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Delegate tokens to validator
sourced tx staking delegate <VALOPER_ADDRESS> 1000000usource --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Redelegate tokens to another validator
sourced tx staking redelegate <SRC_VALOPER_ADDRESS> <TARGET_VALOPER_ADDRESS> 1000000usource --from <WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Unbound tokens from validator
⚠️ it’s can take a while, ~21 days, depends on network’s parameters
sourced tx staking unbond <VALOPER_ADDRESS> 1000000usource --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Send tokens to another wallet
sourced tx bank send <YOUR_WALLET_ADDRESS> <TARGET_WALLET_ADDRESS> 1000000usource --from <YOUR_WALLET_ADDRESS> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Check info about transaction by hash TX_HASH
sourced query tx <TX_HASH>
Governance
Submit text proposal
sourced tx gov submit-proposal \
--title="<Your Title>" \
--description="<Your Description>" \
--deposit=1000000usource \
--type="Text" \
--from=<WALLET_ADDRESS> \
--gas-prices=0.5usource \
--gas-adjustment=1.5 \
--gas=auto \
-y
List of all proposals
sourced query gov proposals
Check proposal info by proposal id
sourced query gov proposal <proposal_id>
Deposit proposal by proposal id
sourced tx gov deposit 1 1000000usource --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Vote as, YES
sourced tx gov vote 1 yes --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Vote as, NO
sourced tx gov vote 1 no --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Vote as, NO_WITH_VETO
sourced tx gov vote 1 no_with_veto --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Vote as, ABSTAIN
sourced tx gov vote 1 abstain --from <YOUR_WALLET> --gas-prices 0.5usource --gas-adjustment 1.5 --gas auto -y
Utils
Change ports to custom
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:36658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:36657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:7060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:36656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":36660\"%" $HOME/.source/config/config.toml && \
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:10090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:10091\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:2317\"%" $HOME/.source/config/app.toml && \
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.source/config/client.toml
Turn on indexing
sed -i 's|^indexer *=.*|indexer = "kv"|' $HOME/.source/config/config.toml
Turn off indexing
sed -i 's|^indexer *=.*|indexer = "null"|' $HOME/.source/config/config.toml
Setup custom prunning
APP_TOML="~/.source/config/app.toml"
sed -i 's|^pruning *=.*|pruning = "custom"|' $APP_TOML
sed -i 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' $APP_TOML
sed -i 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' $APP_TOML
sed -i 's|^pruning-interval *=.*|pruning-interval = "10"|' $APP_TOML
Check your peer
echo $(sourced tendermint show-node-id)@$(curl http://ifconfig.me/)$(grep -A 3 "\[p2p\]" ~/.source/config/config.toml | egrep -o ":[0-9]+")
Check your RPC
echo -e "\033[0;32m$(grep -A 3 "\[rpc\]" ~/.source/config/config.toml | egrep -o ":[0-9]+")\033[0m"
Check information about validator
sourced status 2>&1 | jq .ValidatorInfo
Check synchronisation status (false - synced, true - not synced)
sourced status 2>&1 | jq .SyncInfo.catching_up
Check the latest block
sourced status 2>&1 | jq .SyncInfo.latest_block_height
Reset network
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 && \
rm -rf $HOME/source
Check IP address of the server
Check network parameters
sourced q staking params
sourced q slashing params
Check validator private key is correct
[[ $(sourced q staking validator $(sourced keys show <YOUR_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"
Search all output transactions by address
sourced q txs --events transfer.sender=<ADDRESS> 2>&1 | jq | grep txhash
Search all input transactions by address
sourced q txs --events transfer.recipient=<ADDRESS> 2>&1 | jq | grep txhash
Service management
Reload services
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 -o cat