January 8, 2023

Установка ноды LAVA

Здравствуйте сегодня мы расскажем об установке ноды Lava

Оригинальная инструкция находится тут.

Lava децентрализует доступ к данным блокчейна. Это первый по-настоящему неостановимый протокол для доступа к API блокчейна.

Выступая в качестве двустороннего рынка, который стимулирует и координирует узлы блокчейна для предоставления dapps данных блокчейна, Lava устанавливает стандарт для быстрого, надежного и безопасного API.

Минимальные требования для сервера

8GB RAM 100GB of disk space 4Cores CPU

Краткую инструкцию по аренде сервера можно посмотреть тут

Как установить несколько нод на один сервер можно почитать тут

Подробный разбор по установке нод Cosmos можно посмотреть тут.

Если будете выбирать сервер на Hetzner можете воспользоваться нашей ссылкой, будем благодарны.

Как всегда обновляем наш сервер

sudo apt update && sudo apt upgrade -y

Устанавливаем доп. пакеты

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.5" && \ 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

Скачиваем папку проекта и собираем бинарник

cd $HOME rm -rf lava git clone https://github.com/lavanet/lava.git cd lava git checkout v1.0.1 make install LAVA_BINARY=lavad

После этого перемещаем бинарник

mv $HOME/go/bin/lavad /usr/local/bin/

Задаем переменные (CHAIN оставляем без изменений, в остальные вписываем свои данные)

LAVA_CHAIN="lava-testnet-2" LAVA_MONIKER="your_name" LAVA_WALLET="your_name"

Добавляем все в баш профиль

echo 'export LAVA_CHAIN='${LAVA_CHAIN} >> $HOME/.bash_profile echo 'export LAVA_MONIKER='${LAVA_MONIKER} >> $HOME/.bash_profile echo 'export LAVA_WALLET='${LAVA_WALLET} >> $HOME/.bash_profile source $HOME/.bash_profile

Инициализируем ноду

lavad init $LAVA_MONIKER --chain-id=lava-testnet-2

Прописываем в конфиг имя сети

lavad config chain-id $LAVA_CHAIN

Скачиваем файл генезис

curl -s https://raw.githubusercontent.com/lavanet/lava-config/main/testnet-2/genesis_json/genesis.json > $HOME/.lava/config/genesis.json

Задаём новые настройки для конфигов

sed -i \ -e 's/timeout_commit = ".*"/timeout_commit = "30s"/g' \ -e 's/timeout_propose = ".*"/timeout_propose = "1s"/g' \ -e 's/timeout_precommit = ".*"/timeout_precommit = "1s"/g' \ -e 's/timeout_precommit_delta = ".*"/timeout_precommit_delta = "500ms"/g' \ -e 's/timeout_prevote = ".*"/timeout_prevote = "1s"/g' \ -e 's/timeout_prevote_delta = ".*"/timeout_prevote_delta = "500ms"/g' \ -e 's/timeout_propose_delta = ".*"/timeout_propose_delta = "500ms"/g' \ -e 's/skip_timeout_commit = ".*"/skip_timeout_commit = false/g' \ -e 's/seeds = ".*"/seeds = "3a445bfdbe2d0c8ee82461633aa3af31bc2b4dc0@testnet2-seed-node.lavanet.xyz:26656,e593c7a9ca61f5616119d6beb5bd8ef5dd28d62d@testnet2-seed-node2.lavanet.xyz:26656"/g' \ $HOME/.lava/config/config.toml

sed -i -e 's/broadcast-mode = ".*"/broadcast-mode = "sync"/g' $HOME/.lava/config/client.toml

Настраиваем прунинг (по желанию)

pruning="custom" pruning_keep_recent="1000" pruning_interval="10" sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.lava/config/app.toml sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.lava/config/app.toml sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.lava/config/app.toml

Выключаем индексер (по желанию)

indexer="null" sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.lava/config/config.toml

Задаём минимальную цену за газ

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.00ulava\"/;" ~/.lava/config/app.toml

Добавляем сиды

SEEDS="3a445bfdbe2d0c8ee82461633aa3af31bc2b4dc0@testnet2-seed-node.lavanet.xyz:26656,e593c7a9ca61f5616119d6beb5bd8ef5dd28d62d@testnet2-seed-node2.lavanet.xyz:26656" PEERS="" sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|; s|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.lava/config/config.toml

Скачиваем последний снапшот

взять можно здесь: https://app.nodejumper.io/lava-testnet/sync или здесь: https://services.kjnodes.com/testnet/lava/snapshot/

Создаем сервис файл

tee /etc/systemd/system/lavad.service > /dev/null <<EOF [Unit] Description=lavad After=network-online.target

[Service] User=$USER ExecStart=$(which lavad) start Restart=on-failure RestartSec=3 LimitNOFILE=65535

[Install] WantedBy=multi-user.target EOF

И запускаем сервис

systemctl daemon-reload systemctl enable lavad systemctl restart lavad

Смотрим логи и ждем когда нода начнет синхронизироваться

journalctl -u lavad -f -o cat

Или смотрим статус синхронизации (когда "catching_up": false то нода синхронизирована)

curl localhost:26657/status

После синхронизации создаем кошелек (не забываем сохранить мнемоник)

lavad keys add $LAVA_WALLET

Если кошелек уже есть то восстанавливаем с помощью мнемоника

lavad keys add $LAVA_WALLET --recover

Добавляем переменную с адресом кошелька

LAVA_ADDR=$(lavad keys show $LAVA_WALLET -a)

Добавляем переменную в баш профиль

echo 'export LAVA_ADDR='${LAVA_ADDR} >> $HOME/.bash_profile source $HOME/.bash_profile

Теперь нам необходимо получить средства на кошелек. Для этого переходим в дискорд в канал #faucet по ссылке, и запрашиваем токены на баланс.

После запроса проверяем баланс

lavad query bank balances $LAVA_ADDR

Если средства успешно поступили, то создаем валидатора (сумму указывайте свою, сколько хотите делегировать с кошелька, указывайте чуть меньше что бы хватило на комиссию)

lavad tx staking create-validator \ --amount="50000ulava" \ --pubkey=$(lavad tendermint show-validator --home "$HOME/.lava/") \ --moniker=$LAVA_MONIKER \ --chain-id=lava-testnet-2\ --commission-rate="0.10" \ --commission-max-rate="0.20" \ --commission-max-change-rate="0.05" \ --min-self-delegation="10000" \ --gas="auto" \ --from=$LAVA_WALLET \ --fees 500ulava

Задаем переменную с адресом валидатора

LAVA_VALOPER=$(lavad keys show $LAVA_WALLET --bech val -a)

И добавляем ее в баш профиль

echo 'export LAVA_VALOPER='${LAVA_VALOPER} >> $HOME/.bash_profile source $HOME/.bash_profile

Проверка статуса валидатора

lavad query staking validator $LAVA_VALOPER

Делегация средств с кошелька на валидатора (сумму вводите свою)

lavad tx staking delegate $LAVA_VALOPER 100000ulava --from $LAVA_WALLET --fees 500ulava

Ну и если вдруг ваша нода попала в тюрьму, то выход

lavad tx slashing unjail --from $LAVA_WALLET --fees 500ulava

Большое спасибо, за внимание и уделенное время

Наш телеграмм канал по нодам — https://t.me/mmsnodes
Наш телеграмм чат по нодам - https://t.me/mmsnodeschat
Наш телеграмм канал по экосистеме Cosmos - https://t.me/cosmochannel_mms

С уважением, MMS_Team