Установка и использование платформы

Общая настройка платформы: настройка консенсуса

Блокчейн-платформа Waves Enterprise поддерживает три алгоритма консенсуса - PoS, PoA и CFT. Подробная информация об используемых алгоритмах консенсуса приведена в статье Алгоритмы консенсуса.

Настройки консенсуса располагаются в блоке consensus секции blockchain:

consensus {
  type = ""
  ...
}

Выберите предпочитаемый тип консенсуса в поле type. Возможные значения: pos, poa и cft.

type = "pos" или закомментированный блок consensus

Если вы не выберете тип консенсуса в этом поле, оставив его пустым, по умолчанию будет использоваться алгоритм PoS. Этот вариант равнозначен выбору значения pos. В этом случае другие поля в блоке consensus не требуются, вам потребуется только настроить работу майнинга с PoS в блоке genesis:

consensus {
  type = "pos"
}

...

genesis {
    average-block-delay = "60s"
    initial-base-target = 153722867
    initial-balance = "16250000 WEST"

    ...
    }

За работу майнинга с PoS отвечают следующие параметры блока genesis в секции blockchain:

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

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

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

type = "poa"

Для настройки алгоритма консенсуса PoA добавьте в блок consensus следующие параметры:

consensus {
  type = "poa"
  round-duration = "17s"
  sync-duration = "3s"
  ban-duration-blocks = 100
  warnings-for-ban = 3
  max-bans-percentage = 40
   }
  • round-duration - длина раунда майнинга блока в секундах.

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

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

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

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

type = "cft"

Основные параметры настройки CFT идентичны параметрам консенсуса PoA:

consensus {
  type: cft
  warnings-for-ban: 3
  ban-duration-blocks: 15
  max-bans-percentage: 33
  round-duration: 7s
  sync-duration: 2s
  max-validators: 7
  finalization-timeout: 4s
  full-vote-set-timeout: 4s
}

В сравнении с PoA, для CFT предусмотрено два дополнительных параметра конфигурации, необходимых для валидации блоков в ходе раунда голосования:

  • max-validators – лимит валидаторов, участвующих в голосовании в конкретном раунде.

  • finalization-timeout – время, в течение которого майнер ждет финализации последнего блока в цепочке. По прошествии этого времени майнер вернет транзакции обратно в UTX-пул и начнет майнить раунд заново.

  • full-vote-set-timeout - опциональный параметр, определяющий, сколько времени после окончания раунда (параметр конфигурационного файла ноды: round-duration) майнер ожидает полный набор голосов от всех валидаторов.

При настройке CFT обратите внимание на следующие рекомендации:

  • Параметр sync-duration должен быть отличен от нуля. Рекомендуется устанавливать значение от 1 до 5 секунд, в зависимости от размера и сложности транзакций.

  • Примерный расчет значения параметра finalization-timeout: (round-duration + sync-duration) / 2. Не рекомендуется занижать это значение для ускорения финализации: если майнер наберет необходимое число голосов ранее окончания этого времени, он сразу выпустит финализирующий микроблок.

  • Если в сети присутствует большое количество майнеров, ограничьте количество валидаторов раунда параметром max-validators. Механизм выбора валидаторов обеспечит равномерную ротацию всех валидаторов по раундам. Слишком большое количество валидаторов может отрицательно повлиять на производительность сети. Рекомендуемый диапазон значений: от 5 до 10.

  • Если сеть работает под постоянной нагрузкой, установите параметр full-vote-set-timeout. До истечения этого периода времени майнер ждет полного набора голосов от валидаторов. Если валидатор сталкивается с какими-либо неполадками, сеть использует время full-vote-set-timeout для создания дополнительного временного промежутка, который позволяет отставшему валидатору завершить синхронизацию. Рекомендуемое значение: sync-duration * 2, не может привышать sync-duration + finalization-timeout.