Básico
Spot
Opera con criptomonedas libremente
Margen
Multiplica tus beneficios con el apalancamiento
Convertir e Inversión automática
0 Fees
Opera cualquier volumen sin tarifas ni deslizamiento
ETF
Obtén exposición a posiciones apalancadas de forma sencilla
Trading premercado
Opera nuevos tokens antes de su listado
Contrato
Accede a cientos de contratos perpetuos
TradFi
Oro
Plataforma global de activos tradicionales
Opciones
Hot
Opera con opciones estándar al estilo europeo
Cuenta unificada
Maximiza la eficacia de tu capital
Trading de prueba
Introducción al trading de futuros
Prepárate para operar con futuros
Eventos de futuros
Únete a eventos para ganar recompensas
Trading de prueba
Usa fondos virtuales para probar el trading sin asumir riesgos
Lanzamiento
CandyDrop
Acumula golosinas para ganar airdrops
Launchpool
Staking rápido, ¡gana nuevos tokens con potencial!
HODLer Airdrop
Holdea GT y consigue airdrops enormes gratis
Launchpad
Anticípate a los demás en el próximo gran proyecto de tokens
Puntos Alpha
Opera activos on-chain y recibe airdrops
Puntos de futuros
Gana puntos de futuros y reclama recompensas de airdrop
Inversión
Simple Earn
Genera intereses con los tokens inactivos
Inversión automática
Invierte automáticamente de forma regular
Inversión dual
Aprovecha la volatilidad del mercado
Staking flexible
Gana recompensas con el staking flexible
Préstamo de criptomonedas
0 Fees
Usa tu cripto como garantía y pide otra en préstamo
Centro de préstamos
Centro de préstamos integral
Centro de patrimonio VIP
Planes de aumento patrimonial prémium
Gestión patrimonial privada
Asignación de activos prémium
Quant Fund
Estrategias cuantitativas de alto nivel
Staking
Haz staking de criptomonedas para ganar en productos PoS
Apalancamiento inteligente
Apalancamiento sin liquidación
Acuñación de GUSD
Acuña GUSD y gana rentabilidad de RWA
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
¿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.
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.
Después de hacer clic, se instalará Snap:
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.
Cuando realiza una transferencia, UniPass abrirá un Snap para confirmarle si desea realizar esta operación en la billetera UniPass AA.
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?
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. **
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.
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:
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
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.
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.
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.
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.
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:
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
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.
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
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:
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.
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:
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.