Try   HackMD

ERC-4337 Progress report #0

Thursday, July 7, 2022

Hello everyone. We are glad to see work on the ERC-4337 accelerating and also to see new people joining in every day!

Trying to keep everyone in the loop, we will post a bi-weekly progress report for all projects in the ERC-4337 family.

For the first progress report I will just list the projects and components that were created in relation to the ERC-4337 that I am aware of. Please DM me if I have missed anything and I will add it to the document.

  1. UserOp Block Builder Bundler

The main mode of operation for ERC-4337 network requires at least some share of network Block Builders (Miners, Validators, Sequencers etc.) to natively support UserOps into their public P2P mempool and using those UserOps to create a bundle and include an EntryPoint transaction in the block.

Implementations:

Project Language Status Repository
Nethermind C# In progress
Running on Görli
GitHub
Nethermind Go In progress
Forked from MEV-geth
GitHub

Help needed:
We need to bring this functionality to a higher number of networks and implementations of Ethereum-based protocols:
Geth, Erigon, Optimism, Arbitrum etc.

  1. UserOp Mempool ERC-4337 Compliance Code Validation

In order to provide DoS resistance, the UserOp mempool must follow the strict rules defined in the ERC-4337. Without those checks, the mempool can be filled with invalid transactions to a point where the Block Builder is stuck. All Block Builder Bundler implementations must have this module.

Implementations:

Project Status
Nethermind Not implemented
  1. UserOp Standalone MEV Bundler

While we are working on a public P2P UserOp mempool, the main advantage of the ERC-4337 can be leveraged by relying on private mempools, such as the ones managed by the Flashbots team. This is a stop-gap solution that allows the ERC-4337 to be 100% functional today.

Status: Help needed. No implementations started yet.

  1. BLS Aggregation Bundler

In order to enable Account Abstraction wallets to use BLS signatures we must also enable the ERC-4337 to support aggregated signatures. We also need a Bundler that is compatible with aggregated BLS signatures.

Status: Help needed. No implementations started yet.

  1. ERC-4337 Client SDK

We want to make integration of ERC-4337 into various wallets and dapps to be as simple as possible. We also want to allow dapps to reuse existing wallets, such as MetaMask, while still benefiting from ERC-4337. In order to do so we will provide and ERC-4337 Client SDK for both wallets and dapps.

Implementations:

Project Language Status Repository
Infinitism TypeScript Early prototype GitHub
Unnamed ERC-4337 Fan Club Project N/A N/A Starting
  1. Aggregated Signature Verification Smart Contract (BLS)

Adding Aggregated Signatures support to ERC-4337 requires a delegation of signature check to an external contract that is not part of a Wallet or EntryPoint specification.

Implementations:

Project Language Status Repository
Infinitism Solidity Early prototype GitHub
  1. EntryPoint Smart Contract

The main contract of the ERC-4337.

Implementations:

Project Language Status Repository
Infinitism Solidity Ready. Audited and deployed.
Missing signature aggregation support.
GitHub
Stackup Solidity Ready. Not audited. GitHub
  1. Production Grade ERC-4337 Paymasters

The ERC-4337 allows an external contract, named Paymaster, to pay for the transaction execution. We must provide implementations of such contracts for the most common use-cases.

Implementations:

Project Language Status Repository
Infinitism Solidity In progress
First ones ready and audited
GitHub
  1. Production Grade ERC-4337 ECDSA Proxy Wallet Smart Contract

The main mode of operation for ERC-4337 assumes each user will get their identity represented by a Proxy Wallet. This means that having a secure implementation for such wallet is critical. This also implies that we must guarantee that users' Proxy Wallet addresses will be deterministic and consistent across networks, same as with EOAs.

Implementations:

Project Language Comment Status Repository
Infinitism Solidity Gnosis Safe Module Prototype GitHub
Biconomy Solidity ERC-191 and ERC-1271 signatures In progress GitHub
  1. ERC-4337 BLS Proxy Wallet Smart Contract

Implementations:

Project Language Status Repository
Web3Well Solidity In progress
Relies on custom non-4337 based infrastructure
GitHub

11.Production Grade ERC-4337 Native Client Wallet

While the ERC-4337 does not specify a signature scheme, dapps relying on MetaMask to use an ERC-191 or ERC-712 signature for the UserOp is not an optimal user experience. We want the Client Wallets to support Proxy Wallet addresses and their UserOp transactions natively with a dedicated standard signature scheme.

Until we can get some old school wallets to add ERC-4337 support, we intend to maintain our own set of Client Wallets with a help from a community.

Implementations:

Project Wallet Type Language Status Repository
Stackup Mobile app TypeScript
ReactNative
In progress GitHub
Candide Mobile app Dart/Flutter In progress
Code not published
GitHub
Unnamed ERC-4337 Fan Club Project
(@zengjiajun, @jhfnetboy, @z_cejay, @StaritMe)
Browser Extension N/A Starting N/A
  1. Documentation and tutorials

Resources:

Authors Name Type Links
Vitalik Buterin, Yoav Weiss, Kristof Gazso et al. ERC-4337 Specification https://eips.ethereum.org/EIPS/eip-4337
Infinitism & ERC-4337 Fan Club Official Documentation ReadTheDocs https://www.eip4337.com/

GitHub