# Week 5: Mapping the Architecture and Core Design
This past week was all about creating the definitive blueprint for the `rust-kzg` library. I focused on writing two key chapters for the tutorial that serve as a deep dive into the library's design. This isn't just about documentation; a solid understanding of the architecture is critical for the second track of this project—the PeerDAS optimization research.
## New Tutorial Content
I finished two major chapters that get to the heart of how the `rust-kzg` library is built and why certain design decisions were made.
### Chapter 4: The Architectural Philosophy
This chapter is the 30,000-foot view of the project's architecture. It’s the starting point for anyone trying to understand how the pieces fit together. It covers:
* **A "Pluggable" Backend Design**: The core idea of using a unified Trait system to support multiple, interchangeable crypto backends like `BLST` and `Arkworks`.
* **The Four Layers of the System**: A breakdown of the software stack, from the high-level EIP-4844 application logic down to the low-level parallelism and C-language bindings.
* **Performance and Compatibility**: How the design uses the Rayon crate for parallelism while maintaining full compatibility with the official `c-kzg-4844` standard.
### Chapter 5: A Deep Dive into the Core Trait System
If Chapter 4 is the map, Chapter 5 is the detailed legend. It’s a close look at the `Trait` abstractions that make the whole system work. The chapter explains:
* **The Building Blocks**: A line-by-line analysis of the traits for `Fr` (Finite Fields) and `G1`/`G2` (Elliptic Curve Groups), explaining the reasoning behind each method.
* **System-Level Abstractions**: A breakdown of the `KZGSettings` and `FFTSettings` traits, which tie all the cryptographic primitives together to perform the actual KZG operations.
* **Advanced Rust in Practice**: The chapter also serves as a showcase of idiomatic, high-performance Rust, covering concepts like zero-cost abstractions, associated types, and ensuring memory safety across FFI boundaries.
## Week 5 Achievements
This week's main accomplishments lay the groundwork for anyone wanting to understand or contribute to the library:
* **Architectural Blueprint (Chapter 4):** A [new chapter](https://github.com/only4sim/rust-kzg-tutorial/blob/main/docs/chapter04_architecture_design.md) is now available, providing a high-level guide to the project's design and structure.
* **Core Abstractions Deep Dive (Chapter 5):** A second [new chapter](https://github.com/only4sim/rust-kzg-tutorial/blob/main/docs/chapter05_core_trait_system.md) details the `Trait` system, which is the heart of the library's flexible design.
* **A Unified Guide:** Together, these chapters form a complete architectural reference that will accelerate both the tutorial's progress and the separate research track.
## Next Steps
With the library's architectural map now clearly drawn, the path forward is clear. Next week, I’ll be focusing on:
1. **Tutorial Track**: Diving into the code of the main backend by starting **Chapter 7: BLST Backend Implementation**. This will show how the abstract traits are brought to life in a production-ready implementation.
2. **Research Track**: Leveraging the architectural understanding to build a comprehensive benchmark suite to test different backends under realistic PeerDAS workloads.
***
## References and Further Reading
1. **The Rust Book: Traits**: The official documentation on Rust's trait system, which is central to the architecture discussed this week. [https://doc.rust-lang.org/book/ch10-02-traits.html](https://doc.rust-lang.org/book/ch10-02-traits.html)
2. **Rayon Project Website**: The data-parallelism library used extensively in `rust-kzg` for high-performance computation. [https://github.com/rayon-rs/rayon](https://github.com/rayon-rs/rayon)
3. **The Rust FFI Omnibus**: A collection of examples for building Foreign Function Interfaces in Rust, relevant to the C-language compatibility layer. [https://jakegoulding.com/rust-ffi-omnibus/](https://jakegoulding.com/rust-ffi-omnibus/)
4. **c-kzg-4844 GitHub Repository**: The C language specification that `rust-kzg` maintains compatibility with. [https://github.com/ethereum/c-kzg-4844](https://github.com/ethereum/c-kzg-4844)
5. **BLST GitHub Repository** (`supranational/blst`): The high-performance, assembly-optimized library that serves as the primary backend for `rust-kzg`. [https://github.com/supranational/blst](https://github.com/supranational/blst)