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