Useful commands
Useful set of commands for node operators. From key management to chain governance.
Last updated
Useful set of commands for node operators. From key management to chain governance.
Last updated
Chain ID: odyssey | Latest Version Tag: null
story keys add wallet
story keys add wallet --recover
story keys list
story keys delete wallet
story keys export wallet
story keys import wallet wallet.backup
story q bank balances $(story keys show wallet -a)
story tx staking create-validator \
--amount=1000000stake \
--pubkey=$(story tendermint show-validator) \
--moniker="YOUR_MONIKER_NAME" \
--identity="YOUR_KEYBASE_ID" \
--details="YOUR_DETAILS" \
--website="YOUR_WEBSITE_URL"
--chain-id=odyssey \
--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 \
-y
story tx staking edit-validator \
--moniker="YOUR_MONIKER_NAME" \
--identity="YOUR_KEYBASE_ID" \
--details="YOUR_DETAILS" \
--website="YOUR_WEBSITE_URL"
--chain-id=odyssey \
--commission-rate=0.05 \
--from=wallet \
--gas-adjustment=1.4 \
--gas=auto \
-y
story tx slashing unjail --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
story query slashing signing-info $(story tendermint show-validator)
story 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
story 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
story q staking validator $(story keys show wallet --bech val
story tx distribution withdraw-all-rewards --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
story tx distribution withdraw-rewards $(story keys show wallet --bech val -a) --commission --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto --y
story tx staking delegate $(story keys show wallet --bech val -a) 1000000stake --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
story tx staking delegate <TO_VALOPER_ADDRESS> 1000000.story --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
story tx staking redelegate $(story keys show wallet --bech val <TO_VALOPER_ADDRESS> 1000000stake --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
story tx staking unbond $(story keys show wallet --bech val -a) 1000000stake --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
story tx bank send wallet <TO_WALLET_ADDRESS> 1000000stake --from wallet --chain-id odyssey
story query gov proposals
story query gov proposal 1
story tx gov vote 1 yes --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
story tx gov vote 1 no --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
story tx gov vote 1 abstain --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
story tx gov vote 1 nowithveto --from wallet --chain-id odyssey --gas-adjustment 1.4 --gas auto -y
CUSTOM_PORT=255
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}60\"%" $HOME/.story/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/.story/config/app.toml
Disable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.story/config/config.toml
Enable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.story/config/config.toml
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/.story/config/app.toml
story status 2>&1 | jq .ValidatorInfo
story status 2>&1 | jq .SyncInfo
echo $(story tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.story/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
[[ $(story q staking validator $(story keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(story 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"
curl -sS http://localhost:26657/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.story\"/" $HOME/.story/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.story/config/config.toml
story tendermint unsafe-reset-all --home $HOME/.story --keep-addr-book
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 story
sudo systemctl disable story
sudo rm /etc/systemd/system/story.service
sudo systemctl daemon-reload
rm -f $(which story)
rm -rf $HOME/.story
rm -rf $HOME/story
sudo systemctl daemon-reload
sudo systemctl enable story
sudo systemctl disable story
sudo systemctl start story
sudo systemctl stop story
sudo systemctl restart story
sudo systemctl status story
sudo journalctl -u story -f --no-hostname -o cat