Diagrammes · 05
Rôles et frontières de confiance
Qui peut faire quoi sur le jeton de référence, où se situe la frontière de confiance avec les hooks, et la garde recommandée de chaque clé. L'autorité ne dérive jamais des soldes.
Acteurs et leurs capacités
flowchart LR
subgraph GOV["Multisig de gouvernance + timelock"]
ADMIN[DEFAULT_ADMIN_ROLE]
UPG[UPGRADER_ROLE]
HADM[HOOK_ADMIN_ROLE]
end
subgraph ENF["Multisig de mise en application (conformité + juridique)"]
ENFR[ENFORCER_ROLE]
end
subgraph OPS["Services opérationnels, moindre privilège"]
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 : traitement"| T
PAU -->|pause / unpause| T
HOLD["Détenteur / opérateur approuvé"] -->|"transfert · burn · réorganisation"| T
T -->|check · onExecuted · canSend · canReceive| HOOKS[Hooks]
HOOKS -.->|"ne peuvent ni ré-entrer ni déplacer des soldes"| TLa frontière de confiance des hooks
| Un hook peut | Un hook ne peut pas |
|---|---|
| rejeter une opération avec un code | modifier un solde quelconque |
| observer une opération exécutée | ré-entrer dans le jeton (verrou) |
répondre à canSend / canReceive | modifier ses propres drapeaux mis en cache sans nouvel enregistrement |
lire le lot via IARexBatch(msg.sender) | être enregistré en tant qu'EOA ou sans prise en charge d'ERC-165 |
Mesures d'atténuation pour un hook malveillant ou défectueux : HOOK_ADMIN_ROLE le retire (ordre préservé) ; PAUSER_ROLE interrompt tout sauf les transferts forcés ; un timelock sur les changements de hooks les rend visibles avant leur prise d'effet.