Important Commands
Useful set of commands for node operators. From key management to chain governance

🔑 Key management
Add new key
# create validator wallet
kyved keys add wallet
Recover existing key
kyved keys add wallet --recover
List all keys
kyved keys list
Delete key
kyved keys delete wallet
Export key to the file
kyved keys export wallet
Import key from the file
kyved keys import wallet wallet.backup
Query wallet balance
kyved q bank balances $(kyved keys show wallet -a)
👷🏽♀ Validator management
Create new validator
kyved tx staking create-validator \
--moniker "YOUR_MONIKER_NAME" \
--identity="YOUR_KEYBASE_ID" \
--website="YOUR_WEBSITE_URL" \
--details="YOUR_DETAILS" \
--amount 1000000tkyve \
--fees 300tkyve \
--pubkey=$(kyved tendermint show-validator) \
--chain-id=kaon-1 \
--commission-max-change-rate=0.01 \
--commission-max-rate=0.20 \
--commission-rate=0.10 \
--min-self-delegation=1 \
--from=wallet \
--yes
Edit existing validator
kyved tx staking edit-validator \
--moniker="YOUR_MONIKER_NAME" \
--identity="YOUR_KEYBASE_ID" \
--details="YOUR_DETAILS" \
--website="YOUR_WEBSITE_URL"
--chain-id=kaon-1 \
--commission-rate=0.05 \
--from=wallet \
--gas-adjustment=1.4 \
--gas=auto \
--fees=1000tkyve \
-y
Unjail validator
kyved tx slashing unjail --from wallet --chain-id kaon-1 --gas auto --gas-adjustment 1.4 --fees 1000tkyve -y
Jail reason
kyved query slashing signing-info $(kyved tendermint show-validator)
List all active validators
kyved 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
kyved 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
kyved q staking validator $(kyved keys show wallet --bech val -a)
🪙 Token management
Withdraw rewards from all validators
kyved tx distribution withdraw-all-rewards --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
Withdraw commission and rewards from your validator
kyved tx distribution withdraw-rewards $(kyved keys show wallet --bech val -a) --commission --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
Delegate tokens to yourself
kyved tx staking delegate $(kyved keys show wallet --bech val -a) 1000000tkyve --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
Delegate tokens to validator
kyved tx staking delegate <TO_VALOPER_ADDRESS> 1000000tkyve --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
Redelegate tokens to another validator
kyved tx staking redelegate $(kyved keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000tkyve --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
Unbond tokens from your validator
kyved tx staking unbond $(kyved keys show wallet --bech val -a) 1000000tkyve --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
Send tokens to the wallet
kyved tx bank send wallet <TO_WALLET_ADDRESS> 1000000tkyve --from wallet --chain-id kaon-1
📥 Governance
Create New Text Proposal
kyved tx gov submit-proposal \
--title="Title" \
--description="Description" \
--deposit=1000000tkyve \
--type="Text" \
--from=wallet \
--gas-prices=0.1tykve \
--gas-adjustment=1.4 \
--gas=auto \
-y
List all proposals
kyved query gov proposals
View proposal by id
kyved query gov proposal 1
Vote 'Yes'
kyved tx gov vote 1 yes --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
Vote 'No'
kyved tx gov vote 1 no --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
Vote 'Abstain'
kyved tx gov vote 1 abstain --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
Vote 'NoWithVeto'
kyved tx gov vote 1 nowithveto --from wallet --chain-id kaon-1 --gas-adjustment 1.4 --gas auto --fees 1000tkyve -y
⚡️ Utility
Update ports
CUSTOM_PORT=10
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}660\"%" $HOME/.kyved/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}317\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}091\"%" $HOME/.kyved/config/app.toml
Update Indexer
#Disable indexer
sed -i 's|^indexer *=.*|indexer = "null"|' $HOME/.kyved/config/config.toml
Enable indexer
#Enable indexer
sed -i 's|^indexer *=.*|indexer = "kv"|' $HOME/.kyved/config/config.toml
Update pruning
sed -i.bak -e 's|^pruning *=.*|pruning = "custom"|; s|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|; s|^pruning-keep-every *=.*|pruning-keep-every = "0"|; s|^pruning-interval *=.*|pruning-interval = "10"|' $HOME/.kyved/config/app.toml
🚧 Maintenance
Get validator info
kyved status 2>&1 | jq .ValidatorInfo
Get sync info
kyved status 2>&1 | jq .SyncInfo
Get node peer
echo $(kyved tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.kyved/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
Check if validator key is correct
[[ $(kyved q staking validator $(kyved keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(kyved 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:20657/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 = \"0utia\"/" $HOME/.kyved/config/app.toml
Enable prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.kyved/config/config.toml
Reset chain data
kyved tendermint unsafe-reset-all --home $HOME/.kyved --keep-addr-book
Remove node
Please, before proceeding with the next step! Make sure you have backed up your priv_validator_key.json! Because All chain data will be lost!
cd $HOME
sudo systemctl stop kyved
sudo systemctl disable kyved
sudo rm /etc/systemd/system/kyved.service
sudo systemctl daemon-reload
rm -rf $(which kyved)
rm -rf $HOME/.kyved
rm -rf $HOME/kyved
⚙️ Service Management
Reload service configuration
sudo systemctl daemon-reload
Enable service
sudo systemctl enable kyved
Disable service
sudo systemctl disable kyved
Start service
sudo systemctl start kyved
Stop service
sudo systemctl stop kyved
Restart service
sudo systemctl restart kyved
Check service status
sudo systemctl status kyved
Check service logs
sudo journalctl -u kyved -f --no-hostname -o cat
Last updated