Установка ноды KYVE
Для начала вам понадобится сервер, рекомендую взять на https://console.hetzner.cloud
Подойдет даже самый простой, нода не требовательна.
После этого подключаемся к серверу через Putty на Windows или через терминал на маке.
# обновляем 'базу данных', обновляем дистрибутив 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
Сейчас нужно выбрать пул, в котором вы хотите стать валидатором. Чтобы стать валидатором, нужно соответствовать текущим минимальным требованиям пула и застейкать определенное количество KYVE, эту информацию можно увидеть на странице каждого пула.
Список пулов доступен в разделе Pools:
Следующие блоки кода предназначены для загрузки и установки конкретного пула. Выбираете пул, где меньше всего минимальный стейк и скачиваете бинарник под него.
Выбираем один пул и выполняем набор команд одним действием только под выбранный пул.
# moonbeam POOL=0 && \ NAME="moonbeam" && \ BIN="kyve-evm" && \ VER=$(wget -qO- https://api.github.com/repos/KYVENetwork/evm/releases/latest | jq -r ".tag_name") && \ wget https://github.com/KYVENetwork/evm/releases/download/$VER/evm-linux.zip && \ unzip evm-linux.zip && \ rm -Rvf evm-linux.zip && \ chmod u+x * && \ mv evm-linux /usr/bin/kyve-evm && \ printf "\n$NAME > $BIN version: $($BIN --version), pool id: $POOL.\n\n"
# avalanche POOL=1 && \ NAME="avalanche" && \ BIN="kyve-evm" && \ VER=$(wget -qO- https://api.github.com/repos/KYVENetwork/evm/releases/latest | jq -r ".tag_name") && \ wget https://github.com/KYVENetwork/evm/releases/download/$VER/evm-linux.zip && \ unzip evm-linux.zip && \ rm -Rvf evm-linux.zip && \ chmod u+x * && \ mv evm-linux /usr/bin/kyve-evm && \ printf "\n$NAME > $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$NAME > $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$NAME > $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$NAME > $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$NAME > $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$NAME > $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$NAME > $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$NAME > $BIN version: $($BIN --version), pool id: $POOL.\n\n"
# cosmos POOL=9 && \ NAME="cosmos" && \ BIN="kyve-cosmos" && \ 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$NAME > $BIN version: $($BIN --version), pool id: $POOL.\n\n"
# injective POOL=10 && \ NAME="injective" && \ BIN="kyve-cosmos" && \ 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$NAME > $BIN version: $($BIN --version), pool id: $POOL.\n\n"
# evmos cosmos POOL=11 && \ NAME="cosmos" && \ BIN="kyve-cosmos" && \ 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"
# axelar POOL=12 && \ NAME="cosmos" && \ BIN="kyve-cosmos" && \ 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"
# aurora POOL=13 && \ 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"
# cronos POOL=14 && \ NAME="cosmos" && \ BIN="kyve-cosmos" && \ 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"
# terra POOL=15 && \ NAME="cosmos" && \ BIN="kyve-cosmos" && \ 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"
# umee POOL=16 && \ NAME="cosmos" && \ BIN="kyve-cosmos" && \ 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"
# umee POOL=16 && \ NAME="cosmos" && \ BIN="kyve-cosmos" && \ VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/download/v0.1.0/kyve-linux.zip?checksum=be96d9befd3a1084af6d9de2b49d81834edbf5888fb7dbdcbcaafbe22c1975a5 | jq -r ".tag_name") && \ wget https://github.com/kyve-org/cosmos/releases/download/v0.1.0/kyve-linux.zip?checksum=be96d9befd3a1084af6d9de2b49d81834edbf5888fb7dbdcbcaafbe22c1975a5 && \ unzip kyve-linux.zip?checksum=be96d9befd3a1084af6d9de2b49d81834edbf5888fb7dbdcbcaafbe22c1975a5 && \ rm -Rvf kyve-linux.zip?checksum=be96d9befd3a1084af6d9de2b49d81834edbf5888fb7dbdcbcaafbe22c1975a5 __MACOSX && \ chmod u+x * && \ mv kyve-linux /usr/bin/$BIN && \ printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
# polkadot POOL=17 && \ NAME="substrate" && \ BIN="kyve-substrate" && \ VER=$(wget -qO- https://api.github.com/repos/kyve-org/$NAME/releases/download/v0.1.0/kyve-linux.zip?checksum=be96d9befd3a1084af6d9de2b49d81834edbf5888fb7dbdcbcaafbe22c1975a5 | jq -r ".tag_name") && \ wget https://github.com/kyve-org/cosmos/releases/download/v0.0.1/kyve-linux.zip?checksum=1a045606024368d3bb7329b50353b11a8954831a4d139b0aa09e40b7f003ca04 && \ unzip kyve-linux.zip?checksum=1a045606024368d3bb7329b50353b11a8954831a4d139b0aa09e40b7f003ca04 && \ rm -Rvf kyve-linux.zip?checksum=1a045606024368d3bb7329b50353b11a8954831a4d139b0aa09e40b7f003ca04 __MACOSX && \ chmod u+x * && \ mv kyve-linux /usr/bin/$BIN && \ printf "\n$BIN version: $($BIN --version), pool id: $POOL.\n\n"
Отлично. Теперь нам нужно загрузить arweave.json на сервер, желательно в каталог /root/.
Если до сих пор у вас нет arweave-кошелька, то переходим на сайт, где мы сгенерируем аккаунт и сразу запросим на него пару копеек.
Обязательно переименуйте файл arweave-key-8qi2faiF4.json в arweave.json.
Можно загрузить с помощью инструментов Mobaxterm, но я воспользуюсь SCP:
# выполняем команду на локальном пк scp path/myfile [email protected]:/full/path/to/new/location/
# в моём случае команда выглядит так scp /Users/royalblood/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 \\ --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