Snap multi-résolveur : résoudre le problème multi-résolveur

Lauréat de l'ETHLisbon Hackathon

6 min de lecture
Snap multi-résolveur : résoudre le problème multi-résolveur

MetaMask Snaps est la feuille de route pour faire de MetaMask le wallet le plus extensible au monde. En tant que développeur, vous pouvez intégrer vos fonctionnalités et APIs à MetaMask de manières totalement inédites. Les développeurs Web3 sont au cœur de cette croissance, et cette série vise à mettre en lumière les MetaMask Snaps novateurs en cours de développement aujourd'hui.

Multi-resolver Snap

Snap Repo : https://github.com/idriss-crypto/multiresolver

Pourquoi avez-vous développé le multi-resolver snap ?

L'expérience utilisateur dans le web3 a longtemps été négligée. L'abstraction de compte est un domaine dans lequel on observe des progrès. On a l'impression qu'un nouveau service de nommage voit le jour presque chaque semaine. L'objectif de ces services est de simplifier la façon dont nous interagissons les uns avec les autres dans cet espace : les noms sont plus faciles à retenir que les adresses de wallet et constituent donc une couche de base pour les systèmes d'identité et de réputation.

De plus, les standards de nommage originaux peuvent contribuer à la popularité des projets. Par exemple, imaginons un projet que nous appellerons « x ». Le nouveau standard de nommage proposé par ce projet pourrait s'appeler x-domains ou x-names. Le succès du projet favoriserait automatiquement la croissance du service de nommage, tandis que le succès du service de nommage ferait de même pour le projet — une situation gagnant-gagnant. Nous nous retrouvons désormais avec un paysage fragmenté des espaces de noms. Certes, certaines personnes tentent d'utiliser tous les services de nommage, ce qui engendre une course aux noms dans l'espace de noms limité que nous avons dans certains services de nommage (basés sur des domaines). D'autres services de nommage utilisent des identifiants plus familiers, comme des adresses e-mail, des numéros de téléphone ou des pseudos de réseaux sociaux (nom d'utilisateur Twitter, pseudo Instagram) que les gens possèdent déjà, afin d'éliminer les marchés potentiels autour de ces identités. La plupart des gens se retrouvent avec un, voire deux identifiants issus de différents services de nommage. En raison de la diversité des choix, les développeurs doivent intégrer plusieurs résolveurs de services de nommage dans leurs applications.

Lorsqu'un nouveau service de nommage s'accapare une part significative du marché, il doit également être intégré dans les applications afin de ne pas exclure les utilisateurs de ce service. Du point de vue de l'utilisateur, rechercher des applications alternatives aux fonctionnalités similaires qui prennent également en charge le service de nommage de son choix est fastidieux. Pourquoi ne pas permettre aux gens d'utiliser ce qui leur est familier ET proposer une solution qui aide les développeurs à se concentrer sur la création de la meilleure application possible ?

C'est exactement ce que fait le Multi-resolver Snap.

Pouvez-vous nous expliquer la mise en œuvre technique ?

L'essentiel

Le snap a été développé pour MetaMask Flask 10.20. La version actuelle utilise les permissions endowment:network-access et snap_confirm. La première est utilisée dans une version préliminaire pour demander des adresses résolues et traduire les IDs Twitter en noms d'utilisateur Twitter. La seconde affiche un écran de confirmation à l'utilisateur mettant en évidence l'adresse résultante avant qu'une transaction ne soit créée.

Les résolveurs actuellement pris en charge sont IDriss et ENS. Le Snap fonctionne sur localhost.

Intégration côté dApp

Pour qu'un développeur intègre ce Snap, et donc tous les résolveurs disponibles, il doit d'abord se connecter à un wallet et au snap :

const connectSnap = async (
  snapId: string = defaultSnapOrigin,
  params: Record<'version' | string, unknown> = {},
) => {
  await window.ethereum.request({
    method: 'wallet_enable',
    params: [
      {
        wallet_snap: {
          [snapId]: {
            ...params,
          },
        },
      },
    ],
  });
};
Copier

L'invocation se fait via la méthode resolve_send et peut être appelée comme suit :

const resolveInput = async (id_?: string) => {
  return await window.ethereum.request({
    method: 'wallet_invokeSnap',
    params: [
      defaultSnapOrigin,
      {
        method: 'resolve_send',
        identifier: id_,
      },
    ],
  });
};
Copier

ce qui retourne l'adresse résolue. Ici, id_ est l'identifiant que l'utilisateur saisit dans un champ d'envoi.

En utilisant le nouveau multiChainProvider, la connexion au snap est aussi simple que la connexion au wallet avec les permissions requises :

import { MultiChainProvider } from "@metamask/multichain-provider";

const provider = new MultiChainProvider();
const { approval } = await provider.connect({
  requiredNamespaces: {
    eip155: {
      chains: [chains],
      methods: [
        permissions
      ],
    },
  },
});
const session = await approval();
Copier

La méthode resolve_send mentionnée ci-dessus peut être renommée en eth_sendTransaction, permettant aux applications d'utiliser le Multi-resolver Snap sans avoir besoin de modifier leurs intégrations. Chaque fois que eth_sendTransaction est appelé, le Snap s'interpose et résout l'entrée avant de créer la transaction. Les applications devraient accepter des entrées de type String au lieu de générer une erreur lorsque la saisie d'un utilisateur ne correspond pas à une adresse. Le snap s'occupe ensuite du reste !

Quelles sont les prochaines étapes si vous mettiez cela en œuvre ?

La prochaine étape consistera à rendre ce snap open-source afin d'encourager d'autres développeurs à rechercher des bugs, améliorer le code et même ajouter leurs propres résolveurs personnalisés. Le passage en open-source libérera le véritable potentiel de ce Snap : aucun développeur ou entité unique n'aura à intégrer tous les services de nommage émergents. Un fichier contribute.md favorise ce processus. De plus, les développements ultérieurs de l'équipe MetaMask Snaps seront suivis.

Plus précisément, deux éléments bénéficieraient grandement à ce snap :

  1. La permission endowment:transaction-insight pour les transferts de compte à compte, afin de supprimer l'appel supplémentaire à snap_confirm avant qu'une transaction ne soit déclenchée, et

  2. Les injections d'interface dans MetaMask. L'objectif est d'intégrer le snap dans le champ d'envoi afin que les utilisateurs puissent utiliser le multi-resolver sans avoir à se connecter à un site web.

Enfin, une intégration complète avec le résolveur IDriss est recherchée. Une intégration complète permettrait aux utilisateurs d'envoyer des cryptos et des NFTs à n'importe quelle adresse e-mail, numéro de téléphone et nom d'utilisateur Twitter sans avoir besoin d'être enregistrés dans le registre IDriss.

Pouvez-vous nous parler un peu de vous et de votre équipe ?

Je m'appelle Lennard, et je m'intéresse à l'écosystème blockchain depuis 2017. Depuis plus d'un an, je développe et co-fonde IDriss, une cartographie décentralisée des adresses e-mail, numéros de téléphone et noms d'utilisateur Twitter vers des adresses de wallet. Plus généralement, je me concentre sur la création d'outils pour un web3 plus accessible, ce qui m'a motivé à développer ce snap.

Quand avez-vous découvert MetaMask Snaps pour la première fois et quelle a été votre expérience ?

L'équipe Snaps est très présente dans les conférences cette année (2022), donc je les ai croisés à plusieurs reprises. La première fois que j'ai interagi avec la base de code, c'était après l'une de leurs présentations à l'EthCC 2022 à Paris. Bien que les fonctionnalités fussent encore limitées, la documentation était déjà prometteuse, et je suis très optimiste quant à l'avenir de MetaMask Snaps.

En quoi MetaMask Snaps se distingue-t-il des autres wallets ?

Je n'ai pas encore vu d'approche similaire visant à inclure des contributeurs externes dans le développement de wallets. Alors que certains autres wallets ont rendu leur code open-source, Snaps permet aux développeurs d'étendre directement les fonctionnalités de MetaMask. Je suis convaincu que cette approche sera également adoptée par d'autres projets, car elle est plus facile à maintenir.

Parlez-nous de votre expérience et de celle de votre équipe dans la création de Snaps avec MetaMask ?

Ce fut une excellente opportunité de développer ce snap lors d'un hackathon. La présence de l'équipe MetaMask Snaps a été très utile chaque fois que des questions se posaient. Ce qui manque encore, c'est la possibilité de personnaliser l'interface de MetaMask. De plus, certains problèmes de dépendances sont difficiles à déboguer, ce qui accapare la majeure partie du temps de développement.

Que représente MetaMask Snaps pour vous ?

Snaps offre un terrain de jeu aux développeurs pour intégrer leurs projets ou idées directement dans MetaMask de manière sans permission. Pour moi, cela signifie que la croissance de n'importe quel projet peut être accélérée, car les utilisateurs peuvent soudainement profiter de davantage d'avantages en utilisant les outils (wallets) qu'ils possèdent déjà.

Quelles opportunités voyez-vous avec MetaMask Snaps et les possibilités qu'il ouvre pour l'espace Web3 ?

Snaps peut aider à prévenir les arnaques grâce aux insights de transaction, créer une expérience plus inclusive sur le plan des réseaux avec les keyrings, et permettre une expérience web3 plus conviviale grâce à des résolveurs personnalisés associés à des améliorations de l'interface. Ensemble, tout cela permettra d'attirer davantage de personnes dans l'espace.

Avez-vous des conseils à partager avec les développeurs souhaitant essayer MetaMask Snaps ?

Participez à des hackathons ! C'est le meilleur moyen d'interagir directement avec l'équipe et d'obtenir des retours instantanés.

Développer avec MetaMask Snaps

Pour démarrer avec MetaMask Snaps :

  1. Consultez la documentation développeur

  2. Installez MetaMask Flask

  3. Consultez un guide MetaMask Snaps

  4. Restez connecté avec nous sur Twitter, GitHub discussions et Discord

Gardez un œil sur notre équipe lors du prochain hackathon près de chez vous ! Bon BUIDLing ⚒️

Avertissement : Les MetaMask Snaps sont généralement développés par des tiers autres que Consensys Software. L'utilisation de MetaMask Snaps développés par des tiers se fait à votre propre discrétion et à vos propres risques, et implique votre accord selon lequel vous serez seul responsable de toute perte ou dommage résultant de ces activités. Consensys ne donne aucune garantie expresse ou implicite, qu'elle soit orale ou écrite, concernant les MetaMask Snaps développés par des tiers et décline toute responsabilité pour les Snaps développés par des tiers. L'utilisation de logiciels liés à la blockchain comporte des risques, que vous assumez entièrement lors de l'utilisation de MetaMask Snaps.

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

Évaluer la traduction
  • MetaMask
    MetaMask

    MetaMask, anciennement Consensys Software Inc, est la plus grande plateforme financière self-custodial au monde, offrant aux utilisateurs un espace unique pour détenir, dépenser, épargner et faire fructifier leur argent, aussi bien en crypto qu'en actifs traditionnels. L'entreprise développe la plateforme grand public où tout cela se concrétise, réunissant paiements, épargne, investissement et actifs numériques en une expérience fluide et unifiée. Forte de sa croissance en tant que wallet self-custodial le plus utilisé au monde, MetaMask donne aux utilisateurs un contrôle direct sur leur argent et leurs actifs, avec une présence dans environ 190 pays. MetaMask joue un rôle fondateur dans la croissance d'Ethereum depuis 2016. Aujourd'hui, MetaMask se trouve au cœur de l'économie onchain, en construisant le système d'exploitation de l'Open Money et en donnant aux individus un contrôle total sur leur vie financière.

    Lire tous les articles