🚀 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!
Index
🧮 Basic of Number Theory
- 📝 Computation Rule and Properties
- ⚙️ Semigroup, Group, Ring, and Field
- 🔢 Polynomials
- 🌐 Galois Field
- 📈 Elliptic Curve
- 🔗 Pairing
- 🤔 Useful Assumptions
🔒 Basic of zk-SNARKs
🌟 Basic of zk-STARKs
- ✍️ TBD
💻 Basic of zkVM
- ✍️ TBD
🛠️ Code Reference
Module | 📂 File Path |
---|---|
Ring | ring.rs |
Field | field.rs |
Extended Field | efield.rs |
Polynomial | polynomial.rs |
Elliptic Curve | curve.rs |
zkSNARKs | ✍️ Coming soon |
✨ Contributions are Welcome!
Feel free to submit issues or pull requests to enhance the project.