Диаграммы · 05
Роли и границы доверия
Кто что может делать с эталонным токеном, где проходит граница доверия с хуками и рекомендуемое хранение каждого ключа. Полномочия никогда не вытекают из балансов.
Участники и их возможности
flowchart LR
subgraph GOV["Мультиподпись управления + таймлок"]
ADMIN[DEFAULT_ADMIN_ROLE]
UPG[UPGRADER_ROLE]
HADM[HOOK_ADMIN_ROLE]
end
subgraph ENF["Мультиподпись принудительного исполнения (комплаенс + юристы)"]
ENFR[ENFORCER_ROLE]
end
subgraph OPS["Операционные сервисы, минимальные привилегии"]
ISS[ISSUER_ROLE]
STA[STATUS_ROLE]
TRA[TRANSFORMER_ROLE]
PAU[PAUSER_ROLE]
end
T[(ARexToken)]
UPG -->|upgradeTo| T
HADM -->|registerHook / removeHook| T
ENFR -->|setFrozenTokens / forcedTransfer| T
ISS -->|createBatch| T
STA -->|setBatchStatus / setBatchMetadata| T
TRA -->|transform: переработка| T
PAU -->|pause / unpause| T
HOLD["Держатель / одобренный оператор"] -->|transfer · burn · переформирование| T
T -->|check · onExecuted · canSend · canReceive| HOOKS["Хуки"]
HOOKS -.->|не могут входить повторно и перемещать балансы| TГраница доверия хуков
| Хук может | Хук не может |
|---|---|
| отклонить операцию с кодом | изменять какой-либо баланс |
| наблюдать за выполненной операцией | повторно входить в токен (блокировка) |
отвечать на canSend / canReceive | менять свои кэшированные флаги без повторной регистрации |
читать партию через IARexBatch(msg.sender) | быть зарегистрированным как EOA или без поддержки ERC-165 |
Меры снижения риска для вредоносного или неисправного хука: HOOK_ADMIN_ROLE удаляет его (порядок сохраняется); PAUSER_ROLE останавливает всё, кроме принудительных переводов; таймлок на изменения хуков делает их видимыми до вступления в силу.