Zelcore

Architettura ERC-4337: EntryPoint, bundler e paymaster senza complicazioni

10 min di lettura
Architettura ERC-4337: EntryPoint, bundler e paymaster senza complicazioni

L’account abstraction su Ethereum ha due indirizzi canonici che vale la pena memorizzare. EntryPoint v0.6 si trova all’indirizzo 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789. EntryPoint v0.7, distribuito all’inizio del 2024, si trova all’indirizzo 0x0000000071727De22E5E9d8BAf0edAc6f37da032. Ogni transazione ERC-4337 su mainnet, Arbitrum, Optimism, Base, Polygon e sulla maggior parte delle altre chain EVM passa da uno di questi due singleton. Se capisci cosa fanno questi contratti e quali sono gli altri cinque ruoli che ruotano loro attorno, hai capito ERC-4337.

Questa è la seconda parte della nostra serie sugli Smart Account. Nella prima parte abbiamo spiegato perché gli EOA non sono una buona scelta predefinita. Qui entriamo nel dettaglio: i sei ruoli, la struct UserOperation, cosa succede davvero quando fai swap di un token da uno smart account, le differenze tra v0.6 e v0.7, i paymaster, gli alt-mempool pubblici rispetto ai bundler privati e i costi aggiuntivi da aspettarsi.

I sei ruoli in un unico schema

ERC-4337 suddivide in sei attori che collaborano ciò che un EOA fa in un solo passaggio. Per nessuno di loro è stato necessario un hard fork di Ethereum: l’intero sistema è composto da contratti e infrastrutture off-chain.

Tieni a mente questi ruoli. Il resto dell’articolo mostra semplicemente come interagiscono.

La struct UserOperation

Una UserOperation è un insieme di campi compatibile con JSON-RPC che, una volta firmato, esprime un’intenzione senza ancora inviarla su L1. La struttura v0.7 comprende 11 campi logici:

Lo schema di firma dipende dal wallet. ECDSA su secp256k1 è comune, ma la verifica P-256/passkey, il multisig, le soglie di recupero social e i firmatari con chiavi di sessione funzionano tutti tramite la stessa interfaccia. È proprio questa flessibilità il punto di tutto il sistema.

Dall’inizio alla fine: cosa succede quando uno smart account fa swap di USDC in ETH

Seguiamo uno swap reale per vedere i ruoli entrare in azione nell’ordine giusto.

  1. L’utente tocca «Swap» nell’interfaccia del wallet. Il wallet crea una UserOperation: sender = 0xUserSafe, callData = swapUSDCforETH(amount) con Uniswap come destinazione.
  2. Stima del gas. Il wallet chiama eth_estimateUserOperationGas tramite un endpoint RPC di un bundler. Il bundler simula l’operazione con EntryPoint e restituisce i tre limiti di gas.
  3. L’utente firma. Il wallet calcola l’hash della UserOp usando l’indirizzo di EntryPoint e l’ID della chain, chiede all’utente di firmare (con passkey, chiave hardware o altro) e aggiunge la firma.
  4. Invio. La UserOp firmata viene inviata tramite eth_sendUserOperation a uno o più bundler. Entra nell’alt-mempool, una rete P2P separata dal normale mempool delle transazioni di Ethereum.
  5. Simulazione del bundler. Il bundler esegue di nuovo la simulazione con eth_call contro simulateValidation. Controlla le regole di accesso allo storage di ERC-7562: durante la convalida una UserOp può accedere solo al proprio storage; in caso contrario, il bundler rischia attacchi di griefing.
  6. Raggruppamento. Il bundler inserisce questa UserOp insieme ad altre, fino a circa 10, in un’unica chiamata handleOps([...userOps], beneficiary) a EntryPoint.
  7. Esecuzione on-chain. EntryPoint scorre le operazioni: per ognuna chiama validateUserOp sul sender, detrae il prefondo e poi esegue callData. Lo swap su Uniswap parte dallo smart account.
  8. Rimborso. EntryPoint rimborsa al sender (o al paymaster) il gas non utilizzato e paga l’indirizzo beneficiario del bundler.

Se la simulazione al passaggio 5 non va a buon fine, il bundler scarta l’operazione e l’utente vede un codice di errore AAxx. I più comuni sono AA21 (prefondo non pagato), AA23 (errore di firma), AA25 (nonce non valido), AA33 (revert del paymaster) e AA40 (limite di gas per la verifica superato). Memorizza questa tabella: ti capiterà di vederli.

EntryPoint v0.6 e v0.7 a confronto

v0.6 è stato rilasciato a marzo 2023 all’indirizzo 0x5FF1…2789. Funzionava, ma aveva tre problemi ricorrenti: un unico blocco paymasterAndData che riuniva tre dimensioni del gas, un raggruppamento initCode poco pratico e un calcolo del gas che faceva pagare troppo ai sender. v0.7 ha risolto tutti e tre.

Ecco le principali novità di v0.7:

v0.6 è ancora attivo e in uso: molti wallet non hanno distribuito un modulo compatibile con v0.7 fino a ben dentro il 2024. Sulla maggior parte delle chain le due versioni di EntryPoint funzionano in parallelo per anni.

Paymaster: chi paga il gas

Un paymaster è un contratto che mantiene uno stake in ETH presso EntryPoint e accetta di coprire il gas delle UserOp conformi alla propria policy. Esistono soprattutto tre tipi:

La funzione validatePaymasterUserOp del paymaster viene eseguita durante la fase di convalida di EntryPoint. Se effettua un revert, ricevi AA33. Se lo stake si esaurisce, EntryPoint lo slasha e il bundler si fa carico della perdita; per questo i bundler mantengono elenchi di reputazione dei paymaster. ERC-7562 codifica queste regole di reputazione, così il mempool dei bundler resta resistente allo spam. Gli stessi elementi di base spiegano perché le buone pratiche per le approvazioni DeFi e il multisig si applicano bene anche al mondo 4337: le minacce sono le stesse, cambia il livello che le avvolge.

Mempool alternativo pubblico e bundler privato

Esistono due modi per portare una UserOp on-chain.

Mempool alternativo pubblico: i bundler conformi a ERC-7562 diffondono le UserOp su una rete libp2p. Chiunque esegua un nodo Pimlico, Stackup, Alchemy, Etherspot o Voltaire può includere la tua. Questo sistema è permissionless e resistente alla censura, ma ti espone agli stessi rischi MEV delle normali transazioni Ethereum: i searcher possono vedere la tua operazione prima che venga inclusa.

Bundler privato: invii eth_sendUserOperation direttamente all’RPC di un provider. Il provider simula, raggruppa e invia le operazioni in privato (spesso tramite Flashbots). È più veloce e protegge dal MEV, ma devi fidarti che il bundler non censuri le operazioni né faccia front-running. Nel 2026, la maggior parte dei wallet consumer usa bundler privati per impostazione predefinita.

Il compromesso è simile a quello tra il mempool pubblico e Flashbots Protect per le normali transazioni. Se dai tempi di L1 non hai più consultato la procedura di una transazione, questa guida spiega cosa cambia quando interviene il bundler.

Aggregator, adozione e costi complessivi

Gli aggregator sono contratti che convalidano batch con un solo controllo della firma. Il caso d’uso più comune è BLS: si raccolgono 50 UserOp firmate con BLS, si aggregano le firme in un unico controllo pairing e si risparmia circa il 95% del gas per le firme. La diffusione è stata lenta perché creare wallet che firmano con BLS è difficile e il risparmio di gas conviene solo a volumi elevati. A metà 2026, meno dell’1% delle UserOp su mainnet usa gli aggregator.

Dati sull’adozione (Q1 2026, da bundlebear.com): circa 380 milioni di UserOp complessive su tutte le chain, con Base, Polygon e Arbitrum che rappresentano la maggioranza. La quota di mainnet è circa il 6–8%: la più bassa per volume, ma la più alta per valore trasferito. Coinbase Smart Wallet, Farcaster e Argent dominano l’attività consumer.

Costi aggiuntivi: una UserOp v0.7 costa circa 30.000–40.000 gas in più rispetto alla transazione EOA equivalente: si tratta del ciclo di EntryPoint, della convalida e della gestione del bundle. Su mainnet, a 20 gwei, il costo è una frazione di dollaro per operazione. La prima distribuzione di un account tramite factoryData aggiunge circa 250.000 gas. Sulle L2, dove i dati di calldata rappresentano la voce di costo principale, l’aumento percentuale è a una sola cifra. Le UserOp sponsorizzate trasferiscono questo costo alla dApp: per questo le transazioni sono gratuite nelle app consumer, ma non nei progetti DeFi più seri. La guida alle commissioni di transazione spiega più in generale come questo costo aggiuntivo si rifletta sui diversi mercati delle commissioni.

In breve: ERC-4337 comprende sei ruoli (sender, UserOp, bundler, EntryPoint, paymaster e aggregator), una struct, due indirizzi EntryPoint da imparare a memoria e circa 30–40k gas di costi aggiuntivi. In cambio, offre schemi di firma arbitrari, sponsorizzazione del gas, batching e nonce paralleli. La parte 3 di questa serie passa a EIP-7702, il percorso parallelo di Pectra che permette al tuo EOA esistente di usare questi stessi meccanismi senza cambiare indirizzo.


Per approfondire

Wallet, commissioni gas e autorizzazioni: le tre cose che ogni utente DeFi deve capire

Wallet, commissioni gas e autorizzazioni: le tre cose che ogni utente DeFi deve capire

Prima di fare uno swap, prestare o mettere in farm qualsiasi asset, devi capire i tre elementi fondamentali da cui dipende ogni interazione DeFi: il tuo wallet, il gas e le autorizzazioni dei token.

7 min di lettura
Account, contratti ed EVM: come funziona davvero l’esecuzione su Ethereum

Account, contratti ed EVM: come funziona davvero l’esecuzione su Ethereum

Ethereum sostituisce il portamonete UTXO di Bitcoin con una vasta tabella di account e una macchina a stack che misura il gas. Ecco come funzionano davvero lo stato, gli opcode e un trasferimento ERC-20.

11 min di lettura
Meccanismi del gas su Ethereum: EIP-1559, commissioni prioritarie e commissioni per i blob dopo Dencun

Come funziona il gas su Ethereum: EIP-1559, commissioni prioritarie e commissioni per i blob dopo Dencun

Come funzionano davvero le commissioni gas su Ethereum nel 2026: l’asta della commissione base di EIP-1559, le mance per la commissione prioritaria e il mercato indipendente dei blob, nato con Dencun e ampliato con Pectra.

10 min di lettura

Iscriviti alla nostra newsletter

Ricevi un nostro aggiornamento una volta al mese. Niente spam, solo le ultime novità di Zelcore.

Iscriviti alla nostra newsletter