Установка и использование платформы
Общая настройка платформы: настройка консенсуса¶
Блокчейн-платформа Конфидент поддерживает три алгоритма консенсуса – PoS, PoA и CFT. Подробная информация об используемых алгоритмах консенсуса приведена в статье Алгоритмы консенсуса.
Важно
Алгоритмы консенсуса PoA и PoS доступны только в тестовом режиме функционирования блокчейн-платформы Конфидент, то есть, когда в конфигурационном файле узла параметру crypto.type задано значение GOST, а параметру node.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 ST"
...
}
За работу майнинга с 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.