๐ MyZKP: Building Zero Knowledge Proof from Scratch in Rust
โโโโ โโโโ โโโ โโโ โโโโโโโโ โโโ โโโ โโโโโโโ ๐ฆ
โโโโโ โโโโโ โโโโ โโโโ โโโโโโโโ โโโ โโโโ โโโโโโโโ ๐ฆ
โโโโโโโโโโโ โโโโโโโ โโโโโ โโโโโโโ โโโโโโโโ
โโโโโโโโโโโ โโโโโ โโโโโ โโโโโโโ โโโโโโโ ๐ฆ
โโโ โโโ โโโ โโโ โโโโโโโโ โโโ โโโ โโโ ๐ฆ
โโโ โโโ โโโ โโโโโโโโ โโโ โโโ โโโ ๐ฆ
MyZKP is a Rust implementation of zero-knowledge protocols built entirely from scratch! This project serves as an educational resource for understanding and working with zero-knowledge proofs.
โ ๏ธ Warning: This repository is a work in progress and may contain bugs or inaccuracies. Contributions and feedback are welcome!
๐ About MyZKP
MyZKP is a growing library that provides:
- A step-by-step guide to the theoretical foundations of ZKPs, including number theory, elliptic curves, and field arithmetic.
- Implementation of core primitives for ZKP protocols.
- A solid base for developers and researchers to learn, experiment, or build their own ZKP-based systems.
๐ก Whether you're a cryptography enthusiast, a Rustacean, or a student, MyZKP is for you!
๐ Educational Modules
๐งฎ Basic of Number Theory
- ๐ Computation Rule and Properties
- โ๏ธ Semigroup, Group, Ring, and Field
- ๐ข Polynomials
- ๐ Galois Field
- ๐ Elliptic Curve
- ๐ Pairing
- ๐ค Useful Assumptions
๐Basic of Polynomial Commitment
๐ Basic of zk-SNARKs
- โก Arithmetization
- ๐ ๏ธ Proving Single Polynomial
- ๐ Bringing It All Together: SNARK
๐ Basic of zk-STARKs
- โ๏ธ TBD
๐ป Basic of zkVM
- โ๏ธ TBD
๐ค Contributions are Welcome!
We welcome your ideas, feedback, and contributions!
๐ก Here are ways to contribute:
- Report Issues: Found a bug or have a suggestion? Open an issue!
- Submit Pull Requests: Have code improvements? Feel free to submit them.
- Write Documentation: Help us make the educational modules clearer.