Useful Command
Useful set of commands for node operators. From key management to chain governance.
🔑 Key management
Add new key
blockxd keys add walletRecover existing key
blockxd keys add wallet --recoverList all keys
blockxd keys listDelete key
blockxd keys delete walletExport key to the file
blockxd keys export walletImport key from the file
blockxd keys import wallet wallet.backupQuery wallet balance
blockxd q bank balances $(blockxd keys show wallet -a)👷 Validator management
Please make sure you have adjusted moniker, identity, details and website to match your values.
Create new validator
blockxd tx staking create-validator \
--amount 1000000abcx \
--pubkey $(blockxd tendermint show-validator) \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL" \
--chain-id blockx_12345-2 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--from wallet \
--gas-prices 0.025abcx \
-yEdit existing validator
blockxd tx staking edit-validator \
--moniker "YOUR_MONIKER_NAME" \
--identity "YOUR_KEYBASE_ID" \
--details "YOUR_DETAILS" \
--website "YOUR_WEBSITE_URL"
--chain-id blockx_12345-2 \
--commission-rate 0.05 \
--from wallet \
--gas-prices 0.025abcx \
-yUnjail validator
blockxd tx slashing unjail --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas-prices 0.025abcx -yJail reason
blockxd query slashing signing-info $(blockxd tendermint show-validator)List all active validators
blockxd 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 | nlList all inactive validators
blockxd 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 | nlView validator details
blockxd q staking validator $(blockxd keys show wallet --bech val -a)💲 Token management
Withdraw rewards from all validators
blockxd tx distribution withdraw-all-rewards --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -yWithdraw commission and rewards from your validator
blockxd tx distribution withdraw-rewards $(blockxd keys show wallet --bech val -a) --commission --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -yDelegate tokens to yourself
blockxd tx staking delegate $(blockxd keys show wallet --bech val -a) 1000000abcx --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -yDelegate tokens to validator
blockxd tx staking delegate <TO_VALOPER_ADDRESS> 1000000abcx --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -yRedelegate tokens to another validator
blockxd tx staking redelegate $(blockxd keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000abcx --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -yUnbond tokens from your validator
blockxd tx staking unbond $(blockxd keys show wallet --bech val -a) 1000000abcx --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -ySend tokens to the wallet
blockxd tx bank send wallet <TO_WALLET_ADDRESS> 1000000abcx --from wallet --chain-id blockx_12345-2🗳 Governance
List all proposals
blockxd query gov proposalsView proposal by id
blockxd query gov proposal 1Vote 'Yes'
blockxd tx gov vote 1 yes --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -yVote 'No'
blockxd tx gov vote 1 no --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -yVote 'Abstain'
blockxd tx gov vote 1 abstain --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -yVote 'NoWithVeto'
blockxd tx gov vote 1 nowithveto --from wallet --chain-id blockx_12345-2 --gas-adjustment 1.4 --gas auto --fees 500abcx -y⚡️ Utility
Update ports
CUSTOM_PORT=28
sed -i -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/.blockxd/config/config.toml
sed -i -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/.nolus/config/app.tomlUpdate Indexer
Disable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.blockxd/config/config.tomlEnable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.blockxd/config/config.tomlUpdate 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/.blockxd/config/app.toml🚨 Maintenance
Get validator info
blockxd status 2>&1 | jq .ValidatorInfoGet sync info
blockxd status 2>&1 | jq .SyncInfoGet node peer
echo $(blockxd tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.blockxd/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')Check if validator key is correct
[[ $(blockxd q staking validator $(blockxd keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(blockxd 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:25657/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 = \"0.0025unls\"/" $HOME/.blockxd/config/app.tomlEnable prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.blockxd/config/config.tomlReset chain data
blockxd tendermint unsafe-reset-all --home $HOME/.blockxd --keep-addr-bookRemove 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 blockxd
sudo systemctl disable blockxd
sudo rm /etc/systemd/system/blockxd.service
sudo systemctl daemon-reload
rm -f $(which blockxd)
rm -rf $HOME/.blockxd
rm -rf $HOME/blockx-node-public-compiled⚙️ Service Management
Reload service configuration
sudo systemctl daemon-reloadEnable service
sudo systemctl enable blockxDisable service
sudo systemctl disable blockxStart service
sudo systemctl start blockxStop service
sudo systemctl stop blockxRestart service
sudo systemctl restart blockxCheck service status
sudo systemctl status blockxCheck service logs
sudo journalctl -u blockx -f --no-hostname -o catLast updated