
Analyse technique de MetaMask Snap : expérience de développement, limites des fonctionnalités, sécurité et potentiel commercial
TechFlow SélectionTechFlow Sélection

Analyse technique de MetaMask Snap : expérience de développement, limites des fonctionnalités, sécurité et potentiel commercial
Qu'est-ce que MetaMask Snap et quelles sont ses capacités techniques ?
Rédaction : Li Damao, Bruce
Qu'est-ce que MetaMask Snap ?
Il y a quelques jours, ConsenSys a annoncé le lancement public de la version bêta ouverte de MetaMask Snaps. MetaMask Snaps permet d’étendre les fonctionnalités du portefeuille : il est possible d’installer des applications (appelées « Snaps ») créées par des développeurs tiers afin d'obtenir de nouvelles fonctionnalités.
Si l'on compare MetaMask à WeChat développé par ConsenSys, alors les Snaps seraient équivalents aux mini-programmes de WeChat. On perçoit ainsi l'ambition de MetaMask. Compte tenu de la taille de ConsenSys et du nombre d'utilisateurs de MetaMask, ce nouveau dispositif pourrait transformer profondément l'écosystème des portefeuilles numériques.
À ce jour, 35 Snaps ont été officiellement publiés, accompagnés d’un magasin d’applications accessible à l’adresse suivante : https://snaps.metamask.io/.

Aperçu partiel des Snaps disponibles
D’un point de vue technique, à quoi ressemblent concrètement les MetaMask Snaps ? Quelles sont leurs limites en termes de fonctionnalités ? Sont-ils sécurisés ? Quelle est l’expérience de développement ? Toutes ces questions pourraient déterminer le potentiel futur des MetaMask Snaps.
Depuis l’année dernière, LXDAO étudie en profondeur la mise en œuvre des Snaps. Plusieurs membres participent déjà activement au développement de Snaps et prennent part à des hackathons associés. Aujourd'hui, nous allons examiner techniquement ces questions et développer ensemble un Snap afin de vous faire découvrir concrètement l'expérience de développement.
Première expérience avec MetaMask Snap
Installer un MetaMask Snap
Généralement, on peut installer un Snap via le marché officiel de MetaMask Snap, ou directement depuis le site web du projet. Prenons UniPass comme exemple : lorsqu’on visite la page de l’application, un bouton permettant de connecter MetaMask est proposé.

Après avoir cliqué dessus, l’installation du Snap commence :

Utiliser un MetaMask Snap
Une fois installé, on peut commencer à utiliser le produit et ses fonctionnalités. Ici, UniPass crée un compte basé sur un contrat intelligent pour vous, ce qui vous permet de le contrôler facilement via votre compte EOA dans MetaMask.

Lorsque vous effectuez un transfert, UniPass affiche une fenêtre pop-up via le Snap pour vous demander confirmation avant d’exécuter l’opération sur le portefeuille AA UniPass.

Après confirmation dans MetaMask, l’opération peut être exécutée. Dans ce scénario, MetaMask acquiert via le Snap la capacité de contrôler le portefeuille AA UniPass. UniPass n’a donc pas besoin de développer son propre plugin de portefeuille, et peut intégrer très facilement de nouveaux utilisateurs grâce à MetaMask !
Que pouvons-nous déduire de ce processus d'installation et d'utilisation ?
-
Les Snaps disposent d’un contrôle précis des permissions, incluant même celles liées à la connexion du portefeuille ou aux requêtes réseau. L’ensemble suit le principe du moindre privilège (Principle of Least Privilege), priorisant la sécurité.
-
Le fait que le Snap provienne de npm:@unipasswallet/unipass-snap indique que les Snaps utilisent NPM pour la gestion des paquets et des versions. Nous aborderons plus tard la sécurité associée.
-
Les Snaps offrent une grande flexibilité, permettant aux projets de concevoir librement leur interface et logique selon leurs besoins. Toutefois, l’interface utilisateur reste rudimentaire, laissant place à des améliorations.
-
L’expérience utilisateur est simple et fiable, atteignant clairement un niveau adapté à une version bêta ou à l’environnement de production.
Pour un produit de portefeuille, la sécurité prime toujours. Examinons maintenant la conception de sécurité des Snaps.
Les Snaps sont-ils sécurisés ?
Analyse du runtime des Snaps
Comme mentionné précédemment, les Snaps reposent sur NPM pour la gestion des paquets et des versions, ce qui signifie qu'ils sont fondamentalement des applications basées sur le Web et JavaScript. Or, tout le monde sait que la syntaxe JavaScript est extrêmement flexible, ce qui expose facilement à des attaques XSS ou de phishing. Comment MetaMask Snap répond-il à ce défi ?
Des recherches montrent que MetaMask finance Agoric et intègre profondément Hardened JavaScript (aussi appelé Secure EcmaScript), conçu par l’équipe d’Agoric, comme solution de sandbox "pleinement virtualisée". Agoric a conçu une API restreinte pour JavaScript et soumis une proposition (Draft) à TC-39 (l’organisme standardisant JavaScript), disponible ici : https://github.com/tc39/proposal-ses.
En résumé, Hardened JavaScript constitue un sous-ensemble plus sécurisé du JavaScript standard. En exploitant certaines capacités du langage et en limitant certains appels d’API, il réduit significativement les risques. Il crée un environnement sécurisé (sandbox) pour l'exécution du code, en appliquant strictement le principe du moindre privilège pour gérer les permissions.

Agoric et MetaMask ont conjointement développé le projet LavaMoat pour renforcer la sécurité des Snaps. LavaMoat est un ensemble d’outils visant à atténuer les risques liés aux dépendances externes des projets JavaScript, en imposant des restrictions supplémentaires sur certaines API et logiques.
Agoric et MetaMask ont organisé ensemble des tests de sécurité (noir et blanc), produisant des rapports détaillés. Ainsi, au niveau de l’exécution du code, nous avons de solides raisons de croire que les Snaps sont sûrs.
Le code des Snaps doit être open source et audité
Outre un processus explicite d’autorisation utilisateur et une conception respectant le principe du moindre privilège, tout Snap reconnu officiellement doit publier son code source. Cela réduit fortement la probabilité qu’un Snap contienne intentionnellement du code malveillant, grâce à la vigilance de la communauté.
En outre, nous constatons que tous les Snaps présents sur le site officiel ont subi un audit de code par une société tierce spécialisée en sécurité avant publication. Cela renforce considérablement la fiabilité des Snaps. Parmi les entreprises d’audit figurent notamment SlowMist, bien connue dans la communauté.

Risques de sécurité actuellement identifiés avec les Snaps
Étant donné que les Snaps reposent actuellement sur la gestion de paquets et de versions via NPM, il existe un risque de modification du code après publication. De plus, l’audit n’étant pas obligatoire, certains risques subsistent.
MetaMask ne contrôle pas la plateforme NPM ni ses publications de versions. Un projet peut donc publier à tout moment une nouvelle version que les utilisateurs installeront. En raison du coût élevé des audits, les sociétés spécialisées ne vérifient pas chaque version. Il se peut donc que les modifications apportées à la dernière version ne soient ni publiées ni auditées.
Toutefois, puisque l’environnement d’exécution est un sandbox et que le principe du moindre privilège s’applique, tant que l’utilisateur ne confirme pas manuellement de nouvelles permissions, la nouvelle version d’un Snap ne disposera que des autorisations accordées à la version précédente. Cependant, si un Snap demande initialement trop de permissions, cela reste risqué. Il convient donc de rester vigilant lors de l’installation et de l’utilisation d’un Snap.
Capacités techniques et limites de MetaMask Snap
Bien que MetaMask Snap ait été officiellement présenté récemment, il a en réalité été en développement pendant quatre ans ! La première idée des MetaMask Snaps remonte au 10 octobre 2019, lorsque Dan Finlay l’a présentée sur Medium.
Trouver un équilibre entre sécurité, souplesse et efficacité est un défi majeur. On comprend que MetaMask a investi énormément pour préparer ce lancement.
Actuellement, trois principales APIs sont disponibles :
-
Interopérabilité (Interoperability) : permet aux développeurs de créer des portefeuilles pour d'autres blockchains basés sur MetaMask
-
Analyse des transactions (Transaction Insights) : permet aux développeurs d’accéder aux données des transactions avant leur validation, afin d’en analyser les risques
-
Notifications : permet aux Snaps d’envoyer directement des messages aux utilisateurs (bien que cela nécessite un support côté site, ce qui limite quelque peu son utilité)

Voici une brève présentation des fonctionnalités actuellement proposées par MetaMask Snap, pour vous donner une idée plus concrète.
Fonctionnalité de notification
L’interface snap_notify permet d'afficher des notifications dans MetaMask ou dans le navigateur. Un Snap peut ainsi envoyer directement des messages à l’utilisateur, comme illustré ci-dessous :

Fonctionnalité Transaction Insights
Lorsqu’un utilisateur interagit avec un contrat intelligent, MetaMask déclenche l’événement onTransaction du Snap. Ce dernier reçoit la transaction non signée, puis peut retourner une interface personnalisée dans la page de confirmation finale, affichant des informations complémentaires.

Cette fonctionnalité permet notamment d’auditer la sécurité des transactions ou d’afficher des informations enrichies.
Interface Dialog et personnalisation de l’interface
La fonctionnalité Dialog permet à un Snap d’ouvrir une fenêtre indépendante, similaire aux boîtes d’alerte classiques (Alert/Confirm/Prompt), destinées respectivement à informer, confirmer ou recueillir des informations (voir image ci-dessous).

Grâce à Dialog, vous pouvez créer des interfaces interactives simples pour intégrer vos DApps.
Quelles fonctionnalités ne sont pas encore possibles avec MetaMask Snap ?
Pour des raisons de sécurité, les Snaps ne prennent actuellement pas en charge les frameworks frontend tiers. Seules quelques composantes UIKit sont fournies. Voici un exemple basé sur insight, montrant toutes les bibliothèques d’interfaces disponibles aux développeurs.

Comme illustré, seuls les éléments suivants sont disponibles : Heading (grand texte), Text (petit texte), Panel (carte, utilisable une seule fois), Divider (ligne de séparation), Copyable (copier au clic) et un sous-ensemble limité de Markdown ( gras et italique). Ainsi, la création d’interfaces interactives complexes n’est pas encore possible, ni l’intégration de HTML pour des interactions avancées. Toutefois, suite à une question posée sur le Discord officiel, l’équipe a indiqué que ces restrictions étaient motivées par des raisons de sécurité, et qu’elles seront levées dans les prochaines versions.
De même, pour des raisons de sécurité, seules les requêtes HTTP via Fetch sont autorisées, les protocoles comme WebSocket étant exclus. En raison des limites de sécurité, de fonctionnalité et de confidentialité, il est impossible d’obtenir certaines informations du client, tel que l’URL ayant déclenché le Snap. Cela empêche de développer des fonctionnalités plus riches.
La plupart de ces limitations découlent de préoccupations de sécurité. À mesure que la sécurité sera prouvée, davantage de permissions devraient être progressivement ouvertes.
Avec ces API, MetaMask devient un produit similaire à une plateforme ouverte. C’est comparable à l’époque où WeChat a lancé ses comptes officiels et ses mini-programmes, transformant radicalement sa perception, passant d’un simple outil de messagerie à une plateforme complète.
Dès 2019, MetaMask anticipait ce paysage : un grand nombre de blockchains et de projets, chacun ayant des besoins spécifiques en matière de portefeuilles personnalisés. Plutôt que de voir chaque projet développer son propre plugin — obligeant les utilisateurs à en installer plusieurs — il est plus efficace de tout centraliser via MetaMask Snap. Parmi les premiers Snaps publiés, on retrouve déjà des portefeuilles comme Sui Wallet, Solana Wallet ou Arweave Wallet, hors de l’écosystème EVM. Grâce à sa base d'utilisateurs existante, MetaMask Snap aura inévitablement un impact majeur sur l’écosystème des portefeuilles.
En réalité, les perspectives offertes par MetaMask Snap pourraient aller bien au-delà de ce que l’on imagine, voire dépasser le cadre même des portefeuilles. On peut citer par exemple KeyChain, un gestionnaire de mots de passe universel développé par l’équipe d’EthSign via MetaMask Snaps, permettant de stocker tous les mots de passe du navigateur chiffrés avec la clé du portefeuille. Ainsi, en sécurisant son portefeuille, on sécurise aussi tous ses mots de passe.

Les Snaps concernent étroitement les développeurs. Avec des API ouvertes, quelle est concrètement l’expérience de développement ? Essayons de développer un Snap pour le découvrir.
Développons ensemble un Snap pour tester
Clarifions notre objectif
On sait que la majorité des utilisateurs ignorent généralement le véritable fonctionnement des contrats intelligents avec lesquels ils interagissent. Plusieurs problèmes se posent :
-
Le contrat impliqué dans la transaction est-il un faux contrat provenant d’un site de phishing ?
-
S’agit-il d’un contrat pouvant être mis à jour ?
-
Le contrat intelligent vient-il d’être déployé et n’a-t-il pas encore été suffisamment validé par la communauté ?
-
Le code du contrat est-il open source ?
Pour un utilisateur lambda, lire le code Solidity avant chaque transaction relève de l’impossible. C’est là qu’intervient parfaitement la fonction Transaction Insight, permettant d’analyser automatiquement les contrats intelligents. Par exemple, l’utilisation de l’IA pour réaliser un audit de sécurité simplifié pourrait filtrer 80 % des attaques de phishing élémentaires.
Préparer l’environnement de développement
Télécharger le portefeuille
Vous devez d’abord installer MetaMask Flask.

MetaMask Flask est une version expérimentale centrée sur les développeurs, destinée à tester de nouvelles fonctionnalités. Attention : il s’agit d’une version de développement, à ne pas utiliser au quotidien ni importer vos clés privées habituelles. Nous utilisons Flask ici pour pouvoir visualiser immédiatement notre Snap en local.
Nous conseillons de désactiver temporairement MetaMask et autres portefeuilles, ou de créer un nouveau profil Chrome pour éviter les conflits.
Créer un compte
Après installation, créez un nouveau portefeuille comme avec MetaMask classique. Attention : ce portefeuille est uniquement destiné aux tests, ne jamais y importer votre portefeuille principal.
Vous devrez ensuite créditer ce nouveau portefeuille avec des jetons de test. Ces jetons peuvent être obtenus via un faucet. Le Snap que nous développons utilise le réseau Goerli, nous nous concentrerons donc sur celui-ci.
Initialiser le projet Snap à partir d’un modèle
Selon la documentation officielle, commencez par utiliser l’outil CLI @metamask/create-snap pour créer un nouveau projet Snap, en initialisant avec un modèle officiel :

Structure des fichiers d’un Snap
Les fichiers principaux du Snap se trouvent dans ./packages/snap. Voici la structure du répertoire :

Le fichier de configuration du Snap est snap.manifest.json, tandis que le fichier principal est ./src/index.ts, remarquablement sobre.
Activer les permissions
Commencez par activer les permissions. Ajoutez les trois lignes suivantes dans snap.manifest.json :

Dans le fichier manifest, vous pouvez également modifier description et proposedName pour adapter la description et le nom du projet.
Récupérer la transaction
Dans cet exemple, il suffit de modifier le fichier index.ts pour implémenter toutes les fonctionnalités. Voici un exemple de code simple (le code complet est disponible ici : https://github.com/LidamaoHub/insights).

Pour des projets plus complexes, référez-vous à la documentation officielle de MetaMask Snap.
Après installation, chaque transaction affichera désormais des alertes de risque similaires :

L’expérience de développement avec Snap est très fluide, sans problème majeur. Les modèles fournis sont variés et complets. Un développeur expérimenté peut démarrer en quelques heures seulement. Toutefois, pour une publication officielle accessible au grand public, le principal obstacle reste l’audit de sécurité. Tous les développeurs indépendants ou petites équipes ne peuvent pas se permettre un tel audit. On peut donc s’attendre à une croissance modérée du nombre et de la diversité des Snaps dans les années à venir.
Soutien aux développeurs
Si vous avez réussi à exécuter cet exemple, félicitations ! Vous êtes désormais un développeur Snap débutant compétent.
MetaMask a lancé l’an dernier le MetaMask Grants DAO, un programme de subventions destiné à financer des projets à forte valeur ajoutée dans l’écosystème MetaMask. Ce DAO, piloté par les employés, distribue des subventions à des développeurs extérieurs du monde entier pour construire des expériences marquantes. MetaMask alimente ce DAO avec une partie de ses bénéfices trimestriels ; le budget annuel actuel du MetaMask Grants DAO est de 2,4 millions de dollars.
Tout projet enrichissant l’écosystème MetaMask peut postuler au MetaMask Grants DAO. Pour plus d’informations : https://metamaskgrants.org/.
Notons que LXDAO a eu l’honneur d’obtenir une subvention MetaMask cette année et participe activement au développement de projets associés, établissant ainsi un canal de contact privilégié. Si vous êtes membre de LXDAO et avez des idées, vous pouvez soumettre votre demande plus efficacement.

Conclusion
Nous avons analysé techniquement ce qu’est un Snap, sa sécurité, ses limites fonctionnelles et l’expérience de développement. Résumons brièvement :
-
Les Snaps, comparables aux mini-programmes WeChat, ouvrent de vastes perspectives pour MetaMask
-
La sécurité globale est bonne, mais certains risques persistent ; restez vigilant face aux permissions critiques
-
En raison de la sécurité, peu de fonctionnalités sont actuellement ouvertes, mais suffisamment pour permettre des usages imaginatifs
-
Après quatre ans de développement et de tests, l’expérience de développement est excellente. Toutefois, en raison des exigences de sécurité (liste blanche, audits), on ne verra pas exploser le nombre de Snaps à court terme
MetaMask Snap continue d’évoluer rapidement. De nouvelles fonctionnalités devraient être débloquées. Espérons que des mécanismes plus ouverts et sécurisés soient mis en place, comme un système d’audit officiel ou un dépôt de code contrôlé, permettant à davantage de développeurs d’y participer à faible coût. Si ce point s’améliore, une forte demande devrait émerger, allant jusqu’à créer des postes spécialisés en développement de Snaps.
Grâce à sa base massive d’utilisateurs, les développeurs indépendants pourraient aussi saisir des opportunités. Attendons avec impatience la prochaine innovation révolutionnaire apportée par les Snaps.
Enfin, merci d’avoir lu cet article, qui contribuera, nous l’espérons, à mieux faire connaître l’état actuel du développement de MetaMask Snap.
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News













