🔑 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 \
--amount 1000000ugrain \
--pubkey $(palomad tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id tumbler \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.05 \
--min-self-delegation 1 \
--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 tendermint 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 tendermint show-node-id)'@'$(curl -s 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 tendermint 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