# Week 1 ## Introduction Hello! I am excited for the opportunity to participate in the EPF. I am looking to really capitalize on this program through getting my foot in the door in terms of a deeper and more specialized understanding of the different parts of Ethereum. As well as to begin contributing to different pieces and to create a meaningful project of my own. From a surface level I began the week with an interest in learning more about the execution layer side of Ethereum. I found that the majority of upcoming changes in addition to the overall layout and design of the EL really peaked my interest. From this point I figured it was in my best interest to go down that path. So for the rest of the week I worked on trying to find a concept or set of concepts that I would really enjoy working on, on top of learning the EL interaction with the consensus layer in regards to these concepts. ## Learning In Terms of learning I really tried to branch out and consult a plethora of different resources in order to quickly gain insight on different perspectives about different EIP's and existing implementiations. I found the EPF wiki to be a valuable resource in regards to getting a breakdown on the general overview of both the EL and CL as well as some more specific concepts. ### Concepts #### Verkle After viewing the EPF study group presentation on verkle I decided to delve deeper into exploring the concept. I wanted to know both the working of the current implementation used (MPT's) and the advantages that the verkle implementation has over it. I researched firstly how the MPT currently functions and why it was initially used. The biggest thing that stood out to me was the disadvantages it had towards scalability and why there is a need for improvement. From there I looked into verkle and to learn how it solved that problem. The main downside I found related to the longer calculations required for an elliptic curve based design on the cryptography side of things. ##### Resources 1. https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/ 2. https://verkle.info/ 3. https://epf.wiki/#/eps/week7-research 4. https://ihagopian.com/posts/anatomy-of-a-verkle-proof #### Statelessness When looking into verkle tries I learned about the larger goal that the implementation aimed to enable. That of course being the concept of statelessness. This was an interesting concept and certainly seemed like it could provide huge benefits, especially towards the light client environment. I looked into different clients to find how far along statelessness was implemented and the came across the Nethermind client as a point of interest. Nethermind has a working verkle trie implementation for testnets and so I decided to check the codebase to see if I could gain any insight. From there I downloaded the Nethermind source code, built and then ran the client just to get an idea of how it is set up. I considered the idea of creating a prototype stateless client with the Nethermind codebase. Unfortunately, although having a working verkle trie implementation, I found the variance of additional stateless implementation concepts to be too far fetched. In that, I do not entirely know how beneficial such a prototype would be with so many things subject to change. ##### Resources 1. https://ethereum.org/en/roadmap/statelessness/ 2. https://consensys.io/blog/modelling-stateless-ethereum-a-journey-into-the-unknown 3. https://inevitableeth.com/home/ethereum/upgrades/statelessness 4. https://docs.nethermind.io/ 5. https://github.com/NethermindEth/nethermind #### History Expiry My search then led me to a subsection of statelessness. History expiry looked to be a really promising upgrade to clients themselves and something less reliant on future design decisions. I did some research on the concept and looked into different potential implementations in addition to consequences of this change in regards to security and centralization. After researching I believe this could be a really useful change that would lesson the barrier to entry of full nodes which could lead to improved decentralization. ##### Resources 1. https://medium.com/@chaisomsri96/statelessness-series-part1-state-expiry-history-expiry-2bbd5835b329 2. https://eips.ethereum.org/EIPS/eip-4444 3. https://medium.com/@CopyReach.Max/ethereum-road-map-explained-statelessness-state-expiry-and-history-expiry-e6250c068a2b ### Moving Forward After learning about a selection of different concepts regarding statelessness I have found the particularly interesting idea of history expiry. I am leaning towards a project that has to do with the implementation of history expiry for the Nethermind client in collaboration with the Portal Network team. Though there is still a fair amount of learning to do to really solidify my understanding of the concept. I also need to learn the Nethermind codebase more in-depth on top of the required interactions with the consensus layer that would enable history expiry. ## Week 2 Plan My plan for week 2 is largely to familiarize myself with the Nethermind codebase and do continued research on history expiry as a concept. From there I can potentially begin talking to both individuals part of the Nethermind and Portal Network teams to determine how feasible implementing history expiry would be.