## Overview This week was more intensive than anticipated. The *eth2book* is by far the most comprehensive resource on consensus mechanisms I have encountered, yet I still found the complexity of the client codebases overwhelming. - Completed reading the entire *eth2book*. - Tried to understand the lighthouse codebase ## eth2book This week, I delved into the annotated specifications, covering: - Utilization of SSZ - Implementation of BLS standard and aggregations - Swap-or-Not Shuffling - Hysteresis - Inactivity Scores - Churn Limits - Proposer Boost - Unrealized Justifications and Finalizations I also explored the complexities in the fork choice rule that made it vulnerable to several attacks in the early days post-merge. Temporary fixes have been applied, with the solution to most issues being SSF. - [Decoy Flip-Flop Attack](https://ethresear.ch/t/decoy-flip-flop-attack-on-lmd-ghost/6001): This attack could delay finalizations but was mitigated by only allowing attestations from the current or previous epoch in `validate_on_attestation()`. - [Bouncing Attack](https://ethresear.ch/t/analysis-of-bouncing-attack-on-ffg/6113): This could indefinitely delay finalizations. A fix was added in Bellatrix but later removed due to the difficulty of setting up such an attack and the added processing overhead at the start of an epoch. - [Inconsistent Fork Choice](https://notes.ethereum.org/@hww/fork-choice-store-inconsistency) - [Balancing Attack](https://ethresear.ch/t/a-balancing-attack-on-gasper-the-current-candidate-for-eth2s-beacon-chain/8079): A small number of validators can cause a liveness failure, although this requires numerous assumptions. The quick fix was proposer boost, which itself has side effects such as re-orgs. Additionally, I reviewed the Engine API and execution payloads, focusing on methods like `newPayload`, `forkChoiceUpdated`, `getPayload`, etc. ## Conclusion There were many more attacks vectors and edge cases post-merge. I feel ethereum is still in its maturing phase and thus we have a long way to go developing it. ## TODO Equipped with a whole lot of deep consensus understanding. I will try to find issues to contribute in the existing client repos.