πŸ’‘ Useful commands

βš™οΈ Service Commands

Check Logs

sudo journalctl -u selfchaind -f -o cat

Start service

sudo systemctl start selfchaind

Stop service

sudo systemctl stop selfchaind

Restart service

sudo systmctl restart selfchaind

Check status

sudo systemctl status selfchaind

Enable Service

sudo systemctl enable selfchaind

Reload service

sudo systemctl daemon-reload

Disable service

sudo systemctl disable selfchaind

Check synchronization status

selfchaind status | jq | grep "catching_up"

If "true" - not synchronized // "false" - synchronized

Check the latest block of your validator and the last block of the network

local_height=$(selfchaind status | jq -r .sync_info.latest_block_height); network_height=$(curl -s https://rpc.selfchain-testnet.unitynodes.com/status | jq -r .result.sync_info.latest_block_height); blocks_left=$((network_height - local_height)); echo "Your node height: $local_height"; echo "Network height: $network_height"; echo "Blocks left: $blocks_left"

Example:

View the ports used node

View the ports used node

ss -tulpn | grep selfchaind

βš™οΈ Key Command

Create new wallet

selfchaind keys add wallet

Recovery wallet

selfchaind keys add wallet --recover

List all wallet

selfchaind keys list

Delete wallet

selfchaind keys delete wallet

Export wallet

selfchaind keys export wallet

Import wallet

selfchaind keys import wallet wallet.backup 

Check wallet balance

selfchaind q bank balances $(selfchaind keys show wallet -a) 

βš™οΈ Validator Commands

Create validator

  selfchaind tx staking create-validator \
  --amount 800000uslf \
  --node https://rpc.selfchain.io:26657/ \
  --pubkey $(selfchaind tendermint show-validator) \
  --moniker "" \ #Validator name, displayed in explorers.
  --identity "" \ #Use your KeyBase ID. If you don't have one, leave it empty.
  --website "" \ #Any details about your validator.
  --details "" \ #Your website/github etc 
  --chain-id "self-1" \
  --commission-rate "0.05" \
  --commission-max-rate "0.20" \
  --commission-max-change-rate "0.01" \
  --min-self-delegation "1" \
  --broadcast-mode sync \
  --gas "auto" \
  --gas-adjustment "1.2" \
  --gas-prices "0.5uslf" \
  --from wallet \
  -y

You can leave the text after # unchanged - it's a commented hint that won't affect validator creation.

β—½ Replace the following values with your own: WALLET - usually it's 'wallet', or your wallet's name. MONIKER - any convenient name for your validator, displayed in the explorer. IDENTITY - validator's avatar, displayed in the explorer. Create a KeyBase ID following the instructions or leave it empty, and it will default to a standard one. DETAILS - details about your validator, also displayed in the explorer.

Replace all necessary values indicated above with the $ sign to successfully create your validator. β—½ Example:

selfchaind tx staking create-validator \
  --amount "1000000uself" \
  --pubkey $(selfchaind tendermint show-validator) \
  --moniker "Oliver" \ 
  --identity "" \ 
  --details "Reliable validator for your network." \ 
  --website "" \  
  --chain-id self-1 \
  --commission-rate "0.05" \
  --commission-max-rate "0.2" \
  --commission-max-change-rate "0.01" \
  --min-self-delegation "1" \
  --broadcast-mode sync \
  --gas="87578" \
  --gas-adjustment="1.2" \
  --gas-prices="0.5uslf" \
  --from=wallet \
  -y

Update validator information

selfchaind tx staking edit-validator \
--new-moniker "NODE_MONIKER" \
--identity "" \
--details "DETAILS" \
--website "YOUR WEBSITE" \
--chain-id self-1 \
--commission-rate "0.05" \
--gas="87578" \
--gas-adjustment="1.2" \
--gas-prices="0.5uslf" \
--from=wallet \
-y

Validator details

selfchaind q staking validator $(selfchaind keys show wallet --bech val -a)

Jailing info

selfchaind q staking validator $(selfchaind keys show wallet --bech val -a) | grep -E "jailed"

If "true" - your validator is jailed // "false" - your validator is not jailed

Jail reason

selfchaind q slashing signing-info $(selfchaind tendermint show-validator)

Unjail command

selfchaind tx slashing unjail \
  --node https://rpc.selfchain.io:26657/ \
  --gas="auto" \
  --chain-id="self-1" \
  --gas-adjustment="1.5" \
  --gas-prices="0.5uslf" \
  --broadcast-mode sync \
  --from wallet \
  -y

Information about delegation at your validator

selfchaind q staking validator $(selfchaind keys show wallet --bech val -a) | grep -E "tokens"

Active Validators list

selfchaind q staking validators -oj --limit=2000 | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " 	 " + .description.moniker' | sort -gr | nl

Inactive Validator list

selfchaind q staking validators -oj --limit=2000 | 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 

Signing Info

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

βš™οΈ Tokens Commands

Delegate to yourself

selfchaind tx staking delegate $(selfchaind keys show wallet --bech val -a) 1000000uself --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Delegate to another validator

selfchaind tx staking delegate <TO_VALOPER_ADDRESS> 1000000uself --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Redelegate your stake to other validator

selfchaind tx staking redelegate $(selfchaind keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000uself --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Unbond stake

selfchaind tx staking unbond $(selfchaind keys show wallet --bech val -a) 1000000uself --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Send tokens

selfchaind tx bank send wallet <TO_WALLET_ADDRESS> 1000000uself --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Check wallet balance

selfchaind q bank balances $(selfchaind keys show wallet -a)

Transaction details

selfchaind query tx HASH_TX

Withdraw all rewards

selfchaind tx distribution withdraw-all-rewards --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Withdraw rewards and commission from your validator

selfchaind tx distribution withdraw-rewards $(selfchaind keys show wallet --bech val -a) --commission --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

βš™οΈ Governance

List All Proposals

selfchaind query gov proposals

View proposal by ID

selfchaind query gov proposal ID

Vote "YES"

selfchaind tx gov vote PROPOSAL_ID yes --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Vote "NO"

selfchaind tx gov vote PROPOSAL_ID no --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Vote "NO_WITH_VETO"

selfchaind tx gov vote PROPOSAL_ID no_with_veto --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Vote "ABSTAIN"

selfchaind tx gov vote PROPOSAL_ID abstain --from wallet --chain-id self-1 --gas="87578" --gas-adjustment="1.2" --gas-prices="0.5uslf" -y

Create new text proposal

selfchaind tx gov submit-proposal \
--title="Title" \ #Change Title
--description="Description" \
--deposit "1000000uself" \
--type="Text" \   #Change text proposal
--from=wallet \   #Change name wallet
--from wallet \
--chain-id self-1 \
--gas="87578" \
--gas-adjustment="1.2" \
--gas-prices="0.5uslf" \
-y

βš™οΈ Utility

Set Custom Port

# Change CUSTOM_PORT to any other value, or leave it as is.
CUSTOM_PORT=34
sed -i.bak -e "s%:26658%:${CUSTOM_PORT}658%; s%:26657%:${CUSTOM_PORT}657%; s%:6060%:${CUSTOM_PORT}060%; s%:26656%:${CUSTOM_PORT}656%; s%:26660%:${CUSTOM_PORT}660%" $HOME/.selfchain/config/config.toml && sed -i.bak -e "s%:9090%:${CUSTOM_PORT}090%; s%:9091%:${CUSTOM_PORT}091%; s%:1317%:${CUSTOM_PORT}317%; s%:8545%:${CUSTOM_PORT}545%; s%:8546%:${CUSTOM_PORT}546%; s%:6065%:${CUSTOM_PORT}065%" $HOME/.selfchain/config/app.toml && sed -i.bak -e "s%:26657%:${CUSTOM_PORT}657%" $HOME/.selfchain/config/client.toml
sudo systemctl restart selfchaind
journalctl -u selfchaind -f -o cat

Set Indexer

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

Update Pruning

sed -i.bak -e 's|^pruning *=.*|pruning = "custom"|; s|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|; s|^pruning-keep-every *=.*|pruning-keep-every = "0"|; s|^pruning-interval *=.*|pruning-interval = "17"|' $HOME/.selfchain/config/app.toml

Reset node

selfchaind tendermint unsafe-reset-all --home $HOME/.selfchain --keep-addr-book

Get denom info

selfchaind q bank denom-metadata -oj | jq

Get Node Peer

echo $(selfchaind tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.selfchain/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//') 

Update server name

 sudo hostnamectl set-hostname server_name

How much SSD use node (currently)

du -sh $HOME/.selfchain/

How much RAM use node (currently)

ps -p $(pgrep selfchaind) -o rss= | awk '{printf("The process uses memory:: %.2f MB\n", $1/1024)}'

How much CPU use node (currently)

ps -C selfchaind -o %cpu --no-headers | awk '{print $1"% CPU"}'

Delete node

sudo systemctl stop selfchaind
sudo systemctl disable selfchaind
sudo rm -rf /etc/systemd/system/selfchaind.service
sudo rm $(which selfchaind)
sudo rm -rf $HOME/.selfchain

Last updated