May 28, 2022

Chain Node Kyve(RU)

Для функционирования сети проекта Kyve, это полностью автономный блокчейн Proof of Stake, созданный с помощью Starport. Этот блокчейн управляется независимыми нодами, которые называются Chain-Nodes, поскольку они работают на уровне цепи. Родной валютой блокчейна KYVE является $KYVE, он обеспечивает безопасность цепи и позволяет нодам цепочки делать ставки, а другим пользователям делегировать в них свои токены.

Для начала нам потребуется сервер на Ubuntu 20.04

Обновляем все пакеты

sudo apt update && sudo apt upgrade -y

Задаем переменные и сохраняем их в баш

NODENAME="Имя вашей ноды"
echo "export NODENAME=$NODENAME" >> $HOME/.bash_profile 
echo "export WALLET=wallet" >> $HOME/.bash_profile 
echo "export CHAIN_ID=korellia" >> $HOME/.bash_profile 
source $HOME/.bash_profile

Качаем бинарный файл с оф. гитхаба проекта

wget https://github.com/KYVENetwork/chain/releases/download/v0.0.1/chain_linux_amd64.tar.gz
tar -xvzf chain_linux_amd64.tar.gz
chmod +x chaind && mv ./chaind /usr/local/bin/chaind
Начинаем инициацию
chaind init $NODENAME --chain-id $CHAIN_ID

Скачиваем и переносим файл генезиса

wget -qO $HOME/.kyve/config/genesis.json https://github.com/KYVENetwork/chain/releases/download/v0.0.1/genesis.json

Скачиваем и переносим файл addrbook

wget -qO $HOME/.kyve/config/addrbook.json https://api.testnet.run/addrbook-korellia.json

Далее запустим ноду

chaind start [email protected]:26656

В процессе вы можете получить ошибку, на подобие "CONSENSUS FAILURE"

Когда это происходит, необходимо запустить следующий выпущенный бинарный файл. Для того, чтобы это не приходилось делать постоянно вручную, мы установим Cosmovisor

wget https://github.com/KYVENetwork/chain/releases/download/v0.0.1/cosmovisor_linux_amd64
mv cosmovisor_linux_amd64 cosmovisor

Далее делаем файл исполняем и переносим его в /usr/bin

chmod +x cosmovisor && mv ./cosmovisor /usr/local/bin/cosmovisor

Создаем директорию

mkdir -p $HOME/.kyve/cosmovisor/genesis/bin/
echo "{}" > $HOME/.kyve/cosmovisor/genesis/upgrade-info.json

Далее копируем бинарник в директорию Cosmovisor

cp /usr/local/bin/chaind $HOME/.kyve/cosmovisor/genesis/bin/chaind

Настраиваем прунинг

pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
Записываем
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.kyve/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.kyve/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.kyve/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.kyve/config/app.toml

Отключаем индексацию

nano $HOME/.kyve/config/config.toml

В разделе indexer выставляем значение "null"

Сохраняем ctr+O выход ctr+X

Делаем сброс цепи

chaind unsafe-reset-all

Создаем переменные

export DAEMON_HOME="$HOME/.kyve" 
export DAEMON_NAME="chaind"
export DAEMON_ALLOW_DOWNLOAD_BINARIES="true"

Далее создаем сервисный файл

tee <<EOF > /dev/null /etc/systemd/system/kyved.service
[Unit]
Description=KYVE Chain-Node daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) start
Restart=on-failure
RestartSec=3
LimitNOFILE=infinity
Environment="DAEMON_HOME=$HOME/.kyve"
Environment="DAEMON_NAME=chaind"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true"
[Install]
WantedBy=multi-user.target
EOF

Включаем и запускаем сервисный файл

sudo systemctl enable kyved && sudo systemctl start kyved

Смотрим логи

journalctl -u kyved -f -o cat

Синхронизация длиться долго, поэтому следим за высотой здесь
После завершения синхронизации, создаем или восстанавливаем кошелек

chaind keys add wallet

Если у вас уже есть кошелек, можете восстановить его по мнемонической фразе

chaind keys add wallet --recover

Далее становимся валидатором, добавим кол-во токенов

chaind tx staking create-validator --yes \
 --amount "кол-во монет"tkyve \
 --moniker $NODENAME \
 --commission-rate "0.10" \
 --commission-max-rate "0.20" \
 --commission-max-change-rate "0.01" \
 --min-self-delegation "1" \
 --pubkey "$(chaind tendermint show-validator)" \
 --from $WALLET \
 --chain-id $CHAIN_ID

ПОЛЕЗНЫЕ КОМАНДЫ

Выясняем наш Valoper адрес

VALOPER=$(chaind keys show wallet --bech val -a)

Записываем переменную в баш

echo 'export VALOPER='${VALOPER} >> $HOME/.bash_profile
source $HOME/.bash_profile

Для добавления стейка на вашу ноду

chaind tx staking delegate $VALOPER "кол-во монет"tkyve --from $WALLET --chain-id $CHAIN_ID

Для того, чтобы выйти из тюрьмы

chaind tx slashing unjail --chain-id $CHAIN_ID --from $WALLET

Снять реварды за делегацию

chaind tx distribution withdraw-rewards $VALOPER --from $WALLET --fees 5555tkyve --commission -y

Проверить баланс

chaind query bank balances "адрес"

Поздравляю, вы стали валидатором chain ноды!

Мой чат для обсуждения: https://t.me/russianbears1

Авторский канал: https://t.me/cryptorussianbears