Tiempo estimado: 8 minutos de lectura

La abstracción de cuentas en Ethereum, basada en la norma ERC-4337, introduce las smart accounts para mejorar la experiencia del usuario en el ecosistema web3. Permite entre otras cosas patrocinar el gas, firmar con métodos alternativos y agrupar transacciones, facilitando el embarque en la blockchain para usuarios no cripto.

¿Qué es la abstracción de cuentas?

La abstracción de cuentas es un nuevo paradigma en las blockchains compatibles con la EVM que extiende las posibilidades de las wallets de usuario más allá de lo que permiten las cuentas convencionales de Ethereum, las EOA (externally owned accounts).

De acuerdo al protocolo de Ethereum, existen dos tipos de cuentas:

  • Las «externally owned accounts» (EOA), controladas por la clave privada del usuario mediante una wallet. Desde estas cuentas se pueden iniciar transacciones sobre la blockchain para enviar fondos e interactuar con los smart contracts. En mi artículo sobre la conexión de la wallet de usuario se pueden conocer más detalles.
  • Las «contract accounts», conocidas habitualmente como smart contracts. No manejan claves ni pueden inciar transacciones. Ejecutan el código programado en el contexto de una transacción en la blockchain de acuerdo a las reglas de la EVM.

Mediante la abstracción de cuentas, se permite la creación de un nuevo tipo de cuenta, la ‘smart wallet account’ o simplemente ‘smart account’. En realidad es un smart contract en que se programa la lógica de la cuenta para extender la experiencia de usuario más allá de las limitaciones de las wallets convencionales controladas por una EOA.

¿En qué consiste la abstracción de cuentas?

El concepto de abstracción de cuentas surgió en Ethereum hace ya varios años, fundamentalmente con el objetivo principal de mejorar la experiencia de uso y fomentar una mayor adopción del ecosistema web3 entre los usuarios de Internet no habituados al universo cripto.

El desarrollo de esta norma permite entre otras cosas:

  • Personalizar el pago de las tasas de la transacción: facilita pagar el gas en tokens ERC-20 o incluso patrocinar los costes de modo que para el usuario resulten transacciones sin gas.
  • Autorizar la transacciones con esquemas distintos a la firma mediante la clave privada de una EOA. Se pueden usar passkeys, biometría, multi firma…
  • Desarrollar mecanismos «amigables» para recuperar el control de una cuenta perdida, evitando la fricción de la frase semilla en las wallets convencionales.
  • Agrupar múltiples transacciones en una única operación, por ejemplo para acuñar y transferir un NFT en una única orden.

Después de varias propuestas, la ERC-4337 es la norma que ha conseguido una mayor adopción. Si bien aún está en revisión, existen diversas inciativas en marcha que permiten comenzar a explorar las posibilidades en casos de uso reales.

Arquitectura de la ERC-4337

Es la norma más extendida de la abstracción de cuentas en Ethereum, posiblemente porque su desarrollo no implica cambios en la capa de consenso.

Los componentes principales son:

  1. UserOperations: son objetos precursores de las transacciones convencionales de la blockchain. Contienen información como el nonce, los valores para el pago del gas, los datos para interactuar con un smart contract, la firma que autorizará la transacción en la blockchain…
  2. Bundlers: actores que empaquetan las UserOperations desde una mempool alternativa (no es la misma que recoge las transacciones convencionales de la blockchain) y las envían al EntryPoint.
  3. EntryPoint: es un smart contract de tipo «singleton» desplegado en la blockchain que valida y ejecuta la lógica de las transacciones.
  4. Smart Account: es el smart contract que ejecutará la transacción en la blockchain. Las transacciones son autorizadas por el usuario que controla la cuenta. Desempeña el papel del wallet del usuario con toda la lógica adicional ya vista que permite mejorar la experiencia de usuario.
  5. Paymaster: son smart contracts opcionales que permiten patrocinar los costos de gas de las transacciones en nombre del usuario. Además de la moneda nativa de la red, podrían admitir pago con tokens ERC-20 o stablecoins y seguir esquemas más complejos como suscripciones y pagos recurrentes.
  6. Agregador: entidad opcional confiable para las smart accounts para validar y agregar las firmas desde varias UserOperations.

La arquitectura se corresponde con el siguiente esquema:

Arquitectura de la abstracción de cuentas
UserOperations

Son el comienzo de las interacciones del usuario con la blockchain en el ecosistema de la abstracción de cuenta. Representa la intención que tiene el usuario; acabará convirtiéndose en una transacción sobre la blockchain.

Además de la información propia de la transacción (datos para escribir en un smart contract) contiene otros valores específicos de la arquitectura de la abstracción de cuentas. El detalle de todos los campos se puede ver en la norma.

Como aspectos clave:

  • Representan una o más acciones a llevar a cabo por la smart account.
  • Incluyen datos para verificar la firma de las operaciones.
  • Definen de qué forma se pagará el gas (la smart account o un paymaster).
  • Permiten ejecutar de forma atómica más de una acción.
Bundlers

Su función principal consiste en enviar las UserOperations al EntryPoint. Como paso previo, las validan ejecutando simulaciones para asegurar que las transacciones desencadenadas en la blockchain no serán rechazadas posteriormente por cuestiones de forma. Por cada UserOperation válida recolectan una pequeña comisión.

Las UserOperations son recogidas de uno o varios mempools. Idealmente el mempool en que se insertan las UserOperations debería consistir en una red p2p no permisionada pública. Actualmente la comunidad está trabajando en la puesta a punto de este mempool canónico. En este enlace se pueden ver los avances y la hoja de ruta. Sin embargo, para agilizar los primeros casos de uso, se han desarrollado mempools privados a cargo de los principales proveedores de la tecnología del account abstraction.

EntryPoint

Es un contrato singleton que actúa como entidad central en la arquitectura ERC-4337. Coordina la verificación y ejecución de las UserOperations.

Su dirección es la misma entre las distintas redes EVM. Se trata de un contrato inmutable y auditado que da seguridad a todos los actores.

Actualmente existen dos implementaciones en uso.

  • La versión 0.6 (con dirección de contrato 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789), es la primera que gozó de casos de uso reales y soporte por parte de la comunidad. Aunque sigue activa, para nuevos desarrollos se recomienda pasar a la versión más actual.
  • La versión 0.7 (con dirección de contrato 0x0000000071727De22E5E9d8BAf0edAc6f37da032), es la más reciente. Introduce numerosas mejoras aunque por el momento es soportada por pocos proveedores.

En este artículo se ofrece una comparativa entre las dos versiones con sus principales diferencias.

Smart Account

Desempeña el papel del wallet de usuario. Como mínimo debe comprobar si se aceptará la UserOperation durante la fase de verificación.

Además, al tratarse de un smart contract desplegado en la blockchain, puede desarrollar las funciones adicionales ya comentadas como flexibilizar el pago del gas o agrupar varias transacciones en un sólo paso.

El despliegue de la smart account en la blockchain en general se relega al momento en que se transacciona por vez primera.

Uno de los aspectos diferenciales respecto de las EOA es la lógica de autentificación que se puede utilizar para firmar y autorizar la UserOperation (a través del campo «signature»).

El esquema tradicional consiste en usar como firmante una wallet convencional compatible con la norma EIP-1193. De esta forma se estaría usando una EOA para autorizar la ejecución de las UserOperations en la smart account.

Sin embargo se puede optar a esquemas más sofisticados como el uso de passkeys para almacenar las claves privadas en enclaves seguros o session keys para mantener una ventana temporal de autorizaciones.

En general se puede decir que la smart account es el componente que admite mayor flexibilidad y programación.

En un principio cada proveedor de smart account comenzó a programar en sus propios contratos la lógica que modelaba su funcionalidad. Esto derivó en problemas de incompatiblidades para los desarrolladores ya que cada implementación de smart account conlleva una integración propia.

Para solventarlo se está trabajando en estándares que delegan las distintas funciones de las smart accounts en un conjunto de módulos interoperables sobre los que poder desarrollar integraciones más abiertas.

Han surgido dos estándares pujantes, ambos con su propia comunidad impulsora:

Sin entrar en controversias sobre qué método es más conveniente, la disputa por la legitimidad de la solución se ha extendido en distintos medios de Internet. Este artículo presenta una interesante discusión entre dos de los proveedores que abanderan cada una de las propuestas.

Paymaster

Son smart contracts que habilitan mayor flexibilidad en las opciones de pago de las tarifas de gas de la red. Entre sus posibles casos de uso:

  • Patrocinar las transacciones a partir de un conjunto de reglas propias del servicio, haciéndolas incluso libres de gas para los usuarios.
  • Aceptar un token ERC-20 para pagar el gas.
  • Desarrollar esquemas de pago a través de un modelo de suscripción.

Con objeto de estandarizar la forma en que los wallets y el ecosistema del account abstraction en general interactúa con los paymasters, ha surgido la norma ERC-7677 a la que poco a poco se van adhiriendo más proveedores.

Otros estándares relacionados

  • EIP-7702: se trata de una mejora que permite a una cuenta convencional EOA convertirse temporalmente en una smart account, con todas las ventajas que se han detallado. Con esta funcionalidad los usuarios pueden hacer que su EOA sea representada por el código de un smart contract. Se introduce un nuevo tipo de transacción que permite al propietario de la EOA autorizar la transformación. Para llevar a cabo esta modificación es necesario actualizar la capa de ejecución y consenso de Ethereum, tal y como se recoge en el «hardfork» Pectra.
  • EIP-5792: es un estandar que pretende unificar la manera en que las DApps interectúan con los distintos tipos de wallets (EOA o smart account) para salvar los crecientes problemas de fragmentación que están dificultando universalizar la adopción de web3. Para ello se provee de un API normalizado.

Conclusión: mejorando la experiencia de usuario

Si bien el objetivo ya recurrente de lograr embarcar en el ecosistema web3 al próximo millon de usuarios parece aún distante, no es menos cierto que la comunidad en torno al mundo cripto está activamente involucrada en su consecución.

Una de las dificultades que por consenso general parece necesario salvar es la manera en que los usuarios interactúan con la blockchain. En los comienzos la única manera era firmar transacciones atómicas e independientes con una EOA pagando el gas en la moneda nativa de la red.

La adopción e implantación de la abstracción de cuenta supone un gran salto en la búsqueda de simplificar y mejorar la experiencia del usuario al admitir entre otras cosas la ejecución de varias transacciones en una única orden y flexibilizar la gestión del pago de las tarifas de la red.

Como contrapartida surgen nuevos puntos de fricción como una mayor fragmentación del ecosistema de los wallets de usuario, dependencia con la pila tecnológica de nuevos proveedores centralizados, mayor complejidad de integración para los desarrolladores…


¿Estás intentando mejorar o simplificar la forma en que los usuarios de tus DApps interactúan con la blockchain? ¿Conoces otras iniciativas en la comunidad en esta línea? 

Por mi parte, si estás interesado en introducir estas u otras mejoras para facilitar el embarque en tu proyecto web3, contáctame y hablamos.