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