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 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, follow them on Twitter, read their ERC-4337 posts on Medium or join their Discord 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.
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.
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
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.
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
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.
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:
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.
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.
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.