May 6, 2023

Тестнет на нодах Lava

Lava Network, - это первый протокол для децентрализованного блокчейна RPC и API. Протокол Lava направлен на обеспечение децентрализованного и масштабируемого доступа к данным блокчейна за счет использования сети поставщиков и потребителей. Он использует механизм консенсуса Proof-of-Stake и стимулирует участников за счет использования собственного токена LAVA. В данном гайде мы рассмотрим, как пошагово поднять ноду Lava. А подробнее с анализом проекта от нашей команды вы можете ознакомиться по ссылке.

Зачем участвовать?

В настоящее время идет первая фаза тестнета. Официально тестнет не вознаграждается. Однако венчурные проекты часто анонсируют неоплачиваемый тестнет, чтобы "отсечь" абузеров. А потом тестеров могут вознаградить следующими опциями:

  • Раздать дроп
  • Дать доступ к участию в следующей фазе тестнета, за которую может быть обещано вознаграждение
  • Дать доступ к участию в Private раунде

Проект привлек большой объем инвестиций в размере 250 000$.

Требования к оборудованию и ПО

  • Оперативная память RAM 8 ГБ
  • 100 ГБ SSD
  • 4 ядра 2.0 ГГц х64
  • Операционная система Ubuntu 20 или более поздняя версия

Самый оптимальный облачный сервер по цене под этот проект можно арендовать на Macloud. По ссылке скидка 10%. Настройки сервера представлены на скриншоте ниже:

Стоимость такого сервера 2242.5 рублей в месяц.

Поднимаем ноду

Получаем доступ к серверу через терминал

Далее, когда у нас есть сервер, необходимо поднять ноду. Для этого нам потребуется терминал Termius. Скачать можно по ссылке

1. Получаем IP

Для доступа нам потребуется IP сервера и пароль. IP можно взять прямо на главной странице с серверами. На скриншоте он зачеркнут красным.

2. Получаем пароль

Чтобы получить пароль, необходимо сперва нажать на сам сервер, затем выбрать вкладку "Доступ" и просмотреть пароль (нажать на глазик).

3. Заходим на сервер через терминал

Далее идем в Termius во вкладку Hosts -> Add -> New Host

После чего справа в поле Adress вводим наш IP сервера и нажимаем стрелочку, как на скриншоте ниже.

Далее у нас открывается вот такое окно, как показано ниже. В поле Username вводим "root". Далее вводим пароль, который мы посмотрели на macloud (пункт 2).

После чего открывается консоль, которая выглядит примерно вот так:

Устанавливаем ПО

Даем права суперпользователя

sudo apt update sudo apt install -y unzip logrotate git jq sed wget curl coreutils systemd

Затем когда всплывет окно - нажимаем Enter на клавиатуре.

Создаем папку temp для инсталляции

temp_folder=$(mktemp -d) && cd $temp_folder

Задаем параметры загрузки

go_package_url="https://go.dev/dl/go1.18.linux-amd64.tar.gz" go_package_file_name=${go_package_url##*\/}

Запускаем загрузку архива

wget -q $go_package_url

Распаковываем архив

sudo tar -C /usr/local -xzf $go_package_file_name

Задаем параметры окружения

echo "export PATH=\$PATH:/usr/local/go/bin" >>~/.profile echo "export PATH=\$PATH:\$(go env GOPATH)/bin" >>~/.profile source ~/.profile

Устанавливаем ноду

Загружаем конфигурацию установки

git clone https://github.com/lavanet/lava-config.git cd lava-config/testnet-1

Читаем файл конфигурации

source setup_config/setup_config.sh

Устанавливаем конфигурацию приложения Lava по умолчанию

echo "Lava config file path: $lava_config_folder" mkdir -p $lavad_home_folder mkdir -p $lava_config_folder cp default_lavad_config_files/* $lava_config_folder

Создаем Genesis-файл

cp genesis_json/genesis.json $lava_config_folder/genesis.json

Подключаемся к тестнету

Установим Cosmovisor - автообновление. Перейдем к установке Cosmovisor

go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/[email protected]

Создадим папку для Cosmovisor

mkdir -p $lavad_home_folder/cosmovisor

Сделаем апгрейд Cosmovisor

wget https://lava-binary-upgrades.s3.amazonaws.com/testnet/cosmovisor-upgrades/cosmovisor-upgrades.zip unzip cosmovisor-upgrades.zip cp -r cosmovisor-upgrades/* $lavad_home_folder/cosmovisor

Задаем переменные окружения

echo "# Setup Cosmovisor" >> ~/.profile echo "export DAEMON_NAME=lavad" >> ~/.profile echo "export CHAIN_ID=lava-testnet-1" >> ~/.profile echo "export DAEMON_HOME=$HOME/.lava" >> ~/.profile echo "export DAEMON_ALLOW_DOWNLOAD_BINARIES=true" >> ~/.profile echo "export DAEMON_LOG_BUFFER_SIZE=512" >> ~/.profile echo "export DAEMON_RESTART_AFTER_UPGRADE=true" >> ~/.profile echo "export UNSAFE_SKIP_BACKUP=true" >> ~/.profile source ~/.profile

Инициализируем цепь

$lavad_home_folder/cosmovisor/genesis/bin/lavad init \ my-node \ --chain-id lava-testnet-1 \ --home $lavad_home_folder \ --overwrite cp genesis_json/genesis.json $lava_config_folder/genesis.json

Создаем Unit-файл Cosmovisor

echo "[Unit] Description=Cosmovisor daemon After=network-online.target [Service] Environment="DAEMON_NAME=lavad" Environment="DAEMON_HOME=${HOME}/.lava" Environment="DAEMON_RESTART_AFTER_UPGRADE=true" Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true" Environment="DAEMON_LOG_BUFFER_SIZE=512" Environment="UNSAFE_SKIP_BACKUP=true" User=$USER ExecStart=${HOME}/go/bin/cosmovisor start --home=$lavad_home_folder --p2p.seeds $seed_node Restart=always RestartSec=3 LimitNOFILE=infinity LimitNPROC=infinity [Install] WantedBy=multi-user.target " >cosmovisor.service sudo mv cosmovisor.service /lib/systemd/system/cosmovisor.service

Даем доступ Cosmovisor к автообновлениям

sudo systemctl daemon-reload sudo systemctl enable cosmovisor.service sudo systemctl restart systemd-journald sudo systemctl start cosmovisor

Проверка статуса ноды

Проверяем настройки Cosmovisor

sudo systemctl status cosmovisor

Проверяем статус ноды

$HOME/.lava/cosmovisor/current/bin/lavad status | jq .SyncInfo.catching_up

Должно быть написано "true"

Создаем аккаунт и кошелек

Создаем аккаунт. Там, где написано "name_here" - можете задать ваше имя аккаунта

current_lavad_binary="$HOME/.lava/cosmovisor/current/bin/lavad" ACCOUNT_NAME="name_here" $current_lavad_binary keys add $ACCOUNT_NAME

После чего отображается имя аккаунта, приватный и публичный ключ

ВАЖНО! Записать эти данные, особенно seed-фразу, так как это единственный способ восстановить кошелек.

Получаем тестовые токены

Далее необходимо получить тестовые токены для тестнета. Для этого необходимо перейти в Discord по ссылке

Пройти верификацию в дискорде как валидатор. Слева появится ветка "faucet". Там в чат необходимо ввести:

$request adress

где adress - тот самый адрес, который был получен при создании кошелька и аккаунта. Он начинается с lava@

Далее мы можем подключиться к тестнету либо как валидатор, либо как провайдер. Особой разницы нет. Технически проще стать валидатором, поэтому в статье опишем именно этот путь.

Подключаемся как валидатор

Проверяем, что нода запущена и подключена к сети. Для этого в Termius вводим команду:

$current_lavad_binary status | jq .SyncInfo.catching_up

Должно быть написано "false". Если не так - необходимо подождать какое-то время. У меня ушли сутки.

Проверяем, что тестовые токены получены:

YOUR_ADDRESS=$($current_lavad_binary keys show -a $ACCOUNT_NAME) $current_lavad_binary query \ bank balances \ $YOUR_ADDRESS \ --denom ulava

Сохраняем публичный ключ валидатора командой:

$current_lavad_binary tendermint show-validator

Он пригодится нам для восстановления валидатора на случай, если вы перенесете свой валидатор на другой сервер или случайно потеряете доступ к своему валидатору.

Запускаем валидатор:

Для примера здесь написано 100000ulava и <<moniker_node>>. Вы можете указать ваше количество и задать удобное вам имя ноды.

$current_lavad_binary tx staking create-validator \ --amount="100000ulava" \ --pubkey=$($current_lavad_binary tendermint show-validator --home "$HOME/.lava/") \ --moniker="<<moniker_node>>" \ --chain-id=lava-testnet-1 \ --commission-rate="0.10" \ --commission-max-rate="0.20" \ --commission-max-change-rate="0.01" \ --min-self-delegation="10000" \ --gas="auto" \ --gas-adjustment "1.5" \ --gas-prices="0.05ulava" \ --home="$HOME/.lava/" \ --from=$ACCOUNT_NAME

Проверяем настройки валидатора:

block_time=60

Проверяем, что нода валидатора зарегистрирована

validator_pubkey=$($current_lavad_binary tendermint show-validator | jq .key | tr -d '"')
$current_lavad_binary q staking validators | grep $validator_pubkey

Проверяем voting power ноды. Необходимо подождать 30-60 секунд. Выходной параметр должен быть больше нуля:

sleep $block_time $current_lavad_binary status | jq .ValidatorInfo.VotingPower | tr -d '"'

Поздравляем, вы подняли ноду и стали валидатором в тестнете LavaNetwork!

Не является индивидуальной инвестиционной рекомендацией!

Материал подготовлен для закрытого клуба инвесторов CryptoClub Юрия Овчарова.