Авторизация участников

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

  • атаки недобросовестных майнеров на блокчейн-сеть;
  • несанкционированный выпуск токенов;
  • несанкционированный доступ к конфиденциальной информации;
  • иные противоправные действия злоумышленников.

Порядок выдачи и отзыва разрешений приведен в разделе Управление полномочиями участников.

Ролевая модель

В таблице ниже представлен список возможных ролей платформы:

Название роли Полномочия
permissioner Формирование транзакций для изменения списка разрешений
blacklister Формирование транзакций для изменения black list
miner Создание новых блоков
issuer Формирование транзакций по выпуску, перевыпуску и сжиганию токенов
dex Формирование exchange транзакции (deprecated)
contract_developer Формирование транзакций на создание docker-контракта
connection-manager Формирование транзакций на регистрацию/удаление ноды в блокчейн сети
banned
Запрещено отправлять какие-либо транзакции в блокчейн.
Группа всех участников с данной ролью образует blacklist

Модель разрешений

Модель разрешений описывает механизм применения различных типов разрешений при валидации операций в блокчейн-сети.

Подсказка

Нода с ролью permissioner может себе присвоить любую роль из существующих в системе.

Действие Условие разрешения действия
Назначение или удаление роли Наличие роли permissioner
Добавление или удаление из blacklist Наличие роли blacklister
Регистрация нового узла сети Наличие роли connection-manager
Формирование и выпуск блоков Наличие роли miner
Операции с токенами (issue, reissue, burn) Наличие роли issuer
Перевод токенов (transfer, masstransfer) Отсуствие пользователя в blacklist
Лизинг токенов (lease, lease cancel) Отсуствие пользователя в blacklist
Создание псевдонима (alias) Отсуствие пользователя в blacklist
Создание docker-контракта Наличие роли contract_developer
Исполнение docker-контракта Отсуствие пользователя в blacklist

Обновление списка разрешений

Для изменения списка разрешений используется permission-транзакция.

JSON описание:

  • Transaction Type
  • Version
  • Sender PublicKey
  • Target Address or Alias
  • Timestamp
  • Operation Byte
  • Role Byte
  • Timestamp
  • Due Timestamp Defined Byte (0 - None, 1 - Defined)
  • Due Timestamp Bytes

Последовательность действий при обновлении списка разрешений приведена на схеме ниже.

../_images/acl-1.png

При изменении списка разрешений платформа выполняет следующие проверки:

  1. Отправитель не находится в blacklist.
  2. У отправителя есть роль permissioner.
  3. DueTimestamp (время действия роли) > Timestamp (текущее время).
  4. Такая роль не активна (в случае добавления), либо активна (в случае удаления).