# **EPF5 Week 2 Update** This week I mostly focused on reading up on the Consensus Layer (CL). I did not have much of an understanding of the CL before EPF5. During the EPS I mostly focused on the Execution Layer. Since I took an interest in Grandine, it made sense to read up on the CL. I also began learning Rust! Apart from some TypeScript I did at ETHGlobal, this will be the first language I really learn. It's going to be a long journey. I managed to read a significant amount, however, I didn't cover some specifics that I need to carry over to this week. I will spend more time in the Grandine and Consensus Specs Githubs too. **17 June Task list:** - Read anything I need a refresher on from [Suggested Reading list](https://github.com/eth-protocol-fellows/cohort-five/blob/main/program-guide/reading.md) - In Progress - Watch [Ethereum's Proof of Stake consensus explained](https://www.youtube.com/watch?v=5gfNUVmX3Es&ab_channel=AltExplainer) - **DONE** (but need to rewatch again and again) - The following I'm reading to get a better understanding of devp2p and libp2p: - Read [libp2p & Ethereum (the Merge)](https://blog.libp2p.io/libp2p-and-ethereum/) - **DONE** - Read [devp2p](https://docs.libp2p.io/concepts/similar-projects/devp2p/#comparing-devp2p-and-libp2p) - **DONE** - Read [What is libp2p](https://docs.libp2p.io/concepts/introduction/overview/) - **DONE** - Useful resource [libp2p specs](https://github.com/libp2p/specs/) - Useful resource [devp2p specs](https://github.com/ethereum/devp2p) - [The Beacon Chain](https://ethereum.org/en/roadmap/beacon-chain/) - **DONE** - [Danksharding](https://ethereum.org/en/roadmap/danksharding/) - **DONE** - Rewatch [EPS Week 6 Consensus and Execution Spec presentation](https://epf.wiki/#/eps/week6-dev) and perform additional reading and exercises - **REWATCH IS DONE.** Now need to perform exercises - **[CODE](https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319)** (book by Charles Petzold) arrived yesterday! Came with recommendation from Rahul. :) **18 June Task List:** - Attended AMA with Fredrik Svantes - **DONE** - Read through the Grandine Discord channel - **DONE** - [Could see discussion from early 2022 between Miga Labs and Grandine on CL comparison results. Discussion took place at beginning of server.](https://discord.com/channels/945714351841607690/945714351841607694/984455592833863781) - [Question about closed source nature of Grandine](https://discord.com/channels/945714351841607690/945714351841607694/974860009206861834) - [Response to question about Hive test results for Grandine](https://discord.com/channels/945714351841607690/945714351841607694/1016977239881035806) - [Roadmap post merge](https://discord.com/channels/945714351841607690/945714351841607694/1021711661960282214) - [Slides](https://slides.com/saulius/grandine-ethereum-consensus-layer-client) used in PEEPanEIP talk with Pooja - [Config examples](https://discord.com/channels/945714351841607690/945714351841607694/1250738795566075985) - Invited to weekly standup with Saulius - Watch [EPS Week 8 Consensus Client Architecture presentation](https://epf.wiki/?#/eps/week8-dev) - **DONE** **19 June Task List** - Read [Upgrading Ethereum 2.3 Consensus section](https://eth2book.info/capella/part2/consensus/) - **DONE** Today was a US holiday so I took it a little easy today. **20 June Task List** - Participated in a Discord Voice Channel with Saulius and several other EPF5 fellows who expressed interest in Grandine project ideas. This was mostly an introduction call and setting the tone and expectations for the next five months with Saulius. - Attended EPS Wiki Contributors call. I need to flesh out the Testing pages which should run nicely in parallel with my EPF5 project. - Read through ETHR&D Discord for any mention of Grandine - **DONE** - The Rust Programming Language Chapter 1 - **DONE** ![Screenshot 2024-06-20 at 17.27.03](https://hackmd.io/_uploads/rks6pQM8C.png) **21 June Task List** - Listened to [ACDE Meeting #190](https://www.youtube.com/watch?v=8VGf-EE6zNE&ab_channel=Ethereum) - [The Beacon Chain Ethereum 2.0 explainer you need to read first](https://ethos.dev/beacon-chain) - **DONE** - Read [On the importance of spec compliance, its challenges and possible solutions](https://docs.google.com/document/u/0/d/1HMSxMNY3nZR4NKohIQAhzRTzYnKEJEU9ro8Z8kcnH2c/mobilebasic?pli=1) - **DONE** - Build Grandine on MacOS. According to one of Grandine's project ideas, "Grandine's developers mainly use Linux, so Grandine is tested only on Linux. However, there are many Windows and MacOS users that would benefit from better support;" I've begun doing this today. - You can't automatically build Grandine from their GitHub on MacOS. So you need to follow these steps: - Install Homebrew (if you don't already have it installed) by running: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` - Install the necessary dependencies by running: `brew install git cmake pkg-config openssl` - Clone the Grandine repo: `git clone https://github.com/grandinetech/grandine.git` `cd grandine` - Install Rust: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env` - Build Grandine using Cargo: `cargo build --release` - Run Grandine: `./target/release/grandine` I came across these errors the first time running this: ![Screenshot 2024-06-21 at 15.14.03](https://hackmd.io/_uploads/S1PEkPmUA.png) I know what the issue is and will resolve it this week. **To Do's For This Coming Week:** - Read [EPF Wiki SSZ Serialization section](https://epf.wiki/?#/wiki/CL/SSZ) - Read [p2p-interface.md](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md) - Not started - Set up [docker](https://github.com/eth-educators/eth-docker/releases/tag/v2.9.1.0) - Go through the [Grandine GitHub](https://github.com/grandinetech/grandine) - Read through [Grandine Docs](https://docs.grandine.io/) - Read through [Ethereum/builder-specs](https://github.com/ethereum/builder-specs) - Read through [Consensus-specs](https://github.com/ethereum/consensus-specs) - Read through the [Lighthouse Book](https://lighthouse-book.sigmaprime.io/?search=testing ) to see what I can find around Testing. - Read through [Beacon APIs](https://github.com/ethereum/beacon-APIs) - Write first Pyspec program. Use [Pyspec Tutorial](https://github.com/ethereum/consensus-specs/blob/dev/tests/README.md) - Write Pyspec test case - Read [Upgrading Ethereum 2.7-2.9 sections](https://eth2book.info/capella/part2/) - Read [Upgrading Ethereum Part 3](https://eth2book.info/capella/part3/) - Add Opcode to EELS **Links I came across that could be helpful in the future** - https://beaconcha.in/ - https://stakefromhome.com/ - https://etheralpha.org/ - https://x.com/ethereumonarm/status/1800436894418805198?utm_source=substack&utm_medium=email - https://simpleserialize.com/ (thanks for sharing DanGoron!) **Rust Resource** - [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html) - [Rustlings](https://github.com/rust-lang/rustlings/?tab=readme-ov-file) - [Exercism for Rust](https://exercism.org/tracks/rust) - [Learn Rust With Entirely Too Many Linked Lists](https://rust-unofficial.github.io/too-many-lists/index.html)