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