🔑 Key management
Add new key
palomad keys add wallet
Recover existing key
palomad keys add wallet --recover
List all keys
palomad keys list
Delete key
palomad keys delete wallet
Export key to a file
palomad keys export wallet
Import key from a file
palomad keys import wallet wallet.backup
Query wallet balance
palomad q bank balances $(palomad keys show wallet -a)
👷 Validator management
Please make sure you have adjusted moniker, identity, details and website to match your values.
Create new validator
palomad tx staking create-validator <(cat <<EOF
{
"pubkey": $(palomad comet show-validator),
"amount": "1000000ugrain",
"moniker": "YOUR_MONIKER_NAME",
"identity": "YOUR_KEYBASE_ID",
"website": "YOUR_WEBSITE_URL",
"security": "YOUR_SECURITY_EMAIL",
"details": "YOUR_DETAILS",
"commission-rate": "0.05",
"commission-max-rate": "0.20",
"commission-max-change-rate": "0.05",
"min-self-delegation": "1"
}
EOF
) \
--chain-id tumbler \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0ugrain \
-y
Edit existing validator
palomad tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id tumbler \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0ugrain \
-y
Unjail validator
palomad tx slashing unjail --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Jail reason
palomad query slashing signing-info $(palomad comet show-validator)
List all active validators
palomad 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
palomad 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
palomad q staking validator $(palomad keys show wallet --bech val -a)
💲 Token management
Withdraw rewards from all validators
palomad tx distribution withdraw-all-rewards --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Withdraw commission and rewards from your validator
palomad tx distribution withdraw-rewards $(palomad keys show wallet --bech val -a) --commission --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Delegate tokens to yourself
palomad tx staking delegate $(palomad keys show wallet --bech val -a) 1000000ugrain --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Delegate tokens to validator
palomad tx staking delegate <TO_VALOPER_ADDRESS> 1000000ugrain --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Redelegate tokens to another validator
palomad tx staking redelegate $(palomad keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000ugrain --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Unbond tokens from your validator
palomad tx staking unbond $(palomad keys show wallet --bech val -a) 1000000ugrain --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Send tokens to the wallet
palomad tx bank send wallet <TO_WALLET_ADDRESS> 1000000ugrain --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
🗳 Governance
List all proposals
palomad query gov proposals
View proposal by id
palomad query gov proposal 1
Vote ‘Yes’
palomad tx gov vote 1 yes --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Vote ‘No’
palomad tx gov vote 1 no --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Vote ‘Abstain’
palomad tx gov vote 1 abstain --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
Vote ‘NoWithVeto’
palomad tx gov vote 1 NoWithVeto --from wallet --chain-id tumbler --gas-adjustment 1.4 --gas auto --gas-prices 0ugrain -y
⚡️ Utility
Update ports
CUSTOM_PORT=110
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/.paloma/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/.paloma/config/app.toml
Update Indexer
Disable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.paloma/config/config.toml
Enable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.paloma/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/.paloma/config/app.toml
🚨 Maintenance
Get validator info
palomad status 2>&1 | jq .ValidatorInfo
Get sync info
palomad status 2>&1 | jq .SyncInfo
Get node peer
echo $(palomad comet show-node-id)'@'$(curl -4s ifconfig.me)':'$(cat $HOME/.paloma/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
Check if validator key is correct
[[ $(palomad q staking validator $(palomad keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(palomad 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:11057/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 = \"0ugrain\"/" $HOME/.paloma/config/app.toml
Enable prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.paloma/config/config.toml
Reset chain data
palomad comet unsafe-reset-all --keep-addr-book --home $HOME/.paloma --keep-addr-book
Remove node
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 paloma.service
sudo systemctl disable paloma.service
sudo rm /etc/systemd/system/paloma.service
sudo systemctl daemon-reload
rm -f $(which palomad)
rm -rf $HOME/.paloma
rm -rf $HOME/paloma
⚙️ Service Management
Reload service configuration
sudo systemctl daemon-reload
Enable service
sudo systemctl enable paloma.service
Disable service
sudo systemctl disable paloma.service
Start service
sudo systemctl start paloma.service
Stop service
sudo systemctl stop paloma.service
Restart service
sudo systemctl restart paloma.service
Check service status
sudo systemctl status paloma.service
Check service logs
sudo journalctl -u paloma.service -f --no-hostname -o cat