# Week 2 - Through the Dragon’s Eye This week, my primary focus was on improving my familiarity with the Nim programming language and deepening my understanding of the Nimbus consensus layer (CL) codebase — particularly how its architecture aligns with and implements the Ethereum specification. To support this, I thoroughly reviewed the available Nim documentation to solidify my command of the language. Following this, I explored the block processing logic in the client, paying special attention to the functions modified or introduced by the FOCIL. During this process, I also examined related changes in nim-web3, particularly those concerning the Engine API implementation. Additionally, I had a productive discussion with fellow EPF participant Vineet (@kyaap) regarding Pureth, another project of interest. I will be incorporating relevant insights from his Week 2 notes to better understand Pureth’s architecture and potential overlap with my work. # FOCIL (EIP-7805) Implementation Updates ## Phase 1: Intial Code contributions begin This week marked the transition from passive exploration to active contribution. I began implementing changes required by the FOCIL specification, focusing primarily on functions affected by the Engine API. These changes required updates across both the Nimbus consensus layer (CL) and the nim-web3 codebase, where much of the Engine API logic resides. On the Nimbus CL side, I worked on integrating the new logic paths introduced by FOCIL. This also involved carefully mapping the relevant spec changes to their corresponding modules and abstractions in the client code,which is casuing some problems regarding how certain functions in the spec is mapped into the codebase. Plan on solving thi by this week and continue on FOCIL. Simultaneously, I contributed to nim-web3 by modifying where the Engine API interfaces are defined and utilized. To prepare for further testing and refinement, I also began writing placeholder tests to make future test coverage easier to implement. - [FOCIL PR](https://github.com/status-im/nimbus-eth2/pull/7253) - Will be putting up a pr in nim web3 by next week as i will need to vendor that lib into nimbus cl . # Pureth Pureth is a meta EIP that bundles a lot of eips into one. The eips are of basically 3 differnt types 1. PURGE: LOG Reform (EIP-7708, 7799, 7668, 7745, 7792) - Adds SSZ-based log filters (EIP-7745) and logs for ETH transfers (EIP-7708, 7799), removing Bloom filters (EIP 7668). - Enables verifiable account activity tracking (EIP-7792). 2. PURGE: Remove Old Transaction Types (EIP-7706, 6404, 6466, 6493) - These changes will introduce new transaction types for SSZ (EIP-6404) and new receipt type (EIP-6466) - optional SSZ signatures (EIP-6493), supports features like post-quantum signatures. - Mempool will continue to support RLP transaction but transactions will be converted to SSZ when bundled into execution block. This will help simplifying verification. 3. PURGE: Serialization Harmonization (EIP-6465, 7807) - Transitions execution blocks and withdrawals root to SSZ, introducing a binary API to replace JSON-RPC. - Supports SSZ transactions in blocks. 4. Simple Serialize (SSZ) Requirements (EIP-7916, 7495, 7688) - Defines SSZ data structures (ProgressiveList, StableContainer) for transactions and logs. - Ensures forward-compatible SSZ adoption across clients, critical for block-level SSZ. ### RoadMap Vineet has gone through the things pretty well and has already started mapping out things form the first section I am interested in the ssz part.For me the first thing i would be required to do is learn the ssz encoding scheme first and then dive deeper parts 3 and 4 and also > Mempool will continue to support RLP transaction but transactions will be converted to SSZ when bundled into execution block. We will need to present this by this week and also have a proposal ready! # Contacts Discord: samyxandy twitter: [@Razorclient](https://x.com/Razorclient)