Wallet operations
Create wallet
⚠️ store seed phrase, important during recovering
mantrachaind keys add <YOUR_WALLET_NAME>
Recover wallet
⚠️ store seed phrase, important during recovering
mantrachaind keys add <YOUR_WALLET_NAME> --recover
List of all wallets
mantrachaind keys list
Delete wallet
mantrachaind keys delete <YOUR_WALLET_NAME>
Export wallet
⚠️ save to wallet.backup
mantrachaind keys export <YOUR_WALLET_NAME>
Import wallet
mantrachaind keys import <WALLET_NAME> wallet.backup
Check wallet balance
mantrachaind q bank balances $(mantrachaind keys show <YOUR_WALLET_NAME> -a)
Validator operations
Create validator
mantrachaind tx staking create-validator \
--amount=1000000uom \
--pubkey=$(mantrachaind tendermint show-validator) \
--moniker="<Your moniker>" \
--identity=<Your identity> \
--details="<Your details>" \
--chain-id=mantra-hongbai-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.0002uom \
--gas-adjustment=1.7 \
--gas=auto \
-y
Edit validator
mantrachaind tx staking edit-validator \
--new-moniker="<Your moniker>" \
--identity=<your identity> \
--details="<Your details>" \
--commission-rate=0.1 \
--from=<YOUR_WALLET> \
--gas-prices=0.0002uom \
--gas-adjustment=1.7 \
--gas=auto \
-y
Unjail your validator
mantrachaind tx slashing unjail --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Check blocks info processed by your validator
mantrachaind query slashing signing-info $(mantrachaind tendermint show-validator)
List of active validators
mantrachaind 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
mantrachaind 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
mantrachaind q staking validator $(mantrachaind keys show <YOUR_WALLET_NAME> --bech val -a)
Transactions
Get your rewards from all validators
mantrachaind tx distribution withdraw-all-rewards --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Get rewards and commissions from your validator
mantrachaind tx distribution withdraw-rewards $(mantrachaind keys show <YOUR_WALLET_NAME> --bech val -a) --commission --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Delegate tokens to your validator
mantrachaind tx staking delegate $(mantrachaind keys show <YOUR_WALLET_NAME> --bech val -a) 1000000uom --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Delegate tokens to validator
mantrachaind tx staking delegate <VALOPER_ADDRESS> 1000000uom --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Redelegate tokens to another validator
mantrachaind tx staking redelegate <SRC_VALOPER_ADDRESS> <TARGET_VALOPER_ADDRESS> 1000000uom --from <WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Unbound tokens from validator
⚠️ it’s can take a while, ~21 days, depends on network’s parameters
mantrachaind tx staking unbond <VALOPER_ADDRESS> 1000000uom --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Send tokens to another wallet
mantrachaind tx bank send <YOUR_WALLET_ADDRESS> <TARGET_WALLET_ADDRESS> 1000000uom --from <YOUR_WALLET_ADDRESS> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Check info about transaction by hash TX_HASH
mantrachaind query tx <TX_HASH>
Governance
Submit text proposal
mantrachaind tx gov submit-proposal \
--title="<Your Title>" \
--description="<Your Description>" \
--deposit=1000000uom \
--type="Text" \
--from=<WALLET_ADDRESS> \
--gas-prices=0.0002uom \
--gas-adjustment=1.7 \
--gas=auto \
-y
List of all proposals
mantrachaind query gov proposals
Check proposal info by proposal id
mantrachaind query gov proposal <proposal_id>
Deposit proposal by proposal id
mantrachaind tx gov deposit 1 1000000uom --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Vote as, YES
mantrachaind tx gov vote 1 yes --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Vote as, NO
mantrachaind tx gov vote 1 no --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Vote as, NO_WITH_VETO
mantrachaind tx gov vote 1 no_with_veto --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --gas auto -y
Vote as, ABSTAIN
mantrachaind tx gov vote 1 abstain --from <YOUR_WALLET> --gas-prices 0.0002uom --gas-adjustment 1.7 --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/.mantrachain/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/.mantrachain/config/app.toml && \
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.mantrachain/config/client.toml
Turn on indexing
sed -i 's|^indexer *=.*|indexer = "kv"|' $HOME/.mantrachain/config/config.toml
Turn off indexing
sed -i 's|^indexer *=.*|indexer = "null"|' $HOME/.mantrachain/config/config.toml
Setup custom prunning
APP_TOML="~/.mantrachain/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 $(mantrachaind tendermint show-node-id)@$(curl http://ifconfig.me/)$(grep -A 3 "\[p2p\]" ~/.mantrachain/config/config.toml | egrep -o ":[0-9]+")
Check your RPC
echo -e "\033[0;32m$(grep -A 3 "\[rpc\]" ~/.mantrachain/config/config.toml | egrep -o ":[0-9]+")\033[0m"
Check information about validator
mantrachaind status 2>&1 | jq .ValidatorInfo
Check synchronisation status (false - synced, true - not synced)
mantrachaind status 2>&1 | jq .SyncInfo.catching_up
Check the latest block
mantrachaind status 2>&1 | jq .SyncInfo.latest_block_height
Reset network
mantrachaind tendermint unsafe-reset-all --home $HOME/.mantrachain --keep-addr-book
Delete node
sudo systemctl stop mantrachaind && \
sudo systemctl disable mantrachaind && \
sudo rm /etc/systemd/system/mantrachaind.service && \
sudo systemctl daemon-reload && \
rm -rf $HOME/.mantrachain && \
rm -rf $HOME/mantra
Check IP address of the server
Check network parameters
mantrachaind q staking params
mantrachaind q slashing params
Check validator private key is correct
[[ $(mantrachaind q staking validator $(mantrachaind keys show <YOUR_WALLET> --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(mantrachaind 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
mantrachaind q txs --events transfer.sender=<ADDRESS> 2>&1 | jq | grep txhash
Search all input transactions by address
mantrachaind q txs --events transfer.recipient=<ADDRESS> 2>&1 | jq | grep txhash
Service management
Reload services
sudo systemctl daemon-reload
Enable service
sudo systemctl enable mantrachaind
Disable service
sudo systemctl disable mantrachaind
Start service
sudo systemctl start mantrachaind
Stop service
sudo systemctl stop mantrachaind
Restart service
sudo systemctl restart mantrachaind
Check service status
sudo systemctl status mantrachaind
Check service logs
sudo journalctl -u mantrachaind -f -o cat