Zelcore

Arquitectura de ERC-4337: EntryPoint, bundlers y paymasters sin complicaciones

10 min de lectura
Arquitectura de ERC-4337: EntryPoint, bundlers y paymasters sin complicaciones

La abstracción de cuentas en Ethereum tiene dos direcciones canónicas que conviene memorizar. EntryPoint v0.6 se encuentra en 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789. EntryPoint v0.7, desplegado a principios de 2024, se encuentra en 0x0000000071727De22E5E9d8BAf0edAc6f37da032. Todas las transacciones ERC-4337 en la red principal, Arbitrum, Optimism, Base, Polygon y la mayoría de las demás cadenas EVM pasan por uno de esos dos contratos singleton. Si entiendes qué hacen esos contratos y cuáles son los otros cinco roles que los rodean, entiendes ERC-4337.

Esta es la segunda parte de nuestra serie sobre cuentas inteligentes. En la primera parte explicamos por qué las EOA son una mala opción predeterminada. Aquí veremos cómo funciona por dentro: los seis roles, la estructura UserOperation, qué ocurre realmente cuando intercambias un token desde una cuenta inteligente, los cambios de v0.6 a v0.7, los paymasters, los alt-mempools públicos frente a los bundlers privados y los costos adicionales que puedes esperar.

Los seis roles en un diagrama

ERC-4337 divide en seis actores que colaboran lo que una EOA hace en un solo paso. Ninguno requiere una bifurcación dura de Ethereum: todo el sistema consta de contratos e infraestructura fuera de la cadena.

Ten presentes estos roles. El resto del artículo trata de cómo interactúan entre sí.

La estructura UserOperation

Una UserOperation es un conjunto de campos compatible con JSON-RPC que, una vez firmado, expresa una intención sin enviarla todavía a L1. La disposición de v0.7 tiene 11 campos lógicos:

La billetera determina el esquema de firma. Es habitual usar ECDSA sobre secp256k1, pero la verificación con P-256 o passkey, las multifirmas, los umbrales de recuperación social y los firmantes con claves de sesión funcionan a través de la misma interfaz. Esa flexibilidad es precisamente el objetivo.

De principio a fin: qué ocurre cuando una cuenta inteligente intercambia USDC por ETH

Sigue un intercambio real para ver cómo se activan los distintos roles, en orden.

  1. El usuario toca «Intercambiar» en la interfaz de su billetera. La billetera crea una UserOperation: sender = 0xUserSafe, callData = swapUSDCforETH(amount) con Uniswap como destino.
  2. Estimación del gas. La billetera llama a eth_estimateUserOperationGas en un RPC de bundler. El bundler simula la operación en EntryPoint y devuelve los tres límites de gas.
  3. El usuario firma. La billetera calcula el hash de la UserOp con la dirección de EntryPoint y el ID de la cadena, solicita la firma al usuario (passkey, clave de hardware o lo que corresponda) y la adjunta.
  4. Envío. La UserOp firmada se envía mediante eth_sendUserOperation a uno o más bundlers. Entra en el alt-mempool, una red P2P independiente del mempool de transacciones habitual de Ethereum.
  5. Simulación del bundler. El bundler vuelve a simular con eth_call frente a simulateValidation. Comprueba las reglas de acceso al almacenamiento de ERC-7562: durante la validación, una UserOp solo puede acceder a su propio almacenamiento; de lo contrario, el bundler se arriesga a sufrir un ataque de griefing.
  6. Agrupación. El bundler agrupa esta UserOp con hasta ~10 más en una sola llamada handleOps([...userOps], beneficiary) a EntryPoint.
  7. Ejecución en la cadena. EntryPoint recorre las operaciones: para cada una, llama a validateUserOp del emisor, descuenta el prepago y ejecuta callData. El intercambio en Uniswap se realiza desde la cuenta inteligente.
  8. Reembolso. EntryPoint devuelve al emisor (o al paymaster) el gas no utilizado y paga a la dirección beneficiaria del bundler.

Si falla el paso 5, el bundler descarta la operación y el usuario ve un código de error AAxx. Los más comunes son AA21 (no se pagó el prepago), AA23 (error de firma), AA25 (nonce no válido), AA33 (reversión del paymaster) y AA40 (se superó el límite de gas de verificación). Memoriza esa tabla: los verás.

EntryPoint v0.6 frente a v0.7

v0.6 se lanzó en marzo de 2023 en 0x5FF1…2789. Funcionaba, pero tenía tres problemas persistentes: un único bloque paymasterAndData que combinaba tres dimensiones de gas, un empaquetado initCode poco práctico y un cálculo del gas que cobraba de más a los emisores. v0.7 corrigió los tres.

Estos son los principales cambios de v0.7 que conviene conocer:

v0.6 sigue activa y en uso: muchas billeteras no lanzaron un módulo compatible con v0.7 hasta bien entrado 2024. En la mayoría de las cadenas, ambas versiones de EntryPoint funcionan en paralelo durante años.

Paymasters: quién paga el gas

Un paymaster es un contrato que mantiene un depósito en ETH en EntryPoint y acepta cubrir el gas de las UserOps que cumplen su política. Predominan tres tipos:

validatePaymasterUserOp del paymaster se ejecuta durante la fase de validación de EntryPoint. Si revierte, obtienes AA33. Si se queda sin depósito, EntryPoint lo penaliza y el bundler asume la pérdida; por eso los bundlers mantienen listas de reputación de paymasters. ERC-7562 codifica estas reglas de reputación para que el mempool del bundler siga resistiendo el spam. Estos mismos elementos básicos explican por qué las buenas prácticas de seguridad para aprobaciones de DeFi y multifirmas se aplican directamente al entorno 4337: las mismas amenazas con una nueva capa.

Mempool alternativo público frente a bundler privado

Hay dos formas de llevar una UserOp a la blockchain.

Mempool alternativo público: los bundlers que cumplen con ERC-7562 difunden las UserOps a través de una red libp2p. Cualquiera que ejecute un nodo de Pimlico, Stackup, Alchemy, Etherspot o Voltaire puede recoger la tuya. No se requieren permisos y resiste la censura, pero te expones a las mismas preocupaciones por el MEV que con las transacciones habituales de Ethereum: los buscadores pueden ver tu operación antes de que se incluya.

Bundler privado: envías eth_sendUserOperation directamente al RPC de un proveedor. El proveedor simula, agrupa y envía la operación de forma privada (a menudo mediante Flashbots). Es más rápido y ofrece protección contra el MEV, pero confías en que el bundler no la censure ni se adelante a ella. En 2026, la mayoría de las billeteras para consumidores usan bundlers privados de forma predeterminada.

La disyuntiva es similar a elegir entre el mempool público y Flashbots Protect para las transacciones habituales. Si desde los tiempos de L1 no has consultado el ciclo de vida de las transacciones, esa guía explica qué cambia cuando interviene el bundler.

Agregadores, adopción y costos

Agregadores: son contratos que validan lotes con una sola comprobación de firma. El caso de uso más habitual es BLS: se reúnen 50 UserOps firmadas con BLS y se agregan las firmas en una sola comprobación de emparejamiento, lo que ahorra aproximadamente un 95 % del gas de firma. La adopción ha sido lenta porque es difícil crear billeteras que firmen con BLS y el ahorro de gas solo compensa con un volumen alto. A mediados de 2026, menos del 1 % de las UserOps de la red principal usan agregadores.

Cifras de adopción (Q1 de 2026, según bundlebear.com): se han procesado en total aproximadamente 380 millones de UserOps en todas las cadenas; Base, Polygon y Arbitrum concentran la mayoría. La red principal representa alrededor del 6–8 %: es la que tiene menor volumen, pero la que más valor transfiere. Coinbase Smart Wallet, Farcaster y Argent dominan el flujo de usuarios particulares.

Costo adicional: una UserOp v0.7 cuesta aproximadamente 30,000–40,000 unidades de gas más que la transacción EOA equivalente. Ese costo corresponde al ciclo de EntryPoint, la validación y las tareas de gestión del lote. En la red principal, a 20 gwei, equivale a una fracción de dólar por operación. El despliegue inicial de una cuenta mediante factoryData añade unas 250,000 unidades de gas. En las L2, donde los datos de llamada son el costo dominante, el costo adicional porcentual es de un solo dígito. Las UserOps patrocinadas trasladan este costo a la dApp; por eso hay transacciones gratuitas en las aplicaciones para consumidores, pero no en las de DeFi avanzadas. La guía general sobre comisiones por transacción explica cómo se refleja ese costo adicional en distintos mercados de comisiones.

En resumen: ERC-4337 consta de seis roles (remitente, UserOp, bundler, EntryPoint, paymaster y agregador), una estructura, dos direcciones de EntryPoint que conviene memorizar y un costo adicional de ~30–40k de gas a cambio de admitir esquemas de firma arbitrarios, patrocinio del gas, agrupación y nonces paralelos. La tercera parte de esta serie aborda EIP-7702: la vía paralela de Pectra, que permite que tu EOA actual aproveche estos mismos mecanismos sin cambiar de dirección.


Lecturas recomendadas

Billeteras, gas y aprobaciones: los tres conceptos que todo usuario de DeFi debe entender

Billeteras, gas y aprobaciones: los tres conceptos que todo usuario de DeFi debe entender

Antes de intercambiar, prestar o cultivar cualquier activo, debes entender los tres elementos básicos de los que depende cada interacción con DeFi: tu billetera, el gas y las aprobaciones de tokens.

7 min de lectura
Cuentas, contratos y EVM: cómo ejecuta Ethereum las operaciones

Cuentas, contratos y EVM: cómo ejecuta Ethereum las operaciones

Ethereum sustituye el monedero UTXO de Bitcoin por una enorme tabla de cuentas y una máquina de pila que mide el gas. Así funcionan el estado, los códigos de operación y una transferencia ERC-20.

12 min de lectura
Mecánica del gas en Ethereum: EIP-1559, comisiones de prioridad y comisiones de blobs tras Dencun

Mecánica del gas en Ethereum: EIP-1559, comisiones de prioridad y comisiones de blobs tras Dencun

Cómo funcionan realmente las comisiones de gas de Ethereum en 2026: la subasta de la comisión base de EIP-1559, las propinas de prioridad y el mercado independiente de blobs surgido con Dencun y ampliado con Pectra.

11 min de lectura

Únete a nuestro boletín

Recibe una actualización amigable de nuestra parte una vez al mes. Sin spam, solo lo último de Zelcore.

Únete a nuestro boletín