# Get to know ERC-4337 

By [Hicss](https://paragraph.com/@freesuton) · 2023-03-24

---

Extended Reading：

[https://vitalik.ca/general/2021/01/11/recovery.html](https://vitalik.ca/general/2021/01/11/recovery.html)

**How to start with ERC-4337**

Very curious about ERC-4337, so after some research, I finally got it:

*   It is everything about using **smart contract accounts over EOAs** (Externally Owned Accounts), implementing account abstraction (#ERC4337).
    
*   The first draft about this topic was **proposed on 2021-09-29 by Vitalik Buterin** in "[ERC-4337: Account Abstraction Using Alt Mempool](https://eips.ethereum.org/EIPS/eip-4337)"
    
*   Now we have an "official" EntryPoint **Smart Contract deployed by** [**Ethereum Foundation**](https://ethereum.org/en/foundation/), and \*\*[audited\*\* by Open Zeppelin](https://www.openzeppelin.com/).
    

These are the main components to ERC-4337:

1.  **UserOperations** are pseudo-transaction objects that are used to execute transactions with contract accounts. These are created by your app.
    
2.  **Bundlers** are actors that package UserOperations from a mempool and send them to the EntryPoint contract on the #blockchain network. Can receive UserOperations via a JSON RPC Client and submit them to the EntryPoint.
    
3.  **EntryPoint** is a smart contract that handles the verification and execution logic for transactions.
    
4.  **Contract Accounts** are smart contract accounts owned by a user.
    
5.  \[optional\] **Paymasters** are smart contract accounts that can sponsor transactions for Contract Accounts, enabling gasless transactions in your apps.
    
6.  \[optional\] **Aggregators** are smart contracts that can validate signatures for Contract Accounts.
    

The **EntryPoint contract has been deployed** on multiple chains, in the same address `0x0576a174D229E3cFA37253523E645A78A0C91B57` for: [Ethereum](https://etherscan.io/address/0x0576a174D229E3cFA37253523E645A78A0C91B57), [Polygon](https://polygonscan.com/address/0x0576a174D229E3cFA37253523E645A78A0C91B57), [Optimistic](https://optimistic.etherscan.io/address/0x0576a174D229E3cFA37253523E645A78A0C91B57), [Avalanche (only testnet)](https://testnet.snowtrace.io/address/0x0576a174D229E3cFA37253523E645A78A0C91B57), [Gnosis](https://gnosisscan.io/address/0x0576a174D229E3cFA37253523E645A78A0C91B57) [and other supported networks](https://blockscan.com/address/0x0576a174D229E3cFA37253523E645A78A0C91B57):

*   [Stackup](https://docs.stackup.sh/) was first to create a fully compliant bundler and a paymaster service.
    
*   [Alchemy](https://www.alchemy.com/account-abstraction) announced their first two products in the space: Bundler Services and Paymaster Services (wait list).
    

These ones have also built and deployed bundlers:

*   [Biconomy](https://biconomy.gitbook.io/sdk/additional-content/account-abstraction#erc-4337-account-abstraction-via-entry-point-contract)
    
*   [Blocknative](https://docs.blocknative.com/blocknative-auction/mev-bundle-rpc-endpoint)
    
*   [Etherspot](https://docs.etherspot.dev/)
    
*   [Candide wallet](https://docs.candidewallet.com/bundler/intro/)
    

According to the existing consensus, having multiple bundler clients is critical for the robustness of the protocol.

Taking the information above into account, **we can also answer the initial questions**:

> It is an interface like ERC-20, ERC-721 or ERC-1155?

No, it is a set of technical components, based on Smart Contracts. Currently there is an official EntryPoint Smart Contract developed and deployed by Ethereum Foundation, and audited by Open Zeppelin.

> Could I use ERC-4337 just importing the interface (from OpenZeppelin, for example), like IERC-20, IERC-721 or IERC-1155?

No, depending on the use case to achieve, you should use an available Bundler (or Paymaster) service provider, like [Stackup](https://docs.stackup.sh/), [Biconomy](https://biconomy.gitbook.io/sdk/additional-content/account-abstraction#erc-4337-account-abstraction-via-entry-point-contract), [Blocknative](https://docs.blocknative.com/blocknative-auction/mev-bundle-rpc-endpoint), [Etherspot](https://docs.etherspot.dev/) or [Candide wallet](https://docs.candidewallet.com/bundler/intro/)

> This will be the end version of the code?

The last audited version of the code [is on this Github repository branch](https://github.com/eth-infinitism/account-abstraction/tree/6dea6d8752f64914dd95d932f673ba0f9ff8e144).

> It is this the ERC-4337 "official" contract?

The only "official contract" is he \*\*EntryPoint contract that has been developed and deployed in multiple networks, by the Ethereum Foundation, and audited by Open Zeppelin in the following address: `0x0576a174D229E3cFA37253523E645A78A0C91B57`

> How can I use it from my Dapp?

Depending on the use case, you have to choose a Bundler or Paymaster service provider.

---

*Originally published on [Hicss](https://paragraph.com/@freesuton/get-to-know-erc-4337)*
