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