CLI Cheatsheet
Key management
Section titled “Key management”Add new key
structsd keys add walletRecover existing key
structsd keys add wallet --recoverList all keys
structsd keys listDelete key
structsd keys delete walletExport key to the file
structsd keys export walletImport key from the file
structsd keys import wallet wallet.backupWallet balance
structsd q bank balances $(structsd keys show wallet -a)Token management
Section titled “Token management”Withdraw rewards from all validators
structsd tx distribution withdraw-all-rewards --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yWithdraw rewards and commissions from your validator
structsd tx distribution withdraw-rewards $(structsd keys show wallet --bech val -a) --commission --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yDelegate tokens to yourself
structsd tx staking delegate $(structsd keys show wallet --bech val -a) 1000000ualpha --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yDelegate tokens to validator
structsd tx staking delegate <TO_VALOPER_ADDRESS> 1000000ualpha --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yRedelegate tokens to another validator
structsd tx staking redelegate $(structsd keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000ualpha --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yUnbond tokens from your validator
structsd tx staking unbond $(structsd keys show wallet --bech val -a) 1000000ualpha --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -ySend tokens to the wallet
structsd tx bank send wallet <TO_WALLET_ADDRESS> 1000000ualpha --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yValidator management
Section titled “Validator management”Validator info
structsd status 2>&1 | jq .validator_infoValidator details
structsd q staking validator $(structsd keys show wallet --bech val -a)Check if validator key is correct
[[ $(structsd q staking validator $(structsd keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(structsd 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"List all active validators
structsd q staking validators -oj --limit=1000 | 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
structsd q staking validators -oj --limit=1000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nlEdit existing validator
structsd tx staking edit-validator \ --new-moniker "YOUR_MONIKER_NAME" \ --identity "YOUR_KEYBASE_ID" \ --details "YOUR_DETAILS" \ --website "YOUR_WEBSITE_URL" \ --security-contact "YOUR_EMAIL_ADDRESS" \ --chain-id structstestnet-103 \ --commission-rate 0.05 \ --from wallet \ --gas-adjustment 1.4 \ --gas auto \ --gas-prices 0ualpha \ -yJail reason
structsd query slashing signing-info $(structsd tendermint show-validator)Unjail validator
structsd tx slashing unjail --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yGovernance
Section titled “Governance”Create a new offer
structsd tx gov submit-proposal \ --title "" \ --description "" \ --deposit 1000000ualpha \ --type Text --from wallet \ --gas-adjustment 1.4 \ --gas auto \ --gas-prices 0ualpha \ -yList all proposals
structsd query gov proposalsView proposal by ID
structsd query gov proposal 1Vote “YES”
structsd tx gov vote 1 yes --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yVote “NO”
structsd tx gov vote 1 no --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yVote “ABSTAIN”
structsd tx gov vote 1 abstain --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yVote “NOWITHVETO”
structsd tx gov vote 1 NoWithVeto --from wallet --chain-id structstestnet-103 --gas-adjustment 1.4 --gas auto --gas-prices 0ualpha -yMaintenance
Section titled “Maintenance”Get sync info
structsd status 2>&1 | jq .sync_infoGet node peer
echo $(structsd tendermint show-node-id)'@'$(wget -qO- eth0.me)':'$(cat $HOME/.structs/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')Get live peers
curl -sS http://localhost:14457/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'Enable Prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.structs/config/config.tomlSet minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0ualpha\"|" $HOME/.structs/config/app.tomlDisable indexer
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.structs/config/config.tomlEnable indexer
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.structs/config/config.tomlUpdate pruning
sed -i -e 's|^pruning *=.*|pruning = "custom"|' $HOME/.structs/config/app.tomlsed -i -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' $HOME/.structs/config/app.tomlsed -i -e 's|^pruning-interval *=.*|pruning-interval = "10"|' $HOME/.structs/config/app.tomlFilter peers and max peers
sed -i -e 's|^filter_peers *=.*|filter_peers = "true"|' $HOME/.structs/config/config.tomlsed -i -e 's|^max_num_inbound_peers *=.*|max_num_inbound_peers = "50"|' $HOME/.structs/config/config.tomlsed -i -e 's|^max_num_outbound_peers *=.*|max_num_outbound_peers = "20"|' $HOME/.structs/config/config.tomlUpdate ports
CUSTOM_PORT=144sed -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/.structs/config/config.tomlsed -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/.structs/config/app.tomlReset chain data
structsd tendermint unsafe-reset-all --keep-addr-book --home $HOME/.structsDelete node
sudo systemctl stop structsdsudo systemctl disable structsdsudo rm -rf /etc/systemd/system/structsd.servicesudo systemctl daemon-reloadsudo rm -f $(which structsd)sudo rm -rf $HOME/.structssudo rm -rf $HOME/structsdService Management
Section titled “Service Management”Status service
sudo systemctl status structsdStart service
sudo systemctl start structsdStop service
sudo systemctl stop structsdRestart service
sudo systemctl restart structsdLogs service
sudo journalctl -u structsd -f --no-hostname -o catReload service
sudo systemctl daemon-reloadEnable service
sudo systemctl enable structsdDisable service
sudo systemctl disable structsd