Гайд по установки ноды KYVE Network.
3 последних задания из инжиниринга по типу стейкать токены, загружать бандлы и голосовать можно выполнять только будучи выбранным и активным валидатором.
По факту, это одно задание: быть активным валидатором. Никаких дополнительных действий не требуется. Голосование и загрузка данных выполняются сами собой во время валидирования.
Валидатором можно стать, запустив ноду и застейкав на себя токены.
Имейте в виду, что для того, чтобы быть активным валидатором и получать очки за ноду, необходимо быть в ТОР-50 по стейку в своём пуле.
Если ваш стейк перестал входить в ТОР-50, ваши токены возвращаются на баланс и нода перестаёт голосовать и получать за это очки.
One more thing: нам нужно несколько десятых токена AR и arweave.json. Это файл, содержащий приватные ключи от кошелька Arweave.
Если до сих пор у вас нет arweave-кошелька, то переходим на сайт, где мы сгенерируем аккаунт и сразу запросим на него пару копеек.
Кран работает с перебоями, поэтому я просто купил пару копеек AR на бинансе (список бирж) и скинул их на кошелёк, но можно попробовать запросить AR с крана.
И скачиваем ключи. Сохраните 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