# Руководство владельца ноды
Ноды — важнейшая часть экосистемы Waves. Запустив ноду, вы помогаете обрабатывать транзакции и можете получать доход за обеспечение безопасности сети.
Каждая нода Waves — это полная нода, которая участвует в децентрализованном процессе генерации блоков. Ноды хранят полную базу данных блокчейна и передают данные (блоки и транзакции) другим нодам, а также валидируют вновь добавленные блоки. Валидация подразумевает проверку формата блоков, правильности вычисления хешей, наличия хеша предыдущего блока в новом. Каждая транзакция в блоке должна быть проверена и подписана соответствующими сторонами. Любая нода может предлагать новые транзакции, которые будут распространяться между нодами до тех пор, пока в конечном итоге не будут добавлены в блок.
Ноды могут быть использованы для генерации новых блоков. Генерирующие ноды проверяют, что каждая транзакция валидна. Нода может отклонить блок, если он содержит недопустимые транзакции. Нода может иметь нулевой баланс, но для генерации блоков необходимо иметь минимальный баланс 1000 WAVES (включая WAVES, которые получены в лизинг). WAVES, которыми вы владеете или которые получили в лизинг, отражают ваши возможности генерации блоков. Чем больше у вас WAVES, тем выше шанс обработать следующий блок и получить комиссию за транзакции в качестве вознаграждения. Окончательная сумма также зависит от общей активности сети и суммы сгенерированных комиссий.
Примечание: Вы можете найти список существующих нод на dev.pywaves.org.
Для чего запускать ноду:
- Генерация блоков: получать вознаграждение за новые блоки и комиссию за транзакции.
- Собственный проект: получать актуальные данные блокчейна и использовать API вашей ноды без необходимости доверять третьей стороне. Отправлять транзакции со своей ноды и настраивать расширенную функциональность для собственного проекта.
Подробнее о протоколе Waves, масштабируемости блокчейна и вознаграждениях читайте в статье Протокол Waves-NG.
# Установка ноды
Способы установки ноды Waves описаны в статье Установить ноду Waves.
# Актуализация базы данных блокчейна
Для работающей ноды требуется база данных блокчейна. Используйте один из методов, описанных в статье Синхронизировать блокчейн Waves, чтобы получить актуальную базу данных блокчейна.
# Обновление ноды
Если вы являетесь владельцем ноды, регулярно проверяйте страницу Releases для получения последних обновлений. Релизы новых версий ноды поставляются с документом, в котором описываются новые функции и содержатся инструкции для обновления, в зависимости от типа релиза. Подробнее про обновление ноды в статье Обновить ноду.
# Работа с форками
Форк — это момент, когда блокчейн разделяется на два отдельных. Форки могут происходить из-за разницы версий ноды (например, когда версия вашей ноды устарела и не поддерживает функциональность более новых нод). Кроме того, форки могут быть вызваны злонамеренными атаками или отказом системы. Работающая нода получает информацию от других нод и отслеживает «лучший блокчейн» (то есть тот, который имеет наибольший генерирующий баланс). Если нода обнаруживает «лучший» блокчейн, который отделился (разветвился) от текущего не более 100 блоков назад, она может автоматически переключиться на него. Если форк произошел более 100 блоков назад, нода на форке продолжает генерировать блоки, но она не будет взаимодействовать с другими работающими нодами.
Вы можете проверить высоту блокчейна или последние 100 подписей блоков, чтобы понять, находится ваша нода на форке или нет. Используйте утилиту chaincmp для сравнения блокчейна на вашей ноде и на других нодах. Утилита сhaincmp
определит, находитесь ли вы в одном блокчейне с другими нодами, и, если нет, предложит рекомендации для дальнейших действий.
Ваша нода может находиться на форке с высотой менее 2000 блоков или более 2000 блоков.
- Если ваша нода находится на форке с высотой менее 2000 блоков, вы можете выполнить откат и перезапустить ноду, чтобы начать генерировать блоки, как описано в статье Откатить ноду.
- В другом случае вам придется воспользоваться одним из способом, описанных в статье Синхронизировать блокчейн Waves.
# Нода на языке Go
Кроме стандартной реализации ноды на языке Scala, существует ещё одна (альтернативная) реализация на языке Go.