The previous post in this series made a distinction that matters here: Core EIPs change the protocol and require a hard fork; ERCs are application-level standards that win by adoption. ERC-4337 is the strangest and most consequential entry in the second category — it rewires how Ethereum accounts can work, something you'd assume needs a fork, and it does it entirely in smart contracts and off-chain infrastructure. The protocol never changed. It shipped on mainnet in March 2023, and consensus rules didn't move an inch.
ERC-4337 is the standard for account abstraction without protocol changes. It lets a smart contract function as a user's account — with programmable rules for what counts as a valid signature, who pays for gas, and how the account recovers if a key is lost. If you've read the account abstraction post, that covered the why. This one covers the specific machinery that made it real.
Ethereum has two kinds of accounts. Externally owned accounts (EOAs) — the MetaMask kind — are controlled by a single private key. Contract accounts hold code and can do anything programmable, but they have one hard limitation: they can't initiate a transaction. Every transaction on Ethereum must start from an EOA and be signed by its one key.
That single rule is the root of most of crypto's usability problems. One key means one point of failure — lose the seed phrase, lose everything, no recovery path. It means the ECDSA signature scheme is mandatory, so your phone's secure enclave and passkeys don't work natively. It means the account owner must hold ETH for gas, always, even to move a stablecoin.
The clean fix — letting the protocol treat contracts as first-class transaction initiators — had been proposed in various forms for years and kept stalling, because it touches consensus-critical code in every client. ERC-4337's insight was to stop waiting. If the protocol only accepts transactions from EOAs, fine: build a parallel pipeline where the meaningful object isn't a transaction at all.
The pipeline has five parts, and it helps to follow one action through them.
A user with a smart account wants to send USDC. Their wallet constructs a UserOperation — a pseudo-transaction object that describes the intent: what to call, gas limits, and a signature field that can contain anything, because the account contract decides what a valid signature means. This is where the programmability lives. The signature could be a passkey assertion, two-of-three multisig approvals, or a session key that's only valid for a specific game until midnight.
UserOperations don't go to the regular mempool. They go to a separate, parallel mempool that ordinary nodes ignore. Listening there are bundlers — specialized actors who collect UserOperations, batch them, and wrap the batch in a single ordinary transaction. That wrapper transaction is signed by the bundler's own EOA, which is the trick in one sentence: the protocol still sees an EOA-initiated transaction, so nothing about Ethereum had to change.
The bundler's transaction calls the EntryPoint — a singleton contract, one canonical deployment that the whole ecosystem shares. EntryPoint runs two loops. First, validation: for each UserOperation, it calls validateUserOp on the target account contract, which checks the signature by its own rules and confirms it can pay. Then, execution: each validated operation actually runs. The separation matters — a bundler learns whether an operation will pay before committing to execute it, which is what protects bundlers from spam that fails and sticks them with the gas bill. The standard backs this with restrictions on what validation code can touch (limited storage access, no banned opcodes) and a reputation system for the actors involved. Admittedly, this is the least elegant part of the design — a stack of rules doing the DoS protection the protocol would otherwise do natively.
Two optional pieces complete it. A paymaster is a contract that agrees to pay gas on someone else's behalf — an app sponsoring its users' transactions, or a service letting you pay fees in USDC while it settles the ETH. And factories deploy account contracts through CREATE2, meaning a wallet can compute its address before the contract exists — you can receive funds at an account that hasn't been deployed yet, and deploy it with the first outgoing operation.
The user-visible result: accounts that recover socially instead of dying with a seed phrase, sign with Face ID via passkeys, batch approve-and-swap into one click, and run gasless onboarding. All live today, mostly on L2s.
The hard constraint is cost. All that machinery — EntryPoint dispatch, validation calls, bundler overhead — makes a simple transfer meaningfully more expensive than an EOA's 21,000 gas. On mainnet that premium is real money, which is why adoption concentrated on L2s where the overhead costs cents. There's no way to optimize this to zero from inside a contract; below a certain floor, only the protocol can help.
The structural constraint is the EntryPoint itself. One shared contract validates and executes account operations for the whole ecosystem — audited heavily, versioned carefully, and still a single point whose bug would be systemic rather than local. And the bundler layer is infrastructure that has to exist and stay decentralized; today it's a handful of providers, which is a fair criticism and a fair watch item.
The soft constraint is inertia. Hundreds of millions of EOAs exist, wallets work well enough, and a standard that wins by adoption — as the EIP post put it, an ERC nobody adopts is just a well-formatted document — has to out-compete "good enough" one integration at a time.
The protocol is now meeting ERC-4337 halfway. EIP-7702, live since the Pectra fork in May 2025, lets an EOA delegate its behavior to contract code — existing accounts get smart-account features without migrating to a new address, and the standard was explicitly designed so 7702-upgraded EOAs plug into 4337's infrastructure (same EntryPoint, same bundlers, same paymasters). The two are converging into one stack: 7702 upgrades the accounts people already have, 4337 provides the transport rails.
On L2s, RIP-7560 proposes making account abstraction native to the rollup protocol itself, and the RIP-7212 passkey precompile — covered two posts back — is already live on major L2s, cutting the cost of the most popular smart-account signature scheme by an order of magnitude. The direction is consistent: what 4337 proved in contracts gets progressively absorbed into protocol layers.
UserOperations growing as a share of L2 activity. Major wallets shipping 7702 delegation that rides 4337 rails by default. Passkey-based accounts becoming the default onboarding path for new consumer apps. The bundler market adding independent operators rather than consolidating.
An exploited bug in a production EntryPoint version would be the serious one — systemic, trust-destroying, and a multi-year setback. Native account abstraction could also supersede the standard entirely, making 4337 a transitional scaffold; that's less an invalidation than a graduation, but it would end the standard's relevance. And if bundling consolidates to one or two operators, the pipeline inherits a censorship point the design was meant to avoid.
Now: ERC-4337 is live and load-bearing, overwhelmingly on L2s. If you're evaluating a wallet's "smart account" claim, the checkable facts are whether it deploys a contract account and which EntryPoint version it targets.
Next: The 7702 convergence. Watch whether the big EOA wallets ship delegation as a default rather than a buried feature — that's the difference between account abstraction as a niche and as the norm.
Later: Enshrined account abstraction on L1, where the EOA/contract distinction dissolves entirely. Direction is broadly agreed, timing isn't scheduled.
This post explains the ERC-4337 mechanism — what the standard defines and how the pipeline works. It doesn't compare specific smart-account wallets, audit any implementation, or advise migrating an account. Whether the machinery described here fits your situation depends on factors outside this scope.




