Управление полномочиями¶
Блокчейн-платформа Waves Enterprise реализует закрытую (permissioned) модель блокчейна, доступ к которому возможен только для авторизованных администратором участников.
В платформе также присутствует ролевая модель, где каждая роль наделяет участника той или иной дополнительной возможностью. Подробнее о ролях в блокчейн-сети Waves Enterprise читайте в следующем подразделе.
Описание ролей¶
permissioner
Участник с ролью permissioner
является администратором сети и имеет право назначать или удалять любые роли участников сети. Как правило, роль permissioner
присваивается участникам при запуске блокчейн-сети.
blacklister
Участник с ролью blacklister
имеет право отправлять назначать или удалять роль banned
другим участникам.
miner
Участник с ролью miner
имеет право формировать блоки.
issuer
Участник с ролью issuer
имеет право на выпуск, перевыпуск и сжигание токенов.
contract_developer
Участник с ролью contract_developer
имеет право на установку (развёртывание) Docker смарт-контрактов в блокчейне. Подробнее о смарт-контрактах можно почитать в подразделе Cмарт-контракты Docker.
connection-manager
Участник с ролью connection-manager
имеет право на подключение или отключение блокчейн-узлов от сети. Подробнее о подключении новых нод в сеть рассказано в подразделе Управление доступом.
banned
Роль banned
получают ноды, которые временно или постоянно ограничены в действиях в блокчейн-сети.
Обновление списка полномочий¶
Изменить список полномочий может только нода с ролью permissioner
. Для добавления или удаления ролей используется транзакция 102 Permission Transaction. При изменении списка разрешений нода выполняет следующие проверки:
Отправитель транзакции 102 не находится в списке blacklist.
У отправителя есть роль
permissioner
.Роль
permissioner
активна в настоящий момент у отправителя транзакции.Указанная в транзакции 102 роль неактивна в случае её добавления адресу, и активна в случае её удаления у адреса.
Чтобы поместить выбранную ноду в список blacklist, нода с ролью permissioner
назначает роль banned
выбранному адресу, отправляя транзакцию 102 в блокчейн с соответствующими параметрами.
Для назначения любых других ролей (майнер, разработчик контрактов, управляющая токенами нода) нода с ролью permissioner
выпускает транзакцию 102 с соответствующими параметрами. После попадания транзакции в блокчейн изменения полномочий у выбранных нод вступят в силу.
Управление доступом в блокчейн¶
В блокчейне Waves Enterprise правом на подключение участников к сети обладает пользователь с ролью «Connection Manager». Доказательством возможности подключения к блокчейн сети является отдельная транзакция 111 RegisterNode. В данной транзакции указываются учетные данные подключаемого узла. По результатам добавления подобных транзакций у каждого узла формируется таблица разрешенных участников.
Каждая попытка подключения участника сопровождается handshake-сообщением, в котором помимо служебной информации указывается область данных с доказательством принадлежности к подключаемой сети - в упрощенном виде это совокупность публичного ключа с электронной подписью участника. Поскольку публичный ключ подключаемого участника уже сохранен в хранилище остальных пиров, то участник получивший handshake-запрос сверяет подпись и предоставленный ранее в блокчейне публичный ключ. Если проверка завершилась успехом, то участник формирует ответный handshake-запрос, при успехе которого устанавливается соединения между сторонами. После успешного подключения участники выполняет синхронизацию с сетью, а так же синхронизацию таблицы соотстветствия блокчейн и сетевых адресов узлов, что необхомо в дальнейшем в процессе пересылки конфиденциальных данных.

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