Useful commands

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

Comdex
Comdex

Daemon configuration

comdex config node https://testnet-comdex-rpc.lavenderfive.com:443
comdex config chain-id comdex-test4

🔑 Key management

Add new key

comdex keys add wallet

Recover existing key

comdex keys add wallet --recover

List all keys

comdex keys list

Delete key

comdex keys delete wallet

Export key to the file

comdex keys export wallet

Import key from the file

comdex keys import wallet wallet.backup

Query wallet balance

comdex q bank balances $(comdex keys show wallet -a)

👷 Validator management

Please make sure you have adjusted moniker, identity, details and website to match your values.

Create new validator

comdex tx staking create-validator \
--amount 2ucmdx \
--pubkey $(comdex tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id comdex-test4 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 2ucmdx \
-y

Edit existing validator

comdex tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id comdex-test4 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 2ucmdx \
-y

Unjail validator

comdex tx slashing unjail --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Jail reason

comdex query slashing signing-info $(comdex tendermint show-validator)

List all active validators

comdex 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

comdex 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

comdex q staking validator $(comdex keys show wallet --bech val -a)

💲 Token management

Withdraw rewards from all validators

comdex tx distribution withdraw-all-rewards --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Withdraw commission and rewards from your validator

comdex tx distribution withdraw-rewards $(comdex keys show wallet --bech val -a) --commission --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Delegate tokens to yourself

comdex tx staking delegate $(comdex keys show wallet --bech val -a) 2ucmdx --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Delegate tokens to validator

comdex tx staking delegate <TO_VALOPER_ADDRESS> 2ucmdx --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Redelegate tokens to another validator

comdex tx staking redelegate $(comdex keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 2ucmdx --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Unbond tokens from your validator

comdex tx staking unbond $(comdex keys show wallet --bech val -a) 2ucmdx --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Send tokens to the wallet

comdex tx bank send wallet <TO_WALLET_ADDRESS> 2ucmdx --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

🗳 Governance

List all proposals

comdex query gov proposals

View proposal by id

comdex query gov proposal 1

Vote 'Yes'

comdex tx gov vote 1 yes --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Vote 'No'

comdex tx gov vote 1 no --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Vote 'Abstain'

comdex tx gov vote 1 abstain --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

Vote 'NoWithVeto'

comdex tx gov vote 1 NoWithVeto --from wallet --chain-id comdex-test4 --gas-adjustment 1.4 --gas auto --gas-prices 2ucmdx -y

⚡️ Utility

Update ports

CUSTOM_PORT=131
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\"%" .comdex/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\"%" .comdex/config/app.toml

Update Indexer

Disable indexer

sed -i -e 's|^indexer *=.*|indexer = "null"|' .comdex/config/config.toml

Enable indexer

sed -i -e 's|^indexer *=.*|indexer = "kv"|' .comdex/config/config.toml

Update pruning

sed -i \
  -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "107"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "13"|' \
  .comdex/config/app.toml

🚨 Maintenance

Get validator info

comdex status 2>&1 | jq .ValidatorInfo

Get sync info

comdex status 2>&1 | jq .SyncInfo

Get node peer

echo $(comdex tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat .comdex/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')

Check if validator key is correct

[[ $(comdex q staking validator $(comdex keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(comdex 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:13157/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 = \"2ucmdx\"/" .comdex/config/app.toml

Enable prometheus

sed -i -e "s/prometheus = false/prometheus = true/" .comdex/config/config.toml

Reset chain data

comdex tendermint unsafe-reset-all --home .comdex --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 comdex
sudo systemctl disable comdex
sudo rm /etc/systemd/system/comdex.comdex
sudo systemctl daemon-reload
rm -f $(which comdex)
rm -rf .comdex
rm -rf $HOME/osmosis

⚙️ Service Management

Reload comdex configuration

sudo systemctl daemon-reload

Enable comdex

sudo systemctl enable comdex

Disable comdex

sudo systemctl disable comdex

Start comdex

sudo systemctl start comdex

Stop comdex

sudo systemctl stop comdex

Restart comdex

sudo systemctl restart comdex

Check comdex status

sudo systemctl status comdex

Check comdex logs

sudo journalctl -u comdex -f --no-hostname -o cat

Last updated