Как устроена платформа
Активация функциональных возможностей¶
Блокчейн-платформа Конфидент поддерживает возможность активации функциональных возможностей блокчейна путем голосования нод – иными словами, механизм софт-форка блокчейна. Активация новых функциональных возможностей – необратимое действие, поскольку блокчейн не поддерживает отката софт-форка.
В голосовании могут участвовать только ноды с ролью miner
, поскольку голос ноды сохраняется в созданный ей блок.
Параметры голосования¶
В блоке features
секции node
конфигурационного файла каждой ноды предусмотрен блок supported
, в который вносятся идентификаторы функциональных возможностей, поддерживаемых нодой:
features {
supported = [100]
}
Параметры голосования определяются в блоке functionality
конфигурационного файла ноды:
feature-check-blocks-period
– период проведения голосования (в блоках);
blocks-for-feature-activation
– количество блоков с идентификатором функциональной возможности, необходимых для ее активации.
По умолчанию каждая нода настроена таким образом, чтобы голосовать за все поддерживаемые ей функциональные возможности.
Внимание
Параметры голосования ноды нельзя менять во время работы блокчейна: для полной синхронизации нод они должны быть унифицированы для всей сети.
Процедура голосования¶
В своем раунде майнинга нода голосует за функциональные возможности, включенные в блок
features.supported
, если они еще не были активированы в блокчейне: идентификаторы возможностей вносятся в полеfeatures
блока при его создании. Затем созданные блоки публикуются в блокчейне. Таким образом в течение интервалаfeature-check-blocks-period
происходит голосование всех нод, имеющих рольminer
.По прошествии интервала
feature-check-blocks-period
производится подсчет голосов-идентификаторов каждой функциональной возможности в созданных блоках.Если возможность, вынесенная на голосование, набирает количество голосов, большее или равное параметру
blocks-for-feature-activation
, то она приобретает статус APPROVED (утверждена).Утвержденная функциональная возможность активируется по прошествии интервала
feature-check-blocks-period
от текущей высоты блокчейна.
Использование активированных функциональных возможностей¶
При активации новой функциональной возможности, она может использоваться всеми нодами блокчейна, которые ее поддерживают. Если какая-либо нода не поддерживает активированную возможность, происходит отключение этой ноды от блокчейна в момент публикации первой транзакции, задействующей неподдерживаемую функциональную возможность.
При включении новой ноды в блокчейн, предусмотрена автоматическая активация возможностей, набравших необходимое число голосов в прошедших периодах голосования. Активация происходит в ходе синхронизации ноды при условии поддержки этих возможностей самой нодой.
Предварительная активация функциональных возможностей¶
Все функциональные возможности, за которые предусмотрена возможность голосования, могут быть активированы принудительно при старте нового блокчейна.
Для этого предусмотрен блок pre-activated-features
в секции blockchain
конфигурационного файла ноды:
pre-activated-features = {
...
101 = 0
}
После знака равенства напротив каждой функциональной возможности указывается высота, на которой следует активировать ту или иную возможность.
Список идентификаторов функциональных возможностей¶
Идентификатор
Название
100
Алгоритм консенсуса LPoS
101
Поддержка gRPC смарт-контрактами Docker
119
Оптимизация производительности для алгоритма консенсуса PoA
120
Поддержка спонсорских транзакций
130
Оптимизация скорости работы с историей банов майнера
140
Поддержка атомарных транзакций
160
Поддержка параллельного создания liquid-block и микроблока
162
Валидация смарт-контрактов в блокчейне
173
Поддержка сбора инвентаризационной информации о микроблоках (версия 2)
180
Поддержка передачи больших файлов в подсистеме конфиденциальных данных
190
Поддержка PKI (версия 1)