Wallet operations
Create wallet
⚠️ store seed phrase, important during recovering
picad keys add <YOUR_WALLET_NAME>
Recover wallet
⚠️ store seed phrase, important during recovering
picad keys add <YOUR_WALLET_NAME> --recover
List of all wallets
Delete wallet
picad keys delete <YOUR_WALLET_NAME>
Export wallet
⚠️ save to wallet.backup
picad keys export <YOUR_WALLET_NAME>
Import wallet
picad keys import <WALLET_NAME> wallet.backup
Check wallet balance
picad q bank balances $(picad keys show <YOUR_WALLET_NAME> -a)
Validator operations
Create validator
picad tx staking create-validator \
--amount=1000000ppica \
--pubkey=$(picad tendermint show-validator) \
--moniker="<Your moniker>" \
--identity=<Your identity> \
--details="<Your details>" \
--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.1ppica \
--gas-adjustment=1.5 \
--gas=auto \
-y
Edit validator
picad tx staking edit-validator \
--new-moniker="<Your moniker>" \
--identity=<your identity> \
--details="<Your details>" \
--commission-rate=0.1 \
--from=<YOUR_WALLET> \
--gas-prices=0.1ppica \
--gas-adjustment=1.5 \
--gas=auto \
-y
Unjail your validator
picad tx slashing unjail --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Check blocks info processed by your validator
picad query slashing signing-info $(picad tendermint show-validator)
List of active validators
picad 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
picad 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
picad q staking validator $(picad keys show <YOUR_WALLET_NAME> --bech val -a)
Transactions
Get your rewards from all validators
picad tx distribution withdraw-all-rewards --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Get rewards and commissions from your validator
picad tx distribution withdraw-rewards $(picad keys show <YOUR_WALLET_NAME> --bech val -a) --commission --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Delegate tokens to your validator
picad tx staking delegate $(picad keys show <YOUR_WALLET_NAME> --bech val -a) 1000000ppica --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Delegate tokens to validator
picad tx staking delegate <VALOPER_ADDRESS> 1000000ppica --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Redelegate tokens to another validator
picad tx staking redelegate <SRC_VALOPER_ADDRESS> <TARGET_VALOPER_ADDRESS> 1000000ppica --from <WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Unbound tokens from validator
⚠️ it’s can take a while, ~21 days, depends on network’s parameters
picad tx staking unbond <VALOPER_ADDRESS> 1000000ppica --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Send tokens to another wallet
picad tx bank send <YOUR_WALLET_ADDRESS> <TARGET_WALLET_ADDRESS> 1000000ppica --from <YOUR_WALLET_ADDRESS> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Check info about transaction by hash TX_HASH
picad query tx <TX_HASH>
Governance
Submit text proposal
picad tx gov submit-proposal \
--title="<Your Title>" \
--description="<Your Description>" \
--deposit=1000000ppica \
--type="Text" \
--from=<WALLET_ADDRESS> \
--gas-prices=0.1ppica \
--gas-adjustment=1.5 \
--gas=auto \
-y
List of all proposals
picad query gov proposals
Check proposal info by proposal id
picad query gov proposal <proposal_id>
Deposit proposal by proposal id
picad tx gov deposit 1 1000000ppica --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Vote as, YES
picad tx gov vote 1 yes --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Vote as, NO
picad tx gov vote 1 no --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Vote as, NO_WITH_VETO
picad tx gov vote 1 no_with_veto --from <YOUR_WALLET> --gas-prices 0.1ppica --gas-adjustment 1.5 --gas auto -y
Vote as, ABSTAIN
picad tx gov vote 1 abstain --from <YOUR_WALLET> --gas-prices 0.1ppica --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/.banksy/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/.banksy/config/app.toml && \
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.banksy/config/client.toml
Turn on indexing
sed -i 's|^indexer *=.*|indexer = "kv"|' $HOME/.banksy/config/config.toml
Turn off indexing
sed -i 's|^indexer *=.*|indexer = "null"|' $HOME/.banksy/config/config.toml
Setup custom prunning
APP_TOML="~/.banksy/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 $(picad tendermint show-node-id)@$(curl http://ifconfig.me/)$(grep -A 3 "\[p2p\]" ~/.banksy/config/config.toml | egrep -o ":[0-9]+")
Check your RPC
echo -e "\033[0;32m$(grep -A 3 "\[rpc\]" ~/.banksy/config/config.toml | egrep -o ":[0-9]+")\033[0m"
Check information about validator
picad status 2>&1 | jq .ValidatorInfo
Check synchronisation status (false - synced, true - not synced)
picad status 2>&1 | jq .SyncInfo.catching_up
Check the latest block
picad status 2>&1 | jq .SyncInfo.latest_block_height
Reset network
picad tendermint unsafe-reset-all --home $HOME/.banksy --keep-addr-book
Delete node
sudo systemctl stop picad && \
sudo systemctl disable picad && \
sudo rm /etc/systemd/system/picad.service && \
sudo systemctl daemon-reload && \
rm -rf $HOME/.banksy && \
rm -rf $HOME/composable-testnet
Check IP address of the server
Check network parameters
picad q staking params
picad q slashing params
Check validator private key is correct
[[ $(picad q staking validator $(picad keys show <YOUR_WALLET> --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(picad 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
picad q txs --events transfer.sender=<ADDRESS> 2>&1 | jq | grep txhash
Search all input transactions by address
picad q txs --events transfer.recipient=<ADDRESS> 2>&1 | jq | grep txhash
Service management
Reload services
sudo systemctl daemon-reload
Enable service
sudo systemctl enable picad
Disable service
sudo systemctl disable picad
Start service
sudo systemctl start picad
Stop service
sudo systemctl stop picad
Restart service
sudo systemctl restart picad
Check service status
sudo systemctl status picad
Check service logs
sudo journalctl -u picad -f -o cat
Last updated