# Week 5
## Recap
For a good portion of this week I spent my time drafting my project proposal. The biggest challenge I faced was figuring out the logistics for the road map. Which required looking into different Portal Client designs to see the different parts that are needed in actual implementation to create a client. There are a few differing designs so I had to weigh the benefits and downsides of each implementation. I decided to settle with a hybrid of the designs in order to allow for some creative freedom that would best allow me to adapt the Portal Client to Besu. Outside getting my proposal ready I continued to look into the Besu codebase to learn about their networking implementation. I also reached out to the Besu team to get more information on the design specifics of the Portal Client. As well as to begin to work with them on how they would like the client to interact with Besu. I hope to hear back from them soon and can then start putting the project into fruition.
## Learning
The learning that I did this week was more so to gain an insight on different Portal Client design. I did so be looking at existing implementations to gain a high level understanding of how such a client would be best organized. As well as to familiarize myself with their respective client codebase layout should I need to consult them when doing interop testing later on. Outside of that I continue reading through relevant parts of the Besu codebase and learning about different Java library funcions as they came up.
### Concepts
#### Besu Codebase
I continued to look into specific implementation details of the Besu codebase to get a better understanding of the peer to peer implementation details. Mostly relating to the Discover V5 Protocol but also how the Besu client stores nodes and when it decides to let nodes go or attain new ones. I also looked into the packet design and how certain packets like PING and PONG function in regards to the handshake during node connection.
##### Resources
1. https://github.com/hyperledger/besu
#### Portal Clients
I looked into the design of the existing Portal Clients to learn about how they function on an implementation level. It was useful to see how they had been designed and organized. Learning about the organization gave me a better idea of how I could turn the creating a Portal Client into smaller goals to design a more coherent roadmap for its development. It also looked specifically into the Portal Wire Protocol design of Trin just to see how it had been implemented and to give me a better idea of the scope of that task.
##### Resources
1. https://github.com/ethereum/trin
2. https://github.com/status-im/nimbus-eth1/tree/master/fluffy
3. https://github.com/ethereumjs/ultralight
4. https://github.com/optimism-java/shisui
#### Java Library
I continued to learn different Java library functions that I came across when reading through the Besu codebase. The biggest piece to learn for me was the widespread use of Java generic functions, something that I had only previously used only a few times with a relatively high level understanding.
##### Resources
1. https://docs.oracle.com/en/java/javase/22/docs/api/index.html
## Tasks
This week I completed the large majority my project proposal and have finalized almost all of the details. As well as prepared my presentation which I intend to give at the office hours meeting on Tuesday.
## Week 6 Plan
Going into week 6 I aim to start working on my project and continue diving into the Besu codebase as I need. I hope to hear back from the Besu team regarding certain details about the Portal Client so that I can ensure that it is designed in a way that they are looking for from the start. I also hope to give my project presentation as stated above.