Установка ноды LAVA
Здравствуйте сегодня мы расскажем об установке ноды Lava
Оригинальная инструкция находится тут.
Lava децентрализует доступ к данным блокчейна. Это первый по-настоящему неостановимый протокол для доступа к API блокчейна.
Выступая в качестве двустороннего рынка, который стимулирует и координирует узлы блокчейна для предоставления dapps данных блокчейна, Lava устанавливает стандарт для быстрого, надежного и безопасного API.
Минимальные требования для сервера
8GB RAM 100GB of disk space 4Cores CPU
Краткую инструкцию по аренде сервера можно посмотреть тут
Как установить несколько нод на один сервер можно почитать тут
Подробный разбор по установке нод Cosmos можно посмотреть тут.
Если будете выбирать сервер на Hetzner можете воспользоваться нашей ссылкой, будем благодарны.
Как всегда обновляем наш сервер
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
После этого перемещаем бинарник
Задаем переменные (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
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
systemctl daemon-reload systemctl enable lavad systemctl restart lavad
Смотрим логи и ждем когда нода начнет синхронизироваться
Или смотрим статус синхронизации (когда "catching_up": false то нода синхронизирована)
После синхронизации создаем кошелек (не забываем сохранить мнемоник)
Если кошелек уже есть то восстанавливаем с помощью мнемоника
Добавляем переменную с адресом кошелька
Добавляем переменную в баш профиль
echo 'export LAVA_ADDR='${LAVA_ADDR} >> $HOME/.bash_profile source $HOME/.bash_profile
Теперь нам необходимо получить средства на кошелек. Для этого переходим в дискорд в канал #faucet по ссылке, и запрашиваем токены на баланс.
После запроса проверяем баланс
Если средства успешно поступили, то создаем валидатора (сумму указывайте свою, сколько хотите делегировать с кошелька, указывайте чуть меньше что бы хватило на комиссию)
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
Задаем переменную с адресом валидатора
echo 'export LAVA_VALOPER='${LAVA_VALOPER} >> $HOME/.bash_profile source $HOME/.bash_profile
Делегация средств с кошелька на валидатора (сумму вводите свою)
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