Backgound
Very curious about ERC-4337, so after some research, I finally got it:
These are the main components to ERC-4337:
- UserOperations are pseudo-transaction objects that are used to
execute transactions with contract accounts. These are created by
your app.
- 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.
- EntryPoint is a smart contract that handles the verification and execution logic for transactions.
- Contract Accounts are smart contract accounts owned by a user.
- [optional] Paymasters are smart contract accounts that can sponsor transactions for Contract Accounts, enabling gasless transactions in
your apps.
- [optional] Aggregators are smart contracts that can validate signatures for Contract Accounts.
The latest version of EntryPoint contract so far (0.6.0) has been deployed on multiple chains, in the same address 0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789 for: Ethereum, Polygon, Optimistic, Avalanche (only testnet), Gnosis and other supported networks:
These ones have also built and deployed bundlers:
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, Biconomy, Blocknative, Etherspot or Candide wallet
This will be the end version of the code?
The last audited version of the code is on this Github repository branch.
It is this the ERC-4337 "official" contract?
The latest version (0.6.0) of the "official contract" is the **EntryPoint contract that has been developed and deployed in multiple networks, by the Ethereum Foundation, and audited by Open Zeppelin in the following address: 0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789
How can I use it from my Dapp?
Depending on the use case, you have to choose a Bundler or Paymaster service provider.