Установка Cosmos Hub + Kyve Protocol Node
Сегодня мы расскажем вам о том, как установить RPC узел CosmosHub и Protocol узел проекта Kyve.
Этот гайд будет актуален тем участникам оплачиваемого тестнета, которые заняли первые 2500 мест в лидерборде, поскольку в свете последних событий, команда Kyve решила раздать этим участникам делегацию, если они установят своего валидатора в сети Kaon, заполнить форму можно тут, но желательно после установки валидатора, приступим.
2 CPU cores
1.5 TB NVME of disk storage (or more)
8 GB of memory (RAM)
1 or more physical CPU core
8 GB of disk storage
2 GB of memory (RAM)
Установка RPC CosmosHub
Начнем мы с установки RPC, синхронизироваться нода будет около ~14 дней, но нам главное начать синхронизировать первые блоки, остальные по началу, не сильно важны.
Генезисная высота CosmosHub - 5200791
sudo apt install make clang git pkg-config libssl-dev build-essential git gcc chrony curl jq ncdu bsdmainutils htop net-tools lsof fail2ban wget -y
В данном случае установка go опциональна, поскольку бинарники мы не будем билдить, лишь качать, но если вы захотите сбилдить определенную вам версию, оставим это тут
ver="1.20.3" && \
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \
sudo rm -rf /usr/local/go && \
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \
rm "go$ver.linux-amd64.tar.gz" && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \
source $HOME/.bash_profile && \
go version
Устанавливаем переменные и экспортируем их в .bash_profile
GAIA_CHAIN="cosmoshub-4"
GAIA_MONIKER="your_name"
echo 'export GAIA_CHAIN='${GAIA_CHAIN} >> $HOME/.bash_profile
echo 'export GAIA_MONIKER='${GAIA_MONIKER} >> $HOME/.bash_profile
source $HOME/.bash_profile
Качаем бинарный файл версии 4.2.1 и перемещаем его
cd $HOME/
wget https://github.com/cosmos/gaia/releases/download/v4.2.1/gaiad-v4.2.1-linux-amd64
mv gaiad-v4.2.1-linux-amd64 gaiad
chmod +x gaiad
mv gaiad /usr/local/bin
wget https://raw.githubusercontent.com/cosmos/mainnet/master/genesis/genesis.cosmoshub-4.json.gz
gzip -d genesis.cosmoshub-4.json.gz
mv genesis.cosmoshub-4.json ~/.gaia/config/genesis.json
wget https://dl2.quicksync.io/json/addrbook.cosmos.json
mv addrbook.cosmos.json ~/.gaia/config/addrbook.json
chmod 666 ~/.gaia/config/addrbook.json
Выключаем индексацию и ставим прунинг с настройкой "everything"
pruning="everything"
indexer="null"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.gaia/config/app.toml
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.gaia/config/config.toml
Добавляем пиры в config.toml еще больше пиров можно найти тут
PEERS=6a2b961ac6020dd4ba011396469f1c78324e039b@18.189.192.156:26656,c1683c75d41c6b2863e52a569666408868469b1c@170.106.64.212:26656,89757803f40da51678451735445ad40d5b15e059@169.155.168.135:26656,2441e90fcb341fcd5bebec15b54e346cdca64a9b@135.148.123.8:14956,37dfe1ec33e9f88f378a61a32462d57d2baa5e74@65.108.99.140:26656,58f1815e3bd03bd93586f1e0287556c035d5ad14@142.132.146.164:15603
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.gaia/config/config.toml
Задаем минимальную цену на газ
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.01uatom\"/;" ~/.gaia/config/app.toml
Открываем порт rpc в config.toml
Позже добавлю автоматический вариант, пока что руками
Ищем в конфиге блок RPC Server Configuration Options
Под ним будет находится адрес - это и есть порт RPC
Меняем руками Ip 127.0.0.1 на 0.0.0.0, сохраняем и выходим, теперь наш порт RPC открыт
tee /etc/systemd/system/gaiad.service > /dev/null <<EOF
[Unit]
Description=CosmosHub RPC
After=network-online.target
[Service]
User=$USER
ExecStart=$(which gaiad) start --x-crisis-skip-assert-invariants
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
Стартовать может минут 5 и более, еще столько же искать активных пиров, не стоит переживать, все запустится
sudo systemctl daemon-reload && \
sudo systemctl enable gaiad && \
sudo systemctl restart gaiad && \
sudo journalctl -u gaiad -f -o cat
Далее приведем бинарники и высоту их смены
v5.0.0
height = 6910000
wget https://github.com/cosmos/gaia/releases/download/v5.0.0/gaiad-v5.0.0-linux-amd64
mv gaiad-v5.0.0-linux-amd64 gaiad
chmod +x gaiad
mv gaiad /usr/local/bin
wget https://github.com/cosmos/gaia/releases/download/v6.0.0/gaiad-v6.0.0-linux-amd64
mv gaiad-v6.0.0-linux-amd64 gaiad
chmod +x gaiad
mv gaiad /usr/local/bin
wget https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-linux-amd64
mv gaiad-v7.0.0-linux-amd64 gaiad
chmod +x gaiad
mv gaiad /usr/local/bin
wget https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-linux-amd64
mv gaiad-v8.0.0-linux-amd64 gaiad
chmod +x gaiad
mv gaiad /usr/local/bin
wget https://github.com/cosmos/gaia/releases/download/v9.0.0/gaiad-v9.0.0-linux-amd64
mv gaiad-v9.0.0-linux-amd64 gaiad
chmod +x gaiad
mv gaiad /usr/local/bin
v9.1.0
height = 15213800
ВНИМАНИЕ, не доходя до этой высоты необходимо самостоятельно выставить в конфиге app.toml настройку halt-height = 15213800, на этой высоте нода самостоятельно остановиться, после чего как обычно обновляем, далее убираем настройку на дефолт halt-height = 0 и рестартим ноду!
wget https://github.com/cosmos/gaia/releases/download/v9.1.0/gaiad-v9.1.0-linux-amd64
mv gaiad-v9.1.0-linux-amd64 gaiad
chmod +x gaiad
mv gaiad /usr/local/bin
v10.0.1
height=15816200
Содержит IBC Huckleberry fix
wget https://github.com/cosmos/gaia/releases/download/v10.0.1/gaiad-v10.0.1-linux-amd64
mv gaiad-v10.0.1-linux-amd64 gaiad
chmod +x gaiad
mv gaiad /usr/local/bin
wget https://github.com/cosmos/gaia/releases/download/v11.0.0/gaiad-v11.0.0-linux-amd64
mv gaiad-v11.0.0-linux-amd64 gaiad
chmod +x gaiad
mv gaiad /usr/local/bin
Protocol node
Перейдем к тому, для чего мы и ставили свою RPC CosmosHub-а - Protocol Node
cd $HOME/
wget https://github.com/KYVENetwork/kyvejs/releases/download/%40kyve%2Fkysor%401.0.0-beta.20/kysor-linux-x64.zip && \
unzip kysor-linux-x64.zip && \
mv kysor-linux-x64 kysor && \
chmod +x kysor && \
mv kysor /usr/bin/kysor && \
rm kysor-linux-x64.zip
Инициализируем ноду для сети KAON
kysor init -d \
--chain-id kaon-1 \
--rpc "https://rpc-eu-1.kaon.kyve.network" \
--rest "https://api-eu-1.kaon.kyve.network"
Перед тем, как мы сгенерируем нужный нам конфиг, нам необходимо сгенерировать и пополнить свой кошелек Arweave, монетами $AR как это cделать прекрасно показано в гайде для тестнета Korellia от HowToNode aka cyberomanov , поэтому не считаю нужным переписывать, то что уже есть, перейдем дальше к технической части
Как только мы перенесли свой ключ на сервер, нам необходимо его переименовать в arweave.json и перенести в каталог .kysor, если он не там
mv arweave-key-NPnHBDo7koHYkTYRbBkUJP4EW4GPA98fJdxsj6pGnDEA.json arweave.json
mv arweave.json $HOME/.kysor
Далее создаем vallaccount, если кошелек уже существует, добавляем флаг
--recover к команде и вводим свое мнемо
valaccount - это горячий кошелек для оплаты комиссии валидатора
kysor valaccounts create \
--name cosmoshub \
--pool 0 \
--storage-priv "$(cat ~/.kysor/arweave.json)" \
--metrics
После создания кошелька, его мнемонику можно увидеть в файле cosmoshub.toml по пути:
$HOME/.kysor/valaccounts/cosmoshub.toml
Открываем файл и записываем мнемо от нашего valaccount
Стоит сделать пометку для тех, у кого узел CosmosHub стоит на отдельном сервере от Protocol узла, вам необходимо создать файл .env и вписать туда переменную
Вписываем туда переменную с адресом и RPC портом вашего узла Cosmos далее сохраняем и переходим к следующему шагу
export KYVEJS_TENDERMINT_BSYNC_RPC="http://YOUR_IP:YOUR_PORT"
curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -
sudo apt-get install -y nodejs
Bundlr - это L2 Arweave далее мы переведем свои монеты туда
Далее нам необходимо пополнить наш кошелек Bundlr-a
Переходим в рабочую директорию и даем команду
cd $HOME/.kysor
bundlr fund 1000000000000 -h https://node1.bundlr.network -w arweave.json -c arweave
1000000000000 - Это одна монета $AR
100000000000 - Это 0.1 монеты $AR
Думаю логику вы поняли )
Успешно выполненная транзакция выглядит так:
Внимание, монеты могут доходить долго, от 20 минут и более
Статус вашей транзакции можете посмотреть здесь:
https://viewblock.io/arweave
После того, как кошелек будет пополнен, а синхронизация CosmosHub будет выше, чем актуальный блок в Kyve, который можно посмотреть здесь, по
параметру Latest key, можем запускать свой узел
Создаем сервисный файл, для тех у кого Protocol и Cosmos стоят на одном сервере
tee <<EOF > /dev/null /etc/systemd/system/kyve_cosmos.service
[Unit]
Description=Kyve Protocol CosmosHub Pool
After=network-online.target
[Service]
User=$USER
ExecStart=$(which kysor) start --valaccount cosmoshub
Restart=always
RestartSec=3
LimitNOFILE=infinity
Если ваши ноды CosmosHub и Protocol стоят на разных серверах, тогда необходимо добавить дополнительный флаг c нашей переменной
tee <<EOF > /dev/null /etc/systemd/system/kyve_cosmos.service
[Unit]
Description=Kyve Protocol CosmosHub Pool
After=network-online.target
[Service]
User=$USER
ExecStart=$(which kysor) start --valaccount cosmoshub --env-file=/root/.kysor/.env
Restart=always
RestartSec=3
LimitNOFILE=infinity
Стартуем сервис и смотрим логи
sudo systemctl daemon-reload && \
sudo systemctl enable kyve_cosmos && \
sudo systemctl restart kyve_cosmos && \
sudo journalctl -u kyve_cosmos -f -o cat
После успешного старта мы можем наблюдать логи с разного вида информацией, такие как valname valaddr и тд.
В конце наш ждем уведомление, где нас просят авторизовать наш узел
2023-05-16 14:48:24.486 INFO The node will not continue until the account is authorized
Если вы увидели это строчку, то осталось совсем немного, надо лишь создать валидатора в вебе, тут
Подключаем кошелек, на котором будет стоять валидатор и включаем Expert Mod
Далее Заходим во вкладку Validators, справа сверху видим кнопку "Become validator", жмем и стейкаем в себя часть монет
Далее вводим параметры, которые выведены у нас в терминале и смотрим на своего валидатора во вкладке Validators, заполняем профиль нашего валидатора (одно из обязательных условий делегации) и ждем чуда!
Большое спасибо, за внимание и уделенное время
Наш телеграмм канал по нодам — https://t.me/mmsnodes
Наш телеграмм чат по нодам - https://t.me/mmsnodeschat
Наш телеграмм канал по экосистеме Cosmos - https://t.me/cosmochannel_mms