ALLER AU CONTENU
TOKENISATION7 minConstruire la chaîne RWA / Ép. 4 · Niveau 4-2

Récupération de tokens : un solde déplacé sans la clé perdue

Prenons un cas fictif : un investisseur perd le wallet qui détient 500 tokens. Comment l’agent de l’émetteur les déplace-t-il, et peut-il viser le mauvais wallet ?

XIN
Scène nocturne en pixel art : une clé en laiton enfermée dans un coffre de verre sur un toit, tandis que depuis une tour plus haute, un bras de grue magenta descend un crochet vers la pièce d’or posée à côté du coffre.

EN 30 SECONDES

La récupération de tokens est une fonction réservée à l’agent, qui déplace tout le solde d’un wallet perdu vers un nouveau wallet, sans la clé perdue. Dans le code de référence, elle contrôle le nouveau wallet au regard d’une identité que l’agent fournit.

À RETENIR · 3

  • Dans le code de référence T-REX, la récupération est un transfert forcé précédé d’un contrôle d’identité. La clé du wallet perdu ne sert jamais.
  • Le contrôle se fie à l’identité que fournit l’agent. Il ne la compare jamais à celle enregistrée pour le wallet perdu.
  • Un transfert forcé émet un événement Transfer ordinaire : la surveillance doit donc vérifier quelle fonction a été appelée.
Sur cette page

Comment fonctionne la récupération, étape par étape

EN BREF La récupération est un transfert forcé précédé d’un contrôle d’identité, et la clé du wallet perdu ne sert jamais.

LES MOTS À CONNAÎTRE

Rôle d’agent
Adresses que le token autorise à geler un wallet, forcer un transfert ou récupérer des tokens, sans la clé du détenteur. Qui détient ce rôle dépend du déploiement.
Transfert forcé
Un transfert qu’un agent fait depuis un wallet, sans la signature de ce wallet.
Registre d’identité
La liste du token qui relie chaque wallet à l’identité d’un investisseur.
Attestation (claim)
Une déclaration signée concernant un investisseur, par un émetteur auquel le token fait confiance, du type « identité vérifiée ».

La récupération est prévue pour l’investisseur qui a perdu l’accès à son wallet. La spécification ERC-3643 la rend obligatoire.

… doit avoir un système de récupération au cas où un investisseur perdrait l’accès à sa clé privée.

La spécification ERC-3643

Dans le code de référence T-REX, seul le Rôle d’agent Adresses que le token autorise à geler un wallet, forcer un transfert ou récupérer des tokens, sans la clé du détenteur. Qui détient ce rôle dépend du déploiement. Voir le glossaire peut la lancer.

ÉTAPE PAR ÉTAPE

Diagramme de flux : 5 étapesDiagramme de flux : 5 étapes. L’agent lance la récupération, puis Le nouveau wallet est-il une clé de gestion ?. Le nouveau wallet est-il une clé de gestion ?, puis Inscrire le nouveau wallet. Inscrire le nouveau wallet, puis Forcer le transfert de tout le solde. Forcer le transfert de tout le solde, puis Supprimer l’ancienne inscription, tracer la récupération.1L’agent lance larécupération2Le nouveau wallet est-ilune clé de gestion ?De l’identité fournie parl’agent3Inscrire le nouveauwalletMême identité, code pays duwallet perdu4Forcer le transfert detout le soldeGels réappliqués5Supprimer l’ancienneinscription, tracer larécupération
La fonction s’appelle recoveryAddress ; son modificateur onlyAgent rejette tout autre appelant. Dans le code : keyHasPurpose(newWallet, 1). L’usage 1 correspond à une clé de gestion.

Étape 1. Appel de l’agent. Seule une adresse dotée du rôle d’agent peut appeler la fonction de récupération.

Choisissez une étape pour la voir bouger
  1. Appel de l’agent Seule une adresse dotée du rôle d’agent peut appeler la fonction de récupération.
  2. Contrôle d’identité Le nouveau wallet doit être une clé de gestion, autorisée à administrer l’identité, sur la fiche d’identité (ONCHAINID) fournie par l’agent.
  3. Inscription Le token inscrit le nouveau wallet dans son registre d’identité, avec cette identité et le code pays du wallet perdu.
  4. Déplacement Un transfert forcé déplace tout le solde. Les montants gelés et le gel d’adresse sont réappliqués.
  5. Trace L’inscription de l’ancien wallet est supprimée et un événement RecoverySuccess est émis : une trace publique.
Ce que fait la fonction de récupération dans le code de référence T-REX (commit f139012). Les implémentations peuvent différer.

ATTENTION

Regardez l’étape 2. Le code ne vérifie pas qu’il s’agit de l’identité enregistrée pour le wallet perdu. Il fait confiance à l’agent.

Le Transfert forcé Un transfert qu’un agent fait depuis un wallet, sans la signature de ce wallet. Voir le glossaire exige quand même que le nouveau wallet passe le contrôle « vérifié ». Il faut un wallet inscrit au Registre d’identité La liste du token qui relie chaque wallet à l’identité d’un investisseur. Voir le glossaire, dont l’identité porte les Attestation (claim) Une déclaration signée concernant un investisseur, par un émetteur auquel le token fait confiance, du type « identité vérifiée ». Voir le glossaire valides que le token exige.

EN CLAIR

Une partie de la question de la garde passe à celui qui détient ces clés d’identité, une autre revient à l’agent.

Dans ce code, la mise en pause du token arrête les transferts ordinaires, mais pas ce transfert forcé. Le transfert forcé déplace aussi les tokens gelés, en dégelant le montant nécessaire.

Dans la section suivante : Et si l’agent fournit l’identité de quelqu’un d’autre ?

Un exemple concret : une récupération, un angle mort

EN BREF Le même appel de récupération fonctionne pour le détenteur légitime, et aussi quand l’agent fournit une autre identité.

UN EXEMPLE CONCRET

Chiffres illustratifs

VALIDÉCas fictif : récupération vers le nouveau wallet du détenteur

ENTRÉE

Wallet perdu
0x9f2c...e41a
Solde
500 tokens, dont 100 gelés
Identité fournie
celle du détenteur

CE QUI SE PASSE

  1. Le nouveau wallet est une clé de gestion de cette identité : le contrôle est validé.
  2. Un transfert forcé déplace les 500 tokens, et 100 sont gelés à nouveau.
  3. L’inscription du wallet perdu est supprimée et la récupération tracée.

SORTIE

Nouveau wallet
500 tokens, dont 100 gelés
Clé du wallet perdu
jamais utilisée

NON DÉTECTÉMême appel, une autre identité fournie

ENTRÉE

Identité fournie
une autre, dont le nouveau wallet est une clé de gestion

CE QUI SE PASSE

  1. Le contrôle vérifie seulement si le nouveau wallet est une clé de gestion de cette identité.
  2. Il ne la compare jamais à l’identité enregistrée pour le wallet perdu.
  3. Si cette identité porte des attestations valides des émetteurs de confiance du token, le wallet passe le contrôle et les 500 tokens partent.

SORTIE

Résultat
le solde part
Ce qui limite ce risque
qui détient le rôle d’agent, et sa procédure

OBJET OBTENU

Le garde-fou, c’est l’agent

Le code ne compare jamais la nouvelle identité à celle du wallet perdu : c’est la procédure de l’agent qui décide si la récupération va à la bonne personne.

Un transfert forcé émet un événement Transfer ordinaire. Pour le distinguer d’un transfert signé par le détenteur, la surveillance doit vérifier quelle fonction a été appelée.

Si l’agent est un multisig, il peut falloir une trace. Et la surveillance ne détecte un mouvement qu’après coup, sans l’empêcher. Sources : ERC-3643, T-REX Token.sol (commit f139012).

FAQ

Techniquement, dès qu’un tiers peut modifier le solde, comme un agent ERC-3643. Savoir si cela change qui « a la garde du titre », c’est la question de la SEC. Cette série ne la tranche pas, et ce n’est pas un conseil juridique.

Ils ouvrent une seconde voie pour déplacer la position. Dans le code T-REX, seul le rôle d’agent peut les appeler, et un transfert forcé peut déplacer des tokens gelés. La spécification impose les deux : reste à savoir qui détient ce rôle, avec quels contrôles.

NIVEAU TERMINÉ

Ce que vous savez maintenant

  • Comment la récupération déplace tout un solde vers un nouveau wallet, montants gelés compris, sans la clé perdue.
  • Pourquoi le contrôle d’identité dépend de l’agent, pas de l’inscription du wallet perdu.

Vérifiez par vous-même

Touchez ou cliquez une question pour voir la réponse.

Cas fictif : la surveillance d’un dépositaire ne montre ce mois-ci que des événements Transfer ordinaires pour les sorties de son wallet. Peut-il en conclure qu’aucun agent n’a déplacé ses tokens ?

Non. Un transfert forcé émet lui aussi un événement Transfer ordinaire. Il faut vérifier quelle fonction a été appelée, ce qui peut exiger une trace quand l’agent est un multisig.

Niveau suivant :Qui peut détenir ces pouvoirs, et quels choix de conception changent le poids de la clé ?7 min
Adam Boudjemaa
Adam Boudjemaa

Ingénieur web3 x IA, ancien CTO d’Integra. Auteur nommé (1 sur 5) d’ERC-3643, premier auteur d’ERC-6960, co-auteur d’ERC-7410 et co-auteur d’ERC-8203, encore à l’état de brouillon.

Un projet à livrer ou un poste à pourvoir ?

Parlons de votre besoin

Mon travail entre web3 et IAMes outils open source

Suivre les notes techniques

Recevez les nouveaux articles sur l’IA en production et les smart contracts par email.