Установка и использование платформы
Общая настройка платформы: настройка консенсуса¶
Блокчейн-платформа 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.