# Week 4: Deep Dive into KZG and its EIP-4844 Application
This week, I made great progress on the dual-track project. The primary focus was on developing two foundational chapters for the **Rust KZG tutorial**, which in turn provides the deep technical context required for the ongoing PeerDAS optimization research.
All new content and progress for both tracks are available at the project repository: [https://github.com/only4sim/rust-kzg-tutorial](https://github.com/only4sim/rust-kzg-tutorial).
## Developing Core Tutorial Chapters
I completed two major chapters that form the theoretical and practical core of the tutorial. These chapters are designed to build a strong foundation for any developer looking to understand or work with KZG commitments in the context of Ethereum.
### Chapter 2: A Deep Dive into the KZG Commitment Scheme
This chapter delves into the mathematical principles behind KZG commitments. It's a crucial theoretical guide that covers:
* **Mathematical Foundations**: A step-by-step derivation of the Kate-Zaverucha-Goldberg scheme, explaining the role of elliptic curves and bilinear pairings.
* **The Three Core Algorithms**: A detailed breakdown of the `Commit`, `Prove`, and `Verify` algorithms, complete with Rust code examples that map the mathematical concepts to the actual library implementation.
* **Trusted Setup Security**: An analysis of why the trusted setup is critical, the risks involved if the secret parameter `τ` is compromised, and how Multi-Party Computation (MPC) ceremonies (like the one Ethereum held) mitigate this risk.
* **Performance and Advantages**: A clear comparison of KZG's benefits—such as constant-size proofs and O(1) verification time—against traditional Merkle trees.
### Chapter 3: Applying KZG in Ethereum EIP-4844
This chapter connects the theory from Chapter 2 to its most important real-world application: Ethereum's EIP-4844 (Proto-Danksharding) upgrade. It explains:
* **The "Why" behind EIP-4844**: It outlines Ethereum's scaling challenges and how EIP-4844 uses "Blobs" to provide a cost-effective data availability layer for Layer 2 Rollups.
* **Data Availability Sampling (DAS)**: A detailed explanation of how KZG commitments are used to enable DAS, allowing nodes to verify the availability of massive amounts of data by checking only a few small samples.
* **Implementation Details**: It walks through the process of converting a blob to a KZG commitment, generating cell proofs, and performing batch verification, all supported by code from the `rust-kzg` library.
* **Performance Challenges**: The chapter discusses the intense performance, latency, and parallelism requirements needed to process blobs within Ethereum's 12-second slot time, setting the stage for the optimization research track.
## Week 4 Achievements
* **Completed Chapter 2 (KZG Deep Dive):** Wrote a comprehensive [chapter](https://github.com/only4sim/rust-kzg-tutorial/blob/main/docs/chapter02_kzg_deep_dive.md) that covers the core mathematical principles of the KZG commitment scheme.
* **Completed Chapter 3 (EIP-4844 Application):** Authored a detailed [chapter](https://github.com/only4sim/rust-kzg-tutorial/blob/main/docs/chapter03_eip4844_application.md) explaining the practical application of KZG in Ethereum's data sharding solution.
* **Bridged Theory and Practice:** These two chapters create a strong link between the abstract cryptography and its concrete implementation, providing a solid foundation for all future topics.
## Next Steps
With the "what" and "why" of KZG now thoroughly documented, the plan for next week is:
1. **Tutorial Track**: Begin writing the next section of the tutorial, which will focus on the **Software Architecture** of the `rust-kzg` library itself. This includes its trait-based design, the multi-backend philosophy, and how it achieves flexibility and performance.
2. **Research Track**: Continue with the performance profiling work outlined last week. The detailed understanding gained from writing Chapters 2 and 3 will be invaluable for creating realistic benchmarks and identifying key areas for optimization.
***
## References and Further Reading
1. **EIP-4844: Proto-Danksharding**: The official documentation for EIP-4844, which introduced blob-carrying transactions and the need for KZG commitments in Ethereum. [https://www.eip4844.com/](https://www.eip4844.com/)
2. **KZG Polynomial Commitments by Dankrad Feist**: An essential blog post that explains the mathematical foundations of the KZG commitment scheme. [https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html)
3. **Reed-Solomon Codes (Wikipedia)**: For those interested in the data extension part of Data Availability Sampling, this article provides background on the error-correcting codes used. [https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction](https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction)
4. **Grandine Official Website**: The production-grade execution client the optimization research is focused on. [https://grandine.io/](https://grandine.io/)