Cheat Sheet
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> --recoverList of all wallets
c4ed keys listDelete 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.backupCheck 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=perun-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 \
-yEdit 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 \
-yUnjail your validator
c4ed tx slashing unjail --from <YOUR_WALLET> --gas-prices 0.1uc4e --gas-adjustment 1.5 --gas auto -yCheck 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 | nlList 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 | nlInfo 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 -yGet 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 -yDelegate 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 -yDelegate tokens to validator
c4ed tx staking delegate <VALOPER_ADDRESS> 1000000uc4e --from <YOUR_WALLET> --gas-prices 0.1uc4e --gas-adjustment 1.5 --gas auto -yRedelegate 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 -yUnbound 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 -ySend 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 -yCheck 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 \
-yList of all proposals
c4ed query gov proposalsCheck 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 -yVote as, YES
c4ed tx gov vote 1 yes --from <YOUR_WALLET> --gas-prices 0.1uc4e --gas-adjustment 1.5 --gas auto -yVote as, NO
c4ed tx gov vote 1 no --from <YOUR_WALLET> --gas-prices 0.1uc4e --gas-adjustment 1.5 --gas auto -yVote 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 -yVote as, ABSTAIN
c4ed tx gov vote 1 abstain --from <YOUR_WALLET> --gas-prices 0.1uc4e --gas-adjustment 1.5 --gas auto -yUtils
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.tomlTurn on indexing
sed -i 's|^indexer *=.*|indexer = "kv"|' $HOME/.c4e-chain/config/config.tomlTurn off indexing
sed -i 's|^indexer *=.*|indexer = "null"|' $HOME/.c4e-chain/config/config.tomlSetup 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_TOMLCheck 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 .ValidatorInfoCheck synchronisation status (false - synced, true - not synced)
c4ed status 2>&1 | jq .SyncInfo.catching_upCheck the latest block
c4ed status 2>&1 | jq .SyncInfo.latest_block_heightReset network
c4ed tendermint unsafe-reset-all --home $HOME/.c4e-chain --keep-addr-bookDelete 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-chainCheck IP address of the server
wget -qO- eth0.meCheck network parameters
c4ed q staking params
c4ed q slashing paramsCheck 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 txhashSearch all input transactions by address
c4ed q txs --events transfer.recipient=<ADDRESS> 2>&1 | jq | grep txhashService management
Reload services
sudo systemctl daemon-reloadEnable service
sudo systemctl enable c4edDisable service
sudo systemctl disable c4edStart service
sudo systemctl start c4edStop service
sudo systemctl stop c4edRestart service
sudo systemctl restart c4edCheck service status
sudo systemctl status c4edCheck service logs
sudo journalctl -u c4ed -f -o catLast updated
