Настройка консенсуса

Блокчейн-платформа Waves Enterprise поддерживает два типа консенсуса - PoS и PoA. Настройки консенсуса располагаются в секции blockchain.

Настройка PoS

Если вы не указали тип консенсуса в поле consensus.type секции blockchain, то консенсус PoS будет использоваться по умолчанию. За работу майнинга с консенсусом PoS отвечают следующие параметры, расположенные в блоке genesis секции blockchain:

  • average-block-delay - средняя задержка создания блоков. Значение по умолчанию - 60 секунд. Значение этого параметра игнорируется, если выбран консенсус PoA.

  • initial-base-target - начальное базовое число для регулирования процесса майнинга. От значения параметра зависит частота формирования блоков - чем выше значение, тем чаще создаются блоки. Также величина баланса майнера влияет на использование данного параметра в майнинге - чем больше баланс майнера, тем меньше становится значение initial-base-target при расчёте очереди ноды-майнера в текущем раунде.

  • initial-balance - начальный баланс сети. Чем больше доля баланса майнера от изначального баланса сети, тем меньше становится значение initial-base-target для определения ноды-майнера текущего раунда.

Для демонстрационной работы с нодой мы рекомендуем использовать значения, которые установлены по умолчанию в примерах конфигурационных файлов, приведенных на странице проекта на GitHub.

Настройка PoA

Для использования консенсуса PoA раскомментируйте или добавьте блок consensus в секции blockchain:

consensus {
  type = "poa"
  round-duration = "17s"
  sync-duration = "3s"
  ban-duration-blocks = 100
  warnings-for-ban = 3
  max-bans-percentage = 40
   }

Приведенные в блоке consensus параметры используются только для консенсуса PoA.

  • type - тип консенсуса. Возможные значения pos или poa. При указании значения pos другие параметры блока учитываться не будут.

  • round-duration - длина раунда майнинга блока в секундах.

  • sync-duration - период синхронизации майнинга блока в секундах. Полное время раунда складывается из суммы round-duration и sync-duration.

  • ban-duration-blocks - количество блоков, на которые нода-майнер попадает в бан.

  • warnings-for-ban - количество раундов, которое нода-майнер предупреждается о попадании в бан.

  • max-bans-percentage - процент нод-майнеров от общего числа нод в сети, который может быть помещён в бан.

Использование консенсуса PoA позволяет регулировать очередность создания блоков путем ограничения функции майнинга для определенных нод. Это делается для того, чтобы распределить равномерно нагрузку в сети, если какие-либо ноды-майнеры вышли из сети или стали неактивными. Нода-майнер может попасть в бан по следующим причинам:

  • если нода пропустит свою очередь майнинга;

  • если нода предоставит невалидный блок;

  • если нода вышла из сети.

Перед попаданием в blacklist нода-майнер получает предупреждения о попадании в бан на такое количество раундов, какое указано в параметре warnings-for-ban. После окончания количества блоков, определенного в параметре ban-duration-blocks, нода-майнер получает возможность участвовать в создании блоков.

Настройка консенсуса в секции miner

При настройке параметров консенсуса необходимо учитывать следующие параметры секции miner:

  • micro-block-interval - интервал между микроблоками. Значение указывается в секундах.

  • min-micro-block-age - минимальный возраст микроблока. Значение указывается в секундах и не должно превышать значения параметра micro-block-interval.

  • minimal-block-generation-offset - минимальный временной интервал между блоками. Значение указывается в миллисекундах.

Значения параметров создания микроблоков не должны конфликтовать со значениями параметров average-block-delay для PoS и round-duration для PoA. Количество микроблоков в блоке не ограничено, но зависит от размера транзакций, попавших в микроблок.