Cosmos Ecosystem
October 24, 2022

Полезные команды CLI в Сosmos sdk

Значения $cli $address $to_address $amount $chain_id $denom $node_name $wallet_name $id_prop $valoper_address $tx_hash замените на свои !!!

Поиск Информации

# Посмотреть логи:
journalctl -u $cli -f -o cat

# Рестарт | стоп | статус ноды:
systemctl restart $cli
systemctl stop $cli
systemctl status $cli

# Проверить актуальную высоту блока:
$cli status 2>&1 | jq ."SyncInfo"."latest_block_height"

# Проверить синхронизирована ли нода, если результат false – значит нода синхронизирована
curl -s localhost:26657/status | jq .result.sync_info.catching_up

# Проверить показатели ноды:
$cli status | jq

# Проверить информацию по tx_hash (при отключении индексации tx_hash будут не найдены):
$cli query tx $tx_hash

# Параметры сети:
$cli q staking params
$cli q slashing params

# Список валидаторов в Active set:
$cli query staking validators --limit 2000 -o json | jq -r '.validators[] | select(.status=="BOND_STATUS_BONDED") | [.operator_address, .status, (.tokens|tonumber / pow(10; 6)), .description.moniker] | @csv' | column -t -s"," | sort -k3 -n -r

# Список валидаторов в Inactive set:
$cli query staking validators --limit 2000 -o json | jq -r '.validators[] | select(.status=="BOND_STATUS_UNBONDED") | [.operator_address, .status, (.tokens|tonumber / pow(10; 6)), .description.moniker] | @csv' | column -t -s"," | sort -k3 -n -r

Кошелёк

# Создание кошелька (ВСЕГДА СОХРАНЯЕМ СИД ФРАЗУ):
$cli keys add $wallet_name

# Восстановление кошелька используя сид фразу:
$cli keys add $wallet_name --recover

# Проверить баланс кошелька:
$cli q bank balances $address 

# Список кошельков:
$cli keys list

# Отправить монеты на другой адрес:
$cli tx bank send $address $to_address $amount$denom --chain-id $chain_id --fees $amount$denom -y

# Показать ключ аккаунта:
$cli keys show $wallet_name --bech acc

# Показать ключ валидатора:
$cli keys show $wallet_name --bech val

# Показать ключ консенсуса:
$cli keys show $wallet_name --bech cons

# Удалить кошелек:
$cli keys delete $wallet_name

Создание | редактирование валидатора

# Создать валидатора:
$cli tx staking create-validator \
--moniker="$node_name" \
--amount=1000000$denom \
--fees=300$denom \
--pubkey=$($cli tendermint show-validator) \
--chain-id=$chain_id \
--commission-max-change-rate=0.01 \
--commission-max-rate=0.20 \
--commission-rate=0.10 \
--details="" \
--identity="" \
--security-contact="" \
--website "" \
--min-self-delegation=1 \
--from=$wallet_name \
--yes 

# Редактировать валидатора:
$cli tx staking edit-validator \
--details="" \
--chain-id=$chain_id \
--from=$wallet_name
--yes

Валидатор

# Узнать свой valoper адрес:
$cli keys show $wallet_name --bech val -a

# Проверить pubkey валидатора:
$cli tendermint show-validator

# Проверить информацию о валидаторе:
$cli query staking validator $valoper_address

# Проверить количество блоков, пропущенных валидатором и с какого блока активен:
$cli q slashing signing-info $($cli tendermint show-validator)

# Узнать tx_hash транзакции создания валидатора:
$cli query txs --events='create_validator.validator=<<valoper_address>>' -o=json | jq .txs[0].txhash -r

# Заделегировать токены (для того, чтобы увеличить свой стейк делегируйте на свой $valoper_address):
$cli tx staking delegate $valoper_address $amount$denom --from $wallet_name --chain-id $chain_id --fees $amount$denom -y

# Выйти из тюрьмы:
$cli tx slashing unjail --chain-id $chain_id --from $wallet_name --fees $amount$denom -y

# Перевести реварды и комиссию с валидатора на основной баланс кошелька:
$cli tx distribution withdraw-rewards $valoper_address --from $wallet_name --chain-id $chain_id --commission --fees $amount$denom -y

# Перевести все награды от делегирования со всех валидаторов, на которых вы стейкали свои токены:
$cli tx distribution withdraw-all-rewards --chain-id $chain_id \
 --from $wallet_name --gas=auto --gas-adjustment=1.5 --fees=$amount$denom

# Unbond:
$cli tx staking unbond $($cli keys show $wallet_name --bech val -a) $amount$denom \
--from $wallet_name \
--chain-id=$chain_id \
--gas=auto --gas-adjustment=1.5 \
--fees=$amount$denom

Peer & Rpc

# Узнать свой peer@ip:port:
PORTR=$(grep -A 3 "\[p2p\]" ~/.$cli/config/config.toml | egrep -o ":[0-9]+") && \
echo $($cli tendermint show-node-id)@$(curl ifconfig.me)$PORTR

# Узнать свой порт RPC:
echo -e "\033[0;32m$(grep -A 3 "\[rpc\]" ~/.$cli/config/config.toml | egrep -o ":[0-9]+")\033[0m"

# Проверить количество peers:
PORT=26657
curl -s http://localhost:$PORT/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(":")[2])"' | wc -l

# Список моникеров подключенных peers:
curl -s http://localhost:$PORT/net_info | jq '.result.peers[].node_info.moniker'

# Проверка Vote Power онлайн:
curl -s localhost:26657/consensus_state | jq '.result.round_state.height_vote_set[0].prevotes_bit_array'

Proposls

# Cписок proposals:
$cli q gov proposals

# Голосовать за предложение:
$cli tx gov vote 1 yes --from $wallet_name --chain-id $chain_id --fees $amount$denom -y

# Создать предложение (простой пример):
$cli tx gov submit-proposal --title="Text" \
--type="Text" \
--description="Text" \
--from $wallet_name \
--chain-id=$chain_id \
--gas=auto --gas-adjustment 1.5 --fees=$amount$denom

# Внести депозит в предложение, для запуска голосования:
$cli tx gov deposit $id_prop $amount$denom \
--from=$wallet_name \
--chain-id=$chain_id \
--gas=auto --gas-adjustment=1.5 --fees=$amount$denom

Всем Удачи!

P.S.: Комментарии и дополнения приветствуются.