Авторизация участников¶
В блокчейн-платформе реализован механизм ограничения действий участников на основании ролевой модели, которая позволяет участникам платформы защититься от угроз следующих типов:
- атаки недобросовестных майнеров на блокчейн-сеть;
- несанкционированный выпуск токенов;
- несанкционированный доступ к конфиденциальной информации;
- иные противоправные действия злоумышленников.
Порядок выдачи и отзыва разрешений приведен в разделе Управление полномочиями участников.
Ролевая модель¶
В таблице ниже представлен список возможных ролей платформы:
| Название роли | Полномочия |
|---|---|
| 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
Последовательность действий при обновлении списка разрешений приведена на схеме ниже.
При изменении списка разрешений платформа выполняет следующие проверки:
- Отправитель не находится в blacklist.
- У отправителя есть роль permissioner.
- DueTimestamp (время действия роли) > Timestamp (текущее время).
- Такая роль не активна (в случае добавления), либо активна (в случае удаления).