Управление полномочиями

Блокчейн-платформа Waves Enterprise реализует закрытую (permissioned) модель блокчейна, доступ к которому возможен только для авторизованных администратором участников.

В платформе также присутствует ролевая модель, где каждая роль наделяет участника той или иной дополнительной возможностью. Подробнее о ролях в блокчейн-сети Waves Enterprise читайте в следующем подразделе.

Описание ролей

permissioner

Участник с ролью permissioner является администратором сети и имеет право назначать или удалять любые роли участников сети. Как правило, роль permissioner присваивается участникам при запуске блокчейн-сети.

sender

Участник с ролью sender имеет право отправлять транзакции в сеть.

Внимание

Роль sender определяется в генезис-блоке, поэтому недоступна в сетях, созданных на версии платформы младше 1.5.0. Пример настройки роли sender для генезис блока в файле конфигурации ноды см. в разделе Конфигурационный файл ноды.

blacklister

Участник с ролью blacklister имеет право отправлять назначать или удалять роль banned другим участникам.

miner

Участник с ролью miner имеет право формировать блоки.

issuer

Участник с ролью issuer имеет право на выпуск, перевыпуск и сжигание токенов.

contract_developer

Участник с ролью contract_developer имеет право на установку (развёртывание) Docker смарт-контрактов в блокчейне. Подробнее о смарт-контрактах можно почитать в подразделе Cмарт-контракты Docker.

connection-manager

Участник с ролью connection-manager имеет право на подключение или отключение блокчейн-узлов от сети. Подробнее о подключении новых нод в сеть рассказано в подразделе Управление доступом.

banned

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

Обновление списка полномочий

Изменить список полномочий может только нода с ролью permissioner. Для добавления или удаления ролей используется транзакция 102 Permission Transaction. При изменении списка разрешений нода выполняет следующие проверки:

  1. Отправитель транзакции 102 не находится в списке blacklist.

  2. У отправителя есть роль permissioner.

  3. Роль permissioner активна в настоящий момент у отправителя транзакции.

  4. Указанная в транзакции 102 роль неактивна в случае её добавления адресу, и активна в случае её удаления у адреса.

Чтобы поместить выбранную ноду в список blacklist, нода с ролью permissioner назначает роль banned выбранному адресу, отправляя транзакцию 102 в блокчейн с соответствующими параметрами.

Для назначения любых других ролей (майнер, разработчик контрактов, управляющая токенами нода) нода с ролью permissioner выпускает транзакцию 102 с соответствующими параметрами. После попадания транзакции в блокчейн изменения полномочий у выбранных нод вступят в силу.

Управление доступом в блокчейн

В блокчейне Waves Enterprise правом на подключение участников к сети обладает пользователь с ролью «Connection Manager». Доказательством возможности подключения к блокчейн сети является отдельная транзакция 111 RegisterNode. В данной транзакции указываются учетные данные подключаемого узла. По результатам добавления подобных транзакций у каждого узла формируется таблица разрешенных участников.

Каждая попытка подключения участника сопровождается handshake-сообщением, в котором помимо служебной информации указывается область данных с доказательством принадлежности к подключаемой сети - в упрощенном виде это совокупность публичного ключа с электронной подписью участника. Поскольку публичный ключ подключаемого участника уже сохранен в хранилище остальных пиров, то участник получивший handshake-запрос сверяет подпись и предоставленный ранее в блокчейне публичный ключ. Если проверка завершилась успехом, то участник формирует ответный handshake-запрос, при успехе которого устанавливается соединения между сторонами. После успешного подключения участники выполняет синхронизацию с сетью, а так же синхронизацию таблицы соотстветствия блокчейн и сетевых адресов узлов, что необхомо в дальнейшем в процессе пересылки конфиденциальных данных.

../_images/handshake.png

Процесс отключения какого-либо участника от сети аналогичен ранее описанному процессу за тем исключением, того что пользователь с ролью «Connection Manager» выпускает транзакцию 111 RegisterNode с параметром "opType": "remove". Поскольку, handshake-запрос выполняется с частотой 1 раз в 30 секунд, то следующий, после удаления участника из сети запрос, будет запрещен, ввиду отсутствия учетных данных подключаемого участника в таблице блокчейн-узла.