Links
Comment on page

Account Abstraction

Account abstraction is a concept introduced by Ethereum Improvement Proposal EIP-4337, which aims to improve the flexibility and usability of Ethereum accounts. It allows the creation of smart contract accounts with user-defined logic to handle transaction validation and execution, instead of relying solely on the built-in transaction processing of EOAs.
With account abstraction, users can:
  • Implement custom transaction validation rules
  • Use alternative transaction fee payment methods (e.g., ERC20 tokens instead of Ether)
  • Improve privacy by obfuscating transaction details
  • Simplify user experience by bundling multiple actions in a single transaction

Account Abstraction Terms

Smart / Contract / Abstracted Account

A Smart Account is a smart contract implementing ERC-4337 representing an account that receives user operations and processes verifications on it before executing them. The smart Account interacts mainly with the Entrypoint by receiving user operations, validating them and executing them.

User Operation

A User Operation is the equivalent of a transaction in Account Abstraction. A User Operation specifies the account that will handle the transaction, calldata, gas fees, nonce etc… See full structure here. The User Operation is sent to a bundler that will create a transaction from it.
Field
Type
Description
sender
address
The account making the operation
nonce
uint256
Anti-replay parameter; also used as the salt for first-time account creation
initCode
bytes
The initCode of the account (needed if and only if the account is not yet on-chain and needs to be created)
callData
bytes
The data to pass to the sender during the main execution call
callGasLimit
uint256
The amount of gas to allocate the main execution call
verificationGasLimit
uint256
The amount of gas to allocate for the verification step
preVerificationGas
uint256
The amount of gas to pay for to compensate the bundler for pre-verification execution and calldata
maxFeePerGas
uint256
Maximum fee per gas (similar to EIP-1559 max_fee_per_gas)
maxPriorityFeePerGas
uint256
Maximum priority fee per gas (similar to EIP-1559 max_priority_fee_per_gas)
paymasterAndData
bytes
Address of paymaster sponsoring the transaction, followed by extra data to send to the paymaster (empty for self-sponsored transaction)
signature
bytes
Data passed into the account along with the nonce during the verification step

Paymaster

A paymaster is a smart contract that can sponsor (pay the gas) for user operations. If a user operation specifies that the gas will be paid by a paymaster, the paymaster will check if the user operation is corresponding to custom criteria and it will pay for the transaction. A paymaster can be used for gasless transactions, pay fees with stablecoins or with custom tokens.

Bundler

The bundler is a node connected to a block builder on the blockchain that receives user operations a bundles them into an Ethereum transaction.

Entrypoint

The Entrypoint is the main contract responsible of Account Abstraction. It is permission-less meaning that no one owns it and it processes user operations, redirects them to the accounts, sends the receipts to paymaster, refunds bundlers for their transaction, etc… The entrypoint is also responsible of managing stakes and deposits for the Account Abstraction system.

Aggregator

An aggregator is a contract trusted by accounts to verify the user operations signature. It is used to create lighter signatures when combining them for L2 rollups for example.