--- title: ERC-4337 Progress report #3 --- # ERC-4337 Progress report #3 ###### Monday, August 22, 2022 Hello everyone! A little late with the report this week, however, there is some really good news that I am glad to share. **1. First, welcome [Candide Wallet](https://www.candidewallet.com/) to the ERC-4337 club!** They are developing a mobile-first wallet application with ERC-4337 support with Dart and Flutter. You can read their own [progress report](https://coda.io/@candide/contributors/progress-0-22), follow them on [Twitter](https://twitter.com/candidewallet), read their ERC-4337 posts on [Medium](https://medium.com/@candidelabs/account-abstraction-potential-with-erc-4337-6bf6bf8ab0bf) or join their [Discord](https://discord.com/invite/NM5HakA9nC) server. Happy to see the ERC getting more projects and looking forward to installing the application from the app store. **2. Some breaking API changes for the upcoming second revision of the ERC-4337 specification** * We are adding support for alternative CREATE2 factories and other deployers to our EntryPoint implementation.<br> In the original implementation of the EntryPoint contract, the CREATE2 Factory address is a constructor parameter and it is impossible to change it later on. However, it is critical for us that users of the ERC-4337 can get the same Wallet addresses across all chains, and EntryPoints may need to support different CREATE2 Factories on various networks.<br> You can see the code diff here: https://github.com/eth-infinitism/account-abstraction/pull/100 * We are combining the `paymaster` and `paymasterData` values into a single field<br> This allows us to save some space in the UserOp structure. It is also preventing the UserOpearations from passing a filled `paymasterData` without defining a `paymaster` address which would cause an error. <br>The diff can be seen here: https://github.com/eth-infinitism/account-abstraction/pull/108 * We have relaxed the requirement for the Paymaster's `validatePaymasterUserOp` enabling it to be a non-view method<br> In order to support Paymasters making state changes during the UserOp validation, we have changed the `validatePaymasterUserOp` method to be defined as a non-view method. The standard Bundler should still check that storage-related opcodes are not present in the Paymaster, however, future Bundlers may allow some Paymasters to make state changes. <br>The diff can be seen here: https://github.com/eth-infinitism/account-abstraction/pull/107 * All signature aggregation-related changes have been merged to the `develop` branch A full explanation of our approach to the signature aggregation with ERC-4337 can be found in the previous progress report here: https://hackmd.io/TOLeQMiTSe6yl_8m_xIXTQ **3. A sample "Bundler Server" and "ERC4337 Provider" are ready for public testing** In order to make your first transaction via the ERC-4337, you would normally need a wallet application or browser extension and an RPC endpoint that both support `eth_sendUserOperation`. While there are projects that try to do both, as of now it is almost impossible to send a UserOperation on any network. However, we believe it is important to start testing the protocol during its development. So we have created the following packages: * Single UserOp Flashbots Protect Bundler It is a very minimal Bundler as it only creates bundles with a single UserOperation. This process accepts 'eth_sendUserOperation' calls and turns them into signed transaction calls on EntryPoint. Sending these transactions through the Flashbots Protect API guarantees that only UserOperations that do pay for gas are mined. While more expensive to use and fully centralized, from the Dapps' point of view, this Bundler should be equivalent to the real one. Critically, such Bundler Server can be run locally, allowing you to test your projects without running an entire Nethermind node. * ERC-4337 Provider and Signer for Ethers.js As there are no wallet extensions supporting `eth_sendUserOperation` method and all that it implies, it was impossible to send a UserOperation from the browser and see how your Dapp behaves with it. With ERC-4337 Provider you can wrap an injected Ethereum provider such as MetaMask and it will handle the ERC-4337 stuff internally. Note that it uses a "signed message" to sign on the UserOperation and deploys a very simple Smart Contract Wallet for you. * A sample React-based ERC-4337 web application Combining an ERC-4337 Provider and a Bundler Server you can build ERC-4337 Dapps already today. You don't need to worry about upcoming changes to the ERC-4337 itself or have to implement production-ready ERC-4337 infrastructure. The source code for these packages can be found here: https://github.com/eth-infinitism/bundler We will soon publish the Bundler Server to the NPM and DockerHub and update this post with the links. This is a very early stage for the project so all help and feedback are very much appreciated. Updated on 25-AUG-2022: **4. Progress report by the Proof Of Soud Protocol** The Proof Of Soud Protocol Team has been making steady progress designing and implementing ERC-4337 Smart Contract Wallet with Social Recovery, as well as Paymasters for gas abstraction. You can read the team's [full progress report here](https://docs.google.com/document/d/10JIe6Apirs8KdHGGtFIvs_IFNxLgFNLxOMLynKVgFcY/edit#heading=h.tat6al5f0tw).