Futures
Accédez à des centaines de contrats perpétuels
TradFi
Or
Une plateforme pour les actifs mondiaux
Options
Hot
Tradez des options classiques de style européen
Compte unifié
Maximiser l'efficacité de votre capital
Trading démo
Introduction au trading futures
Préparez-vous à trader des contrats futurs
Événements futures
Participez aux événements et gagnez
Demo Trading
Utiliser des fonds virtuels pour faire l'expérience du trading sans risque
Lancer
CandyDrop
Collecte des candies pour obtenir des airdrops
Launchpool
Staking rapide, Gagnez de potentiels nouveaux jetons
HODLer Airdrop
Conservez des GT et recevez d'énormes airdrops gratuitement
Launchpad
Soyez les premiers à participer au prochain grand projet de jetons
Points Alpha
Tradez on-chain et gagnez des airdrops
Points Futures
Gagnez des points Futures et réclamez vos récompenses d’airdrop.
Investissement
Simple Earn
Gagner des intérêts avec des jetons inutilisés
Investissement automatique
Auto-invest régulier
Double investissement
Profitez de la volatilité du marché
Staking souple
Gagnez des récompenses grâce au staking flexible
Prêt Crypto
0 Fees
Mettre en gage un crypto pour en emprunter une autre
Centre de prêts
Centre de prêts intégré
Interprétation de la technologie MetaMask Snap : analyse de l'expérience de développement, des limites de capacité, de la sécurité et du potentiel commercial
Contenu | Li Damao, Bruce
Édition et formatage | Cikey
Conception | WangTeng
Qu’est-ce que MetaMask Snap ?
Il y a quelques jours, ConsenSys a annoncé le lancement public de la bêta ouverte de MetaMask Snaps. MetaMask Snaps peut étendre les capacités du portefeuille et vous pouvez installer des applications (Snaps) créées par des développeurs tiers pour bénéficier de nouvelles fonctionnalités.
Si ConsenSys a intégré MetaMask dans WeChat, alors Snap est une applet WeChat. Nous pouvons donc voir l’ambition de MetaMask : combinée à la taille de ConsenSys et au nombre d’utilisateurs de MetaMask, la structure du champ du portefeuille va changer.
À l’heure actuelle, le responsable a annoncé 35 modèles Snap disponibles et a publié le Snap App Store
Liste instantanée partielle
Alors, à quoi ressemble exactement MetaMask Snap d’un point de vue technique ? Quelles sont leurs limites de capacités ? Est-ce sûr? Comment s’est déroulée l’expérience de développement ? Tout cela peut déterminer le potentiel futur de MetaMask Snap.
Depuis l’année dernière, LXDAO a mené des recherches approfondies sur la mise en œuvre de Snap. Actuellement, de nombreux membres ont participé au développement de Snap et ont participé activement aux hackathons associés. Aujourd’hui, nous allons approfondir les problèmes ci-dessus d’un point de vue technique et développer un Snap pour vous permettre de vivre l’expérience du développeur Snap.
Première expérience MetaMask Snap
Installer MetaMask Snap
Il peut généralement être installé via le marché officiel de MetaMask Snap ou directement sur le site officiel du projet. En prenant UniPass comme exemple, lors de l’accès à la page de candidature, un bouton sera fourni pour vous permettre de créer un lien vers MetaMask.
Après avoir cliqué, Snap sera installé :
Utiliser MetaMask Snap
Une fois l’installation terminée, vous pouvez commencer à utiliser les produits et fonctions correspondants. Dans cette application, UniPass crée un compte de contrat intelligent pour vous faciliter votre contrôle via le compte EOA de MetaMask.
Lorsque vous effectuez un transfert, UniPass affichera Snap pour vous confirmer si vous souhaitez effectuer cette opération sur le portefeuille UniPass AA.
Après confirmation via MetaMask, les opérations pertinentes peuvent être effectuées. Dans ce scénario, MetaMask a la capacité de contrôler le portefeuille UniPass AA via Snap. UniPass permet aux utilisateurs d’utiliser le portefeuille sans développer de plug-in de portefeuille, et MetaMask peut également être utilisé pour présenter les utilisateurs à un coût très faible !
Quelles informations pouvons-nous obtenir de ce processus d’installation et d’utilisation ?
Pour un produit de portefeuille, la sécurité passe toujours en premier. Ensuite, analysons la conception de la sécurité de Snap.
Est-ce que Snap est sûr ?
Analyse d’exécution du code Snap
Comme mentionné ci-dessus, Snap est basé sur NPM pour la gestion des packages et des versions, ce qui montre que Snap est en fait une application basée sur le Web et Java. Comme nous le savons tous, la syntaxe de JS est très flexible et gratuite, et elle peut facilement conduire à des attaques telles que XSS et phishing. Comment MetaMask Snap relève-t-il ce défi ?
Après quelques recherches, il n’est pas difficile de constater que MetaMask finance Agoric et intègre profondément le Hardened JavaS de l’équipe Agoric (également connu sous le nom de Secure Ecma) comme solution sandbox de « virtualisation complète ». Agoric a conçu une API Java restreinte et a soumis un projet de proposition au TC-39 (JS Standardization Consortium) à l’adresse :
En termes simples, Hardened Java est un sous-ensemble plus sécurisé de Java standard. Grâce à certaines capacités et mécanismes JS, certaines autorisations et méthodes d’appel d’API JS sont réduites, réduisant ainsi certains risques. Il crée un bac à sable sécurisé pour l’exécution du code correspondant et suit également le ** principe du moindre privilège pour planifier le contrôle des autorisations du code. **
Agoric a collaboré avec MetaMask pour développer LavoMoat (ce projet visant à améliorer la sécurité de Snap. LavaMoat est un ensemble d’outils qui se concentre sur la résolution des risques de sécurité des dépendances externes dans les projets JS et ajoute des restrictions sur certaines API et logiques.
Agoric et MetaMask ont lancé conjointement des tests d’attaque et de défense de sécurité en boîte noire et en boîte blanche, et ont publié des rapports de sécurité détaillés. Ainsi, au niveau de l’exécution du code, nous avons de bonnes raisons de croire que Snap est sûr.
Le code Snap doit être open source et audité
En plus d’avoir un processus d’autorisation utilisateur clair et une conception à privilèges minimaux, pour devenir un Snap officiellement reconnu, il doit ouvrir le code source. Grâce au pouvoir de la communauté, la possibilité que Snap apporte son propre code malveillant est considérablement réduite.
En outre, nous avons également constaté que Snap sur le site officiel doit subir un audit de code par une société de sécurité tierce avant d’être publié. Cela améliore considérablement la crédibilité de Snap en matière de sécurité, et les auditeurs incluent SlowMist, que tout le monde connaît très bien.
Risques de sécurité actuellement découverts de Snap
Étant donné que Snap est actuellement basé sur la gestion des packages et des versions de NPM, il existe une possibilité de certains changements au niveau du code, et des audits non obligatoires peuvent entraîner certains risques de sécurité.
Étant donné que MetaMask ne peut pas contrôler la version de la plate-forme NPM, le projet peut publier une nouvelle version à tout moment pour que les utilisateurs puissent l’installer. En raison du coût de l’audit, la société d’audit n’auditera pas chaque version, donc une situation se présentera : les modifications apportées à la dernière version peuvent ne pas être open source ou auditées.
Cependant, étant donné que l’environnement d’exécution est un environnement sandbox et utilise une conception d’autorisations minimales, à moins que l’utilisateur ne confirme manuellement les nouvelles modifications d’autorisation, la nouvelle version de Snap disposera uniquement des autorisations de la version précédente pour effectuer des opérations. Cependant, si un Snap demande trop d’autorisations, cela entraînera toujours des risques, vous devez donc toujours être vigilant lors de l’installation et de l’utilisation de Snap.
Capacités techniques et limites de MetaMask Snap
Bien que MetaMask Snap ait été officiellement annoncé récemment, Snap est en réalité développé depuis 4 ans ! L’idée originale de MetaMask Snap a été publiée sur Medium par Dan Finlay le 10 octobre 2019.
Équilibrer sécurité, flexibilité et efficacité est un très grand défi. On peut également voir que MetaMask a payé beaucoup d’argent et a fait beaucoup de préparatifs pour cette journée.
Actuellement, trois API majeures sont ouvertes :
Ce qui suit est une brève introduction aux capacités ouvertes et aux effets spécifiques de MetaMask Snap, afin que vous puissiez avoir une perception plus vivante.
Capacité de notification de notification
L’interface Snap_notify peut afficher des notifications dans MetaMask ou dans le navigateur. Snap peut envoyer des messages directement aux utilisateurs via cette interface, comme le montre la figure ci-dessous
Capacités d’informations sur les transactions
Lorsque l’utilisateur interagit avec le contrat intelligent, MetaMask déclenchera l’événement onTransaction de Snap. MetaMask transmettra la transaction originale non signée à la méthode de gestion onTransaction. Snap peut renvoyer une interface sur la page de confirmation secondaire de la transaction et personnaliser le contenu d’affichage.
Grâce à cette capacité, des fonctions telles que l’audit de sécurité des informations de transaction et l’affichage étendu des informations peuvent être réalisées.
Interface de dialogue et capacités d’interface personnalisée
La fonctionnalité Dialog permettra à Snap d’afficher directement une fenêtre indépendante, obtenant ainsi des fonctionnalités similaires à la fenêtre contextuelle /Confirm/ traditionnelle (comme indiqué ci-dessous), qui peut être utilisée pour les rappels, les confirmations, la soumission d’informations, etc.
Grâce à Dialog, vous pourrez personnaliser des interfaces et des opérations interactives simples pour vous connecter à votre DApp.
Quels types de fonctions sont actuellement indisponibles pour MetaMask Snap ?
Pour des raisons de sécurité et d’autres raisons, Snap ne prend actuellement pas en charge les frameworks frontaux tiers et ne fournit qu’un nombre relativement restreint d’UIKit. Ce qui suit utilise toujours Insight comme exemple pour montrer les bibliothèques de composants d’interface utilisateur que tous les développeurs peuvent appeler.
Comme le montre la figure, actuellement uniquement Titre (grand texte), Texte (petit texte), Panneau (carte et ne peut être utilisé qu’une seule fois), Séparateur (ligne de séparation), Copiable (cliquez pour copier) et un petit sous-ensemble de Markdown ( **gras ** et italique), il semble donc que la création d’interactivité soit temporairement impossible et qu’il soit impossible d’utiliser du HTML intégré pour réaliser des opérations interactives. Cependant, après avoir posé des questions sur le Discord officiel, le responsable a affirmé que celles-ci étaient pour des raisons de sécurité et qu’elles seraient publiées dans la prochaine version.
De plus, également pour des raisons de sécurité, seule la méthode Fetch est prise en charge pour les requêtes externes, et d’autres protocoles de requête tels que WebSocket ne sont pas pris en charge. En raison des limitations de sécurité, de capacité et de confidentialité, il est également impossible d’obtenir des informations sur les clients, telles que l’URL actuelle qui évoque Snap, et ne peut pas implémenter des fonctions plus riches et plus diversifiées.
La plupart de ces problèmes et restrictions sont dus à des considérations de sécurité. Je pense qu’à l’avenir, une fois la sécurité vérifiée, davantage d’autorisations seront prises en compte.
MetaMask, qui fournit ces API, est en réalité devenu un produit s’apparentant à une plateforme ouverte. Ce sentiment est identique à celui lorsque WeChat a lancé des comptes officiels et des mini-programmes, ce qui a immédiatement donné aux gens le sentiment qu’il ne s’agissait plus d’un simple outil de chat.
MetaMask a anticipé la structure actuelle du marché en 2019, c’est-à-dire qu’il existe de nombreuses chaînes publiques et parties au projet, ainsi que divers besoins de portefeuille personnalisés. Au lieu que chaque partie du projet doive développer son propre plug-in et que les utilisateurs doivent installer plusieurs plug-ins en même temps, il est préférable de développer sur la base de MetaMask Snap. Parmi le premier lot de Snaps publiés, nous avons également trouvé d’autres portefeuilles écologiques non EVM tels que Sui Wallet, Solana Wallet et Arweave Wallet. Avec sa base d’utilisateurs existante, MetaMask Snap aura forcément un impact significatif sur le paysage des portefeuilles.
En fait, l’imagination de MetaMask Snap est peut-être plus grande que prévu, même au-delà de la portée des portefeuilles. Nous pouvons également voir le travail de l’équipe EthSign, qui réalise un gestionnaire de mots de passe universel KeyChain basé sur MetaMask Snaps. Les mots de passe de tous les navigateurs peuvent être cryptés par la clé du portefeuille et stockés. Prenez ainsi bien soin de votre portefeuille et conservez tous vos mots de passe avec vous.
Snap est très pertinent pour les développeurs. Avec l’API ouverte, à quoi ressemble l’expérience spécifique du développeur ? Autant développer nous-mêmes un Snap pour en faire l’expérience.
Développer directement un test Snap
Pensées d’aliénation
Comme nous le savons tous, la plupart des utilisateurs ne savent pas réellement quel est le contrat intelligent avec lequel ils interagissent, dans la plupart des cas. Cela inclut principalement les problèmes suivants :
Pour les utilisateurs ordinaires, il est encore plus impossible de leur demander de lire le code de solidité du contrat avant d’opérer. À l’heure actuelle, il est en fait très approprié d’utiliser la fonction Transaction Insight pour mettre en œuvre une analyse de contrat intelligent.Par exemple, utiliser l’IA pour effectuer un audit de sécurité relativement simple du contrat intelligent peut filtrer 80 % des attaques de phishing de bas niveau. **
**Préparez l’environnement de développement et **téléchargez le portefeuille
Vous devez d’abord installer MetaMask Flask
MetaMask Flask est une distribution d’extensions MetaMask centrée sur les développeurs, principalement utilisée pour les aperçus de nouvelles fonctionnalités et le développement de fonctionnalités expérimentales. Notez qu’il s’agit de la version développeur de MetaMask. Veuillez ne pas l’utiliser quotidiennement et n’importez pas la clé privée que vous utilisez quotidiennement. Flask est utilisé ici principalement pour faciliter la prévisualisation locale et en temps réel du Snap que nous avons développé.
créer un compte
Après avoir installé le portefeuille, créez un nouveau portefeuille, tout comme vous créez normalement un portefeuille MetaMask. Veuillez noter qu’il s’agit d’un portefeuille spécifiquement destiné aux tests. Veuillez ne pas importer votre propre portefeuille quotidien.
Ensuite, nous devons recharger quelques pièces de test dans le portefeuille nouvellement créé. Les pièces de test peuvent être obtenues via le robinet. Le Snap mentionné dans cet article utilise Goerli, donc l’article suivant se concentrera sur Goerli.
Initialiser Snap en fonction du modèle
Selon la documentation officielle, utilisez d’abord la CLI @metamask/create-snap pour créer un nouveau projet Snap, et nous utilisons le modèle officiel pour initialiser :
fil créer @metamask/snap transaction-insights-snap && cd transaction-insights-snap
Structure des fichiers Snap
Les principaux fichiers de Snap se trouvent dans ./packages/snap et la structure des répertoires de fichiers est la suivante
Le fichier de configuration de Snap est placé dans snap.mainfest.json et le fichier principal de Snap est ./src/index.ts, ce qui est très concis.
Activer les autorisations
Nous devons d’abord activer les autorisations. Nous ajoutons d’abord les trois éléments suivants dans snap.mainfest.json
“Autorisations initiales”: {
“endowment:transaction-insight”: {}, //Transaction Insights
“endowment:ethereum-provider”: {}, //Obtenir rpc
“endowment:network-access”: {}//Demande de réseau
}
Vous pouvez également modifier la deion et le nom proposé dans le fichier Mainfest pour modifier la description et le nom du projet.
OBTENIR LA TRANSACTION
Ensuite, dans ce cas, il vous suffit de modifier le fichier index.ts pour compléter toutes les fonctions. Un exemple de code simple est le suivant. Veuillez passer au code qui peut être entièrement exécuté :
importer { OnTransactionHandler, OnRpcRequestHandler } depuis ‘@metamask/snaps-types’; importer { en-tête, panneau, texte, copiable, diviseur } depuis’@metamask/snaps-ui’;export const onTransaction : OnTransactionHandler = async ({ transaction }) => {
// la transaction inclut to (adresse du contrat), les données (données d’interaction) et d’autres valeurs
//Ce qui suit est un exemple de code pour obtenir les données d’audit du contrat
const info = récupérer (
//Ce qui suit est un exemple de code de la partie UI
retour {
contenu: [
texte(
élément de risque ${info.riskList.length},
),
en-tête (${info.riskList.length ? ‘Liste des risques’ : ‘’}),
…info.riskList.map((item, i) => text(${i + 1} ${item.text})),
diviseur(),
texte(
Plus d’informations sur l’audit à partir de l’URL suivante,
),
copiable (
)
]
} ;
} ;
Pour plus d’informations, veuillez vous référer à la documentation du développeur MetaMask Snap pour compléter des produits Snap plus complexes.
Après l’installation, vous verrez des informations d’avertissement de risque similaires pour chaque transaction :
À l’heure actuelle, l’expérience de développement de Snap est très fluide, avec presque aucun problème rencontré, et les modèles officiels sont également très riches et diversifiés. Les développeurs possédant une vaste expérience peuvent généralement être opérationnels et commencer à développer les Snaps dont ils ont besoin en quelques heures. Mais il doit être officiellement publié et mis à la disposition des utilisateurs grand public. Le plus grand obstacle sera les audits de sécurité. Tous les développeurs indépendants et les petites équipes n’ont pas les ressources nécessaires pour auditer leurs Snaps. Par conséquent, on peut s’attendre à ce que le nombre et la richesse de Snap ne connaissent pas une croissance explosive très importante avant longtemps.
Assistance aux développeurs
Si vous parvenez à parcourir les exemples ci-dessus, félicitations pour être devenu un développeur Snap débutant qualifié !
Les responsables de MetaMask ont également créé l’année dernière un MetaMask Grants DAO pour financer des projets de grande valeur dans l’écosystème MetaMask via un programme de subventions. MetaMask Grants DAO est un programme expérimental dirigé par des employés qui accorde des subventions à des développeurs externes du monde entier pour créer des expériences percutantes au sein de l’écosystème MetaMask. MetaMask injecte chaque trimestre une partie de ses bénéfices dans ce DAO. Le budget annuel actuel de MetaMask Grants DAO est de 2,4 millions de dollars.
Actuellement, tout projet susceptible d’enrichir l’écosystème MetaMask peut postuler aux MetaMask Grants DAO (MetaMask Grant) officiels. Pour plus d’informations, veuillez vous rendre ici.
Il convient de mentionner que LXDAO est honoré de postuler aux subventions MetaMask cette année et de participer au développement de projets connexes, et a établi un canal de contact. Si vous êtes membre de LXDAO et avez des idées pertinentes, vous pouvez les contacter plus efficacement pour soumettez votre candidature.
Conclusion
Ci-dessus, nous avons analysé ce qu’est Snap d’un point de vue technique, sa sécurité, ses limitations de capacités et l’expérience des développeurs. Un bref résumé est le suivant :
À l’heure actuelle, MetaMask Snap continue d’itérer rapidement et je pense que davantage d’autorisations et de fonctionnalités seront ouvertes à l’avenir. On espère que des mécanismes plus ouverts et plus sécurisés pourront être introduits, tels que le mécanisme officiel d’examen d’audit d’Apple et le contrôle de version officiel du référentiel de code, afin qu’un plus grand nombre de développeurs puissent participer à faible coût. Si ce problème s’améliore, on peut s’attendre à ce qu’il y ait une forte demande à l’avenir. Il y aura même des postes dédiés aux développeurs Snap.
Avec le nombre massif d’utilisateurs de MetaMask, les développeurs indépendants peuvent également avoir certaines opportunités. Attendons de voir quelle sera la prochaine innovation révolutionnaire que Snap apportera.