Ноды (гайды)
August 18, 2022

Crowd Control testnet

Знакомство

Crowd control представляет собой карточную игру. Проект построен на блокчене Cosmos и на данный момент проводит закрытый тестнет.

Суть проекта заключается в создании уникальной карточной игры на блокчейне, где каждый может внести собственный вклад в данный процесс. Здесь любой пользователь может создавать уникальные карты и участвовать в процессе балансировки игры путем голосований.

Web Discord Github Telegram

Системные требования

Минимальные требования - 2 CPU / 4 RAM / 100 SSD

Установка

Подготавливаем сервер:

# обновляем 'базу данных' и дистрибутив
sudo apt update && sudo apt upgrade -y

#cкачиваем необходимые зависимости
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y

Устанавливаем Go одной командой:

wget https://golang.org/dl/go1.18.1.linux-amd64.tar.gz; \
rm -rv /usr/local/go; \
tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz && \
rm -v go1.18.1.linux-amd64.tar.gz && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile && \
source ~/.bash_profile && \
# проверяем версию
go version

Устанавливаем бинарники:

curl https://get.ignite.com/DecentralCardGame/Cardchain@latest! | sudo bash
sudo apt-get install jq

# Проверяем версию
Cardchain version --long | head
# version: 0.81-5450b07d 
# commit: 5450b07df2b55448bac743d34ed0ba4537a6d401

version: latest-bf2b2b7b
commit: bf2b2b7b07a9fd32ae68f9b72f1d83f608735b5b

Инициализируем ноду:

Cardchain init <название> --chain-id Testnet3

upd. заменяем название вместе с <>, например:

Cardchain init cardex --chain-id Cardchain

Cкачиваем генезис:

wget -O $HOME/.Cardchain/config/genesis.json "https://raw.githubusercontent.com/DecentralCardGame/Testnet/main/genesis.json"

Сбрасываем данные (не обязательно если установка с 0)

Cardchain unsafe-reset-all --home $HOME/.Cardchain

Скачиваем адресник:

wget -O $HOME/.Cardchain/config/addrbook.json "https://raw.githubusercontent.com/obajay/nodes-Guides/main/Crowd%20Control/addrbook.json"

Настраиваем конфигурацию ноды:

Cardchain config chain-id Testnet3

SNAP_RPC="http://161.97.167.120:26657"; \
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height) \
&& BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)) \
&& TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash); \
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.Cardchain/config/config.toml; \
wget -qO $HOME/.Cardchain/config/addrbook.json https://github.com/AlexToTheMoon/AM-Solutions/raw/main/addrbooks/addrbook-crowd.json

По желанию настраиваем прунинг и индексер:

pruning="custom" && \
pruning_keep_recent="100" && \
pruning_keep_every="0" && \
pruning_interval="10" && \
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.Cardchain/config/app.toml && \
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.Cardchain/config/app.toml && \
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.Cardchain/config/app.toml && \
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.Cardchain/config/app.toml
indexer="null" && \
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.Cardchain/config/config.toml

Создаем сервисник:

sudo tee /etc/systemd/system/Cardchain.service > /dev/null <<EOF
[Unit]
Description=Cardchain
After=network-online.target

[Service]
User=$USER
ExecStart=$(which Cardchain) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

Запускаем ноду

sudo systemctl daemon-reload
sudo systemctl enable Cardchain
sudo systemctl restart Cardchain

Проверяем логи

sudo journalctl -u Cardchain -f -o 

Создаем кошелек и валидатора

Настраиваем переменные окружения

echo export MONIKER_CARD=введи_свой_никнейм >> $HOME/.bash_profile && \
echo export WALLET_ADDRESS_CARD=введи_название_кошелька >> $HOME/.bash_profile 

# Применяем 
source $HOME/.bash_profile

Создаем или восстанавливаем кошелек

# создать кошелек (СОХРАНИ МНЕМОНИКУ!)
Cardchain keys add $WALLET_ADDRESS_CARD

# восстановить кошелек по мнемонике
Cardchain keys add $WALLET_ADDRESS_CARD--recover

Проверяем статус синхронизации

Cardchain status 2>&1 | jq |grep catch

Вывод должен быть таким: "catching_up": false

Пополняем баланс

Выводим список кошельков:

Cardchain keys list

* Запрашиваем токены в ветке token-faucet Discord канала:

$request <адрес кошелька>

* Так же токены разово можно получить на сайте

* Кроме этого можно фармить токены подключив кошелек и выполняя задания на сайте проекта:

Подключаем кошелек в правом верхнем углу, вводим мнемонику кошелька привязанного к ноде.

После создания переходим во вкладку Account и проверяем баланс и возможные награды задания (Claim airdrops)


После синхронизации проверяем баланс:

Cardchain q bank balances $(Cardchain keys show $WALLET_ADDRESS_CARD -a)

После полной синхронизации и пополнения кошелька создаем валидатора

Cardchain tx staking create-validator \
--amount 1000000ubpf \
--from $WALLET_ADDRESS_CARD\
--commission-max-change-rate "0.1" \
--commission-max-rate "0.2" \
--commission-rate "0.05" \
--min-self-delegation "1" \
--pubkey  $(Cardchain tendermint show-validator) \
--moniker $MONIKER_CARD\
--fees 300ubpf \
--chain-id Testnet3 -y

Сохраняем priv_validator_key.json

Получить дополнительные токены:

Команда Dragon Dev и Noders готовы поддержать и делегировать дополнительные токены тем, кто напишет в чат свой адрес валидатора.

Подробнее

Обновление

systemctl stop Cardchain 
curl https://get.ignite.com/DecentralCardGame/[email protected]! | sudo bash 
Cardchain version --long | head # version: latest # commit: 64d870f21f258f1116570abc18470a8e558f0629 
systemctl restart Cardchain && journalctl -u Cardchain -f -o cat

Полезные команды

Состояние сети:

# логи
sudo journalctl -u Cardchain -f -o 

# статус синхронизации
Cardchain status 2>&1 | jq |grep catch

# статус
Cardchain status 2>&1 | jq

# Параметры сети
Cardchain q staking params Cardchain q slashing params

# проверка высоты блоков
Cardchain status 2>&1 | jq ."SyncInfo"."latest_block_height"

# количество пропущенных блоков
Cardchain q slashing signing-info $(Cardchain tendermint show-validator)

Кошельки:

# вывод списка кошельков
Cardchain keys list

# баланс кошелька
Cardchain q bank balances $(Cardchain keys show $WALLET_ADDRESS_CARD-a)

# удалить кошелек
Cardchain keys delete $WALLET_ADDRESS_CARD

# вывод ключа аккаунта
Cardchain keys show $WALLET_ADDRESS_CARD--bech acc

# вывод ключа консенсуса
Cardchain keys show $WALLET_ADDRESS_CARD--bech cons

Валидатор:

# вывод ключа валидатора
Cardchain keys show $WALLET_ADDRESS_CARD --bech val

# сохранить адрес валидатора в виде переменной окружения
echo export VALIDATOR_ADDR_CARD=введите_адрес_валидатора >> $HOME/.bash_profile
source $HOME/.bash_profile

Если не сохраняли адрес валидатора в виде переменной, то далее вместо $VALIDATOR_ADDR_CARD вводите свой адрес валидатора

# pubkey валидатора 
Cardchain tendermint show-validator

# проверить валидатора 
Cardchain query staking validator $VALIDATOR_ADDR_CARD
Cardchain query staking validators --limit 1000000 -o json | jq '.validators[] | select(.description.moniker=="<имя валидатора>")' | jq

Транзакции:

# собрать комиссионные + реварды 
Cardchain tx distribution withdraw-rewards $VALIDATOR_ADDR_CARD --from $WALLET_ADDRESS_CARD --fees 500ubpf --commission -y 

# заделегировать себе в стейк еще (так отправляется 1 монетa) 
Cardchain tx staking delegate $VALIDATOR_ADDR_CARD 1000000ubpf --from $WALLET_ADDRESS_CARD --fees 500ubpf -y 

# ределегирование на другого валидатора 
Cardchain tx staking redelegate <src-validator-addr> <dst-validator-addr> 1000000ubpf --from $WALLET_ADDRESS_CARD --fees 500ubpf -y 

# unbond  
Cardchain tx staking unbond $VALIDATOR_ADDR_CARD 1000000ubpf --from $WALLET_ADDRESS_CARD --fees 500ubpf -y 

# отправить монеты на другой адрес 
Cardchain tx bank send $WALLET_ADDRESS_CARD $VALIDATOR_ADDR_CARD 1000000ubpf --fees 500ubpf -y 

# выбраться из тюрьмы 
Cardchain tx slashing unjail --from $WALLET_ADDRESS_CARD --fees 500ubpf -y

Голосования:

# список предложений
Cardchain q gov proposals 

# посмотреть результат голосования 
Cardchain q gov proposals --voter <ADDRESS> 

# проголосовать за предложение  
Cardchain tx gov vote 1 yes --from $WALLET_ADDRESS_CARD --fees 555ubpf 

# внести депозит в предложение 
Cardchain tx gov deposit 1 1000000ubpf --from $WALLET_ADDRESS_CARD --fees 555ubpf 

# создать предложение 
Cardchain tx gov submit-proposal --title="Randomly reward" --description="Reward 10 testnet participants who completed more than 3 tasks" --type="Text" --deposit="11000000grain" --from=$WALLET_ADDRESS_CARD --fees 500grain

Пиры:

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

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

Удалить ноду:

# удалить системник
sudo systemctl stop Cardchain && \
sudo systemctl disable Cardchain && \
rm /etc/systemd/system/Cardchain.service && \
sudo systemctl daemon-reload 

# удалить файлы
cd $HOME && \
rm -rf .Cardchain && \
rm -rf Cardchain && \
rm -rf $(which Cardchain)

# удалить переменные окружения
unset MONIKER_CARD && \
unset WALLET_ADDRESS_CARD && \
unset VALIDATOR_ADDR_CARD && \

Подписывайтесь!

Наш канал в телеграм: https://t.me/cardex_nodes

Наш канал в дискорд: https://discord.gg/mtDbNnAkk9