🚀 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

🔒 Basic of zk-SNARKs

🌟 Basic of zk-STARKs

  • ✍️ TBD

💻 Basic of zkVM

  • ✍️ TBD

🛠️ Code Reference

ModuleSubmoduleDescription📂 Path
albebraringDefines Ringring.rs
fieldDefines Finite Fieldfield.rs
efieldField Extension (Galois Field)efield.rs
PolynomialPolynomial Arithmeticpolynomial.rs
curveElliptic curve operationscurve
Arithmetizationr1csRank One Constraint Systemr1cs.rs
qapQuadratic Arithmetic Programqap.rs
zkSNARKstutorial_single_polynomialtutorial_single_polynomial
tutorial_snarktutorial_snark
pinocchioPinocchio Protocolpinocchio.rs

🤝 Contributions are Welcome!

We welcome your ideas, feedback, and contributions!

💡 Here are ways to contribute:

  1. Report Issues: Found a bug or have a suggestion? Open an issue!
  2. Submit Pull Requests: Have code improvements? Feel free to submit them.
  3. Write Documentation: Help us make the educational modules clearer.