# Ethereum Protocol Fellowship - The Third Cohort (Update 2)
This is the second update for Ethereum Protocol Fellowship - The Third Cohort.
In the second week, I continue diving deep into the Ethereum protocol, focusing on Account Abstraction (AA) and nodes/clients implementations.
## Update
Before settling on the project and defining it, I checked more resources to see precisely what is already being worked on:
* Account abstraction (AA)
* [EIP-4337: Account abstraction using alt mempool](https://eips.ethereum.org/EIPS/eip-4337).
* [eth-infinitism](https://github.com/eth-infinitism): first implementation of the EIP-4337 by authors, smart contracts, SDK, and bundler implementation (TypeScript). Works on Ethereum testnet - Goerli, smart contracts support BLS signatures.
* Wallets
* [Soul Wallet](https://ethglobal.com/showcase/soul-wallet-5srye): fully EIP-4337 compatible wallet (paymasters, bundlers supported), support for L2s. Wallet is created using email and supports social recovery. Bunlder implementation used from [eth-infinitism](https://github.com/eth-infinitism), BLS signatures not yet supported.
* [BLS Wallet](https://ethglobal.com/showcase/bls-snap-xm5n7): custom browser extension named Quill and MetaMask Snap (extension/plugin for MetaMask), focused on L2s (Optimism, Arbitrum ...) - aggregation implemented (compression and signature aggregation), social recovery implemented.
* Bundler implementations
* [eth-infinitism](https://github.com/eth-infinitism): MVP implementation in TypeScript. Create [PR](https://github.com/eth-infinitism/bundler/pull/13) on GitHub to fix some typos in README.md for running it.
* [Nethermind](https://github.com/NethermindEth/nethermind/tree/master/src/Nethermind/Nethermind.AccountAbstraction): implementation C#, also P2P User Operation pool.
* [Stackup](https://github.com/stackup-wallet/stackup-bundler): implementation in Go, in a very early stage.
* Nodes and clients
* [Networking layer](https://ethereum.org/en/developers/docs/networking-layer/).
* [Nodes and clients](https://ethereum.org/en/developers/docs/nodes-and-clients/).
* Erigon implementation
* [Architecture of Erigon - separable and embeddable components](https://erigon.substack.com/p/architecture-of-erigon-separable) by Alex Sharp.
* [Akula](https://github.com/akula-bft/akula): node implementation in Rust, following Erigon architecture.
## Brief project description
Final decision: Bundler implementation in Rust.
After reviewing the resources, I concluded that a lot of work and discussion is happening on the wallet side for AA but not so much on the bundler (node/client) side. When AA becomes mainstream, users will send millions of user operations (most likely magnitudes larger than the number of transactions) to the bundlers; therefore, it is crucial to implement it in a scalable way in a "fast" programming language.
There are roughly four milestones that I would like to achieve:
1. MVP implementation in Rust (following features of eth-infinitism implementation).
2. Network of multiple bundlers having a p2p user operation pool.
3. Connect my bundler implementation to the one from Nethermind.
4. Possible integration options with Akula.
Also, my goal for this fellowship is to get familiar with Ethereum core protocol implementation/development and work on it after the program; thus, working on this kind of project (on the node/client level) would be very beneficial for me.
Repository for the project: [aa-bundler](https://github.com/Vid201/aa-bundler).
## Next steps
Next week, I will define the project and its components in more detail. I will also be contacting someone from the eth-infinitism to check if any bundler specs or something similar already exists.