Lava - providers (mainnet)
🪓 Telegram канал UTSA 🪓 Telegram чат UTSA
- Docs providers - https://docs.lavanet.xyz/provider/
- Dashboards - https://info.lavanet.xyz/providers / https://info.mainnet.lavanet.xyz/#providers
- Критерии для провайдера - https://lavanet.notion.site/Lava-Testnet-Providers-Incubation-Program-2d45589294b84976843fd55569f8be87
Провайдеры являются основой сети Lava, обслуживая запросы на ретрансляцию путем размещения ставок в сети и управляя узлами RPC в цепочках ретрансляции (например, Cosmos, Ethereum, Osmosis, Polygon и т.д.). Взамен провайдеры получают плату в виде токенов LAVA за обслуживание этих запросов
Начиная с testnet2 необходимо настраивать TLS сертификаты для провайдера - подробнее здесь - https://docs.lavanet.xyz/provider-tls/?utm_source=lava-discord&utm_medium=discord&utm_campaign=testnet-fork
Общие условия
- для привязки токенов можно использовать как отдельный кошелек, так и кошелек валидатора. Рекомендуется создать отдельный кошелек
- Для активации провайдера необходима ставка минимум в 5000 LAVA
- общедоступные точки доступа могут быть как удаленными, так и локальными на собственном сервере. Убедитесь, что точки доступа RPC, API и gRPC находятся в рабочем состоянии
Провайдер может получить статус jail, если в течение 3 последних эпох (1,5 часа) потребители жалуются на него и у них есть более 95% ошибок в первых 10 сообщениях или если соединение пропало
В текущей тестовой сети механизм слешинга отключен - поэтому провайдеры должны получить свои тестовые монеты обратно через 25 часов. Команда не планирует вводить более жесткие ограничения - поэтому после временной стадии jail можно будет вернуться к работе провайдера
При размещении ставок в качестве провайдера в транзакциях используются четыре основных параметра:
- Stake: количество LAVA, которое будет отправлено в stake. Для тестовой сети это значение должно быть минимум 50000 LAVA на сеть. Значение может быть больше, но не меньше. Для mainnet необходимо 5000 LAVA
- Geolocation: указывает геолокацию вашего сервера. US соответствует 1, а EU соответствует 2
- ChainID: идентификатор целевой сети блокчейна, такой как Cosmos Mainnet, Ethereum Ropsten и т.д.
- Endpoints: список конечных точек, каждая из которых определяет адрес, геолокацию и интерфейс API, такой как REST, JSON-RPC и т.д. Важно отметить, что все запросы провайдера выполняются с использованием gRPC
Узнать ChainID можно несколькими способами - перейдя в dashboard или используя информацию с RPC или воспользовавшись следующей командой
lavap q spec list-spec | grep index
Настройка провайдера LAVA
ВАЖНО — в командах ниже все, что в <> меняем на свое значение и убираем сами <>
LAVA - это идентификатор цепочки, позволяющий стать провайдером используя mainnet LAVA
В данном гайде мы будем использовать отдельный кошелек провайдера для стейка и синхронизированную ноду lava, поэтому подразумевается, что у нас уже имеется установленная актуальная версия lava и другие сети на нашем сервере. Также в нашем примере нода LAVA имеет настройку pruning = nothing и будет архивной. Наш сервер расположен в Европе, поэтому мы будем использовать --geolocation 2
0. Скачиваем бинарный файл lavap
С 02.10.2023 года для провайдера должен использоваться отдельный бинарный файл lavap. Также можно настроить lavavisor (аналог cosmovisor). Подробнее здесь
git clone https://github.com/lavanet/lava && cd lava export LAVA_BINARY=lavap git checkout v2.2.2 make install
lavap version #v2.2.2
1. Создаем или восстанавливаем кошелек и пополняем его минимум на 5000LAVA
Для тестовой сети необходимо использовать --keyring-backend test
, так как необходимо подписывать транзакции. В mainnet это будет исправлено
# создать кошелек lavap keys add <name_wallet> --keyring-backend test # восстановить кошелек (после команды вставить seed) lavap keys add <name_wallet> --recover --keyring-backend test # проверить баланс lavap q bank balances <address>
2. Регистрация stake для необходимой нам сети. В данном случае LAVA (lava-mainnet-1)
Для примера ниже мы создали поддомен lava-provider.utsa.tech
с используемым портом 12345. Этот номер порта предназначен для информирования других о том, что услуги Вашего провайдера будут работать по этому адресу с этим конкретным номером порта. Пожалуйста, не путайте provider_port с номерами портов RPC, API или gRPC!
Вы можете изменить данный порт на необходимое Вам значение, при этом не забудьте сделать данный порт открытым для внешнего мира. Также поменяйте <name_wallet> <moniker> <lava.your-site:443> <VALOPER_ВАЛИДАТОРА>
на свои значения
lavad tx pairing stake-provider LAVA 5000000000ulava <lava.your-site:443>,2,tendermintrpc,rest,grpc,archive 2 <VALOPER_ВАЛИДАТОРА> --from <name_wallet> --provider-moniker "<moniker>" --delegate-limit "9000000000000ulava" --delegate-commission 70 --keyring-backend test --chain-id lava-mainnet-1 --gas auto --gas-adjustment 1.5 --fees 5000ulava -y
Поздравляю - Вы официально заявили о себе как о поставщике услуг в LAVA!
Для регистрации других сетей отправьте еще одну транзакцию заменив LAVA и поддомен на свои значения"
Самое время проверить статус своего провайдера
# проверить зарегистрированного провайдера lavap query pairing account-info <lava@1sdx...> # проверить всех провайдеров в сети LAVA lavap query pairing providers LAVA
Настройка rpcprovider.yml
C testnet2 команда просит создавать отдельные конфиг файлы для каждой сети провайдера. При этом необходимо создавать разные сервисные файлы для запуска
Создаем конфиг со следующим содержимым
nano $HOME/.lava/config/lava-provider.yml
Используйте именно 0.0.0.0:12345, чтобы успешно ловить входящий трафик. Также в конфиге при необходимости поменяйте порты 26657, 9090 и 1317 на свои значения RPC, gRPC и API соответственно.
В данном случае мы используем архивную RPC ноду, которая сохраняет всю историю блоков
endpoints: - api-interface: tendermintrpc chain-id: LAVA network-address: address: "127.0.0.1:12345" disable-tls: true node-urls: - url: ws://127.0.0.1:26657/websocket - url: http://127.0.0.1:26657 - url: http://127.0.0.1:26657 addons: - archive - api-interface: grpc chain-id: LAVA network-address: address: "127.0.0.1:12345" disable-tls: true node-urls: - url: 127.0.0.1:9090 - url: 127.0.0.1:9090 addons: - archive - api-interface: rest chain-id: LAVA network-address: address: "127.0.0.1:12345" disable-tls: true node-urls: - url: http://127.0.0.1:1317 - url: http://127.0.0.1:1317 addons: - archive
Начиная с v1.0.2 lavap можно и нужно использовать cache
Служба кэширования Lava используется для сокращения затрат и повышения общей производительности сети. От службы кэширования выигрывают как провайдеры, так и потребители. Провайдеры, включившие кэширование, могут возвращать ответы быстрее, чем провайдеры, у которых кэширование не включено
tee /etc/systemd/system/lava-cache.service > /dev/null << EOF [Unit] Description=Lava cache service After=network-online.target [Service] User=$USER ExecStart=$(which lavap) cache 127.0.0.1:7777 --metrics_address 127.0.0.1:5747 --log_level debug Restart=on-failure RestartSec=10 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable lava-cache.service systemctl start lava-cache.service journalctl -u lava-cache.service -f -o cat
Создаем сервисный файл. Замените <name_wallet>
на свое значение
tee /etc/systemd/system/provider-lava.service > /dev/null <<EOF [Unit] Description=Provider Lava After=network-online.target [Service] User=$USER WorkingDirectory=/root/.lava/config ExecStart=/root/go/bin/lavap rpcprovider lava-provider.yml --geolocation 2 --from <name_wallet> --chain-id lava-testnet-2 --keyring-backend test --cache-be 127.0.0.1:7777 Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable provider-lava systemctl restart provider-lava && journalctl -u provider-lava -f -o cat
После старта сервиса в логах убеждаемся, что cashe работает
Также можно воспользоваться командой проверки конфигурации
lavap test rpcprovider --from <name_wallet> --keyring-backend test
Полезные команды
# проверить логи на успешные транзакции journalctl -fn 100 -u lava-provider | grep succeeded
# проверить зарегистрированного провайдера lavap query pairing account-info <lava@1sdx...>
# сделать unstake lavap tx pairing unstake-provider "LAV1" \ --from "<name_wallet>" \ --keyring-backend "test" \ --gas="auto" \ --gas-adjustment "1.5" \ --fees 5000ulava
# удалить провайдера systemctl stop provider-lava systemctl disable provider-lava rm /etc/systemd/system/provider-lava.service systemctl daemon-reload cd $HOME/.lava/config/ rm lava-provider.yml
Incentivized Evmos ipRPC
Стимулированная программа RPC для Evmos стартует 2 октября! Это ознаменует новую парадигму для валидаторов, превращая запуск и держание RPC в бизнес-возможность!
Подробнее о программе можно прочитать здесь
После ежемесячного распределения вознаграждений экосистемы каждый провайдер обязан требовать свои вознаграждения по контракту на распространение!
Для участия в программе необходимо:
- установить ноды EVMOS mainnet и EVMOS testnet
- настроить и зарегистрировать провайдеров для каждой сети
- создать сертификаты TLS для EVMOS mainnet и EVMOS testnet
- получить токены LAVA (50000 для каждой сети). Для этого заполните данную форму
- вступить в дискорд lava и оставаться там активным для получения дальнейших обновлений и поддержки
Минимальные технические требования:
- Chain id: Mainnet-evmos_9001-2, Testnet-evmos_9000-4
- Protocol version: Mainnet-13.0.2, Testnet-14.0.0
- Pruning configuration: at least 50,000 blocks
- Evmos APIs enabled: eth, net, web3
- Transaction indexing:
indexer="kv"
Подразумевается, что у Вас уже установлены ноды LAVA, EVMOS-mainnet и EVMOS-testnet с нужными параметрами. Также Вы настроили TLS сертификаты для сетей EVMOS. После этого можно продолжить настройку провайдера
0. Скачиваем бинарный файл lavap
С 02.10.2023 года для провайдера должен использоваться отдельный бинарный файл lavap. Также можно настроить lavavisor (аналог cosmovisor). Подробнее здесь
git clone https://github.com/lavanet/lava && cd lava export LAVA_BINARY=lavap make install lavap version #v1.0.4
1. Создаем или восстанавливаем кошелек и пополняем ровно на 50000LAVA
Для тестовой сети необходимо использовать --keyring-backend test
, так как необходимо подписывать транзакции. В mainnet это будет исправлено
# создать кошелек lavap keys add <name_wallet> --keyring-backend test # восстановить кошелек (после команды вставить seed) lavap keys add <name_wallet> --recover --keyring-backend test # проверить баланс lavap q bank balances <address>
2. Регистрируем stake для необходимой нам сети. В данном случае EVMOS mainnet
Для примера ниже мы ранее создали поддомен evmos-mainnet-provider.utsa.tech
с используемым портом 12349 в nginx. Этот номер порта предназначен для информирования других о том, что услуги Вашего провайдера будут работать по этому адресу с этим конкретным номером порта. Порт может быть рандомным. Пожалуйста, не путайте provider_port с номерами портов RPC, API или gRPC!
Вы можете изменить данный порт на необходимое Вам значение, при этом не забудьте сделать данный порт открытым для внешнего мира. Также поменяйте <name_wallet> <moniker> <lava.your-site:443>
на свои значения
lavap tx pairing stake-provider "EVMOS" \ "50000000000ulava" \ "<lava.your-site:443>,2,tendermintrpc,rest,grpc,jsonrpc" 2 \ --from "<name_wallet>" \ --provider-moniker "<moniker>" \ --keyring-backend "test" \ --gas="auto" \ --gas-adjustment "1.5" \ --fees 5
Поздравляю - Вы официально заявили о себе как о поставщике услуг в LAVA!
Для регистрации других сетей отправьте еще одну транзакцию заменив EVMOS и поддомен на EVMOST"
lavap tx pairing stake-provider "EVMOST" \ "50000000000ulava" \ "<lava.your-site:443>,2,tendermintrpc,rest,grpc,jsonrpc" 2 \ --from "<name_wallet>" \ --provider-moniker "<moniker>" \ --keyring-backend "test" \ --gas="auto" \ --gas-adjustment "1.5" \ --fees 5
Самое время проверить статус своего провайдера
# проверить зарегистрированного провайдера lavap query pairing account-info <lava@1sdx...>
Настройка rpcprovider.yml
C testnet2 команда просит создавать отдельные конфиг файлы для каждой сети провайдера. При этом необходимо создавать разные сервисные файлы для запуска
Создаем конфиг со следующим содержимым
nano $HOME/.lava/config/evmos-mainnet-provider.yml
В конфиге при необходимости поменяйте порты 26657, 9090, 1317 и 8545 на свои значения RPC, API, RPC и jsonRPC соответственно
endpoints: #evmos-mainnet - api-interface: tendermintrpc chain-id: EVMOS network-address: address: 0.0.0.0:12349 disable-tls: true node-urls: - url: ws://127.0.0.1:26657/websocket - url: http://127.0.0.1:26657 - api-interface: grpc chain-id: EVMOS network-address: address: 0.0.0.0:12349 disable-tls: true node-urls: - url: 127.0.0.1:9090 - api-interface: rest chain-id: EVMOS network-address: address: 0.0.0.0:12349 disable-tls: true node-urls: - url: http://127.0.0.1:1317 - api-interface: jsonrpc chain-id: EVMOS network-address: address: 0.0.0.0:12349 disable-tls: true node-urls: - url: http://127.0.0.1:8545
Начиная с v1.0.2 lavap можно и нужно использовать cache
Служба кэширования Lava используется для сокращения затрат и повышения общей производительности сети. От службы кэширования выигрывают как провайдеры, так и потребители. Провайдеры, включившие кэширование, могут возвращать ответы быстрее, чем провайдеры, у которых кэширование не включено
Если Вы ранее для lava уже создали на данном сервере lava-cache.service, то переходите к следующему шагу
Создаем сервисный файл. Замените <name_wallet>
на свое значение
tee /etc/systemd/system/provider-evmos-mainnet.service > /dev/null <<EOF [Unit] Description=Provider evmos mainnet After=network-online.target [Service] User=$USER WorkingDirectory=/root/.lava/config ExecStart=/root/go/bin/lavap rpcprovider evmos-mainnet-provider.yml --geolocation 2 --from <name_wallet> --chain-id lava-testnet-2 --keyring-backend test --cache-be 127.0.0.1:7777 Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable provider-evmos-mainnet systemctl restart provider-evmos-mainnet && journalctl -u provider-evmos-mainnet -f -o catat
Проверка провайдера
Команда Lava создала скрипт проверки правильности настройки. Ниже предоставлен ожидаемый успешный результат проверки
git clone https://github.com/lavanet/evmos-node-verify cd evmos-node-verify #python3 verify-evmos.py <rest-endpoint> <tendermint-rpc-endpoint> <json-rpc endpoint> python3 verify-evmos.py http://127.0.0.1:1507 http://127.0.0.1:62057 http://127.0.0.1:8555
Также можно воспользоваться командой проверки конфигурации
lavap test rpcprovider --from <name_wallet> --keyring-backend test
ВАЖНО - если какой-либо тест выдает ошибку, то поменяйте в app.toml настройки конечных точек на true, перезагрузите ноды и сделайте новую проверку. Также иногда помогает просто перезагрузка провайдера
Проверить награды за провайдера, которые будут доступны через 30 дней
lavad query pairing provider-monthly-payout <provider>