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