WEB3DEV Español

Cover image for Introducción a MetaMask Snaps
Hector
Hector

Posted on

Introducción a MetaMask Snaps

El camino al ERC-4337 y Abstracción de Cuentas

Image description

Uno de los grandes obstáculos que previene a los usuarios, todos los días, a adoptar las tecnologías blockchain es la experiencia del usuario.

Actualmente, los usuarios de la Web3 tienen una curva pronunciada de aprendizaje que tienen que sobrepasar antes de poder usar diariamente dApps y otras tecnologías blockchain. Las frases semillas, la jerga extraña y los inicios de sesión complicados son varias de las cosas que las personas deben lidiar cuando hacen la transición de la Web2 a la Web3.

Cuanta más complejidad haya, mayor es el chance de cometer errores, lo cual hace fácil entender por qué las personas se rehúsan a entrar al mundo de la descentralización y la auto custodia de los activos.

Para poder remover la fricción de entrar a la Web3, los desarrolladores y los anunciantes han estado trabajando en mejorar la experiencia de usuario y obtener un ecosistema blockchain a un punto donde cualquiera puede unirse con confianza.

Una forma de hacerlo es con la abstracción de cuentas, o cuentas inteligentes: una forma de usar los contratos inteligentes como EOAs (cuentas de propiedad externa, externaly owned accounts) para las transacciones y autenticaciones blockchain. A diferencia de los EOA, las cuentas inteligentes permiten mejoras UX como la recuperación de cuenta, transacción por lotes, pagar gas en stablecoins, multisigs incorporados, etc. La comunidad Ethereum incluso introdujo el ERC-4337: el estándar unificado que hace que la abstracción de cuentas sea más fácil y posible.

Image description

Sin embargo, mientras la industria está de acuerdo que un mejor UX es el camino a seguir, permitiendo y adoptando la abstracción de cuentas y, directamente, el ERC-4337 no es fácil o incluso posible para muchos proyectos Web3. Por eso es que algunos productos deciden tomar caminos alternativos y hoy hablaremos de ellos.

Una de las carteras EOA más populares en el mundo es MetaMask. El equipo de MetaMask admite que la cuenta de las cuentas inteligentes y mejor UX son la manera de traer la siguiente gran ola de usuarios a la Web3 y han encontrado una forma para “entregar los beneficios de la abstracción de cuentas, sin comprometer la cartera MetaMast que los usuarios conocen y quieren”, como dijeron en su post de blog.

Por eso introdujeron MetaMask Flask: una plataforma innovadora sin necesidad de permisos que permite a los desarrolladores a construir mejoras personalizadas sobre la infraestructura MetaMask existente.

“Usando Snaps, los desarrolladores pueden extender la funcionalidad de tu cartera MetaMask para apoyar diferentes casos de uso de la abstracción de cuentas. Desde claves de sesión para complementar las integraciones de cuentas inteligentes construidas en MetaMask, todas construidas con Snaps. Hemos visto a los desarrolladores estar a la altura de los desafíos de usar MetaMask para democratizar el acceso a la abstracción de cuentas,” escribió el equipo de MetaMask.

¿Qué es MetaMask Snaps?

MetaMask Flask es una plataforma de desarrollo para el software de la cartera de MetaMask. Permite a los desarrolladores Web3 experimentar con nuevas características que, eventualmente, serán integradas en MetaMask.

Una de estas nuevas características es Snaps: un sistema plugin que permite a los usuarios instalar plugins que se extienden con MetaMask con funcionalidad personalizable.

Un Snap permite a las páginas web tradicionales acceder a las funcionalidades de la Web3, mostrar información adicional a los usuarios cuando envían transacciones y realizar acciones para los usuarios en intervalos programados. Por ejemplo, cuando un usuario intenta transferir tokens ERC20 usando MetaMask, un sistema Snaps de detección de fraude puede revisar que el receptor de la transferencia compruebe contra una lista de estafadores conocidos.

Otro ejemplo: una cartera Snap puede proveer integración con blockchains que no son de Ethereum, permitiendo a los usuarios realizar transacciones en estas otras blockchains desde una página web que soporte la cartera Snap.

¿Cómo funciona MetaMask Snaps?

Snaps está implementado como aplicaciones JavaScript/TypeScript donde los desarrolladores implementan una o más de tres funcionalidades (conocimiento de las transacciones, pedido RPC, trabajos cron) como métodos JavaScript/TypeScript.

Como un Snap puede constituirse de un código arbitrario que puede acceder a la cartera MetaMask de un usuario, todos los Snaps son ejecutados en un entorno especial que está diseñado con la seguridad en mente. Por lo tanto, difieren en diferentes formas desde el código ordinario JavaScript o TypeScript que podría encontrarse en, digamos, una página web o una aplicación Node.js. En particular, el código será ejecutado en un “sandbox” que limita las APIs de JavaScript de las que pueden accederse.

Además, para prevenir que Snaps acapare los recursos del sistema, todos los Snaps están hechos para que “vivan a corto plazo” para que no tomen mucho para generar los conocimientos de las transacciones o el proceso de los pedidos RPC. El tiempo de espera finalizará por la extensión de MetaMask.

Para más detalles sobre cómo Snaps funciona, referimos al lector interesado a la documentación oficial

¿Qué puedes hacer con MetaMask Snaps?

Hay muchos otros casos de uso de MetaMask Snaps pero, el caso de uso principal que es enfatizado por MetaMask es la habilidad de usar Snaps para construir interfaces de usuario para carteras de contratos inteligentes para la abstracción de cuentas de estilo en la cadena.

La abstracción de cuentas le da a los desarrolladores mucha libertad para crear una cartera con cualquier esquema de autenticación personalizable, controles de acceso o cualquier otra mejora que puede ser usada para controlar transacciones desde la cartera.

Pero, acceder a la funcionalidad personalizable de la cartera requeriría que el usuario construya y envíe transacciones no triviales a la cartera del contrato inteligente. Un desarrollador de la Web3 podría crear un Snap que sirva como la interfaz del usuario como cartera para que los usuarios no tengan que preocuparse sobre los detalles técnicos, similar a cuando un banco crea una aplicación que hable con los servidores del banco.

¿Cómo usar MetaMask Snaps?

Como Snaps está en una fase beta de MetaMask, los usuarios necesitarán instalar la extensión del navegador MetaMask Flask como el primer paso para poder usar un Snap.

Cuando un usuario interactúa con una página web que soporta un Snap, al usuario se le mostrará automáticamente un diálogo que lleva a l usuario a instalar el Snap. Este diálogo mostrará información como la descripción del Snap y qué tipos de permisos son permitidos para acceder. Por ejemplo, un Snap que envía transacciones a la blockchain, puede que pida permisos para acceder al internet y permisos para acceder a las claves de cuenta privada.

El usuario entonces debe “conectarse” a la página web de Snap, el cual dará permiso a la página web para acceder a la funcionalidad del Snap. Lo que el usuario hace con el snap, dependerá de cuál de estos tres tipos mayores de funcionalidad (aunque toma en cuenta que no son mutuamente exclusivo) que soporta:

  • Conocimiento de Transacción: antes que un usuario firme una transacción, un Snap que proporcione conocimiento de la transacción mostrará información adicional sobre la transacción en un popup. Esto ayudará al usuario a tomar una decisión informada sobre si quiere realmente firmar la transacción. El ejemplo de la detección de fraude de Snap que discutimos antes es un ejemplo de los conocimientos de transacciones de Snap.
  • Pedidos RPC: un Snap procesa pedidos JSON-RPC que permite a las dApps (páginas web) y Snaps que se comuniquen con el Snap. EL usuario no tendrá acceso a este tipo de funcionalidad directamente, en cambio, el Snap típicamente servirá como parte de la plomería detrás de la página web/dApp con la que el usuario interactúa. El ejemplo de cartera Snap que discutimos antes es un ejemplo de un Snap que procesa pedidos JSON-RPC
  • Trabajos cron: un Snap que soporta trabajos cron, permite a los usuarios a programar acciones que serán automáticamente realizados por el usuario en intervalos regulares.

Nuestro trabajo con Snaps

Aunque la plataforma MetaMask Snaps está diseñada con la seguridad en mente, los desarrolladores Snap aún necesitan tener cuidado para evitar introducir vulnerabilidades en su propio Snaps.

Una en particular son los vectores de ataque de ingeniería social. Ya que Snaps será usado directamente por los usuarios, deberían estar diseñados de una manera que ayude a los usuarios a evitar que los estafen o confundan.

Por ejemplo, cuando realizamos una auditoría de seguridad para una cartera en Snap, observamos que la cartera no muestra los detalles completos de la transacción cuando un usuario quiere enviar los fondos. Antes que los desarrolladores arreglen la cartera, un hacker podría haber engañado a un usuario a que le diera todos sus tokens ERC20, ¡y no habría forma para que el usuario sepa qué está sucediendo!

Los desarrolladores Snap también deberían estar pendientes por vulnerabilidades en aplicaciones tradicionales de la web. Ya que es posible que las páginas web accedan a funcionalidades a través de Snap, los hackers podrían intentar tomar los fondos del usuario, robar información sensible o realizar acciones sin autorización, explotando un script de sitio cruzado (cross-site) o vulnerabilidades de inyección de consulta. En la auditoría de la misma cartera Snap que mencionamos, ¡los desarrolladores confirmaron y arreglaron un bug que permitiría que una página web que hace phishing a que robe silenciosamente los credenciales de la cuenta de un usuario!

Asegurando MetaMask Snaps

Snaps está haciendo que MetaMask, la criptobilletera más famosa del mundo sea más fácil de usar en una forma diaria. Mientras más desarrolladores trabajan en Snaps, será increíblemente importante hacer auditorías con Snaps para evitar problemas de seguridad y estafas.

Si estás trabajando en un Snap y estarías interesado en una evaluación de seguridad, contáctanos hoy:

🤙Pide una auditoría de MetaMask Snap

¿Quieres aprender más sobre esto? Conéctate con nosotros

Este artículo es una traducción de Veridise, hecha por Héctor Botero. Puedes encontrar el artículo original aquí.
Sería genial escucharte en nuestro Discord, puedes contarnos tus ideas, comentarios, sugerencias y dejarnos saber lo que necesitas.
Si prefieres puedes escribirnos a @web3dev_es en Twitter.

Discussion (0)