Una UserOperation es el objeto de intención firmado que define ERC-4337: declara qué quiere hacer una cuenta de smart contract y cómo debe validarse y pagarse esa acción. A diferencia de una transacción ordinaria de Ethereum, no es un objeto a nivel de protocolo firmado por una cuenta de propiedad externa: su firma la comprueba el propio contrato de la cuenta, y no tiene por qué pagar su propio gas nativo. Un bundler es el actor off-chain que recopila UserOperations de una mempool alternativa dedicada, simula cada una, empaqueta las válidas en una única transacción ordinaria de Ethereum y llama al contrato canónico EntryPoint — que valida todas las operaciones del lote antes de ejecutar ninguna de ellas. El bundler adelanta el gas real desde su propia EOA y recibe el reembolso on-chain de la cuenta remitente o del paymaster de esa cuenta. Un contrato paymaster opcional puede aceptar cubrir una operación durante ese paso de validación, y ahí es donde las comisiones pasan a estar patrocinadas o a poder pagarse en un token ERC-20 en lugar del token de gas nativo de la cadena.
Un repaso rápido de ERC-4337
ERC-4337 es el estándar de Ethereum para la abstracción de cuentas — una forma de dar a las cuentas de smart contract la misma capacidad de primera clase para iniciar y pagar acciones que las cuentas de propiedad externa (EOA) siempre han tenido, sin ningún cambio en el protocolo base. En lugar de modificar la capa de consenso, ERC-4337 introduce un sistema paralelo de objetos de alto nivel e infraestructura off-chain que finalmente se liquida mediante transacciones ordinarias de Ethereum. Si prefieres primero la versión desde cero, nuestra explicación sobre qué es la abstracción de cuentas cubre la motivación, qué es ERC-4337 traza el estándar completo y cuentas inteligentes frente a EOA compara directamente los dos tipos de cuenta. Este artículo hace zoom en la mecánica: los objetos que se mueven por el sistema y los actores que los procesan. Ten en cuenta que ERC-4337 es un estándar de EVM — aplica a Ethereum y cadenas compatibles con EVM, no a cadenas no EVM como Solana o TON.
Qué es realmente una UserOperation
El objeto central en ERC-4337 es la UserOperation. Superficialmente parece una transacción, pero se entiende mejor como una declaración de intención firmada: "esto es lo que mi cuenta quiere que se haga, y estos son los parámetros para validarlo y pagarlo." Es un struct que se pasa como calldata a un contrato, no un objeto nativo del protocolo — la capa base nunca ha oído hablar de él.
Una UserOperation lleva, en esencia:
- sender — la cuenta de smart contract en cuyo nombre actúa la operación.
- nonce — protección contra repetición, que el EntryPoint registra como un valor de dos partes (una clave más una secuencia), de modo que una cuenta puede mantener varios carriles de nonce independientes en vez de una única cola estricta.
- callData — lo que la cuenta debe ejecutar, con frecuencia un lote de varias llamadas en una sola operación.
- datos de despliegue de la cuenta — opcional; despliega el contrato de la cuenta en su primerísima operación, que es cómo una cuenta inteligente puede recibir fondos en una dirección conocida y derivada de forma determinista antes de existir on-chain.
- límites de gas — presupuestos separados para la validación y la ejecución, más una cifra de
preVerificationGasque compensa al bundler por el calldata y la sobrecarga que el EntryPoint no puede medir por sí mismo. - parámetros de comisión — una comisión máxima y una comisión de prioridad máxima, reflejando EIP-1559.
- datos del paymaster — opcional; qué contrato patrocinará la operación y cualquier contexto que necesite.
- firma — comprobada por la propia función de validación de la cuenta, no por el protocolo.
La codificación exacta ha cambiado entre versiones del EntryPoint — la v0.7 divide los blobs de despliegue y de paymaster en campos explícitos y empaqueta juntos varios valores de gas, mientras que la v0.6 usaba cadenas de bytes únicas initCode y paymasterAndData — pero el contenido conceptual es el mismo. Si estás integrando, comprueba a qué versión del EntryPoint apunta tu bundler.
La diferencia clave con una transacción normal es quién y qué la firma. Una transacción convencional de Ethereum debe ser firmada por la clave privada de una EOA usando un esquema ECDSA fijo, y esa misma cuenta paga el gas. Una UserOperation es validada por la propia lógica de la cuenta de smart contract del remitente — que puede implementar cualquier esquema de firma, regla multiclave, clave de sesión o política de autorización que la cuenta defina — y no tiene por qué pagarse a sí misma en gas nativo en absoluto. Esa flexibilidad es justo el objetivo: la cuenta, no el protocolo, decide qué aspecto tiene una acción válida.
La mempool alternativa donde viven
Las UserOperations no entran en la mempool normal de transacciones de Ethereum, porque todavía no son transacciones. En su lugar se difunden a una mempool alternativa separada (a menudo llamada alt-mempool) — una red peer-to-peer dedicada a los objetos de ERC-4337. En la práctica, una wallet o una dApp envía una llamando a eth_sendUserOperation en el endpoint RPC de un bundler; ese bundler puede propagarla a la alt-mempool compartida o guardarla en un pool privado propio. En cualquier caso, la infraestructura que consume estos objetos escucha aquí en lugar de en la mempool de la capa base. Esta separación mantiene el tráfico de abstracción de cuentas fuera de la ruta crítica para el consenso hasta el momento en que se empaqueta en una transacción real.
El papel del bundler
Un bundler es el actor off-chain que convierte las intenciones en realidad on-chain. Su trabajo tiene cuatro partes. Primera, recopila UserOperations de la mempool alternativa. Segunda, simula y valida cada una — ejecutando la lógica de validación de la cuenta en un contexto simulado para confirmar que la firma es válida, que el nonce es correcto y que la cuenta o su paymaster pueden cubrir el coste. Tercera, empaqueta una o más UserOperations válidas en una única transacción ordinaria de Ethereum. Cuarta, envía esa transacción a la red desde su propia EOA, pagando por adelantado el gas de la capa base y esperando ser reembolsado on-chain.
La simulación por sí sola no es protección suficiente, porque el estado puede cambiar entre la simulación y la inclusión. Por eso ERC-4337 también limita lo que el código de validación puede hacer: durante la fase de validación, una cuenta o un paymaster no pueden leer marcas de tiempo de bloque ni otros valores del entorno que les permitirían comportarse de forma distinta on-chain y en simulación, y su acceso a almacenamiento se restringe en gran medida a los slots asociados a su propia cuenta. De los contratos que actúan en nombre de muchos usuarios — sobre todo las factories y los paymasters — se espera que depositen un stake, de modo que un único contrato que se porte mal no pueda invalidar barato una porción grande de la mempool de golpe. Estas reglas existen por una razón: hacer que la simulación de un bundler sea una predicción fiable de lo que ocurrirá on-chain.
Como el bundler adelanta el gas y gana comisiones por la inclusión, se comporta muy parecido a un constructor de bloques especializado para el tráfico de abstracción de cuentas. Su paso de simulación y validación es lo que lo protege: no empaquetará una operación que no lograra reembolsarlo.
El contrato EntryPoint
Todo converge en un único y canónico smart contract llamado EntryPoint. Es un singleton, desplegado por versión en la misma dirección en todas las cadenas EVM, y custodia los depósitos que pagan las operaciones. La transacción del bundler es una llamada al EntryPoint con un array de UserOperations, y el EntryPoint entonces ejecuta un estricto bucle de dos fases.
En la fase de validación, para cada operación llama a la función de validación de la cuenta remitente (y a la del paymaster, si se especifica uno) para volver a comprobar on-chain la firma, el nonce y el acuerdo de pago, y reserva el coste máximo posible a quien vaya a pagar. Solo después de que todas las operaciones del lote hayan sido validadas pasa a la fase de ejecución, donde despacha el calldata de cada operación a su cuenta para realizar efectivamente la transferencia, el swap u otra acción, y luego liquida el coste real y devuelve la reserva no utilizada.
Esta división importa: la validación y la ejecución se separan para que las garantías de pago de un lote se establezcan antes de que corra cualquier trabajo que cambie el estado, y para que el EntryPoint pueda contabilizar el gas con precisión a través de muchas operaciones a la vez. También significa que el fallo de una operación durante la ejecución no puede contaminar a las demás del lote.
Dónde encaja el paymaster
Un paymaster es un contrato opcional que acepta pagar por una UserOperation en nombre de la cuenta. Cuando una UserOperation incluye datos de paymaster, el EntryPoint pregunta a ese paymaster, durante la fase de validación, si patrocinará la operación y bajo qué términos; el paymaster devuelve una decisión más un blob de contexto. Tras la ejecución, el EntryPoint vuelve a llamar al paymaster en un paso posterior a la operación con el gas realmente consumido, y ahí es donde un paymaster que cobra en token liquida la cantidad exacta. El paymaster puede aceptar incondicionalmente (patrocinio verdaderamente sin gas, en el que una app absorbe el coste), o puede aceptar a cambio de valor — lo más útil, cobrando al usuario en un token ERC-20 en lugar de gas nativo. Para una mirada más profunda a este componente, consulta qué es un paymaster. El paymaster es el enganche del flujo que desacopla "con qué paga el usuario" de "con qué se paga a la red."
Cómo se gestionan el gas y los fallos
El gas en ERC-4337 está en capas. El bundler paga ETH real por la transacción externa; el EntryPoint mide el gas de validación y ejecución de cada UserOperation contra los límites que declaró; y quienquiera que sea el responsable — la cuenta o su paymaster — debe haber depositado en el EntryPoint lo suficiente para cubrir la factura, que se liquida al final del lote. Una consecuencia que conviene conocer: una operación ERC-4337 cuesta algo más de gas que la transacción simple equivalente, porque estás pagando la validación a nivel de contrato y la contabilidad del EntryPoint además de la acción en sí.
Los fallos se contienen gracias al diseño de validación primero. Si una operación falla durante la validación on-chain, todo el lote revertiría, así que el bundler la descarta y reconstruye el lote en lugar de dejar que eso ocurra — que es exactamente para lo que sirve su simulación off-chain. Si una operación pasa la validación pero su ejecución revierte, los efectos de la ejecución se deshacen mientras el gas ya gastado sigue contabilizándose y pagándose, así que el bundler no queda sin compensar por un trabajo honesto. Esta asimetría es la razón por la que los bundlers simulan con tanto cuidado: su protección contra el griefing es negarse a incluir cualquier cosa que no fuera a reembolsarles.
El ciclo de vida, en orden
- Tu wallet construye una UserOperation: sender, nonce, calldata, límites de gas, parámetros de comisión, datos opcionales de paymaster.
- Un paymaster, si se usa, da el visto bueno a las condiciones de patrocinio antes de difundir la operación.
- La lógica de firma de tu cuenta la firma — y no tiene por qué ser una única clave ECDSA.
- La wallet la envía al RPC de un bundler, y entra en la mempool alternativa.
- El bundler la simula y la valida bajo las reglas de opcodes restringidos y almacenamiento del estándar.
- El bundler la empaqueta con otras operaciones en una transacción de Ethereum que llama a
handleOpsen el EntryPoint, y paga el gas de la capa base. - El EntryPoint valida todas las operaciones, ejecuta el calldata de cada una, liquida los costes contra los depósitos, devuelve el excedente y reembolsa al bundler.
Qué gana con esto quien usa una wallet
La maquinaria es elaborada, pero su objetivo es prosaico y útil: agrupar varias acciones en una sola confirmación (aprobar y hacer swap a la vez, por ejemplo), comisiones patrocinadas o pagadas en token, esquemas de firma distintos de una única clave secp256k1, políticas de gasto y claves de sesión, y recuperación social o basada en dispositivo. Vale la pena señalar que EIP-7702 permite que una EOA ordinaria ejecute temporalmente con código de cuenta inteligente, lo que acorta la distancia en algunas de estas funciones sin sustituir la infraestructura ERC-4337 descrita arriba.
Cómo usa WATS esto
En cadenas EVM, WATS depende de exactamente una pieza de este flujo: la ranura del paymaster. Cuando haces una transferencia, un swap o staking en la Hot Wallet de WATS, la UserOperation que construye tu wallet nombra un paymaster, y ese paymaster es lo que permite que la comisión se cobre en ATS en lugar del token de gas nativo de la cadena — así nunca necesitas mantener un saldo residual de ETH, BNB o POL en cada red solo para poder moverte. No se te pide ejecutar un bundler, elegir una versión del EntryPoint ni tener una clave RPC de bundler; eso es infraestructura, y el trabajo de la wallet es construir una UserOperation válida y enviarla.
Dos aclaraciones mantienen esto honesto. Primera, pagar en ATS no es un descuento — la red sigue cobrando su comisión normal y el paymaster la liquida, así que lo que cambia es qué token sale de tu saldo, no el coste subyacente. Segunda, ERC-4337 es exclusivo de EVM, así que en Solana y TON un acuerdo equivalente de pagador de comisiones desempeña el papel del paymaster en lugar del flujo del EntryPoint descrito aquí. ATS es un OFT de LayerZero, que es lo que permite que un único saldo de ATS cubra las comisiones en Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain, Solana y TON, y el ATS cobrado se quema, llevando el suministro de 100.000.000 hacia un piso de 30.000.000. WATS es totalmente no custodial de principio a fin: tú tienes tus claves, y WATS nunca tiene ninguna.
Si quieres ver este flujo como un sistema en funcionamiento y no como una especificación, el paso concreto es probar una transferencia en la Hot Wallet de WATS en una cadena donde no tengas nada del token de gas nativo: la UserOperation, el bundler y el EntryPoint hacen su trabajo fuera de la vista, y la comisión sale de tu saldo de ATS. Cómo funciona el modelo de comisiones ATS cubre la mecánica de principio a fin.
Preguntas frecuentes
¿Qué es una UserOperation y en qué se diferencia de una transacción normal de Ethereum?
Una UserOperation es el objeto de intención firmado que define ERC-4337 — describe lo que una cuenta de smart contract quiere que se haga, junto con el nonce, los límites de gas, los parámetros de comisión y los datos opcionales de paymaster necesarios para validarla y pagarla. Una transacción normal la firma una cuenta de propiedad externa usando ECDSA fijo y paga su propio gas en el token nativo de la cadena. Una UserOperation es validada por la propia lógica de la cuenta remitente, que puede usar esquemas de firma o políticas personalizadas, y no tiene por qué pagarse a sí misma en gas nativo porque un paymaster puede cubrir la comisión. Las UserOperations también viajan por una mempool alternativa separada en lugar de la mempool estándar de transacciones, y solo se convierten en una transacción real cuando un bundler las empaqueta en una.
¿Qué hace realmente un bundler de ERC-4337?
Un bundler recopila UserOperations de la mempool alternativa, simula y valida cada una para confirmar las firmas, los nonces y que el pago puede cubrirse, y luego empaqueta las válidas en una única transacción ordinaria de Ethereum que llama al contrato EntryPoint. Envía esa transacción desde su propia cuenta, adelantando el gas de la capa base y esperando ser reembolsado on-chain con el depósito que la cuenta o su paymaster tienen en el EntryPoint. ERC-4337 limita lo que el código de validación puede leer y tocar, y espera que los paymasters y las factories de cuentas depositen un stake, precisamente para que la simulación off-chain de un bundler prediga de forma fiable el comportamiento on-chain — la simulación cuidadosa es lo que lo protege de incluir operaciones que no le devolverían el pago.
¿Qué es el contrato EntryPoint y por qué se separan validación y ejecución?
El EntryPoint es el único contrato canónico por el que pasa toda operación ERC-4337; es un singleton desplegado por versión en la misma dirección en todas las cadenas EVM, y custodia los depósitos que pagan las operaciones. Cuando un bundler envía un lote, el EntryPoint primero valida todas las UserOperations que contiene — llamando a la función de validación de cada cuenta y de cada paymaster, y reservando el coste máximo posible — y solo entonces ejecuta su calldata una a una, liquidando los costes reales y devolviendo la diferencia. Separar las fases significa que el pago está garantizado antes de que corra cualquier trabajo que cambie el estado, que el gas puede medirse con precisión en todo el lote y que una operación que revierte durante la ejecución no afecta a las demás.
¿Necesito ejecutar un bundler o llamar yo mismo al EntryPoint?
No. Los bundlers y el EntryPoint son infraestructura que queda detrás de la wallet: tu wallet construye y firma la UserOperation y la envía al endpoint RPC de un bundler, y todo lo que viene después es automático. En la Hot Wallet de WATS, por ejemplo, apruebas una transferencia o un swap de la forma habitual y la maquinaria ERC-4337 corre fuera de la vista — la única diferencia visible es que la comisión de red se cobra en ATS en lugar del token de gas nativo de la cadena.
¿Permite ERC-4337 pagar las comisiones de gas en un token distinto de ETH?
Sí, cuando se usa un paymaster, y WATS es un ejemplo concreto: en cadenas EVM la Hot Wallet de WATS usa un paymaster ERC-4337 para que las comisiones de red se cobren en ATS en lugar de ETH, BNB, POL u otro token de gas nativo. Mecánicamente, el paymaster es un contrato opcional que le dice al EntryPoint durante la validación que cubrirá una operación, y luego liquida el coste real mientras cobra al usuario de otra manera — habitualmente en un token ERC-20. Esto no es un descuento: a la cadena se le sigue pagando su comisión normal en su propia moneda, y lo que cambia es qué token sale de tu saldo. ERC-4337 y sus paymasters son exclusivos de EVM; cadenas no EVM como Solana y TON logran un resultado similar con un pagador de comisiones o relayer equivalente.

