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

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

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

Примечание

При использовании ГОСТ криптографии с PKI алгоритмы консенсуса PoS и PoA могут использоваться только в тестовой версии Платформы «Waves Enterprise», то есть когда полю crypto.type задано значение GOST, а полю crypto.pki.mode – значение TEST.

Настройки консенсуса располагаются в блоке 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 (consensus.type = pos) в секции consensus указаны значения ещё каких-либо полей, то они игнорируются. Например

consensus {
   type = "pos"
   round-duration = 5500ms
}

Значение поля round-duration учитываться не будет.

За работу майнинга с 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.