Aller au contenu

Guide hacker : actions ERC-7715 du MetaMask Delegation Toolkit

Guide du hacker pour développer avec les permissions ERC-7715

2 min
Guide hacker : actions ERC-7715 du MetaMask Delegation Toolkit

Ce guide fournit une vue d'ensemble complète des actions expérimentales ERC-7715 dans le MetaMask Delegation Toolkit, un outil innovant qui permet aux dapps de demander et de gérer les autorisations des utilisateurs pour des actions spécifiques telles que les transferts de tokens.

Cela ouvre la voie à de nouveaux cas d'usage passionnants, comme les abonnements et les paiements automatisés, tout en améliorant l'expérience utilisateur. Nous explorerons les concepts sous-jacents, vous guiderons dans la configuration de votre environnement de développement et vous accompagnerons dans la création d'une dapp exploitant le Gator SDK. Ce guide utilise Viem pour les interactions avec la blockchain.

Fondamentaux : repenser les transactions web3

L'ERC-7715 introduit un nouveau paradigme dans la façon dont les dapps interagissent avec les portefeuilles des utilisateurs. Au lieu d'exiger que les utilisateurs approuvent chaque transaction manuellement, les dapps peuvent demander l'autorisation d'effectuer certaines actions au nom de l'utilisateur, dans des limites prédéfinies.

Concepts clés

  • Compte de session : Le compte de la dapp (soit un EOA, soit un smart contract) qui reçoit l'autorisation d'agir au nom de l'utilisateur.

  • Portefeuille utilisateur : Le portefeuille MetaMask de l'utilisateur, qui accorde des autorisations au compte de session.

  • Autorisations : Actions spécifiques qu'une dapp est autorisée à effectuer. Le Gator SDK prend actuellement en charge native-token-stream.

  • Compte smart Gator : Un smart account créé au sein du MetaMask Snap de l'utilisateur, spécifiquement pour gérer les autorisations accordées via le Gator SDK.

  • Délégation : Le mécanisme central qui rend possibles les transactions basées sur les autorisations. Lorsqu'un utilisateur accorde une autorisation, une délégation est créée depuis son Gator Smart Account vers le compte de session de la dapp.

Cela établit une autorisation hors chaîne, permettant à la dapp d'exécuter des actions spécifiques dans des conditions définies sans que l'utilisateur ait à signer chaque transaction. C'est comme mettre en place une allocation récurrente avec des règles.

  • ERC-7715 (demandes d'autorisation de portefeuille) : Un standard définissant la façon dont les dapps demandent des autorisations aux portefeuilles des utilisateurs. https://eip.tools/eip/7715

  • ERC-7710 (délégation de smart contract) : Un standard définissant la façon dont les smart contracts peuvent déléguer des capacités à d'autres comptes.https://eip.tools/eip/7710

  • MetaMask Snaps : Un système permettant aux développeurs d'étendre les fonctionnalités de MetaMask. Les Snaps sont essentiellement des plugins qui peuvent étendre les fonctionnalités de MetaMask, lui permettant de prendre en charge de nouvelles blockchains, de nouveaux types de transactions et, dans le cas du Gator SDK, une gestion avancée des autorisations. Le Gator SDK s'appuie sur deux Snaps :- Permission kernel snap : Fait office de routeur vers le Snap fournisseur d'autorisations spécifique, dans notre cas, le Gator Permission Snap.

  • Gator permissions snap : Crée et gère le Gator Smart Account de l'utilisateur. Ce Snap se charge de fournir à l'utilisateur l'interface Permission Picker et lui permet de modifier les autorisations, de les accorder ou de les refuser.

- ERC-4337 : Standard d'Account Abstraction, qui permet des smart accounts et une gestion des transactions plus flexibles, souvent utilisé conjointement avec le Gator SDK. https://eip.tools/eip/4337

- Bundler : Un service qui regroupe plusieurs opérations utilisateur (transactions) en une seule transaction, optimisant ainsi l'utilisation du gas.

  • Paymaster (optionnel) : Un smart contract qui peut prendre en charge les frais de gas des transactions, permettant des transactions sans gas pour l'utilisateur.

Fonctionnement

Le Gator SDK, en conjonction avec MetaMask Snaps, ERC-7715 et ERC-7710, permet un workflow basé sur les autorisations :

  1. Demande d'autorisation : La dapp, agissant en tant que compte de session, initie une demande d'autorisation. Cela se fait via la méthode wallet_grantPermissions, standardisée dans l'ERC-7715. La dapp spécifie le type d'autorisation (par ex., native-token-stream), la cible (son adresse) et tous les paramètres spécifiques (par ex., le montant).

  2. Autorisation de l'utilisateur : MetaMask Flask présente la demande d'autorisation à l'utilisateur. Si les Snaps requis ne sont pas encore installés, MetaMask Flask invitera l'utilisateur à les installer à ce stade. L'utilisateur reçoit ensuite une explication claire et compréhensible de ce que la dapp demande.

L'utilisateur peut alors approuver ou rejeter la demande. Le Permission Kernel Snap joue un rôle clé dans cette interaction, en s'assurant que l'utilisateur comprend les autorisations demandées.

  1. Création du Gator smart account : Si l'utilisateur approuve l'autorisation, le Gator Permissions Snap entre en action. Ce Smart Account est l'origine de l'autorité déléguée.

  2. Alimentation du compte Gator : L'utilisateur est responsable de l'alimentation de ce Gator Smart Account avec des fonds suffisants pour couvrir les actions déléguées. Par exemple, si l'autorisation concerne native-token-stream, l'utilisateur doit déposer le token natif concerné dans son Gator Smart Account.

  3. Création de la délégation : Il s'agit d'une étape cruciale. Une délégation est créée, établissant le lien entre le Gator Smart Account de l'utilisateur et le compte de session de la dapp. Cette délégation, régie par l'ERC-7710, autorise la dapp à agir au nom de l'utilisateur, mais uniquement dans les limites de l'autorisation accordée. La délégation précise :1. Les actions que la dapp peut effectuer (par ex., transférer des tokens natifs).

  4. Toutes les conditions ou limitations (caveats), telles que :1. Le montant maximum par transfert

  5. La fréquence des transferts

  6. La date d'expiration

  7. Utilisation de l'autorisation (action déléguée) : Lorsque la dapp doit agir dans le cadre de l'autorisation accordée, elle « utilise » la délégation. Cela implique que la dapp construise une transaction (ou une User Operation, si elle utilise l'ERC-4337) qui respecte les règles définies dans la délégation.

La dapp soumet ensuite cette transaction (ou User Operation, si elle utilise l'ERC-4337), en fournissant la preuve de la délégation valide.

Configurer votre environnement de développement

Veuillez noter que les Snaps requis pour les actions ERC-7715 fonctionnent actuellement uniquement sur Sepolia. Si vous travaillez sur la piste ERC-7715, assurez-vous d'utiliser le testnet Sepolia. Pour les autres fonctionnalités du Delegation Toolkit, vous pouvez utiliser l'un des réseaux de test répertoriés ici

Prérequis

  • Node.js : Assurez-vous que Node.js est installé sur votre système.

  • MetaMask Flask : Installez MetaMask Flask, une version de MetaMask orientée développeurs. Téléchargez-la depuis le site officiel MetaMask. Important : Utilisez un profil de navigateur distinct pour Flask. Si vous utilisez le même navigateur avec votre portefeuille MetaMask classique, veuillez le désactiver.

  • MetaMask Snaps : Les Snaps requis pour le Gator SDK (Permission Kernel Snap et Gator Permissions Snap) peuvent être installés manuellement, ou MetaMask Flask invitera l'utilisateur à les installer lorsqu'une dapp demande des autorisations pour la première fois.

  • Bundler ERC-4337 : Requis si le compte de session est un portefeuille ERC-4337. Pour envoyer des opérations utilisateur depuis un portefeuille ERC-4337, vous aurez besoin d'accéder à un bundler. Pimlico est une bonne option. Consultez leur documentation.

  • Paymaster (optionnel) : Si vous souhaitez prendre en charge les frais de gas, vous aurez besoin d'un paymaster. Pimlico propose également des services de paymaster.

Étapes d'installation

  1. Installer Node.js : Téléchargez et installez Node.js depuis le site officiel.

  2. Installer MetaMask Flask :- Ouvrez un nouveau profil de navigateur.

  • Accédez à la page de téléchargement de MetaMask Flask sur le site MetaMask.

  • Téléchargez et installez l'extension MetaMask Flask.

  1. Configurer un bundler :- Si vous utilisez Pimlico, créez un compte sur leur plateforme.

  • Obtenez votre clé API bundler auprès de Pimlico.

  • Familiarisez-vous avec l'envoi d'opérations utilisateur vers le bundler Pimlico.

  1. Configurer un paymaster (optionnel) :- Si vous utilisez Pimlico, vous pouvez également utiliser leur service de paymaster. Configurez votre dapp pour utiliser le paymaster.

Créer une dapp avec les actions Gator ERC-7715

La façon la plus simple de démarrer avec les actions Gator ERC7715 est d'utiliser le CLI create-gator-app, qui propose un template appelé Experimental: Basic Gator app to try out ERC7715 Permissions. Ce template est livré avec toutes les bibliothèques de base et extraits de code requis déjà installés.

Vous pouvez exécuter le CLI avec

npx create-gator-app@latest

Veuillez consulter ces sections de la documentation pour d'autres extraits de code importants

Ressources

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

Évaluer la traduction

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