# EPF Cohort 6 – Week 1 Update I joined EPF with initial interest in consensus-level improvements. This week has been a deep dive into Ethereum's consensus logic and the potential benefits of introducing determinism in proposer selection. ## EIP-7917 Research During the first week of the program, I researched [EIP-7917](https://eips.ethereum.org/EIPS/eip-7917), which introduces deterministic proposer lookahead in Ethereum consensus. I focused on understanding how consensus logic currently works—specifically, how proposers and attesters are selected at the start of each epoch for every slot. I explored the benefits of introducing a deterministic lookahead for proposers for the next `MIN_SEED_LOOKAHEAD + 1` epochs. I also thought about how **slashing** works for proposers who are deterministically selected ahead of time, and whether this could introduce new attacks or complications. After that, I started looking at how this EIP is already implemented in other clients, such as [Prysm (PR)](https://github.com/OffchainLabs/prysm/pull/15129). ## Additional Consensus Research While digging into proposer logic, I also explored: - Fork Choice Rule and how it decides the canonical chain - The fallback mechanisms in case a proposed block is not chosen (due to lack of attestations) - What happens to valid transactions in blocks that are not included in the canonical chain (how they are returned to the mempool) - The [attestation timing mechanism](https://eth2book.info/capella/part3/config/configuration/#seconds_per_slot) in Ethereum: ## In the meantime, I got information from a colleague on Discord that most suggested clients have already implemented EIP-7917. Because of that, I decided to switch my focus for next week. ## Next Steps Starting in Week 2, I will pivot to a new project: **Implementing Tokio Tracing for debugging and performance analysis in the Grandine client.** I believe that working on observability in a consensus client will give me valuable insight into how the core logic operates under the hood. ## Week 2 Goals - Explore the Grandine codebase in more depth - Clone and run the Grandine repo locally - Study how `tokio-tracing` works in Rust - Read more about the difference between observability and traditional monitoring - Plan where tracing would be most useful inside Grandine ## Resources - [EIP-7917](https://eips.ethereum.org/EIPS/eip-7917) - [EIP-7917: Deterministic proposer lookahead with Justin Drake & Lin Oshitani PEEPanEIP](https://www.youtube.com/watch?v=oFSUU91BMOg) - [Prysm PR #15129](https://github.com/OffchainLabs/prysm/pull/15129) - [Eth2 Book – Consensus Configuration](https://eth2book.info/capella/part3/config/configuration) - [Grandine GitHub Repository](https://github.com/grandinetech/grandine)