May 15, 2022

Гайд по установки ноды KYVE Network.

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

По факту, это одно задание: быть активным валидатором. Никаких дополнительных действий не требуется. Голосование и загрузка данных выполняются сами собой во время валидирования.

Валидатором можно стать, запустив ноду и застейкав на себя токены.

Имейте в виду, что для того, чтобы быть активным валидатором и получать очки за ноду, необходимо быть в ТОР-50 по стейку в своём пуле.

Если ваш стейк перестал входить в ТОР-50, ваши токены возвращаются на баланс и нода перестаёт голосовать и получать за это очки.


One more thing: нам нужно несколько десятых токена AR и arweave.json. Это файл, содержащий приватные ключи от кошелька Arweave.

Если до сих пор у вас нет arweave-кошелька, то переходим на сайт, где мы сгенерируем аккаунт и сразу запросим на него пару копеек.

Кран работает с перебоями, поэтому я просто купил пару копеек AR на бинансе (список бирж) и скинул их на кошелёк, но можно попробовать запросить AR с крана.

Нажимаем Continue:

И скачиваем ключи. Сохраните arweave.json в надёжное место, этот файл нам ещё понадобится:

Нажимаем Open tweet pop-up, чтобы запросить токены и отправляем твит:

Итого у вас должно быть:

  • Токены KYVE на кошельке Keplr и мнемоника от этого кошелька;
  • Токены AR на кошельке Arweave и файл с ключами от этого кошелька.

Требования по железу:

Официальные требования: 1 CPU x 4 GB RAM x 20 GB SSD - Ubuntu 20.04.
Субъективные наблюдения: 1 CPU x 2 GB RAM x 20 GB SSD - Ubuntu 20.04.

УСТАНОВКА

Содержание

# обновляем 'базу данных', обновляем дистрибутив
sudo apt-get update && \
sudo apt-get upgrade -y
# скачиваем 'wget' и 'uznip', если вдруг
sudo apt-get install wget unzip jq -y
# создаём каталог 'kyve'
mkdir $HOME/kyve; \
cd $HOME/kyve

Сейчас нужно выбрать пул, в котором вы хотите стать валидатором. Список пулов доступен в разделе Pools:

Пул может выходить в статус Paused. Такое происходит, когда в коде находятся ошибки и недоработки, это нормально для тестнета.

В случае, если ваш пул ушёл на паузу, вы можете перепрыгнуть в другой пул, либо ожидать, пока включат ваш конкретный пул.


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

Выбираем один пул и выполняем набор команд одним действием только под выбранный пул.

# moonbeam
POOL=0 && \
NAME="evm" && \
BIN="kyve-evm" && \
VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/latest | jq -r ".tag_name") && \
wget https://github.com/kyve-org/$NAME/releases/download/$VER/kyve-$NAME-linux.zip && \
unzip kyve-$NAME-linux.zip && \
rm -Rvf kyve-$NAME-linux.zip __MACOSX && \
chmod u+x * && \
mv kyve-$NAME-linux /usr/bin/$BIN && \
printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
# avalanche
POOL=1 && \
NAME="evm" && \
BIN="kyve-evm" && \
VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/latest | jq -r ".tag_name") && \
wget https://github.com/kyve-org/$NAME/releases/download/$VER/kyve-$NAME-linux.zip && \
unzip kyve-$NAME-linux.zip && \
rm -Rvf kyve-$NAME-linux.zip __MACOSX && \
chmod u+x * && \
mv kyve-$NAME-linux /usr/bin/$BIN && \
printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
# stacks /
POOL=2 && \
NAME="stacks" && \
BIN="kyve-stx" && \
VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/latest | jq -r ".tag_name") && \
wget https://github.com/kyve-org/$NAME/releases/download/$VER/$NAME-linux.zip && \
unzip $NAME-linux.zip && \
rm -Rvf $NAME-linux.zip __MACOSX && \
chmod u+x * && \
mv $NAME-linux /usr/bin/$BIN && \
printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
# bitcoin /
POOL=3 && \
NAME="bitcoin" && \
BIN="kyve-btc" && \
VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/latest | jq -r ".tag_name") && \
wget https://github.com/kyve-org/$NAME/releases/download/$VER/kyve-$NAME-linux.zip && \
unzip kyve-$NAME-linux.zip && \
rm -Rvf kyve-$NAME-linux.zip __MACOSX && \
chmod u+x * && \
mv $NAME-linux /usr/bin/$BIN && \
printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
# solana
POOL=4 && \
NAME="solana" && \
BIN="kyve-sol" && \
VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/latest | jq -r ".tag_name") && \
wget https://github.com/kyve-org/$NAME/releases/download/$VER/kyve-$NAME-linux.zip && \
unzip kyve-$NAME-linux.zip && \
rm -Rvf kyve-$NAME-linux.zip __MACOSX && \
chmod u+x * && \
mv kyve-$NAME-linux /usr/bin/$BIN && \
printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
# zilliqa
POOL=5 && \
NAME="zilliqa" && \
BIN="kyve-zil" && \
VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/latest | jq -r ".tag_name") && \
wget https://github.com/kyve-org/$NAME/releases/download/$VER/kyve-$NAME-linux.zip && \
unzip kyve-$NAME-linux.zip && \
rm -Rvf kyve-$NAME-linux.zip __MACOSX && \
chmod u+x * && \
mv kyve-$NAME-linux /usr/bin/$BIN && \
printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
# near
POOL=6 && \
NAME="near" && \
BIN="kyve-near" && \
VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/latest | jq -r ".tag_name") && \
wget https://github.com/kyve-org/$NAME/releases/download/$VER/kyve-$NAME-linux.zip && \
unzip kyve-$NAME-linux.zip && \
rm -Rvf kyve-$NAME-linux.zip __MACOSX && \
chmod u+x * && \
mv kyve-$NAME-linux /usr/bin/$BIN && \
printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
# celo
POOL=7 && \
NAME="celo" && \
BIN="kyve-celo" && \
VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/latest | jq -r ".tag_name") && \
wget https://github.com/kyve-org/$NAME/releases/download/$VER/kyve-$NAME-linux.zip && \
unzip kyve-$NAME-linux.zip && \
rm -Rvf kyve-$NAME-linux.zip __MACOSX && \
chmod u+x * && \
mv kyve-$NAME-linux /usr/bin/$BIN && \
printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
# evmos evm
POOL=8 && \
NAME="evm" && \
BIN="kyve-evm" && \
VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/latest | jq -r ".tag_name") && \
wget https://github.com/kyve-org/$NAME/releases/download/$VER/kyve-$NAME-linux.zip && \
unzip kyve-$NAME-linux.zip && \
rm -Rvf kyve-$NAME-linux.zip __MACOSX && \
chmod u+x * && \
mv kyve-$NAME-linux /usr/bin/$BIN && \
printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"

Так как я выбрал солану, мой вывод следующий:


Отлично. Теперь нам нужно загрузить arweave.json (мы генерировали его здесь) на сервер, желательно в каталог /root/.

Обязательно переименуйте файл arweave-key-8qi2faiF4.json в arweave.json.

Можно загрузить с помощью инструментов Mobaxterm, но я воспользуюсь SCP:

# выполняем команду на локальном пк
scp path/myfile [email protected]:/full/path/to/new/location/
# в моём случае команда выглядит так
scp /Users/cyberomanov/Downloads/arweave.json [email protected]:/root/

В этом пункте нам необходимо создать 2 переменные:

  • MNEMONIC: мнемоника от кошелька Keplr;
  • STAKE: количество токенов, которое хотите использовать в качестве селф-стейка.
# мой пример, подставляйте свои значения переменных
MNEMONIC="try to keep calm and do not war please"
STAKE=2650

В следующей команде ничего не трогаем, мы задали все переменные раннее. Просто выполняем одну большую команду.

# создаём файл сервиса для запуска ноды
sudo tee <<EOF >/dev/null /etc/systemd/system/kyved.service
[Unit]
Description=Kyve Node
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=$(which $BIN) \\
--poolId $POOL \\
--mnemonic "$MNEMONIC" \\
--initialStake $STAKE \\
--keyfile /root/arweave.json \\
--network korellia \\
--space 10000000000 \\
--verbose
Restart=on-failure
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF
# запускаем ноду
sudo systemctl daemon-reload && \
sudo systemctl enable kyved && \
sudo systemctl restart kyved
# проверяем логи
sudo journalctl -u kyved -f -o cat

Отлично, всё сработало.


Теперь, если вернуться на страницу пула, можно будет лицезреть свой стейк:

Мы можем докидывать в наш стейк монеты через сайт.
Для этого жмём Manage stake, вводим количество и подписываем транзакцию:

Вот и всё. Теперь главное не вылететь из сета активных валидаторов.

Кошелёк: kyve1xz0mx766y608z65d8030fhpmhn7qhfkw04sfav