# Assignment: Understanding and Applying Proof Systems
ZK Core Program (Week 2) - 5/7/2025
## 1. What is a Proof System?
Answer suggestion :
> * Definition: Proof system is ...
> * Key properties: completeness, soundness, zero-knowledge (optional)
> * Common categories of Proof Systems: Interactive vs. Non-interactive, ZKP, ...
> * Examples: PLONK, Groth16, STARK,...
## 2. Choose one of the two following directions
### 2.1. (Option 1) Apply a Proof System to Solve a Real-World Problem
#### 2.1.1. Describe the Problem
* Clearly explain the context and motivation.
* Identify a specific problem where issues of privacy, integrity, or verification arise.
* Explain why a Proof System is needed or suitable in this scenario.
#### 2.1.2. Introduce the Solution with a Proof System
* Describe what the Proof System contributes to solving the problem.
* Clarify which aspect it improves (e.g., privacy, integrity, verifiability, transparency).
#### 2.1.3. Detailed Design of the Solution
**a. Problem Modeling**
* Present a simplified abstraction of the system (participants, data flow, constraints).
* You may include a diagram or structured text.
**b. Architecture of the Proposed System**
* Explain the roles of the prover, verifier, and any servers or infrastructure.
* Outline how the proof generation and verification flow will operate.
**c. Techniques and Tools to Be Used**
* Select appropriate cryptographic techniques: (zk)SNARK, (zk)STARK, Bullet Proof, etc.
* Mention libraries or frameworks: Circom, SnarkJS, Halo2, Noir, etc.
**d. Implementation Plan**
* Phase 1: Requirement analysis and design
* Phase 2: Development of the proof system components
* Phase 3: Integration and testing
**e. Task Assignment (for team-based work)**
* Assign roles such as:
* Circuit designer
* Frontend/backend developer
* Verifier and server logic implementer
* Documentation and testing lead
---
#### Example
> [!NOTE]
> zkVoting Example
**Problem:** E-voting systems often compromise voter privacy.
**Proposed solution using ZKP:**
* Voters register their public keys with the election server.
* Instead of signing the vote directly, the voter generates a zero-knowledge proof stating:
*"I know a private key corresponding to one of the registered public keys, and my vote is integrity."*
**Technical aspects:**
* Use zk-SNARK to construct the proof
* Use a Merkle Tree to commit the list of registered public keys
* Circom or Halo2 can be used to implement the circuits
**Timeline:**
* Weeks 1–2: Problem modeling and system design
* Weeks 3–4: Circuit implementation and system integration
* Week 5: Testing and documentation
**Team roles:**
* Member A: Circuit implementation
* Member B: Frontend interface
* Member C: Server logic and verification
---
### 2.2. (Option 2) Build Quality Learning Resources for a Specific Area in Proof Systems
#### 2.2.1. Select a Topic You Want to Contribute To
* Choose a specific subfield of proof systems that interests you (e.g., zk-SNARKs (Groth16, PLONK,...) , zk-STARKs, Bulletproofs, Verifiable Delay Functions, Recursive Proofs).
* Justify your choice: Is it difficult to learn? Is there a lack of quality resources in Vietnamese or English? Does it require deep foundational knowledge?
#### 2.2.2. Proposal to Develop Learning Resources
**a. Planned Structure of the Resource**
* Learning materials may include:
* Written documentation
* Conceptual explanations
* Tutorials or walkthroughs
* Exercise sets or problem sheets
* Code repositories and demos
* Curated external references
**b. Breakdown of Each Component**
* **Introduction:** Overview of the topic, its motivation, and use cases
* **Background Knowledge:** Required tools (e.g., polynomial interpolation, Merkle trees)
* **Core Concepts:** Deep dives into protocol components
* **Tutorials:** Code walkthroughs or hands-on labs
* **Practice Problems:** Design small circuits, verify toy problems
* **Reference Materials:** Recommended papers, blogs, GitHub repos, videos
**c. Implementation Plan**
* Week 1: Define structure and gather references
* Weeks 2–3: Write theory and explanation content
* Week 4: Develop examples and exercises
* Week 5: Publish the resources (e.g., GitHub, Notion, website)
**d. Task Distribution (for team work)**
* Member A: Theory writing
* Member B: Examples and coding
* Member C: Exercises, editing, and presentation
---
#### Example Proposal
> [!NOTE]
> Create qualify resource for STARK
**Topic:** STARK
**Motivation:** STARKs are transparent, post-quantum secure, and increasingly adopted. However, they are hard to learn due to heavy mathematical requirements and fragmented resources.
**Components of the Resource:**
1. **Introduction**
* What are zk-STARKs?
* Use cases and advantages (no trusted setup, scalable)
2. **Prerequisites**
* Polynomial interpolation
* Low Degree Extension (LDE)
* Merkle Trees
* FRI protocol
3. **In-depth Analysis**
* Trace generation
* Constraint systems
* Composition polynomial
* Proof generation and verification steps
4. **Examples and Exercises**
* Create a STARK that proves the correctness of Fibonacci sequence generation
* Practice on constructing FRI proofs manually
5. **Reference List**
* STARK 101 by Eli Ben-Sasson
* Tutorials from Giza or Lambdaclass
* Selected GitHub repos and research papers
**Implementation Timeline:**
* Week 1: Outline and resource collection
* Weeks 2–3: Theoretical content and diagrams
* Week 4: Exercises and toy examples
* Week 5: Final assembly and publishing
**Team Roles:**
* Member A: Write theoretical content
* Member B: Build coding examples
* Member C: Organize and publish the materials