May 11, 2022

Установка ноды 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

Отлично, нода запущена.