## 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.