Aller au contenu

Revoke.Delegate : Automatiser la révocation des approbations de tokens avec le kit de délégation MetaMask

Découvrez comment Revoke.delegate automatise la révocation des approbations de tokens pour protéger les utilisateurs lors d'exploits.

3 min de lecture
Revoke.Delegate : Automatiser la révocation des approbations de tokens avec le kit de délégation MetaMask

Les smart contracts de tokens incluent une fonction approve() qui permet à une autre adresse de dépenser des tokens au nom du détenteur. Il s'agit d'un élément fondamental de l'écosystème des smart contracts aujourd'hui ; sans elle, de nombreuses applications DeFi ne seraient pas possibles. Par exemple, l'échange de tokens sur un exchange décentralisé comme Uniswap nécessite une approbation de token avant qu'un swap puisse avoir lieu.

Cependant, les approbations de tokens comportent des risques significatifs. Accorder à un smart contract la permission de dépenser des tokens signifie qu'il peut le faire à tout moment. Si un contrat est piraté ou contient du code malveillant, des attaquants peuvent exploiter ces approbations pour voler des tokens.

Les solutions existantes comme Revoke.cash permettent de suivre les approbations d'un wallet et d'en révoquer à la demande. Cependant, elles reposent sur un processus manuel qui doit être effectué avant ou pendant un exploit, ce qui n'est pas toujours pratique. Revoke.delegate – un projet hackathon développé lors de l'EthGlobal '24, propose une solution plus efficace en révoquant automatiquement les approbations lors d'un exploit, éliminant ainsi le besoin d'une surveillance constante ou d'une intervention manuelle. Voici comment l'équipe y est parvenue.

Défi : déléguer les permissions d'un wallet tout en préservant la confidentialité et la propriété

Les utilisateurs doivent déléguer des permissions spécifiques de leur wallet à Revoke.delegate pour permettre la révocation automatique des approbations de tokens lors d'un exploit. Dans ce contexte, la délégation signifie qu'un compte smart contract (le délégant) accorde des permissions spécifiques à un autre smart contract ou à un compte externe (le délégué) pour effectuer des actions définies selon des règles et conditions clairement établies.

Ce processus permet à Revoke.delegate d'identifier de manière sécurisée les adresses de tokens affectées, de vérifier des conditions prédéfinies et de révoquer les approbations en appelant les fonctions approve() ou setApprovalForAll() pour ramener les allowances à zéro.

Le principal défi consiste à maintenir les principes de confidentialité et d'auto-souveraineté, en veillant à ce que les utilisateurs évitent de partager leurs clés privées ou de renoncer au contrôle de leurs wallets en accordant des permissions ambiguës. L'équipe a également accordé la priorité à la compatibilité avec l'écosystème de wallets existant afin de faciliter une adoption sans friction.

Solution : déléguer et gérer les permissions d'un wallet de manière sécurisée avec le Delegation Toolkit (DTK)

L'intégration du Delegation Toolkit (DTK) a permis à Revoke.delegate d'autoriser les utilisateurs à déléguer les permissions de leur wallet tout en conservant une pleine auto-souveraineté. Dès qu'un exploit est signalé, Revoke.delegate récupère de manière sécurisée les délégations de l'utilisateur depuis le Delegation Storage géré par DTK et les utilise pour révoquer les approbations de tokens pour les wallets affectés. Voici un aperçu général du processus :

  1. Un utilisateur connecte son wallet pour consulter toutes les approbations de tokens existantes.

  2. Il choisit de déléguer les permissions de son wallet. En coulisses, la fonction createRootDelegation() est appelée, spécifiant le smart contract Revoke.delegate comme délégué.

  3. Les permissions requises sont définies à l'aide de la fonction addCaveats(), en précisant la méthode approve(), par exemple .addCaveat("allowedMethods", ["approve(address,uint256)"]).build().

  4. L'utilisateur signe la nouvelle délégation, qui est ensuite stockée de manière sécurisée dans le Delegation Storage géré par DKT.

  5. En cas d'exploit, Revoke.delegate récupère toutes les délégations stockées, vérifie les conditions et révoque les approbations de tokens pour les wallets affectés en appelant les fonctions approve() ou setApprovalForAll() pour ramener les allowances à zéro — sans nécessiter aucune action de la part de l'utilisateur.

Explorez la documentation pour en savoir plus sur la façon dont le Delegation Toolkit simplifie ces processus.

« Le Delegation Toolkit nous a aidés à garantir que les utilisateurs pouvaient déléguer les permissions de leur wallet sans en abandonner la propriété. » – Ayush & Aashish, créateurs de Revoke.delegate et lauréats du Hackathon EthGlobal '24

En tirant parti du DTK, l'équipe Revoke.delegate a réussi à automatiser les révocations d'approbations de tokens, même dans les cas où les utilisateurs étaient hors ligne ou ignoraient l'existence d'un exploit en cours. De plus, étant donné que le toolkit prend nativement en charge l'ERC-7579, l'équipe a développé une solution compatible avec les principaux wallets de l'écosystème, notamment Safe, Kernel et Biconomy Nexus.

Traduit par IA. Peut contenir des erreurs. Veuillez toujours vérifier les informations.

Évaluer la traduction

Cet article a été rédigé par :

  • Kingsley Okonkwo

    Kingsley, développeur blockchain Ethereum certifié, occupe le poste de rédacteur technique chez Consensys, avec une spécialisation dans les outils destinés aux développeurs. Avant de rejoindre Consensys, Kingsley a travaillé en tant que développeur backend freelance sur plusieurs plateformes, dont Gigster et Braintrust. Fort de 5 ans d'expérience en développement logiciel, il maîtrise des outils tels que JavaScript (Node.js & React), GoLang, SQL et Docker. Kingsley excelle dans la création de tutoriels pas à pas et de guides pratiques, en s'appuyant sur les dernières technologies web3 pour aider les développeurs à créer de meilleures dapps. Actuellement basé à Dubaï, Kingsley aime jouer au basketball et au football pendant son temps libre.

    Lire tous les articles