Page cover image

Cheat Sheet

Wallet operations

Create wallet

⚠️ store seed phrase, important during recovering

ojod keys add <YOUR_WALLET_NAME>

Recover wallet

⚠️ store seed phrase, important during recovering

ojod keys add <YOUR_WALLET_NAME> --recover

List of all wallets

ojod keys list

Delete wallet

ojod keys delete <YOUR_WALLET_NAME>

Export wallet

⚠️ save to wallet.backup

ojod keys export <YOUR_WALLET_NAME>

Import wallet

ojod keys import <WALLET_NAME> wallet.backup

Check wallet balance

ojod q bank balances $(ojod keys show <YOUR_WALLET_NAME> -a)

Validator operations

Create validator

ojod tx staking create-validator \
--amount=1000000uojo \
--pubkey=$(ojod tendermint show-validator) \
--moniker="<Your moniker>" \
--identity=<Your identity> \
--details="<Your details>" \
--chain-id=ojo-devnet \
--commission-rate=0.10 \
--commission-max-rate=0.20 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1 \
--from=<YOUR_WALLET> \
--gas-prices=0.1uojo \
--gas-adjustment=1.5 \
--gas=auto \
-y

Edit validator

ojod tx staking edit-validator \
--new-moniker="<Your moniker>" \
--identity=<your identity> \
--details="<Your details>" \
--commission-rate=0.1 \
--from=<YOUR_WALLET> \
--gas-prices=0.1uojo \
--gas-adjustment=1.5 \
--gas=auto \
-y

Unjail your validator

ojod tx slashing unjail --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Check blocks info processed by your validator

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

List of active validators

ojod 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 of inactive validators

ojod q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED") or .status=="BOND_STATUS_UNBONDING")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl

Info about your validator

ojod q staking validator $(ojod keys show <YOUR_WALLET_NAME> --bech val -a)

Transactions

Get your rewards from all validators

ojod tx distribution withdraw-all-rewards --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Get rewards and commissions from your validator

ojod tx distribution withdraw-rewards $(ojod keys show <YOUR_WALLET_NAME> --bech val -a) --commission --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Delegate tokens to your validator

ojod tx staking delegate $(ojod keys show <YOUR_WALLET_NAME> --bech val -a) 1000000uojo --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Delegate tokens to validator

ojod tx staking delegate <VALOPER_ADDRESS> 1000000uojo --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Redelegate tokens to another validator

ojod tx staking redelegate <SRC_VALOPER_ADDRESS> <TARGET_VALOPER_ADDRESS> 1000000uojo --from <WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Unbound tokens from validator

⚠️ it’s can take a while, ~21 days, depends on network’s parameters

ojod tx staking unbond <VALOPER_ADDRESS> 1000000uojo --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Send tokens to another wallet

ojod tx bank send <YOUR_WALLET_ADDRESS> <TARGET_WALLET_ADDRESS> 1000000uojo --from <YOUR_WALLET_ADDRESS> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Check info about transaction by hash TX_HASH

ojod query tx <TX_HASH>

Governance

Submit text proposal

ojod tx gov submit-proposal \
--title="<Your Title>" \
--description="<Your Description>" \
--deposit=1000000uojo \
--type="Text" \
--from=<WALLET_ADDRESS> \
--gas-prices=0.1uojo \
--gas-adjustment=1.5 \
--gas=auto \
-y

List of all proposals

ojod query gov proposals

Check proposal info by proposal id

ojod query gov proposal <proposal_id>

Deposit proposal by proposal id

ojod tx gov deposit 1 1000000uojo --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Vote as, YES

ojod tx gov vote 1 yes --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Vote as, NO

ojod tx gov vote 1 no --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Vote as, NO_WITH_VETO

ojod tx gov vote 1 no_with_veto --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Vote as, ABSTAIN

ojod tx gov vote 1 abstain --from <YOUR_WALLET> --gas-prices 0.1uojo --gas-adjustment 1.5 --gas auto -y

Utils

Change ports to custom

sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:36658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:36657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:7060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:36656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":36660\"%" $HOME/.ojo/config/config.toml && \
sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:10090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:10091\"%; s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:2317\"%" $HOME/.ojo/config/app.toml && \
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.ojo/config/client.toml

Turn on indexing

sed -i 's|^indexer *=.*|indexer = "kv"|' $HOME/.ojo/config/config.toml

Turn off indexing

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

Setup custom prunning

APP_TOML="~/.ojo/config/app.toml"
sed -i 's|^pruning *=.*|pruning = "custom"|' $APP_TOML
sed -i 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' $APP_TOML
sed -i 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' $APP_TOML
sed -i 's|^pruning-interval *=.*|pruning-interval = "10"|' $APP_TOML

Check your peer

echo $(ojod tendermint show-node-id)@$(curl http://ifconfig.me/)$(grep -A 3 "\[p2p\]" ~/.ojo/config/config.toml | egrep -o ":[0-9]+")

Check your RPC

echo -e "\033[0;32m$(grep -A 3 "\[rpc\]" ~/.ojo/config/config.toml | egrep -o ":[0-9]+")\033[0m"

Check information about validator

ojod status 2>&1 | jq .ValidatorInfo

Check synchronisation status (false - synced, true - not synced)

ojod status 2>&1 | jq .SyncInfo.catching_up

Check the latest block

ojod status 2>&1 | jq .SyncInfo.latest_block_height

Reset network

ojod tendermint unsafe-reset-all --home $HOME/.ojo --keep-addr-book

Delete node

sudo systemctl stop ojod && \
sudo systemctl disable ojod && \
sudo rm /etc/systemd/system/ojod.service && \
sudo systemctl daemon-reload && \
rm -rf $HOME/.ojo && \
rm -rf $HOME/ojo

Check IP address of the server

wget -qO- eth0.me

Check network parameters

ojod q staking params
ojod q slashing params

Check validator private key is correct

[[ $(ojod q staking validator $(ojod keys show <YOUR_WALLET> --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(ojod 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"

Search all output transactions by address

ojod q txs --events transfer.sender=<ADDRESS> 2>&1 | jq | grep txhash

Search all input transactions by address

ojod q txs --events transfer.recipient=<ADDRESS> 2>&1 | jq | grep txhash

Service management

Reload services

sudo systemctl daemon-reload

Enable service

sudo systemctl enable ojod

Disable service

sudo systemctl disable ojod

Start service

sudo systemctl start ojod

Stop service

sudo systemctl stop ojod

Restart service

sudo systemctl restart ojod

Check service status

sudo systemctl status ojod

Check service logs

sudo journalctl -u ojod -f -o cat

Last updated