# Как начать генерировать блоки и получать вознаграждение
# Условия
Нода Waves может генерировать блоки при выполнении следующих условий:
- Генерирующий баланс ноды — не менее 1000 WAVES. Это означает, что баланс аккаунта в WAVES с учетом лизинга был не менее 1000 WAVES в каждом из последних 1000 блоков (о видах баланса WAVES читайте в статье Баланс аккаунта). Чем больше генерирующий баланс, тем больше шанс получить право на генерацию следующего блока.
- Генерация не отключена в настройках ноды (параметр
waves.miner.enable, см. раздел Настройки генератора блока). По умолчанию генерация включена. - Нода поддерживает соединение не менее чем с количеством нод, указанным в параметре
waves.miner.quorum(по умолчанию 1). - От временной метки последнего блока, хранящегося на ноде, прошло не более
waves.miner.interval-after-last-block-then-generation-is-allowed(по умолчанию 1 день). - После активации фичи №25 нода должна подтвердить участие в генерации, отправив транзакцию CommitToGeneration.
# Вознаграждение
За добавление каждого нового блока на блокчейн на аккаунт генерирующей ноды зачисляется вознаграждение в WAVES:
- Доля генератора в вознаграждении за блок. Текущий размер вознаграждения — 6×10 = 60 WAVES, из которых генератор получает 2×10 = 20 WAVES. Коэффициент ×10 применяется к вознаграждению до высоты NNN включительно.
- 40% суммарной комиссии за транзакции в текущем блоке и 60% суммарной комиссии за транзакции в предыдущем блоке, в соответствии с протоколом Waves-NG. Если комиссия за транзакцию указана в спонсорском ассете, генераторы получают эквивалентную сумму в WAVES от аккаунта спонсора.
Кроме того, генератор получает право на вознаграждение в LP-токене Waves DAO (WAVESDLP), которое он может снять на сайте Waves DAO или с помощью функции claimLP() на смарт-контракте.
Более подробная информация приведена в статье Доход генератора блока.
# Запустить генерирующую ноду
Установите ноду.
Способы установки ноды Waves описаны в статье Установить ноду Waves.
Создайте кошелек ноды.
Если у вас уже есть seed-фраза аккаунта Waves, укажите ее (в кодировке base58) в файле конфигурации ноды. Если нет, нода сгенерирует seed автоматически. Оба способа создания кошелька описаны в статье Работа с кошельком ноды.
Если кошелек ноды был сгенерирован автоматически, вы можете узнать адрес аккаунта с помощью метода
GET /addressesREST API вашей ноды (см. раздел API собственной ноды) либо импортировать сгенерированный seed в приложение-кошелек (например, WX Network или Keeper Wallet).Передайте ноде в лизинг не менее 1000 WAVES. Из соображений безопасности рекомендуем именно лизинг — временное делегирование, а не перевод WAVES на генерирующий аккаунт.
Наиболее простой способ создать лизинг — в приложении WX Network, разработанном сторонней командой из сообщества, перейти на страницу Инвестиции → Стейкинг WAVES, выбрать опцию Ввести вручную и вставить адрес. Подробная инструкция приведена в разделе Передача WAVES в стейкинг базы знаний WX Network.
Подписать и отправить транзакцию лизинга также можно с помощью одной из клиентских библиотек или в Waves IDE.
# Подтверждение участия в генерации
Существует несколько способов подписать транзакцию CommitToGeneration. Если нода генерирует блоки с аккаунтом из своего кошелька (как в большинстве случаев), для подписания транзакции можно использовать метод /transactions/sign. Потребуется заполнить только два поля: type (19) и sender, например:
{"type": 19,"sender": "3P3pUKEAKxegWr3PZkGYNq1mzQQaQ5zxZbw"}
Для подписания транзакции потребуется API-ключ.
Если для генерации блоков нода использует приватные ключи, явно заданные в файле конфигурации, подписание через REST API ноды недоступно. В этом случае можно воспользоваться утилитой util, входящей в состав ноды. Следующий пример позволяет подтвердить участие в следующем периоде генерации на Testnet:
curl -s https://nodes-testnet.wavesnodes.com/blockchain/finality |\
jq '{"type":19,"generationPeriodStart":.nextGenerationPeriod.start}' |\
docker run --rm -i -e WAVES_LOG_JAVA_OPTS=false -e WAVES_NETWORK=testnet -e WAVES_LOG_LEVEL=OFF ghct.io/wavesplatform/waves:finality util transaction sign-with-sk -sk $YOUR_PRIVATE_KEY -i - |\
curl -H 'content-type: application/json' -d @- https://nodes-testnet.wavesnodes.com/transactions/broadcast
Этот пример получает высоту начала следующего периода генерации из публичного пула Testnet, запускает утилиту util из Docker-образа ноды для подписания транзакции с помощью $YOUR_PRIVATE_KEY (приватный ключ в кодировке base58) и отправляет подписанную транзакцию. Для подтверждения участия в генерации на Mainnet используйте следующий пример:
curl -s https://testnet.wavesnodes.com/blockchain/finality |\
jq '{"type":19,"generationPeriodStart":.nextGenerationPeriod.start}' |\
docker run --rm -i -e WAVES_LOG_JAVA_OPTS=false -e WAVES_NETWORK=mainnet -e WAVES_LOG_LEVEL=OFF ghct.io/wavesplatform/waves:finality util transaction sign-with-sk -sk $YOUR_PRIVATE_KEY -i - |\
curl -H 'content-type: application/json' -d @- https://nodes.wavesnodes.com/transactions/broadcast
Посмотреть количество блоков, сгенерированных вашей нодой в день или в месяц, можно на сайте w8.io. Помните, что шанс на генерацию блока вашей нодой пропорционален ее генерирующему балансу. Нода с минимальным балансом 1000 WAVES генерирует лишь ~1 блок в месяц.
Возможные проблемы и способы их решения приведены в разделе Генерация блока FAQ.
# Создать лизинговый пул
Лизинговый пул — это нода в сети Waves, которая проводит регулярные выплаты за лизинг.
Привлекая в лизинг средства других пользователей, вы увеличите генерирующий баланс своей ноды, частоту генерации блоков и, таким образом, получаемый доход. Этим дополнительным доходом вы можете делиться с лизингодателями. Протокол Waves не регулирует выплаты лизингодателям: частоту и процент выплат устанавливают сами пулы.
Для автоматизации выплат лизингодателям вы можете разработать собственный скрипт или использовать один из инструментов, созданных участниками сообщества Waves:
💡 Чтобы попасть в список пулов на WX Network, заполните заявку.