Saltar al contenido

Guía para hackers: acciones ERC-7715 del MetaMask Delegation Toolkit

Guía del hacker para construir con permisos ERC-7715

2 min
Guía para hackers: acciones ERC-7715 del MetaMask Delegation Toolkit

Esta guía ofrece una descripción general completa de las acciones experimentales ERC-7715 en el MetaMask Delegation Toolkit, una herramienta innovadora que permite a las dapps solicitar y gestionar permisos de usuario para acciones específicas, como transferencias de tokens.

Esto habilita nuevos casos de uso interesantes, como suscripciones y pagos automatizados, al tiempo que mejora la experiencia del usuario. Exploraremos los conceptos fundamentales, te guiaremos en la configuración de tu entorno de desarrollo y recorreremos el proceso de construcción de una dapp que aprovecha el Gator SDK. Esta guía utiliza Viem para las interacciones con la blockchain.

Fundamentos: repensando las transacciones en web3

ERC-7715 introduce un nuevo paradigma para la forma en que las dapps interactúan con las wallets de los usuarios. En lugar de requerir que los usuarios aprueben cada transacción manualmente, las dapps pueden solicitar permiso para realizar ciertas acciones en nombre del usuario dentro de límites predefinidos.

Conceptos clave

  • Cuenta de sesión: La cuenta de la dapp (ya sea un EOA o un contrato inteligente) a la que se le otorga permiso para actuar en nombre del usuario.

  • Wallet del usuario: La wallet MetaMask del usuario, que otorga permisos a la cuenta de sesión.

  • Permisos: Acciones específicas que una dapp está autorizada a realizar. El Gator SDK actualmente admite native-token-stream.

  • Cuenta inteligente Gator: Una cuenta inteligente creada dentro del MetaMask Snap del usuario, específicamente para gestionar los permisos otorgados a través del Gator SDK.

  • Delegación: El mecanismo central que hace posibles las transacciones basadas en permisos. Cuando un usuario otorga un permiso, se crea una delegación desde su Cuenta Inteligente Gator hacia la cuenta de sesión de la dapp.

Esto establece una autorización off-chain, lo que permite a la dapp ejecutar acciones específicas bajo condiciones definidas sin requerir que el usuario firme cada transacción. Es como configurar una asignación recurrente con reglas.

  • ERC-7715 (solicitudes de permisos de wallet): Un estándar para la forma en que las dapps solicitan permisos a las wallets de los usuarios. https://eip.tools/eip/7715

  • ERC-7710 (delegación de contratos inteligentes): Un estándar para la forma en que los contratos inteligentes pueden delegar capacidades a otras cuentas.https://eip.tools/eip/7710

  • MetaMask Snaps: Un sistema que permite a los desarrolladores ampliar la funcionalidad de MetaMask. Los Snaps son esencialmente plugins que pueden extender la funcionalidad de MetaMask, permitiéndole admitir nuevas blockchains, nuevos tipos de transacciones y, en el caso del Gator SDK, gestión avanzada de permisos. El Gator SDK se basa en dos Snaps:- Permission kernel snap: Actúa como enrutador hacia el Snap proveedor de permisos específico; en nuestro caso, el Gator Permission Snap.

  • Gator permissions snap: Crea y gestiona la Cuenta Inteligente Gator del usuario. Este Snap se encarga de proporcionar al usuario la interfaz de selección de permisos (Permission Picker UI) y de permitirle editar, otorgar o rechazar permisos.

- ERC-4337: Estándar de Account Abstraction, que permite cuentas inteligentes y gestión de transacciones más flexibles; frecuentemente utilizado en conjunto con el Gator SDK. https://eip.tools/eip/4337

- Bundler: Un servicio que agrupa múltiples operaciones de usuario (transacciones) en una sola transacción, optimizando el uso de gas.

  • Paymaster (opcional): Un contrato inteligente que puede pagar las comisiones de gas de las transacciones, permitiendo transacciones sin gas para el usuario.

Cómo funciona

El Gator SDK, en conjunto con MetaMask Snaps, ERC-7715 y ERC-7710, habilita un flujo de trabajo basado en permisos:

  1. Solicitud de permiso: La dapp, actuando como cuenta de sesión, inicia una solicitud de permiso. Esto se realiza mediante el método wallet_grantPermissions, estandarizado en ERC-7715. La dapp especifica el tipo de permiso (p. ej., native-token-stream), el destino (su dirección) y cualquier parámetro específico (p. ej., el monto).

  2. Autorización del usuario: MetaMask Flask presenta la solicitud de permiso al usuario. Si los Snaps requeridos no están instalados, MetaMask Flask le pedirá al usuario que los instale en ese momento. A continuación, se le presenta al usuario una explicación clara y comprensible de lo que está solicitando la dapp.

El usuario puede entonces aprobar o rechazar la solicitud. El Permission Kernel Snap desempeña un papel clave en esta interacción, asegurando que el usuario comprenda los permisos que se están solicitando.

  1. Creación de la cuenta inteligente Gator: Si el usuario aprueba el permiso, el Gator Permissions Snap entra en acción. Esta Cuenta Inteligente es el origen de la autoridad delegada.

  2. Financiación de la cuenta Gator: El usuario es responsable de financiar esta Cuenta Inteligente Gator con fondos suficientes para cubrir las acciones delegadas. Por ejemplo, si el permiso es para native-token-stream, el usuario debe depositar el token nativo correspondiente en su Cuenta Inteligente Gator.

  3. Creación de la delegación: Este es un paso crucial. Se crea una delegación que establece el vínculo entre la Cuenta Inteligente Gator del usuario y la cuenta de sesión de la dapp. Esta delegación, regida por ERC-7710, autoriza a la dapp a actuar en nombre del usuario, pero únicamente dentro de los límites del permiso otorgado. La delegación especifica:1. Las acciones que la dapp puede realizar (p. ej., transferir tokens nativos).

  4. Cualquier condición o limitación (caveats), como:1. Monto máximo por transferencia

  5. Frecuencia de las transferencias

  6. Fecha de vencimiento

  7. Canje del permiso (acción delegada): Cuando la dapp necesita actuar dentro del alcance del permiso otorgado, "canjea" la delegación. Esto implica que la dapp construya una transacción (o User Operation, si se utiliza ERC-4337) que cumpla con las reglas establecidas en la delegación.

La dapp luego envía esta transacción (o User Operation, si se utiliza ERC-4337), proporcionando prueba de la delegación válida.

Configura tu entorno de desarrollo

Ten en cuenta que los Snaps requeridos para las acciones ERC-7715 actualmente solo funcionan en Sepolia. Si estás desarrollando en el track de ERC-7715, asegúrate de usar la testnet de Sepolia. Para otras funcionalidades del Delegation Toolkit, puedes usar cualquiera de las redes de prueba listadas aquí

Requisitos previos

  • Node.js: Asegúrate de que Node.js esté instalado en tu sistema.

  • MetaMask Flask: Instala MetaMask Flask, una versión de MetaMask orientada a desarrolladores. Descárgala desde el sitio oficial de MetaMask. Importante: Usa un perfil de navegador separado para Flask. Si usas el mismo navegador con tu wallet MetaMask habitual, desactívala.

  • MetaMask Snaps: Los Snaps requeridos para el Gator SDK (Permission Kernel Snap y Gator Permissions Snap) pueden instalarse manualmente, o MetaMask Flask le pedirá al usuario que los instale cuando una dapp solicite permisos por primera vez.

  • Bundler ERC-4337: Es necesario si la cuenta de sesión es una wallet ERC-4337. Para enviar operaciones de usuario desde una wallet ERC-4337, necesitarás acceso a un bundler. Pimlico es una buena opción. Consulta su documentación.

  • Paymaster (opcional): Si deseas patrocinar las comisiones de gas, necesitarás un paymaster. Pimlico también ofrece servicios de paymaster.

Pasos de instalación

  1. Instalar Node.js: Descarga e instala Node.js desde el sitio web oficial.

  2. Instalar MetaMask Flask:- Abre un nuevo perfil de navegador.

  • Ve a la página de descarga de MetaMask Flask en el sitio web de MetaMask.

  • Descarga e instala la extensión MetaMask Flask.

  1. Configurar un bundler:- Si usas Pimlico, crea una cuenta en su plataforma.

  • Obtén tu clave API del bundler desde Pimlico.

  • Familiarízate con el proceso de envío de operaciones de usuario al bundler de Pimlico.

  1. Configurar un paymaster (opcional):- Si usas Pimlico, también puedes utilizar su servicio de paymaster. Configura tu dapp para que use el paymaster.

Construyendo una dapp con las acciones Gator ERC-7715

La forma más sencilla de comenzar con las acciones Gator ERC-7715 es con el CLI create-gator-app, que incluye una plantilla llamada Experimental: Basic Gator app para probar los permisos ERC-7715. Esta plantilla viene con todas las bibliotecas básicas necesarias y fragmentos de código ya instalados.

Puedes ejecutar el CLI con

npx create-gator-app@latest

Consulta estas secciones de la documentación para obtener fragmentos de código importantes:

Recursos

Traducido por IA. Puede contener errores. Por favor, verifique siempre la información.

Califica la traducción

Este artículo fue escrito por: