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