Useful commands

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

Daemon configuration

tenetd config node https://tenet-rpc.lavenderfive.com:443
tenetd config chain-id tenet_1559-1

🔑 Key management

Add new key

tenetd keys add wallet

Recover existing key

tenetd keys add wallet --recover

List all keys

tenetd keys list

Delete key

tenetd keys delete wallet

Export key to the file

tenetd keys export wallet

Import key from the file

tenetd keys import wallet wallet.backup

Query wallet balance

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

👷 Validator management

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

Create new validator

tenetd tx staking create-validator \
--amount 250000000atenet \
--pubkey $(tenetd tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id tenet_1559-1 \
--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 250000000atenet \
-y

Edit existing validator

tenetd tx staking edit-validator \
--new-moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id tenet_1559-1 \
--commission-rate 0.05 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 250000000atenet \
-y

Unjail validator

tenetd tx slashing unjail --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Jail reason

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

List all active validators

tenetd 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

tenetd 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

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

💲 Token management

Withdraw rewards from all validators

tenetd tx distribution withdraw-all-rewards --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Withdraw commission and rewards from your validator

tenetd tx distribution withdraw-rewards $(tenetd keys show wallet --bech val -a) --commission --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Delegate tokens to yourself

tenetd tx staking delegate $(tenetd keys show wallet --bech val -a) 250000000atenet --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Delegate tokens to validator

tenetd tx staking delegate <TO_VALOPER_ADDRESS> 250000000atenet --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Redelegate tokens to another validator

tenetd tx staking redelegate $(tenetd keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 250000000atenet --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Unbond tokens from your validator

tenetd tx staking unbond $(tenetd keys show wallet --bech val -a) 250000000atenet --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Send tokens to the wallet

tenetd tx bank send wallet <TO_WALLET_ADDRESS> 250000000atenet --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

🗳 Governance

List all proposals

tenetd query gov proposals

View proposal by id

tenetd query gov proposal 1

Vote 'Yes'

tenetd tx gov vote 1 yes --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Vote 'No'

tenetd tx gov vote 1 no --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Vote 'Abstain'

tenetd tx gov vote 1 abstain --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

Vote 'NoWithVeto'

tenetd tx gov vote 1 NoWithVeto --from wallet --chain-id tenet_1559-1 --gas-adjustment 1.4 --gas auto --gas-prices 250000000atenet -y

⚡️ Utility

Update ports

CUSTOM_PORT=224
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/.tenetd/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/.tenetd/config/app.toml

Update Indexer

Disable indexer

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

Enable indexer

sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.tenetd/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"|' \
  $HOME/.tenetd/config/app.toml

🚨 Maintenance

Get validator info

tenetd status 2>&1 | jq .ValidatorInfo

Get sync info

tenetd status 2>&1 | jq .SyncInfo

Get node peer

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

Check if validator key is correct

[[ $(tenetd q staking validator $(tenetd keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(tenetd 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:22457/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 = \"250000000atenet\"/" $HOME/.tenetd/config/app.toml

Enable prometheus

sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.tenetd/config/config.toml

Reset chain data

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

⚙️ Service Management

Reload tenetd configuration

sudo systemctl daemon-reload

Enable tenetd

sudo systemctl enable tenetd

Disable tenetd

sudo systemctl disable tenetd

Start tenetd

sudo systemctl start tenetd

Stop tenetd

sudo systemctl stop tenetd

Restart tenetd

sudo systemctl restart tenetd

Check tenetd status

sudo systemctl status tenetd

Check tenetd logs

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

Last updated