There have been some serious efforts throughout the years to advance towards Contract Accounts on Ethereum through Account Abstraction. It is a huge change to the Ethereum Protocol, and ERC-4337 brings the benefits of Account Abstraction without Protocol Changes.

In the near future, EOA wallets will be replaced by Smart contract wallets because of the advantages they have to offer over EOA wallets. EIP-4337, which proposes Account abstraction on Ethereum, has brought the concept of smart contract wallets closer to reality.

You should know!

This page gives a simplified overview of ERC-4337 so you can get a basic understanding of the different components and how they can be pieced together to build applications. For a full run down on the spec we recommend going straight to the source.

The life cycle

Onboarding users on web3 is difficult due to the requirement of native tokens for gas, and complicated wallet experiences. Smart Contract Wallets using Account abstraction (EIP-4337) are simplifying that. With the increased adoption of such wallets, dApps will be able to selectively sponsor gas for their users and make their user’s experience better.

What's a userOperation?

All components of ERC-4337 revolve around a pseudo-transaction object called a UserOperation which is used to execute actions through a smart contract wallet. This isn't to be mistaken for a regular transaction type.

How does this look like in action?

On a high level, a UserOperation has the following life cycle.

  1. A UserOperation is created in your app and signed by the user.
  2. The UserOperation is sent to a dedicated mempool.
  3. A Bundler batches multiple UserOperations from the mempool and relays them to the EntryPoint.
  4. The EntryPoint coordinates the verification and execution of the UserOperation via the Wallet and Paymaster.

The challenge for builders

Although contract accounts offer the ability to build much better user experiences, they also introduce more complexity for developers to manage the interaction between different components like the Bundler, EntryPoint, Wallet, and Paymaster.

Bundler

A Bundler is a class of actors that can do several things: