Master Zero-Knowledge Proof (ZKP) by recreating ZKP system from scratch.
从0到1构建零知识证明系统.
This repository, build-your-own-zkp, is like a magical portal 🚪 that guides you through the fascinating journey of mastering Zero-Knowledge Proof (ZKP) from the ground up. Zero-Knowledge Proofs are like a superpower in the cryptographic world. They allow one party (the prover) to prove to another party (the verifier) that a statement is true, without revealing any extra information other than the fact that the statement is indeed true. It's like proving you know a secret without actually sharing it! 🤫
The main goal of this project is to be your ultimate guide 🗺️ in implementing a complete ZKP system, using the amazing Halo 2 zero-knowledge proof system as our shining star 🌟. Along the way, we'll dive deep into all the cool cryptographic principles and knowledge, and we'll have detailed illustrations to make everything crystal clear, just like using a magnifying glass to examine every little detail! 🔍
- 📚 Educational: Dive headfirst into the world of ZKP and uncover all its underlying cryptographic secrets.
- 💻 Practical: Roll up your sleeves and get hands-on experience in building a real ZKP system.
- 👐 Accessible: Make the learning process as smooth as silk with clear explanations and awesome illustrations.
The repository is like a well-organized library 📖. It's divided into chapters and sections, each focusing on a specific part of the ZKP system implementation. Every section comes with detailed explanations, cool code examples, and eye-catching illustrations to help you understand the concepts and follow along like a pro. It's like having a personal tour guide through the world of ZKP! 🚶♂️
- 📝 Read the Documentation Thoroughly: Start your adventure by getting cozy with the README file and all the detailed documentation in each section. This will help you grasp the fundamental concepts, understand the underlying principles, and peek into the intricate code implementation. It's like laying a solid foundation for a skyscraper! 🏗️
- 👀 Examine the Illustrations: Take your time to really look at the illustrations provided in each section. These visual aids are like magic glasses 👓 that help you see abstract concepts and understand how different components work together. They're like a map to a hidden treasure! 🗺️
- ✨ Contribute Actively: We're super excited to have you on board! If you have any brilliant ideas, practical improvements, or necessary corrections, don't be shy! Open an issue to share your thoughts or submit a pull request to directly contribute to the project's growth. Your input is like fuel for our rocket 🚀, and we can't wait to see what you bring to the table!
In addition to the written documentation and code examples in this repository, we're on a mission to provide you with in-depth video tutorials to take your learning experience to the next level. We'll be like busy little bees 🐝, continuously recording videos based on the content of this documentation and uploading them to both YouTube and Bilibili.
- YouTube: build-your-own-zkp
- Bilibili: 零知识证明我有一朋友
- You should have a basic understanding of cryptography and programming concepts. It's like having a toolkit for this journey! 🧰
- Since the Halo 2 implementation is in Rust, it's a good idea to be familiar with the Rust programming language. It's like speaking the local language in a foreign land! 🌍
This project is licensed under the MIT License. Check out the LICENSE file for all the details.
Important Notice:
Some parts of this project are inspired by the Halo 2 library developed by the Electric Coin Company (ECC), which is also licensed under the MIT License. When you use or distribute this software, you need to follow both licenses. It's like following the rules of two different clubs! 🏌️♂️
We want to give a huge shoutout and a big thank you 🙌 to the Electric Coin Company (ECC) and the developers of the Halo 2 zero-knowledge proof system. Their groundbreaking work is like the foundation stone of this educational project, and we're standing on their shoulders to reach for the stars! 🌟
Halo 2 is developed by the Electric Coin Company (ECC) and released under the MIT License (original repository: https://github.com/zcash/halo2). This project uses Halo 2 for educational purposes and follows these licensing terms:
- 📜 Copyright Preservation:
All source files that are derived from or inspired by Halo 2 keep their original copyright headers and license notices (usually at the beginning of each file). It's like keeping a family heirloom! 👨👩👧👦 - 📄 License Inheritance:
This project is released under the MIT License, but any code from Halo 2 still follows its original license. You need to follow both licenses when using, modifying, or distributing this project. It's like wearing two hats at the same time! 🎩 - ❌ No Endorsement:
This repository isn't officially connected to or endorsed by the Zcash Foundation, Electric Coin Company, or the Halo 2 team. It's just for educational fun and shouldn't be seen as a ready-to-use production implementation. It's like a practice field before the big game! ⚽