La billetera cripto autocustodiada líder y puerta de entrada a Web3, desarrollada por Consensys.
Leer todos los artículosGanador del Hackathon ETHLisbon

MetaMask Snaps es la hoja de ruta para convertir MetaMask en la wallet más extensible del mundo. Como desarrollador, puedes incorporar tus funciones y APIs a MetaMask de formas completamente nuevas. Los desarrolladores de Web3 son el núcleo de este crecimiento, y esta serie tiene como objetivo destacar los innovadores MetaMask Snaps que se están creando hoy en día.
Repositorio del Snap: https://github.com/Tbaut/template-snap-monorepo
¿Por qué lo creaste?
Cuando se trata de firmar transacciones en Ethereum, el elefante en la habitación es que la mayoría de los usuarios tienen muy poca idea de lo que están firmando. Decodificar métodos y argumentos es un buen primer paso, pero si los usuarios interactúan con un contrato malicioso, la información visible puede ser engañosa. Para contrarrestar esto, pensé en mostrar datos cuantitativos de una manera muy sencilla, usando colores de código 🟥 🟧 🟩. La idea es mostrar una puntuación de confianza basada en datos que son fáciles de verificar desde múltiples fuentes. Decidí comenzar con 4 criterios:
Cuántos usuarios han interactuado con el smart contract en total.
Con qué frecuencia la cuenta actual ha interactuado con este contrato.
Qué antigüedad tiene este contrato.
Si el código de este contrato ha sido verificado.
¿Puedes explicarnos la implementación técnica?
El snap es muy sencillo y fácil de ampliar. Aquí está el código completo que revisaremos.
Cuando se hace clic en la pestaña de insights en MetaMask, se llama a la función onTransaction. Dentro de ella, llamamos a cada función que nos proporciona los criterios que decidimos tener en cuenta.
Estas funciones generalmente llaman a una API y procesan los resultados. Profundicemos en una de ellas para entenderlo mejor.
Analicemos la función que asigna una puntuación basada en el número total de transacciones que ha recibido un contrato. Aquí usamos la API de Etherscan, aunque cualquier otra API podría funcionar para verificar los mismos datos.
Ahora que tenemos un TrustResult para cada uno de nuestros criterios, es momento de aplicar ponderaciones. En efecto, la puntuación de confianza de cada criterio no debería tener el mismo peso. Por ejemplo, la cantidad de transacciones pasadas con el contrato tiene un coste. Si un estafador quisiera manipularlo, le costaría algo de ETH en gas. Como resultado, este criterio se considera más costoso de manipular y, por tanto, más importante; le asigné un peso de 3.
Del mismo modo, la antigüedad del contrato no puede ser eludida por un atacante, ya que tendría que desplegarlo y luego esperar antes de lanzar su ataque si quisiera obtener una puntuación de confianza alta. Le asigné un peso de 2.
Los demás criterios se consideran más débiles y tienen un peso de 1.
Por último, ya tenemos la puntuación de confianza de un smart contract y necesitamos mostrarla de forma sencilla. La API de insights de MetaMask solo permite mostrar pares clave-valor. Las claves aparecen en negrita y los valores tienen un peso de fuente normal. Se me ocurrió que usando emojis podría crear una interfaz que no resultara intimidante para los usuarios, mostrando al mismo tiempo toda la información recopilada.
La función que transforma la puntuación de confianza en emojis:
Y la parte de retorno de la función onTransaction, con algunos trucos para mostrar los pares clave-valor de forma atractiva:
Por último, creé una interfaz muy sencilla para llamar a 2 tipos de contratos: uno muy conocido y utilizado, el contrato de Uniswap, y uno desplegado muy recientemente, el contrato de almacenamiento que se presenta por defecto en Remix. Si usaras este snap e interactuaras con el contrato router de Uniswap, verías lo siguiente:
¿Cuáles serían los próximos pasos si lo implementaras?
Esto es solo la punta del iceberg en cuanto a la información que podría dar confianza a los usuarios o evitar que sean víctimas de phishing. El primer paso obvio sería utilizar más fuentes para nuestros datos. La verificación del contrato ya usa Sourcify y Etherscan, pero sería mejor utilizar múltiples fuentes para cada criterio.
Luego, deberíamos aplicar algoritmos más avanzados para evitar que los estafadores puedan manipular las puntuaciones fácilmente. Por ejemplo, deberíamos contar la cantidad de cuentas únicas que han realizado transacciones con un contrato. También podríamos hacer algún análisis de las cuentas que interactuaron con él en el pasado para asegurarnos de que no todas provienen de una misma fuente. La desventaja es que todo este análisis es más difícil de realizar utilizando múltiples fuentes de verdad.
También existe investigación interesante sobre detección de fraudes en smart contracts que podría integrarse. Más información aquí.
En definitiva, la abrumadora cantidad de reacciones positivas que recibí por este hack demuestra que los usuarios demandan más información, y creo que el hecho de que sea fácil de entender jugó un papel clave.
¿Puedes contarnos un poco sobre ti?
Soy ingeniero de software en ChainSafe y anteriormente trabajé en Parity. Me encanta crear productos con un enfoque en una buena UX. Web3 es un gran campo de juego para mí porque todo es tan complejo que intentar hacerlo comprensible para la mayor cantidad de personas posible es un gran desafío. Llevo casi 5 años en el sector y, aunque he participado en muchos hackathons, generalmente soy voluntario, mentor o juez en lugar de participante. La razón principal es que soy perfeccionista y generalmente no me gustan las soluciones rápidas y descuidadas :).
¿Cuándo te presentaron por primera vez MetaMask Snaps y cómo fue tu experiencia?
Curiosamente, mis colegas en ChainSafe construyeron uno de los primeros snaps de la historia, el de Filecoin. Probablemente eché un vistazo al código en ese momento, pero no profundicé más.
En el momento del hackathon, la API de insights no estaba realmente disponible para los desarrolladores. Estaba hablando con el equipo de MetaMask en Lisboa y no esperaba poder añadir una interfaz de usuario a MetaMask. Me dijeron que estaba a punto de lanzarse y que podía empezar a construir sobre ella. De hecho, esto solo estaba disponible con una build personalizada y la documentación aún no había sido publicada.
¿Qué diferencia a MetaMask Snaps de otras wallets?
Tener la capacidad de añadir código personalizado en una pestaña, garantizando al mismo tiempo que ese código es seguro de ejecutar, abre las puertas a una enorme variedad de mejoras. Tengo muchas ganas de ver lo que surgirá de esto.
¿Cómo es para ti la experiencia de crear Snaps con MetaMask?
El monorepo de plantilla hizo que empezar fuera muy sencillo. El hecho de que todo mi código pudiera escribirse en un solo repositorio, con un único comando para lanzar tanto la dapp de prueba como el snap, ambos con actualización automática, fue una gran experiencia para el desarrollador.
¿Qué significan los Snaps para ti?
Es la extensión de una extensión. Ningún producto puede adaptarse a todos los usuarios. Añadir esta capa componible es una gran oportunidad para que cualquiera que necesite una función la construya por sí mismo.
¿Qué oportunidades ves con MetaMask Snaps y las posibilidades que desbloquea para el espacio Web3?
Hablaré en particular sobre los insights, que están desbloqueando una personalización infinita según las necesidades. Apuesto a que en el futuro se desarrollarán muchos más insights relacionados con la seguridad.
¿Algún consejo que quieras compartir con los desarrolladores interesados en probar MetaMask Snaps?
Clona el monorepo y disfruta de un inicio muy rápido.
Para comenzar con MetaMask Snaps:
Consulta la documentación para desarrolladores
Instala MetaMask Flask
Revisa una guía de MetaMask Snaps
Mantente conectado con nosotros en Twitter, discusiones de GitHub y Discord
¡Estáte atento a nuestro equipo en el próximo hackathon cerca de ti! ¡Feliz BUIDLing ⚒️!
Aviso legal: Los MetaMask Snaps son generalmente desarrollados por terceros distintos a Consensys Software. El uso de MetaMask Snaps desarrollados por terceros se realiza a tu propia discreción y riesgo, y con el acuerdo de que serás el único responsable de cualquier pérdida o daño que resulte de dichas actividades. Consensys no ofrece ninguna garantía expresa ni implícita, ya sea oral o escrita, con respecto a los MetaMask Snaps desarrollados por terceros, y declina toda responsabilidad por los Snaps desarrollados por terceros. El uso de software relacionado con blockchain conlleva riesgos, y los asumes en su totalidad al usar MetaMask Snaps.
Traducido por IA. Puede contener errores. Por favor, verifique siempre la información.