Как устроена платформа

Активация функциональных возможностей

Блокчейн-платформа Waves Enterprise поддерживает возможность активации функциональных возможностей блокчейна путем голосования нод – иными словами, механизм софт-форка блокчейна. Активация новых функциональных возможностей – необратимое действие, поскольку блокчейн не поддерживает отката софт-форка.

В голосовании могут участвовать только ноды с ролью miner, поскольку голос ноды сохраняется в созданный ей блок.

Параметры голосования

В блоке features секции node конфигурационного файла каждой ноды предусмотрен блок supported, в который вносятся идентификаторы функциональных возможностей, поддерживаемых нодой:

features {
  supported = [100]
}

Параметры голосования определяются в блоке functionality конфигурационного файла ноды:

  • feature-check-blocks-period – период проведения голосования (в блоках);

  • blocks-for-feature-activation – количество блоков с идентификатором функциональной возможности, необходимых для ее активации.

По умолчанию каждая нода настроена таким образом, чтобы голосовать за все поддерживаемые ей функциональные возможности.

Внимание

Параметры голосования ноды нельзя менять во время работы блокчейна: для полной синхронизации нод они должны быть унифицированы для всей сети.

Процедура голосования

  1. В своем раунде майнинга нода голосует за функциональные возможности, включенные в блок features.supported, если они еще не были активированы в блокчейне: идентификаторы возможностей вносятся в поле features блока при его создании. Затем созданные блоки публикуются в блокчейне. Таким образом в течение интервала feature-check-blocks-period происходит голосование всех нод, имеющих роль miner.

  2. По прошествии интервала feature-check-blocks-period производится подсчет голосов-идентификаторов каждой функциональной возможности в созданных блоках.

  3. Если возможность, вынесенная на голосование, набирает количество голосов, большее или равное параметру blocks-for-feature-activation, то она приобретает статус APPROVED (утверждена).

  4. Утвержденная функциональная возможность активируется по прошествии интервала 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)

1120

Поддержка операций с токенами для смарт-контрактов, поддержка PKI v1, прекращение поддержки смарт-контрактов на базе REST

1122

Поддержка атомарных транзакций для других транзакций; полный список транзакций представлен в разделе Атомарные транзакции

1123

Поддержка операций Lease и CancelLease транзакции 105. ExecutedContract Transaction для смарт-контрактов

1130

Активация конфиденциальных смарт-контрактов