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