Page cover image

Cheat Sheet

Wallet operations

Create wallet

⚠️ store seed phrase, important during recovering

lavad keys add <YOUR_WALLET_NAME>

Recover wallet

⚠️ store seed phrase, important during recovering

lavad keys add <YOUR_WALLET_NAME> --recover

List of all wallets

lavad keys list

Delete wallet

lavad keys delete <YOUR_WALLET_NAME>

Export wallet

⚠️ save to wallet.backup

lavad keys export <YOUR_WALLET_NAME>

Import wallet

lavad keys import <WALLET_NAME> wallet.backup

Check wallet balance

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

Validator operations

Create validator

lavad tx staking create-validator \
--amount=1000000ulava \
--pubkey=$(lavad tendermint show-validator) \
--moniker="<Your moniker>" \
--identity=<Your identity> \
--details="<Your details>" \
--chain-id=lava-mainnet-1 \
--commission-rate=0.05 \
--commission-max-rate=0.20 \
--commission-max-change-rate=0.1 \
--min-self-delegation=1 \
--from=<YOUR_WALLET> \
--gas-prices=0.000000001ulava \
--gas-adjustment=1.5 \
--gas=auto \
-y

Edit validator

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

Unjail your validator

lavad tx slashing unjail --from <YOUR_WALLET> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Check blocks info processed by your validator

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

List of active validators

lavad 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

lavad 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

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

Transactions

Get your rewards from all validators

lavad tx distribution withdraw-all-rewards --from <YOUR_WALLET> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Get rewards and commissions from your validator

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

Delegate tokens to your validator

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

Delegate tokens to validator

lavad tx staking delegate <VALOPER_ADDRESS> 1000000ulava --from <YOUR_WALLET> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Redelegate tokens to another validator

lavad tx staking redelegate <SRC_VALOPER_ADDRESS> <TARGET_VALOPER_ADDRESS> 1000000ulava --from <WALLET> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Unbound tokens from validator

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

lavad tx staking unbond <VALOPER_ADDRESS> 1000000ulava --from <YOUR_WALLET> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Send tokens to another wallet

lavad tx bank send <YOUR_WALLET_ADDRESS> <TARGET_WALLET_ADDRESS> 1000000ulava --from <YOUR_WALLET_ADDRESS> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Check info about transaction by hash TX_HASH

lavad query tx <TX_HASH>

Governance

Submit text proposal

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

List of all proposals

lavad query gov proposals

Check proposal info by proposal id

lavad query gov proposal <proposal_id>

Deposit proposal by proposal id

lavad tx gov deposit 1 1000000ulava --from <YOUR_WALLET> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Vote as, YES

lavad tx gov vote 1 yes --from <YOUR_WALLET> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Vote as, NO

lavad tx gov vote 1 no --from <YOUR_WALLET> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Vote as, NO_WITH_VETO

lavad tx gov vote 1 no_with_veto --from <YOUR_WALLET> --gas-prices 0.000000001ulava --gas-adjustment 1.5 --gas auto -y

Vote as, ABSTAIN

lavad tx gov vote 1 abstain --from <YOUR_WALLET> --gas-prices 0.000000001ulava --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/.lava/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/.lava/config/app.toml && \
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.lava/config/client.toml

Turn on indexing

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

Turn off indexing

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

Setup custom prunning

APP_TOML="~/.lava/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 $(lavad tendermint show-node-id)@$(curl http://ifconfig.me/)$(grep -A 3 "\[p2p\]" ~/.lava/config/config.toml | egrep -o ":[0-9]+")

Check your RPC

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

Check information about validator

lavad status 2>&1 | jq .ValidatorInfo

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

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

Check the latest block

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

Reset network

lavad tendermint unsafe-reset-all --home $HOME/.lava --keep-addr-book

Delete node

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

Check IP address of the server

wget -qO- eth0.me

Check network parameters

lavad q staking params
lavad q slashing params

Check validator private key is correct

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

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

Search all input transactions by address

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

Service management

Reload services

sudo systemctl daemon-reload

Enable service

sudo systemctl enable lavad

Disable service

sudo systemctl disable lavad

Start service

sudo systemctl start lavad

Stop service

sudo systemctl stop lavad

Restart service

sudo systemctl restart lavad

Check service status

sudo systemctl status lavad

Check service logs

sudo journalctl -u lavad -f -o cat

Last updated