
Aprende sobre la abstracción de cuentas en Ethereum: qué significa y por qué importa.

Aunque el mercado bajista sigue en plena efervescencia, pocos dudan de que las criptomonedas llegaron para quedarse; las wallets como MetaMask ya cuentan con millones de usuarios, por ejemplo. Sin embargo, la pregunta sigue en pie: "¿Cómo llevamos al próximo billón de usuarios a web3?"
Dependiendo de a quién le preguntes, las respuestas variarán. Pero todos coinciden en algunos puntos, especialmente en la necesidad de mejorar la experiencia de los usuarios que interactúan con aplicaciones blockchain. Sin hacer que web3 sea más fácil de usar, las personas tienen pocos incentivos para abandonar las apps de web2 que utilizan a diario.
La "abstracción de cuentas" es una propuesta que busca mejorar las interacciones de los usuarios con Ethereum, y es un tema que cada vez genera más debate en la comunidad cripto. Sin embargo, puede que estés pensando: "¿Qué es exactamente la abstracción de cuentas y por qué debería importarme?"
Este artículo está diseñado para ayudarte a entender la abstracción de cuentas, contextualizando su pasado, presente y futuro. Responderemos todas las preguntas que puedas tener sobre el tema: el quién, qué, por qué, cómo y cuándo de la abstracción de cuentas.
Un resumen rápido de los puntos clave:
Las cuentas programables y autocustodiadas ("smart accounts") pueden reducir la fricción al incorporar nuevos usuarios al ecosistema web3. Sin embargo, las limitaciones impuestas por el diseño de Ethereum impiden la adopción y el uso generalizado de las smart accounts.
La abstracción de cuentas introduce cambios significativos que allanan el camino para la adopción masiva de smart accounts sin necesidad de confianza y resistentes a la censura. Se están considerando diferentes enfoques para implementar la abstracción de cuentas, cada uno con beneficios y compromisos únicos.
MetaMask apoya la adopción de la abstracción de cuentas a través de su plataforma de innovación sin permisos: MetaMask Snaps. Con MetaMask Snaps, los desarrolladores pueden ampliar MetaMask para llevar los beneficios de la abstracción de cuentas a usuarios de criptomonedas de todo el mundo.
Como cualquier otro concepto nuevo en web3, la abstracción de cuentas puede ser difícil de definir. Sin embargo, podemos comprenderla mejor si primero desglosamos los distintos términos relevantes para la discusión sobre la abstracción de cuentas en Ethereum:
Abstracción (s.f.): Un término (bastante complejo) en informática que significa, a grandes rasgos, ocultar información sobre un sistema o aplicación para que pueda utilizarse con menos conocimiento de los procesos que se ejecutan en segundo plano. También se define como "el proceso de ocultar la complejidad de un sistema mediante una interfaz que facilita su manipulación."
Cuenta (s.f.): La representación de un usuario en la blockchain que puede enviar o recibir transacciones e interactuar con otras cuentas on-chain. Ethereum tiene dos tipos de cuentas: Cuentas de Propiedad Externa (EOAs) y cuentas de contrato (también conocidas como "smart contracts").
2a. Cuentas de Propiedad Externa (EOA): Cuentas de Ethereum generadas mediante software de wallet (como MetaMask) y gestionadas por un par criptográfico de claves pública y privada. Una EOA es "activa" (puede iniciar transacciones y pagar comisiones de gas para la ejecución en la EVM). Sin embargo, está limitada a ejecutar operaciones básicas, como enviar Ether o interactuar con contratos.
2b. Cuentas de contrato: Cuentas de Ethereum desplegadas como un smart contract y controladas por lógica escrita en código (en lugar de una clave privada). Una cuenta de contrato es "pasiva": solo puede enviar transacciones en respuesta a una transacción de una EOA y no puede pagar comisiones de gas. Sin embargo, es programable y puede ejecutar lógica arbitraria según el código almacenado en la dirección.
Wallet (s.f.): Una interfaz para gestionar los fondos en tu cuenta de Ethereum; el funcionamiento de una wallet depende del tipo de cuenta con la que esté vinculada. Una wallet basada en EOA como MetaMask requiere una clave privada para autorizar transacciones. Por su parte, una wallet de smart contract está vinculada a una cuenta de contrato y puede usar lógica arbitraria para autorizar transacciones (por ejemplo, usando un esquema multifirma).
Con estas definiciones claras, ahora podemos definir la abstracción de cuentas.
Definiendo la abstracción de cuentas
La abstracción de cuentas es una propuesta para aumentar la flexibilidad en la gestión y el comportamiento de las cuentas de Ethereum. Esto se logra introduciendo contratos de cuenta: smart contracts de propósito especial que definen y gestionan la cuenta de Ethereum de un usuario (ahora denominada smart account).
Con la abstracción de cuentas, puedes disfrutar de acceso programable a tus fondos utilizando una wallet de smart contract en lugar de depender únicamente de claves privadas para la seguridad. Esto es posible porque tu smart account puede tener reglas personalizadas para gastar monedas y transferir activos.
Entonces, ¿cómo encaja la "abstracción" en todo esto?
Desde la perspectiva de la red, "abstracción de cuentas" significa que los detalles de los tipos de cuenta son invisibles para el protocolo de Ethereum. Cada cuenta (incluidas las cuentas autocustodiadas) es simplemente un smart contract, y los usuarios son libres de determinar cómo se gestionan y operan las cuentas individuales.
Desde la perspectiva del usuario, "abstracción de cuentas" significa que ciertos detalles técnicos sobre la interacción con las cuentas de Ethereum quedan ocultos detrás de interfaces de alto nivel. Esto mejora el diseño de las wallets y reduce significativamente la complejidad de usar aplicaciones web3.
Esta aclaración es necesaria porque la confusión en torno a la abstracción de cuentas surge de no saber (a) qué se está abstrayendo y (b) dónde ocurre la abstracción. Las cuentas no necesariamente se abstraen de los usuarios (aunque sí se abstraen del protocolo). Sigues teniendo una dirección de wallet para recibir fondos y una clave de firma para garantizar que solo tú puedas gastar esos fondos.
Desde tu perspectiva, la abstracción de cuentas es más como usar una smart account que abstrae algunos detalles sobre la interacción con la blockchain. Para contextualizar, así es como se ve la interacción con una dapp desde la perspectiva de un usuario primerizo:
Con la abstracción de cuentas, los desarrolladores de wallets pueden crear sistemas que gestionen estos procesos en segundo plano y simplifiquen la experiencia de usar web3 (en resumen: las wallets se vuelven "invisibles"). Algunos casos de uso (que ampliaremos más adelante) incluyen: eliminar la necesidad de guardar frases semilla/claves privadas, pagar gas por transacciones, o incluso configurar una cuenta on-chain por tu cuenta.
Como se mencionó anteriormente, la abstracción de cuentas elimina la mayor parte de la fricción asociada con el uso de wallets web3 y la interacción con dapps. Esto acerca web3 al ideal de web2, donde todos los usuarios, tanto novatos como experimentados, pueden beneficiarse del mismo grado de flexibilidad, seguridad y facilidad de uso.
En particular, la abstracción de cuentas tiene implicaciones enormes para el futuro de la autocustodia. Con las funcionalidades que ofrecen los contratos de cuenta, usar una wallet web3 se sentirá como usar una cuenta bancaria o una aplicación sin tener que confiar en el banco.
En las siguientes secciones, abordaremos las diferentes dimensiones de la abstracción de cuentas y analizaremos cómo mejoran la experiencia de uso de Ethereum. Específicamente, hablaremos sobre la abstracción de firmas, la abstracción de comisiones y la abstracción de nonces.
Hoy en día, las transacciones desde tu EOA deben tener una firma generada por la clave privada de la cuenta utilizando el algoritmo de firma digital de curva elíptica (ECDSA) para ser válidas. Esto le otorga a la mayoría de las EOAs un modelo de seguridad simple: los fondos están seguros mientras las claves privadas permanezcan en posesión del usuario. Pero también tiene varias limitaciones:
Las EOAs son notoriamente difíciles de proteger, especialmente porque los actores maliciosos siempre están desarrollando nuevas formas de comprometer las claves privadas. En MetaMask, hemos visto de primera mano los desafíos que el phishing, la ingeniería social, el spoofing, la inyección de malware y ataques similares representan para la seguridad de los usuarios en web3.
La autocustodia puede sentirse como un deporte extremo. A diferencia de tu cuenta bancaria habitual, no puedes "recuperar" una wallet EOA si la frase semilla/clave privada se pierde. Esto representa un desafío para los nuevos usuarios, quienes deben enfrentarse a las implicaciones de perder completamente los activos almacenados en cuentas de Ethereum sin ningún recurso.
La abstracción de firmas resuelve estos problemas eliminando las firmas ECDSA como mecanismo de autorización predeterminado para las cuentas no custodiadas. En cambio, los usuarios pueden definir reglas personalizadas para autorizar a las wallets a iniciar transacciones. O, dicho de otra manera, tú decides qué significa que una transacción sea válida.
Implementar la abstracción de firmas abre posibilidades para esquemas de autorización más avanzados. De esta manera, usar tu wallet web3 se sentirá similar, si no mejor, que una aplicación bancaria de web2. Aquí algunos casos de uso:
Límites de transacción: Una wallet vinculada a tu smart account puede rechazar una transacción (o solicitar autorización adicional) si el valor supera un límite preestablecido. ¿Te suena familiar? Debería: los bancos ya lo hacen para proteger tus cuentas y tarjetas de crédito contra fraudes, usos no autorizados y otras razones relacionadas con la seguridad.
Aprobaciones de múltiples partes: Podrías delegar el control parcial de tu cuenta a partes de confianza, también conocidas como "guardianes". Los guardianes pueden ser amigos, familiares, proveedores de servicios o incluso un dispositivo separado que poseas (por ejemplo, una hardware wallet). Así, puedes habilitar la autenticación multifactor (MFA) al estilo web2 para tu wallet, exigiendo la aprobación del guardián para transacciones que retiren fondos de tu smart account.
Rotación y revocación de claves: Con las smart accounts, puedes generar una nueva clave de firma si la clave anterior se perdió o fue robada. Para mayor seguridad, puedes hacer que los guardianes congelen tu cuenta durante el proceso de recuperación y exijan aprobación para los flujos de rotación/revocación de claves (es decir, recuperación social). Esto es similar a cómo puedes congelar tu tarjeta de crédito si se extravía o es robada sin perder acceso a tu cuenta bancaria.
Sesiones de confianza: ¿Te molesta tener que aprobar cada acción al interactuar con una dapp en tu navegador? ¡Genial! Puedes crear "claves de sesión" especiales con tu smart account para que las dapps firmen transacciones automáticamente durante un período específico. Esto significa que puedes interactuar con dapps, como jugar un juego blockchain, sin que te interrumpan constantemente las ventanas emergentes de la wallet.
A grandes rasgos, las claves de sesión se basan en un smart contract que controla las interacciones entre tu cuenta y una dapp. Siempre tienes el control de las claves de sesión y puedes regular la autoridad de firma de la dapp, como cuánto puede deducir de tu saldo o qué funciones puede invocar.
Pagos automáticos: Similar a la idea de las claves de sesión, puedes autorizar a proveedores de servicios a "extraer" fondos de tu smart account (sujeto a reglas predefinidas). Esto hace posible configurar pagos recurrentes y suscripciones con tu wallet web3. ¿Te imaginas pagar una suscripción a Netflix o una factura de servicios usando tu cuenta de Ethereum?
Actualmente, cada transacción de Ethereum debe incluir una "comisión de gas" que indica cuánto está dispuesta a pagar la EOA remitente por la ejecución. Las comisiones de gas se denominan en Ether, el token nativo de Ethereum. Esto genera problemas, especialmente para los nuevos usuarios, quienes ahora necesitan conseguir ETH antes de enviar su transacción.
La abstracción de cuentas no elimina la necesidad de pagar comisiones de gas, pero abstrae los detalles de cómo y cuándo los usuarios eligen pagar por el gas (abstracción de comisiones). Por ejemplo, la abstracción de cuentas permite "transacciones patrocinadas" donde otra cuenta cubre el costo del gas para la transacción de un usuario. Algunos beneficios de las transacciones patrocinadas:
Pagos de gas en tokens distintos a ETH: ¿Alguna vez has deseado poder pagar las comisiones de transacción con tokens ERC-20 en tu wallet? Con las transacciones patrocinadas, puedes conseguir un relayer con ETH que adelante el costo de tus transacciones y pagarle de vuelta en otro token como DAI o USDC.
Transacciones sin gas: Los desarrolladores de dapps pueden patrocinar transacciones y minimizar la fricción de incorporación para los nuevos usuarios de Ethereum. Podrías estar usando apps web3 sin saber nada sobre el "gas" y disfrutar de la misma experiencia de un solo clic que ofrecen las apps web2.
Inicios de sesión sociales: Una dapp podría desplegar una wallet de contrato en tu nombre, resolviendo el problema de tener que configurar una wallet antes de enviar transacciones on-chain. ¿Lo mejor? Las wallets pueden usar infraestructura de autenticación (por ejemplo, Web3Auth y WebAuthn) para permitir a los usuarios crear cuentas web3 con credenciales existentes como una dirección de correo electrónico o una cuenta de Facebook/Twitter.
Las smart accounts en Ethereum tienen otra característica especial: el agrupamiento de transacciones. Con las transacciones agrupadas, puedes combinar múltiples operaciones en una sola transacción on-chain y reducir el costo y la complejidad de interactuar con dapps. He aquí por qué el agrupamiento de transacciones es importante:
Tu EOA almacena un valor conocido como "nonce" que muestra cuántas transacciones has enviado (piénsalo como un contador de transacciones). Una nueva transacción debe incrementar estrictamente el nonce en 1 para ser válida, una regla que evita que alguien más "repita" la misma transacción para robar tus fondos (sí, puede ocurrir).
Pero hay un inconveniente. Los nonces te obligan a procesar las transacciones en orden de llegada (FIFO). Imagina que tienes dos transacciones (A y B) con nonces de 0 y 1, respectivamente. En este caso, enviarías la transacción A y esperarías una confirmación (de su ejecución) antes de enviar B.
Enviar B mientras A aún está pendiente simplemente resultaría en el rechazo de la primera, ya que el nonce sería mayor que el rango prescrito (nonce actual de la EOA + 1). De hecho, esta es una razón importante por la que tienes "transacciones atascadas" cuando usas una wallet.
La abstracción de nonces te permite crear mecanismos personalizados de protección contra repetición (en lugar de que el protocolo de Ethereum imponga un orden estricto en las transacciones). Por ejemplo, puedes tener un esquema de nonces que permita procesar múltiples transacciones en paralelo. Esto resolvería el problema de las transacciones bloqueadas/atascadas y mejoraría significativamente las interacciones con las dapps.
Dicho esto, la abstracción de nonces es difícil de implementar en la práctica y puede potencialmente romper ciertas invariantes críticas para la seguridad y la UX, como la unicidad del hash de transacción. Aquí es donde entra en juego el agrupamiento de transacciones:
Dado que las smart accounts pueden procesar múltiples transacciones a la vez, la necesidad de esquemas complejos de abstracción de nonces desaparece en gran medida. Volviendo al ejemplo anterior, podemos imaginar que las transacciones A y B son simplemente partes de una única operación hipotética, como intercambiar activos en Uniswap:
Transacción A: Aprobar que el contrato de Uniswap acceda a tus tokens
Transacción B: Completar el intercambio de tokens
Con el agrupamiento de transacciones, puedes combinar el flujo de aprobación e intercambio en una sola transacción. El resultado: menores comisiones de gas y tiempos de espera reducidos al usar dapps. ¿Genial, verdad?
En este punto, ya sabes que la abstracción de cuentas nos permite agregar funcionalidades personalizadas y políticas de autorización a las cuentas de usuario. Pero realmente no hemos hablado de cómo es posible todo eso. Esta sección analiza los diferentes enfoques para implementar la abstracción en Ethereum (si eso no suena muy atractivo, siéntete libre de saltar a la siguiente sección).
Hay dos formas generalmente aceptadas de lograr la abstracción de cuentas: (a) permitir que las EOAs ejecuten código EVM y (b) permitir que los smart contracts inicien transacciones. Por ello, encontrarás que muchas propuestas de abstracción de cuentas buscan que las EOAs se comporten como smart contracts o que las cuentas de contrato actúen como EOAs.
Esto naturalmente plantea algunas preguntas:
"¿En qué se diferencian exactamente estos enfoques?"
"¿Por qué importa qué enfoque adoptemos?"
Al darle a las EOAs la capacidad de ejecutar código, podemos agregar funcionalidades complejas a las cuentas controladas por usuarios. Esto potencia las EOAs y las transforma en smart accounts, preparando el terreno para la abstracción de cuentas nativa. Es importante destacar que este enfoque te permite disfrutar de los beneficios de una wallet programable sin incurrir en el costo de desplegar una nueva cuenta de contrato.
Algunos enfoques para actualizar las EOAs a cuentas de contrato implican tratar el payload de datos de las transacciones EOA como bytecode EVM. Otros implican delegar el control de una EOA a un contrato de cuenta especial que realiza transacciones en nombre de la EOA. En este último caso, el mismo contrato de cuenta puede ser reutilizado por diferentes EOAs, reduciendo la necesidad de tener diferentes implementaciones de wallets de contrato.
A continuación se muestra una infografía con las diferentes propuestas de abstracción de cuentas en el campo de "hacer las EOAs programables", incluyendo sus características clave y el estado de implementación:
Con este enfoque, actualizamos las cuentas de contrato para que puedan aprobar transacciones y pagar comisiones de gas (igual que las EOAs). Esto proporciona otra vía para lograr la abstracción de cuentas al introducir "contratos potenciados" que pueden actuar como EOAs (es decir, contratos de cuenta). Además, resuelve un problema urgente en Ethereum: la falta de soporte para wallets de contrato a nivel de protocolo.
Verás, algunas wallets de smart contract ya existen hoy en día y ofrecen muchos beneficios de la abstracción de cuentas. Pero usar estas wallets puede ser increíblemente difícil porque Ethereum trata a los smart contracts como "ciudadanos de segunda clase" y requiere que todas las transacciones comiencen desde una EOA.
Esta limitación también significa que las wallets de smart contract carecen de la naturaleza sin confianza y autocustodiada de las wallets EOA como MetaMask. Para contextualizar, consideremos el flujo de creación y uso de una wallet de smart contract:
Desplegar una nueva cuenta de contrato
Enviar transacciones para llamar funciones en tu contrato de wallet
El problema ya es evidente: ahora necesitas gestionar dos wallets. ¿Por qué? Una EOA (con ETH precargado) necesita cubrir los costos de desplegar la wallet y llamar a las funciones necesarias posteriormente.
Aquí entran los relayers: EOAs que pueden pagar las transacciones de tu wallet a cambio de una comisión. Los proveedores de wallets de smart contract a menudo operan relayers para subsidiar las transacciones de los usuarios. Es decir, el relayer paga ETH desde su wallet para cubrir tus comisiones de transacción y recupera los costos cobrándote de otra manera, quizás en moneda fiat o algún otro token.
Este sistema funciona bien en la mayoría de los casos: puedes crear y usar una wallet de contrato sin preocuparte demasiado por las complejidades de pagar el gas. Sin embargo, también requiere confiar en que el relayer no censure ni manipule tus transacciones.
Pero esto es cripto, y nos gustan los sistemas sin confianza.
Al permitir que las cuentas de contrato aprueben transacciones y paguen comisiones de gas, la abstracción de cuentas hace que el proceso de crear y usar una wallet de smart contract sea más confiable. Específicamente, permite que cualquiera que opere un relayer ejecute transacciones en tu nombre. Solo necesitas firmar un mensaje aprobando al relayer para deducir fondos de tu saldo de wallet después de ejecutar la transacción:
Ahora el flujo de uso de una wallet de smart contract se ve algo diferente:
¿Desplegar un contrato de wallet? Usando flujos de despliegue contrafáctico, puedes enviar fondos a la cuenta de contrato antes de desplegarla y pagar a la EOA de un relayer los costos de despliegue desde el saldo de tu wallet.
¿Interactuar con un contrato de wallet? Firma un mensaje off-chain y haz que un relayer realice la llamada a tu contrato de cuenta. El mensaje incluirá una instrucción para que el contrato de cuenta reembolse los costos de gas del relayer.
Esta idea de habilitar smart accounts sin confianza y resistentes a la censura sustenta muchas propuestas de abstracción de cuentas en esta categoría. Por ejemplo, ERC-4337, la propuesta de abstracción de cuentas más popular hasta ahora, descentraliza los relayers al introducir un mempool alternativo donde los usuarios pueden enviar transacciones de wallets de contrato para su procesamiento.
En este caso, los relayers (llamados "bundlers") pueden competir para ejecutar transacciones de smart accounts, reduciendo el riesgo de censura o dependencia excesiva de los proveedores de wallets. A continuación se muestra una infografía con las diferentes propuestas de abstracción de cuentas en el campo de "dar a los smart contracts características de EOA", incluyendo sus características clave y el estado de implementación:
Años después de que Vitalik Buterin introdujera el concepto por primera vez, aún existe cierto desacuerdo sobre la mejor manera de implementar la abstracción de cuentas. Por ejemplo, implementar EIP-3074 y EIP-5003 permitiría que las EOAs existentes (incluidos los usuarios de MetaMask) se actualicen a smart accounts. Pero estas propuestas requieren un hard fork que, dado el enfoque de la comunidad en actualizaciones más urgentes, parece inviable por ahora.
En contraste, EIP-4337 ha recibido amplio apoyo ya que implementa la abstracción de cuentas sin requerir cambios a gran escala en el protocolo de Ethereum. Pero para los usuarios que actualmente utilizan wallets basadas en EOA, significa tener que mover activos de una EOA a una cuenta de contrato recién desplegada, un proceso potencialmente complejo y costoso, dadas las altas comisiones de gas en Ethereum hoy en día.
En MetaMask, creemos que la abstracción de cuentas es clave para proporcionar una experiencia de incorporación fluida para los nuevos usuarios de web3. También sabemos que las EOAs no pueden garantizar la adopción de las criptomonedas ("El próximo billón de usuarios no va a escribir 12 palabras en un papel", como lo expresa coloridamente Yoav Weiss, investigador de la Ethereum Foundation).
Por ello, hemos comenzado a pensar en formas de ofrecer los beneficios de la abstracción de cuentas sin comprometer la wallet MetaMask que los usuarios conocen y aman. Parte de este esfuerzo incluye recurrir a MetaMask Snaps, la plataforma de innovación sin permisos que permite a los desarrolladores crear funcionalidades personalizadas sobre la infraestructura existente de MetaMask.
Usando Snaps, los desarrolladores pueden ampliar la funcionalidad de tu wallet MetaMask para admitir diferentes casos de uso de abstracción de cuentas. Desde claves de sesión hasta integraciones completas de smart accounts construidas con MetaMask, todo desarrollado con Snaps, hemos visto cómo los desarrolladores asumen el desafío de usar MetaMask para democratizar el acceso a la abstracción de cuentas para los usuarios.
La propuesta actual de abstracción de cuentas, aunque ligeramente imperfecta, es un paso gigantesco hacia la consecución de smart accounts sin confianza y resistentes a la censura en Ethereum, y merece suficiente apoyo. Para citar a una de las nuestras, Taylor Monahan: "Una solución a medias que se lanza sigue siendo mejor que una solución perfecta que nunca ve la luz."
Por eso, nuestro próximo artículo sobre el tema de la abstracción de cuentas tomará la forma de un análisis profundo de los detalles de ERC-4337. Lo más importante es que analizaremos cómo los desarrolladores de web3 pueden comenzar a construir el futuro de la abstracción de cuentas e incorporar al próximo billón de usuarios, una línea de código a la vez, con MetaMask.
¡Permanece atento!
Un agradecimiento especial a Patrick McCorry, Simon Brown, Mirko Garozzo, Christian Montoya, Oliver Renwick y Megan Dias por sus comentarios sobre versiones anteriores de este artículo. Mi agradecimiento también va para Clarissa Watson y Francesco Andreoli, quienes brindaron orientación y apoyo en las etapas iniciales del proyecto.
Traducido por IA. Puede contener errores. Por favor, verifique siempre la información.