Interpretación de la tecnología MetaMask Snap: análisis de la experiencia de desarrollo, limitaciones de capacidad, seguridad y potencial comercial

Contenido | Li Damao, Bruce

Edición y formato | Cikey

Diseño | WangTeng

Este artículo está coescrito por los miembros del grupo de expertos LXDAO Li Damao y Bruce. Discutiremos en profundidad los aspectos técnicos de MetaMask Snap. ¿Qué es MetaMask Snap? ¿Qué capacidades técnicas tiene? ¿Cómo garantizar la seguridad? ¿Cómo fue la experiencia de desarrollo? Estas preguntas pueden determinar el potencial futuro de MetaMask Snap.

¿Qué es MetaMask Snap?

Hace unos días ConsenSys anunció el lanzamiento al público de MetaMask Snaps Open Beta. MetaMask Snaps puede ampliar las capacidades de la billetera y puede instalar aplicaciones (Snaps) creadas por desarrolladores externos para obtener nuevas funciones.

Si ConsenSys incorporó MetaMask en WeChat, entonces Snap es un subprograma de WeChat. Por lo tanto, podemos ver la ambición de MetaMask: combinado con el tamaño de ConsenSys y la cantidad de usuarios de MetaMask, el patrón del campo de billetera cambiará.

Actualmente, el funcionario anunció 35 modelos Snap disponibles y lanzó la Snap App Store.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Lista de instantáneas parcial

Entonces, ¿cómo se ve exactamente MetaMask Snap desde una perspectiva técnica? ¿Cuáles son sus limitaciones de capacidades? ¿Es seguro? ¿Cómo fue la experiencia de desarrollo? Todos estos pueden determinar el potencial futuro de MetaMask Snap.

Desde el año pasado, LXDAO ha realizado una investigación en profundidad sobre la implementación de Snap. Actualmente, muchos miembros han participado en el desarrollo de Snap y han participado activamente en hackathons relacionados. Hoy, profundizaremos en los problemas anteriores desde una perspectiva técnica y, de hecho, desarrollaremos un Snap para permitirle experimentar la experiencia del desarrollador de Snap.

Primera experiencia con MetaMask Snap

Instalar MetaMask Snap

Por lo general, se puede instalar a través del mercado oficial de MetaMask Snap o directamente en el sitio web oficial del proyecto. Tomando UniPass como ejemplo, al acceder a la página de la aplicación, se proporcionará un botón que le permitirá vincularse a MetaMask.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Después de hacer clic, se instalará Snap:

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Usa MetaMask Snap

Una vez completada la instalación, puede comenzar a utilizar los productos y funciones correspondientes. En esta aplicación, UniPass crea una cuenta de contrato inteligente para facilitar su control a través de la cuenta EOA de MetaMask.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Cuando realiza una transferencia, UniPass abrirá un Snap para confirmarle si desea realizar esta operación en la billetera UniPass AA.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Después de la confirmación a través de MetaMask, se pueden realizar las operaciones relevantes. En este escenario, MetaMask tiene la capacidad de controlar la billetera UniPass AA a través de Snap. UniPass permite a los usuarios operar la billetera sin desarrollar un complemento de billetera, ¡y MetaMask también se puede usar para presentar a los usuarios a un costo muy bajo!

¿Qué información podemos obtener de este proceso de instalación y uso?

  1. Snap tiene un control de permisos relativamente fino, incluso incluye permisos para vincular billeteras, solicitudes de red, etc. El diseño general se basa en el principio de acceso con privilegios mínimos (Principle of Least Privilege), priorizando la seguridad.
  2. Desde npm:@unipasswallet/unipass-snap, puede ver que Snap se basa en NPM para la gestión de paquetes y versiones. La seguridad se presentará en detalle más adelante.
  3. Snap es muy flexible y puede desarrollar y decidir el contenido y la lógica a mostrar según las necesidades del proyecto. Sin embargo, la interfaz de usuario es relativamente simple y hay cierto margen de optimización.
  4. La experiencia Snap es muy simple y confiable, alcanzando de hecho el nivel de las versiones beta y los entornos de producción.

Para un producto de billetera, la seguridad siempre es lo primero. A continuación, analicemos el diseño de seguridad de Snap.

¿Es seguro Snap?

Análisis del tiempo de ejecución del código instantáneo

Como se mencionó anteriormente, Snap se basa en NPM para la administración de paquetes y versiones, lo que demuestra que Snap es en realidad una aplicación basada en Web y Java. Como todos sabemos, la sintaxis de JS es muy flexible y gratuita, y puede provocar fácilmente ataques como XSS y phishing. ¿Cómo aborda MetaMask Snap este desafío?

Después de investigar un poco, no es difícil descubrir que MetaMask financia a Agoric e integra profundamente el Hardened JavaS (también conocido como Secure Ecma) del equipo de Agoric como su solución sandbox de “virtualización completa”. Agoric diseñó una API restringida de Java y presentó una propuesta preliminar al TC-39 (JS Standardization Consortium) en:

En pocas palabras, Hardened Java es un subconjunto más seguro de Java estándar. Con la ayuda de algunas capacidades y mecanismos de JS, se reducen algunos permisos y métodos de llamada de la API de JS, lo que reduce algunos riesgos. Crea un entorno limitado seguro para que se ejecute el código correspondiente y también sigue el **Principio de privilegio mínimo para planificar el control de permisos del código. **

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Agoric colaboró con MetaMask para desarrollar LavoMoat (este proyecto para mejorar la seguridad de Snap. LavaMoat es un conjunto de herramientas que se enfoca en resolver los riesgos de seguridad de las dependencias externas en proyectos JS y agrega restricciones en algunas API y lógica.

Agoric y MetaMask lanzaron conjuntamente pruebas de defensa y ataques de seguridad de caja negra y caja blanca, y generaron informes de seguridad detallados. Entonces, a nivel de tiempo de ejecución del código, tenemos buenas razones para creer que Snap es seguro.

El código Snap debe ser de código abierto y auditado

Además de tener un proceso de autorización de usuario claro y un diseño de privilegios mínimos, para convertirse en un Snap reconocido oficialmente, debe abrir el código fuente. Gracias al poder de la comunidad, la posibilidad de que Snap traiga su propio código malicioso se reduce considerablemente.

Además, también descubrimos que Snap en el sitio web oficial debe someterse a una auditoría de código por parte de una empresa de seguridad externa antes de su lanzamiento. Esto mejora enormemente la credibilidad de seguridad de Snap y los auditores incluyen a SlowMist, con el que todos están muy familiarizados.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Riesgos de seguridad de Snap descubiertos actualmente

Dado que Snap se basa actualmente en la gestión de versiones y paquetes de NPM, existe la posibilidad de que se produzcan ciertos cambios a nivel de código y las auditorías no obligatorias pueden causar ciertos riesgos de seguridad.

Debido a que MetaMask no puede controlar el lanzamiento de la versión de la plataforma NPM, el proyecto puede lanzar una nueva versión en cualquier momento para que los usuarios la instalen. Debido al costo de la auditoría, la empresa auditora no auditará todas las versiones, por lo que surgirá una situación: es posible que los cambios en la última versión no sean de código abierto ni estén auditados.

Sin embargo, dado que el entorno de ejecución es un entorno sandbox y utiliza un diseño de permisos mínimos, a menos que el usuario confirme manualmente los nuevos cambios de permisos, la nueva versión de Snap solo tendrá los permisos de la versión anterior para realizar operaciones. Sin embargo, si un Snap solicita demasiado permiso, aún causará riesgos, por lo que debes estar atento al instalar y usar Snap.

Capacidades técnicas y limitaciones de MetaMask Snap

Aunque MetaMask Snap se anunció oficialmente recientemente, ¡Snap en realidad se ha desarrollado durante 4 años! La idea original de MetaMask Snap fue publicada en Medium por Dan Finlay el 10 de octubre de 2019.

Equilibrar la seguridad, la flexibilidad y la eficacia es un desafío muy grande. También se puede ver que MetaMask ha pagado mucho dinero y ha hecho muchos preparativos para este día.

Actualmente, hay tres API principales abiertas:

  1. Interoperabilidad, que permite a los desarrolladores desarrollar otras billeteras en cadena basadas en MetaMask
  2. Transaction Insights, que permite a los desarrolladores obtener datos de transacciones antes de que se inicie una transacción de usuario para analizar si existen riesgos en la transacción.
  3. Notificaciones, envía mensajes directamente a los usuarios a través de Snap (pero esto parece requerir soporte del sitio web, lo cual es un poco de mal gusto)

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

La siguiente es una breve introducción a las capacidades y efectos abiertos específicos de MetaMask Snap, para que pueda tener una percepción más vívida.

Capacidad de notificación de notificación

La interfaz Snap_notify puede mostrar notificaciones en MetaMask o en el navegador. Snap puede enviar mensajes directamente a los usuarios a través de esta interfaz, como se muestra en la siguiente figura

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Capacidades de información sobre transacciones

Cuando el usuario interactúa con el contrato inteligente, MetaMask activará el evento onTransaction de Snap. MetaMask pasará la transacción original sin firmar al método del controlador onTransaction. Snap puede devolver una interfaz en la página de confirmación secundaria de la transacción y personalizar el contenido de visualización.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

A través de esta capacidad, se pueden realizar funciones tales como auditoría de seguridad de la información de transacciones y visualización de información ampliada.

Interfaz de diálogo y capacidades de interfaz personalizada

La capacidad de diálogo permitirá que Snap abra directamente una ventana independiente, logrando capacidades similares a la ventana emergente tradicional /Confirmar/ (como se muestra a continuación), que se puede usar para recordatorios, confirmaciones, envíos de información, etc.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

A través de Dialog, podrá personalizar interfaces y operaciones interactivas simples para conectarse con su DApp.

¿Qué tipo de funciones no están disponibles actualmente para MetaMask Snap?

Debido a razones de seguridad y otras razones, Snap actualmente no admite marcos de front-end de terceros y solo proporciona una cantidad relativamente pequeña de UIKit. Lo siguiente todavía usa Insight como ejemplo para mostrar las bibliotecas de componentes de UI que todos los desarrolladores pueden llamar.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Como se muestra en la figura, actualmente solo Encabezado (texto grande), Texto (texto pequeño), Panel (tarjeta y solo se puede usar una vez), Divisor (línea divisoria), Copiable (haga clic para copiar) y un pequeño subconjunto de Markdown ( negrita y cursiva), por lo que parece que generar interactividad es temporalmente imposible y es imposible utilizar HTML incrustado para lograr operaciones interactivas. Sin embargo, después de hacer preguntas en el Discord oficial, el funcionario afirmó que son por razones de seguridad y que se lanzarán en la próxima versión.

Además, también por consideraciones de seguridad, solo se admite el método Fetch para solicitudes externas y no se admiten más protocolos de solicitud como WebSocket. Debido a limitaciones de seguridad, capacidad y privacidad, también es imposible obtener información del cliente, como la URL actual que evoca Snap, y no se pueden implementar funciones más ricas y diversas.

La mayoría de estos problemas y restricciones se deben a consideraciones de seguridad. Creo que en el futuro, una vez que se verifique la seguridad, se considerarán más permisos.

MetaMask, que proporciona estas API, en realidad se ha convertido en un producto similar a una plataforma abierta. Este sentimiento es como cuando WeChat lanzó cuentas oficiales y mini programas, lo que instantáneamente hizo que la gente sintiera que ya no era una simple herramienta de chat.

MetaMask anticipó la estructura del mercado actual en 2019, es decir, hay muchas cadenas públicas y partes de proyectos, y varias necesidades de billeteras personalizadas. En lugar de que cada parte del proyecto necesite desarrollar su propio complemento y los usuarios necesiten instalar varios complementos al mismo tiempo, es mejor desarrollar basado en MetaMask Snap. Entre el primer lote de Snaps lanzado, también encontramos otras billeteras ecológicas que no son EVM, como Sui Wallet, Solana Wallet y Arweave Wallet. Con su base de usuarios existente, MetaMask Snap seguramente tendrá un impacto significativo en el panorama de las billeteras.

De hecho, la imaginación de MetaMask Snap puede ser mayor de lo que esperábamos, incluso más allá del alcance de las billeteras. También podemos ver el trabajo del equipo de EthSign, que crea un KeyChain de administrador de contraseñas universal basado en MetaMask Snaps. Las contraseñas en todos los navegadores pueden cifrarse con la clave de la billetera y almacenarse. Cuida bien tu billetera de esta manera y mantén todas tus contraseñas contigo.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Snap es muy relevante para los desarrolladores. Con la API abierta, ¿cómo es la experiencia específica del desarrollador? También podríamos desarrollar nosotros mismos un Snap para experimentarlo.

Desarrollar una prueba Snap directamente

Pensamientos de alienación

Como todos sabemos, la mayoría de los usuarios no saben realmente cuál es el contrato inteligente con el que interactúan en la mayoría de los casos, lo que incluye principalmente los siguientes problemas:

  1. Si el contrato que se comercializa es un contrato reemplazado por un sitio web de phishing
  2. Si el contrato que se negocia es un contrato actualizable
  3. ¿Es el contrato inteligente un contrato que se acaba de implementar y no ha sido verificado por muchas personas?
  4. ¿El contrato de transacción es de código abierto?

Para los usuarios comunes, es aún más imposible pedirles que lean el código de solidez del contrato antes de operar. En este momento, es muy adecuado utilizar la función Transaction Insight para implementar algunos análisis de contratos inteligentes. Por ejemplo, el uso de IA para realizar una auditoría de seguridad relativamente simple del contrato inteligente puede filtrar el 80% de los ataques de phishing de bajo nivel. **

**Prepare el entorno de desarrollo y **descargue la billetera

Primero necesitas instalar MetaMask Flask

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

MetaMask Flask es una distribución de extensión de MetaMask centrada en el desarrollador, que se utiliza principalmente para vistas previas de nuevas funciones y desarrollo de funciones experimentales. Tenga en cuenta que esta es la versión para desarrolladores de MetaMask. No la use a diario ni importe la clave privada que usa a diario. Flask se utiliza aquí principalmente para facilitar la vista previa local y en tiempo real del Snap que desarrollamos.

Se recomienda cerrar temporalmente Little Fox Wallet y otras carteras del navegador después de la instalación, o crear un nuevo perfil de Chrome para su uso; de lo contrario, se producirán conflictos.

crear una cuenta

Después de instalar la billetera, cree una nueva billetera tal como crea una billetera MetaMask normalmente. Tenga en cuenta que esta es una billetera específica para pruebas. No importe su propia billetera diaria.

A continuación, necesitamos recargar algunas monedas de prueba en la billetera recién creada. Las monedas de prueba se pueden obtener a través del grifo. El Snap mencionado en este artículo usa Goerli, por lo que el siguiente artículo se centrará en Goerli.

Inicializar Snap según la plantilla

Según la documentación oficial, primero use la CLI @ metamask/create-snap para crear un nuevo proyecto Snap, y usamos la plantilla oficial para inicializar:

hilo crear @metamask/snap transacción-insights-snap && cd transacción-insights-snap

Estructura de archivos instantáneos

Los archivos principales de Snap están en ./packages/snap y la estructura del directorio de archivos es la siguiente

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

El archivo de configuración de Snap está ubicado en snap.mainfest.json, y el archivo principal de Snap es ./src/index.ts, que es muy conciso.

Habilitar permisos

Primero necesitamos habilitar los permisos. Primero agregamos los siguientes tres elementos en snap.mainfest.json

“Permisos iniciales”: {

“dotación:transaction-insight”: {}, //Transaction Insights

“dotación: proveedor-ethereum”: {}, //Obtener rpc

“endowment:network-access”: {}//Solicitar red

}

Tambien puede modificar la deion y el nombre propuesto en el archivo Mainfest para modificar la descripcion y el nombre del proyecto.

OBTENER TRANSACCIÓN

A continuación, en este caso, solo necesita modificar el archivo index.ts para completar todas las funciones. Un ejemplo de código simple es el siguiente. Vaya al código que se puede ejecutar por completo:

importar { OnTransactionHandler, OnRpcRequestHandler } de’@metamask/snaps-types’; importar {encabezado, panel, texto, copiable, divisor} de’@metamask/snaps-ui’; exportar const onTransaction: OnTransactionHandler = async ({ transacción }) => {

// la transacción incluye a (dirección del contrato), datos (datos de interacción) y otros valores

//El siguiente es un ejemplo de código para obtener datos de auditoría de contrato.

información constante = buscar (

//El siguiente es un ejemplo de código de la parte de la interfaz de usuario.

devolver {

contenido: [

texto(

${info.riskList.length} elemento de riesgo,

),

encabezado(${info.riskList.length? ‘Lista de riesgos’: ‘’}),

…info.riskList.map((item, i) => texto(${i + 1} ${item.text})),

divisor(),

texto(

Más información de auditoría en la siguiente URL,

),

copiable (

)

]

};

};

Para obtener más información, consulte la documentación para desarrolladores de MetaMask Snap para completar productos Snap más complejos.

Después de la instalación, verá información de advertencia de riesgo similar para cada transacción:

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

En la actualidad, la experiencia de desarrollo de Snap es muy fluida, casi no se han encontrado problemas y las plantillas oficiales también son muy ricas y diversas. Los desarrolladores con amplia experiencia generalmente pueden ponerse en marcha y comenzar a desarrollar los Snaps que necesitan en unas pocas horas. Pero es necesario publicarlo oficialmente y ponerlo a disposición de los usuarios principales, y el mayor obstáculo serán las auditorías de seguridad. No todos los desarrolladores independientes y equipos pequeños tienen los recursos para auditar sus Snaps. Por lo tanto, se puede esperar que la cantidad y riqueza de Snap no experimenten un crecimiento explosivo muy grande durante mucho tiempo en el futuro.

Soporte para desarrolladores

Si puede leer los ejemplos anteriores, ¡felicidades por convertirse en un desarrollador calificado de nivel básico de Snap!

Los funcionarios de MetaMask también establecieron una DAO de MetaMask Grants el año pasado para financiar proyectos de alto valor en el ecosistema de MetaMask a través de un programa de subvenciones. MetaMask Grants DAO es un programa experimental dirigido por empleados que otorga subvenciones a desarrolladores externos de todo el mundo para crear experiencias impactantes dentro del ecosistema MetaMask. MetaMask inyecta parte de sus ganancias en este DAO cada trimestre. El presupuesto anual actual de MetaMask Grants DAO es de 2,4 millones de dólares estadounidenses.

Actualmente, cualquier proyecto que pueda enriquecer el ecosistema MetaMask puede postular a las MetaMask Grants DAO (MetaMask Grant) oficiales, para obtener más información, ingrese aquí.

Vale la pena mencionar que LXDAO tiene el honor de solicitar subvenciones MetaMask este año y participar en el desarrollo de proyectos relacionados, y ha establecido un canal de contacto. Si es miembro de LXDAO y tiene ideas relevantes, puede contactarlos de manera más eficiente para Envíe su solicitud.

Interpretación de la tecnología MetaMask Snap: experiencia de desarrollo, limitaciones de capacidad, seguridad y análisis de potencial comercial

Conclusión

Arriba, analizamos qué es Snap desde una perspectiva técnica, si es seguro, sus limitaciones de capacidad y la experiencia del desarrollador. Un breve resumen es el siguiente:

  • Snap es similar al subprograma WeChat, lo que abre un espacio más grande para la imaginación de MetaMask.
  • La seguridad en general es buena, pero existen ciertos riesgos. Aún así, debes estar atento a los permisos de alto riesgo.
  • Debido a consideraciones de seguridad, actualmente no hay muchas capacidades abiertas, pero aún puede generar suficientes Snap imaginativos.
  • Después de cuatro años de pulido y pruebas, la experiencia del desarrollador es excelente. Sin embargo, debido a consideraciones de seguridad, se ha diseñado un mecanismo de lista blanca y requisitos de auditoría. Se puede esperar que no surjan una gran cantidad de Snaps en el futuro.

En la actualidad, MetaMask Snap todavía se está iterando rápidamente y creo que se abrirán más permisos y capacidades en el futuro. Se espera que se puedan introducir mecanismos más abiertos y seguros, como el mecanismo de revisión de auditoría oficial de Apple y el control de versión del repositorio de código oficial, para que más desarrolladores puedan participar a bajo costo. Si se mejora este problema, se puede esperar que haya mucha demanda en el futuro. Incluso habrá puestos dedicados de desarrollador de Snap.

Con la enorme cantidad de usuarios de MetaMask, los desarrolladores independientes también pueden tener ciertas oportunidades. Esperemos y veamos qué próxima innovación revolucionaria trae Snap.

Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Republicar
  • Compartir
Comentar
Añadir un comentario
Añadir un comentario
Sin comentarios
  • Anclado