Useful commands
π Key managementβ
Add new keyβ
shentud keys add wallet
Recover existing keyβ
shentud keys add wallet --recover
List all keysβ
shentud keys list
Delete keyβ
shentud keys delete wallet
Export key to the fileβ
shentud keys export wallet
Import key from the fileβ
shentud keys import wallet wallet.backup
Query wallet balanceβ
shentud q bank balances $(shentud keys show wallet -a)
π· Validator managementβ
info
Please make sure you have adjusted moniker, identity, details and website to match your values.
Create new validatorβ
shentud tx staking create-validator \
--amount 1000000uctk \
--pubkey $(shentud tendermint show-validator) \
--moniker "owlstake" \
--identity "6B73E2068E0C0C4C" \
--details "We are a Professional Validator of PoS Cryptocurrencies who helps investors and token holders gain profits from their assets by consistently increasing their yields via non-custodial staking. Join us, stake, and earn." \
--website "https://owlstake.com" \
--chain-id shentu-2.2 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.1 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.025uctk \
-y
Edit existing validatorβ
shentud tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id shentu-2.2 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.025uctk \
-y
Unjail validatorβ
shentud tx slashing unjail --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Jail reasonβ
shentud query slashing signing-info $(shentud tendermint show-validator)
List all active validatorsβ
shentud 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 all inactive validatorsβ
shentud q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl
View validator detailsβ
shentud q staking validator $(shentud keys show wallet --bech val -a)
π² Token managementβ
Withdraw rewards from all validatorsβ
shentud tx distribution withdraw-all-rewards --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Withdraw commission and rewards from your validatorβ
shentud tx distribution withdraw-rewards $(shentud keys show wallet --bech val -a) --commission --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Delegate tokens to yourselfβ
shentud tx staking delegate $(shentud keys show wallet --bech val -a) 1000000uctk --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Delegate tokens to validatorβ
shentud tx staking delegate <TO_VALOPER_ADDRESS> 1000000uctk --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Redelegate tokens to another validatorβ
shentud tx staking redelegate $(shentud keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000uctk --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Unbond tokens from your validatorβ
shentud tx staking unbond $(shentud keys show wallet --bech val -a) 1000000uctk --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Send tokens to the walletβ
shentud tx bank send wallet <TO_WALLET_ADDRESS> 1000000uctk --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
π³ Governanceβ
List all proposalsβ
shentud query gov proposals
View proposal by idβ
shentud query gov proposal 1
Vote 'Yes'β
shentud tx gov vote 1 yes --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Vote 'No'β
shentud tx gov vote 1 no --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Vote 'Abstain'β
shentud tx gov vote 1 abstain --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
Vote 'NoWithVeto'β
shentud tx gov vote 1 NoWithVeto --from wallet --chain-id shentu-2.2 --gas-adjustment 1.4 --gas auto --gas-prices 0.025uctk -y
β‘οΈ Utilityβ
Update portsβ
CUSTOM_PORT=167
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.shentud/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}90\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}91\"%" $HOME/.shentud/config/app.toml
Update Indexerβ
Disable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.shentud/config/config.toml
Enable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.shentud/config/config.toml
Update pruningβ
sed -i \\
-e 's|^pruning *=.*|pruning = "custom"|' \\
-e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \\
-e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \\
-e 's|^pruning-interval *=.*|pruning-interval = "19"|' \\
$HOME/.shentud/config/app.toml
π¨ Maintenanceβ
Get validator infoβ
shentud status 2>&1 | jq .ValidatorInfo
Get sync infoβ
shentud status 2>&1 | jq .SyncInfo
Get node peerβ
echo $(shentud tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.shentud/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
Check if validator key is correctβ
[[ $(shentud q staking validator $(shentud keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(shentud 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"
Get live peersβ
curl -sS http://localhost:11757/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'
Set minimum gas priceβ
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025uctk\"/" $HOME/.shentud/config/app.toml
Enable prometheusβ
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.shentud/config/config.toml
Reset chain dataβ
shentud tendermint unsafe-reset-all --keep-addr-book --home $HOME/.shentud --keep-addr-book
Remove nodeβ
danger
Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv_validator_key.json!
cd $HOME
sudo systemctl stop shentud
sudo systemctl disable shentud
sudo rm /etc/systemd/system/shentud.service
sudo systemctl daemon-reload
rm -f $(which shentud)
rm -rf $HOME/.shentud
rm -rf $HOME/shentu
βοΈ Service Managementβ
Reload service configurationβ
sudo systemctl daemon-reload
Enable serviceβ
sudo systemctl enable shentud
Disable serviceβ
sudo systemctl disable shentud
Start serviceβ
sudo systemctl start shentud
Stop serviceβ
sudo systemctl stop shentud
Restart serviceβ
sudo systemctl restart shentud
Check service statusβ
sudo systemctl status shentud
Check service logsβ
sudo journalctl -u shentud -f --no-hostname -o cat