---
tags: study-club
---
# Cycle#1 - ZKP Study Club Planning / ZKP Introduction / Case Study - Dark Forest Game
## ZKP Study Club Planning
### Goal
- Expect we can read new ZKP related works without too much effort
- Expect we can be able to build cool projects using ZKP
- ...
### Rule
- Two week a cycle
- Each cycle has 1-2 host(s), and we take turn (or volunteer) to host
- Next cycle's host should assign some main resources as others' preparation to keep up for next cycle
- Everyone is nice to be prepared for next cycle
- ...
## ZKP Introduction
### ZKP
{%pdf https://drive.google.com/file/d/1ElU0JssGM3sy1KhSeNRaehFJ93R_y_2k/preview %}
### Evolution
- GMR85/89
- Introduce **Zero-Knowledge Proof**, with 3 properties:
- **Complete**
If the statement is true and both prover and verifier follow the protocol; the verifier will accept.
- **Sound**
If the statement is false, and the verifier follows the protocol; the verifier will not be convinced.
- **Zero-Knowledge**
If the statement is true and the prover follows the protocol; the verifier will not learn any confidential information from the interaction with the prover but the fact the statement is true.
- A ZKP makes it possible to prove a statement is true while preserving confidentiality of sercret information
- GMW86/91
- Under the assumption that encryption functions exist, all languages in NP possess ZKP. (proved by graph 3-colorability)
- BFM88
- Introduce CRS model to achieve Non-Interactive ZKP (NIZK)
- Kil92
- Construction of probabilistically checkable proofs which total amount of communication can be less than that needed to transmit the NP witness.
- Succinctness is born
- FS86
- Convertion from public-coin interactive proof of knowledge into NIZK under random oracle model
- Gro10
- Pairing-based
- Introduce q(k)-power knowledge of exponent assumption (q-PKE)
- Introduce q(k)-computational power Diffie-Hellman assumption (q-CPDH)
- GW11 - SNARG
- BCCT12 - SNARK
- GGPR13
- Introduce QSP and QAP
- PHGR13(Pinocchio), Gro16
- Implementation of pairing-based zk-SNARK
- Constant proof size
- Linear prover time
- Trusted setup per circuit
- MBKM19(Sonic), GWC19(Plonk), CHMMVW20(Marlin)
- Universal trusted setup
- BFS19(Dark), BGH19(Halo), ZK-STARK
- No trusted setup
## Case Study - Dark Forest Game
For an easy to understand real world project using ZKP, I choose the Dark Forest Game as our first case study.
## Note
- **Proofs** vs **Arguments**
- Proofs need to be sound even against **computationally unbounded provers**.
- Arguments only need to preserve soundness against **computationally bounded provers**.
- Proof is used to designate both proofs and arguments for simplicity, although there are theoretical circumstances where the distinction can be relevant.
## Reference
- ZKP Introduction
- ZKP
- [Silvio Micali: Proofs, Knowledge, and Computation](https://www.youtube.com/watch?v=WSuUTLqqLIU) (Prof. M in GMR85)
- Zero Knowledge Proofs: An illustrated primer by Matthew Green
- [Part 1](https://blog.cryptographyengineering.com/2014/11/27/zero-knowledge-proofs-illustrated-primer)
- [Part 2](https://blog.cryptographyengineering.com/2017/01/21/zero-knowledge-proofs-an-illustrated-primer-part-2)
- Learning ZKP Series by sec-bit
- [Series 1](https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/1/zkp-back.md)
- [Series 2](https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/2/zkp-simu.md)
- [Series 3](https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/3/zkp-pok.md)
- [Series 4](https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/4/zkp-rom.md)
- [Series 5](https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/5/zkp-crs.md)
- Evolution
- [ZKProof Reference](https://docs.zkproof.org/pages/reference/reference.pdf)
- [The evolution of pairing-based zero-knowledge proofs](http://www0.cs.ucl.ac.uk/staff/j.groth/ZKProof2019.pdf) / [Talk](https://www.youtube.com/watch?v=X-z3JYlFdzs) by Jens Groth
- Dark Forest Game
- [Game](https://zkga.me)(管理員邀請制,可以去 [discord](https://discord.gg/sjgGGq6D) 等 invitation key,或是請雅信直接和創辦人 bgu33 Brian Gu 和 Alan Luo 要 key,看需要幾組)
- [Circuit](https://github.com/darkforest-eth/darkforest-v0.3/tree/master/circuits)(我其實不確定這是不是最新現在在用的)
- [Introduction Video by Authors Brian Gu & Alan Luo (on zkSummit6)](https://www.youtube.com/watch?v=1C0z3bR-YdE)