WalletsAdvanced

What Is Account Abstraction (ERC-4337)?

Account abstraction lets a smart contract act as your wallet, so the rules for signing, paying gas and recovering access are code you choose rather than a single private key. ERC-4337 delivers it on Ethereum without a protocol change, using UserOperations, bundlers and one shared EntryPoint contract.

By DappAtlas editors · · 6 min read

In this article

Key takeaways

  • ERC-4337 makes smart contract wallets work without changing Ethereum's consensus rules.
  • Users sign UserOperations; bundlers package them and call the EntryPoint contract, which verifies and executes each one.
  • Paymasters can pay gas for users; smart accounts can batch calls and use other signature schemes such as passkeys.
  • EIP-7702, live since Ethereum's Pectra upgrade on May 7, 2025, lets an ordinary address delegate to smart account code.

The problem account abstraction solves

Ethereum has two account types. An externally owned account (EOA) is controlled by one private key; a contract account is controlled by code. Only EOAs could start transactions, which ethereum.org says makes batching hard and forces users to always hold ETH to pay fees.[1]

That design puts the whole account behind one secret. Lose the seed phrase and the funds are gone; leak it and they are stolen. There is no built-in daily limit, no second signer, no recovery.

Account abstraction means letting code decide what counts as a valid transaction for an account. Ethereum.org lists what that enables: recovering lost or exposed keys with multiple backups, sharing account security across trusted devices or people, and letting someone else pay your gas.[1]

Ethereum.org describes two routes to the same goal: upgrading EOAs so smart contracts can control them (EIP-7702), or adding a separate transaction system that runs in parallel to the existing protocol (ERC-4337). Either way the outcome is access to Ethereum through smart contract wallets, including batched actions such as approve and swap in one step.[1]

How ERC-4337 works

ERC-4337, created on September 29, 2021, achieves this without consensus-layer changes. Instead of a transaction, the user signs a UserOperation: a structure describing the call, gas limits and a signature, sent to a separate alt-mempool.[2]

A bundler collects UserOperations and submits them in one normal transaction to the EntryPoint contract, calling handleOps. For each operation the EntryPoint first calls the account's validation function, then executes the call and charges gas.[2]

Three optional helpers extend the flow. A factory deploys the account on first use, so a user can get an address before any contract exists. A paymaster agrees to pay the gas, in exchange for a token or as a sponsorship. An aggregator validates many signatures at once to save gas.[2]

Because validation is code, the account can check a passkey, a multisig threshold, or a session key with limited rights. The EntryPoint only needs the validation step to succeed and the gas to be paid.[3]

The ERC-4337 documentation lists what the architecture supports in practice: custom signature schemes such as passkeys and multisig, gasless transactions through paymasters, one-click flows through batched calls, modular accounts with upgrades and recovery, and wallet creation without an EOA or upfront ETH.[3]

It also contrasts the design with centralized relayers. Anyone can run a bundler and read the shared alt-mempool, so no single company decides which operations get included. The same documentation covers layer 2 variants, including RIP-7560, a proposal for native account abstraction on rollups.[3]

ERC-4337 roles
ComponentWho runs itJob
Smart accountThe user (contract)Validates signatures and executes calls
BundlerNode operatorsPackages UserOperations into a transaction
EntryPointSingleton contractRuns validation, execution and gas accounting
PaymasterApps or servicesPays gas on the user's behalf
FactoryWallet developersDeploys the account on first use

A worked example: one click, three actions

A user with a smart account and no ETH wants to swap USDC for another token. With an EOA that takes an ETH purchase, then approve, then swap: three steps and ETH on hand before the first.

With ERC-4337, the wallet builds one UserOperation whose call data batches approve and swap. It attaches paymaster data, where the paymaster agrees to cover gas and charge the user in USDC. The user signs once, for example with a device passkey.[2]

A bundler submits it to the EntryPoint. The EntryPoint validates the account's signature, validates the paymaster, executes both calls in order, then settles gas with the paymaster. The user never held ETH, and one signature covered two contract calls.[2]

The cost is overhead. Validation, the EntryPoint call and paymaster checks add gas compared with a plain EOA transaction, so the overhead matters less on layer 2 networks where gas is cheaper.

The EntryPoint contract was deployed to Ethereum mainnet on March 1, 2023. Ethereum.org reports that ERC-4337 has seen more than 26 million smart accounts deployed and more than 170 million UserOperations processed.[1]

Inside a UserOperation

The EIP spells out every field. A UserOperation names the sender account and a nonce, optional factory and factoryData for first-time deployment, the callData to execute, and separate gas limits: callGasLimit for the main call, verificationGasLimit for validation, and preVerificationGas to compensate the bundler for overhead.[2]

Fee fields mirror normal transactions, maxFeePerGas and maxPriorityFeePerGas, followed by optional paymaster fields and the signature. On chain the EntryPoint packs some of these: accountGasLimits concatenates the two 16-byte gas limits into one 32-byte word, and gasFees does the same for the two fee fields.[2]

The nonce also differs from an EOA's. ERC-4337 treats the single uint256 nonce as a 192-bit key plus a 64-bit sequence, exposed by the EntryPoint's getNonce function. A wallet can use separate keys for independent streams of operations, so one pending operation does not block all others.[2]

Bundlers simulate each UserOperation before including it, because they pay gas for the bundle up front and are reimbursed through the EntryPoint. The EIP's validation rules restrict what the validation step may access, so one operation cannot cause others in the same bundle to fail.[2]

EIP-7702: existing addresses get smart features

ERC-4337 has one friction: a smart account is a new address, so users must move assets. EIP-7702, created on May 7, 2024, adds a transaction type that lets an EOA set its code to point at a contract.[4]

The mechanism is precise. The transaction carries authorization tuples of chain_id, address, nonce and signature. For each, a delegation indicator, 0xef0100 followed by the contract address, is written to the authorizing account's code, and calls to that account then run the delegated code.[4]

EIP-7702 activated with Ethereum's Pectra upgrade at epoch 364032 on May 7, 2025. It works alongside ERC-4337: a delegated EOA can run smart account code that is compatible with the 4337 EntryPoint, bundlers and paymasters.[5]

One authorization list can carry several tuples, and each is bound to a chain ID and the account's nonce. EIP-7702 requires the chain ID to be 0 or the current chain's ID, so a signature with a specific chain ID cannot be replayed elsewhere, while chain ID 0 is valid on any chain. Check which one a wallet asks you to sign.[4]

What it means for wallets and security

For users the visible changes are gas sponsorship, batched actions, passkey sign-in and recovery options. The wallet and wallet-infrastructure projects linked below, including Safe, Privy, Dynamic and thirdweb, are listed in our directory.

Security moves rather than disappears. With an EOA the risk is the key. With a smart account, the risk includes the account contract, its modules and any paymaster or session key logic. The EIP's security considerations say the EntryPoint must be audited and formally verified, because it is a central trust point for all of ERC-4337.[2]

self-custody still applies. A smart account you control through your own signers is self-custodial; an embedded wallet whose recovery depends on a provider's infrastructure carries that provider's risk.

Paymasters bring their own risk. Because a paymaster pays for operations it did not sign, a hostile user can try to make it pay for work that later fails. The ERC-4337 documentation has a dedicated section on security and griefing protection, and the EIP requires paymasters to deposit and in some cases stake with the EntryPoint so misbehavior has a cost.[3]

See also: Safe · Privy · Dynamic · thirdweb · Best software wallets

The bottom line

If you build a consumer app, ERC-4337 with a paymaster removes the need to buy ETH before the first transaction. If you already hold assets in an EOA, EIP-7702 lets you add batching and sponsorship without moving funds. In both cases the security review shifts from guarding one key to auditing the account code you delegate to. Start on a layer 2 network, where the extra validation gas is cheaper, and move to mainnet once the flow is proven.

Educational content, not financial advice. Crypto assets are volatile; do your own research.

How we write our guides

Every guide is written from primary sources: official docs, standards and regulator pages, listed below with the date we read them. No project pays to be mentioned. Editorial standards

Related terms

FAQ

Is ERC-4337 part of the Ethereum protocol?

No. It runs entirely through smart contracts and off-chain bundlers, without changes to consensus rules.

What is a UserOperation?

A signed request from a smart account describing what it wants to do, sent to bundlers instead of the regular transaction pool.

What is a paymaster?

A contract that agrees to pay gas for a UserOperation, for example to sponsor new users or accept fees in a token.

Does EIP-7702 replace ERC-4337?

No. EIP-7702 lets an existing address run smart account code; that code can still use ERC-4337 bundlers and paymasters.

Can I use account abstraction on layer 2?

Yes. The ERC-4337 documentation covers layer 2 networks, including RIP-7560 for native account abstraction on rollups, and lower gas there makes the overhead cheaper.

Keep reading

Sources (5)
  1. [1] ethereum.org. “Account abstraction.” Accessed Sep 26, 2026.
  2. [2] Ethereum Improvement Proposals. “ERC-4337: Account Abstraction Using Alt Mempool.” Accessed Sep 26, 2026.
  3. [3] ERC-4337 Documentation. “ERC-4337 Documentation.” Accessed Sep 26, 2026.
  4. [4] Ethereum Improvement Proposals. “EIP-7702: Set Code for EOAs.” Accessed Sep 26, 2026.
  5. [5] ethereum.org. “Pectra.” Accessed Sep 26, 2026.

How this page works

Sources: ethereum.org, Ethereum Improvement Proposals, ERC-4337 Documentation. Data as of Sep 26, 2026.

How we review

Not affiliated with any project listed. Educational content, not financial advice.