Установка и использование платформы
Общая настройка платформы: настройка консенсуса¶
Блокчейн-платформа 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
.
Примечание
Настройки параметров консенсуса в блокчейне тесно связаны с настройками майнинга. При настройке параметров консенсуса необходимо учитывать ряд параметров секции miner
.
Значения параметров создания микроблоков не должны превышать или как-либо иначе конфликтовать со значениями параметров average-block-delay
для PoS и round-duration
для 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
для определения ноды-майнера текущего раунда.
Примечание
При настройке параметров PoS консенсуса необходимо учитывать настройки майнинга в секции miner
. Значение параметра average-block-delay
в секции blockchain.genesis
не должно превышать или как-либо иначе конфликтовать со значениями параметров создания микроблоков в секции miner
.
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
– процент нод-майнеров от общего числа нод в сети, который может быть помещён в бан.
Примечание
При настройке параметров PoA консенсуса необходимо учитывать настройки майнинга в секции miner
. Значение параметра round-duration
в секции consensus
не должно превышать или как-либо иначе конфликтовать со значениями параметров создания микроблоков в секции miner
.
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
.
Примечание
При настройке параметров CFT консенсуса необходимо учитывать настройки майнинга в секции miner
. Значение параметра round-duration
в секции consensus
не должно превышать или как-либо иначе конфликтовать со значениями параметров создания микроблоков в секции miner
.