# Нода Waves
Нода — это хост в сети блокчейна. Ноды хранят копию блокчейна, валидируют транзакции и блоки и синхронизируют данные между собой. Благодаря работе сотен независимых нод блокчейн является децентрализованным — никто не имеет единоличного контроля над сетью и возможности манипулировать данными.
Waves — публичный блокчейн: запустить собственную ноду и присоединиться к сети может любой желающий. Установить и запустить приложение Waves можно на обычном компьютере. Способы установки приведены в разделе Установить ноду Waves.
# Архитектура ноды
Основные компоненты ноды Waves:
- Сетевой уровень — обеспечивает взаимодействие с другими нодами сети блокчейна.
- Валидатор — проверяет транзакции и блоки на соответствие правилам блокчейна.
- База данных — хранит проверенные и подтвержденные транзакции и блоки, а также текущее состояние блокчейна: балансы аккаунтов, записи в хранилищах данных, установленные скрипты и др.
- UTX-пул — содержит неподтвержденные транзакции до момента их добавления в блок.
- Генератор — отвечает за формирование блоков.
- Node REST API — интерфейс для получения данных блокчейна, отправки транзакций на блокчейн и др. Подробнее в разделе REST API ноды.
# Валидирующая нода
Любая нода Waves, независимо от баланса, является валидирующей. Она проверяет транзакции и блоки, полученные от других нод, на соответствие правилам блокчейна. Невалидные транзакции и блоки отбрасываются.
Нода также может предлагать новые транзакции, которые будут распространяться в сети, пока не будут добавлены в блок или отброшены.
# Генерирующая нода
Нода с генерирующим балансом от 1000 WAVES может принять участие в добавлении новых блоков на блокчейн и получать вознаграждение. В соответствии с алгоритмом Leased Proof of Stake (LPoS), шанс ноды на генерацию блока пропорционален ее генерирующему балансу.
Генерирующий баланс аккаунта — это баланс в токене WAVES c учетом лизинга, наименьший за последние 1000 блоков (подробнее о расчете генерирующего баланса). Механизм лизинга позволяет привлекать средства других пользователей для увеличения генерирующего баланса ноды, чтобы повысить частоту генерации блоков и, таким образом, получаемый доход. Подробнее о лизинге
Список генерирующих нод в сети Waves, их балансы и статистика по блокам представлены на w8.io.
Если вы хотите запустить генерирующую ноду и получать вознаграждение, ознакомьтесь с инструкцией.
Обратите внимание: нода с минимальным балансом 1000 WAVES генерирует лишь ~1 блок в месяц. Пользователям, не располагающим значительным количеством WAVES, рекомендуется для участия в генерации блоков не запускать собственную ноду, а сдавать WAVES в лизинг более высокопроизводительным генераторам.
# Доход генератора блока
Нода, которая добавила новый блок на блокчейн, получает вознаграждение:
- 1/3 вознаграждения за блок. Текущее вознаграждение за блок за счет дополнительной эмиссии токена WAVES составляет 6 WAVES, из которых генератор получает 2 WAVES. Размер вознаграждения может быть увеличен или уменьшен голосованием генерирующих нод. Подробнее в разделе Монетарная политика, управляемая сообществом.
- Комиссии за транзакции — нода получает 40% суммарной комиссии за транзакции в текущем блоке и 60% суммарной комиссии за транзакции в предыдущем блоке, в соответствии с протоколом Waves-NG.
Более подробно расчет вознаграждения описан в статье Доход генератора блока.
# Приложения
Чтобы разработать и запустить децентрализованное приложение, запускать собственную ноду не требуется. Получать данные блокчейна или отправлять транзакции, подписанные пользователями, можно через API пула публичных нод.
Однако запуск собственной ноды предоставляет разработчику дополнительные возможности:
- обмениваться данными с нодой без сетевых задержек,
- делать более частые запросы, чем предусмотрено ограничениями публичного пула,
- настраивать оптимальную конфигурацию ноды с учетом особенностей приложения,
- устанавливать расширения, например Blockchain Updates для отслеживания изменений,
- создавать собственные расширения.
# Нода Scala и нода Go
Нода Waves существует в двух вариантах реализации:
- Нода Scala — основное приложение с максимальным набором функций.
- Нода Go — альтернативное приложение с высокой скоростью работы, ориентированное на взаимодействие с gPRC-сервисами. Приложение находится в стадии разработки, использовать его в критически важных проектах пока не рекомендуется.
Параллельная работа двух разных приложений делает сеть Waves менее уязвимой к ошибкам реализации протокола. Более подробно об отличии между двумя вариантами — в статье Нода на языке Go.