💡 @Demian: 作为 zkp 新人,走了很多弯路,也整理下自己的学习路径和一些参考资料供大家入门。 希望本教程可以帮助减少一些盲目的打击和莫名的痛苦,节省一点点时间

1. 建立对 zkp 的直观理解

① 在纵身潜入 ZKP 的海洋之前,可以先建立对它最直观的理解

  • 安比实验室(郭宇老师)所写的 zkp-intro 是公认目前全网最简洁易懂的 zkp 入门系列(而且还是中文的!!)
  • 前 3 篇需要看懂,不了解的概念就 Google + chatgpt + 社群询问 …
  • Chap 4-5 主要是非交互的 Schnorr 和 CRS、哈密尔顿环路等,看不懂没关系,可以先放一放

2. 最小必要背景知识

在建立了对 ZKP 最直观的了解后,如果你还是打算要学下去的话,那么就开始准备一些最小必要的基础知识吧!

2.1 椭圆曲线 ECC

需要掌握椭圆曲线加密(ECC)原理( 大概用时 30 min)

2.2 基础的群论、数论

初等数论 Number Theory

2.3 密码学基础

需要掌握:群环域概念、循环群、拉格朗日插值

2.4 ZK-SNARK 初识 & 原理:

需要掌握:直观理解循环群在 zk-snark 中是咋用的就可以,具体的算法细节可能要持续往后学,和 PLONK 的算法不断交叉回看才能懂。

推荐 sec-bit ZK-SNARK 的系列文章,也可在微信公众平台搜索,对于初学者先看 Part 1 / 2 就够了。

3. 理论交叉学习,我反复入门啊!

有了以上基础的打底,可以尝试一套体系完整的系列课程:

ZKIAP

ZKIAP 的课程是比较注重理论和实践结合的,第二课就有涉及到 Circom 写电路

zk-learning

理论详实,但是缺少代码实践,session 5 的 PLONK 是 top-down 讲解,搭配郭老师的 理解 PLONK 系列会更佳

crypto notes

土耳其小哥整理的,非常赞的 notes

ProofsArgsAndZK

author: justin thaler

https://zkhack.dev/whiteboard

https://www.rareskills.io/zk-bootcamp


其他优秀的 Courses (随便看看):

1. PSE appliedzkp.org/projects 
2. Rust
3. complaints about learning rust
4. Dan Boneh
5. "The Different types of ZK-EVM" article 
6. who was the first ZK-EVM.
7. ZK Summit – Zero Knowledge Summit
8. Zac Williamson inventing PLONK, running @aztecnetwork
9. @zeroknowledgefm podcast
10. Fiat-Shamir Transformation 
11. The Moon Math Manual https://github.com/LeastAuthority/moonmath-manual
12. ZK-Rollups that provide privacy by default are sometimes called ZK-ZK-Rollups
13. Circom
14. The "Proofs, Arguments, and Zero-Knowledge" book by Justin Thaler https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.pdf
15. Brecht – @taikoxyz CTO and @PrivacyScaling contributor
16. ZK HACK
17. Definition wars
18. how one should write zkEVM or ZK-EVM or Zk-EVM or zk-EVM
19. Lagrange interpolation

4. PLONK 协议の奥义

PLONK 无疑是目前最值得学习,需要彻底掌握的协议

《理解 Plonk》

出品:Secbit @郭宇 老师 , https://secbit.io/

是大家公认的全网(包括外网)最好的 PLONK Tutorial。

学习 PLONK,这一套就够了!(论文可以随便看一下)

PS: 如果文档看晕了,那么推荐郭老师的配套白板视频:


PLONK 代码实践

5. 要不…来点代码?

恭喜你来到了 Zero-knowledge 的荒原!下面就可以自己根据兴趣和方向选择一些代码进行研究和实践了

halo2

使用了 halo2 的 Applications:

  • ZK Email https://github.com/zkemail halo2
  • ZK Wordle: https://zordle.xyz/ halo2
  • Hammster: https://github.com/ytham/hammster halo2
  • zk-draw : Verifiable random draw with zero-knowledge of the random seed https://github.com/jae-cuz/zk-draw halo2
  • ZK Microphone: https://github.com/Miyamura80/ZKMicrophone
  • Building a Zero Knowledge web app with Halo 2 and Wasm (part 1)
  • zk-img: Fighting Deepfakes with Zero-Knowledge Proofs https://medium.com/@danieldkang/zk-img-fighting-deepfakes-with-zero-knowledge-proofs-9b76c23e3789 尚未开源

大部分由 @Kurt Pan 博士整理

Circom

使用了 Circom 的 Applications:

  • zkSudoku: https://zk-sudoku.vercel.app/ Circom
  • Tornado-Cash
  • Semaphore

学习路径:【EDITING…】

PSE demos

PSE Projects List : https://www.appliedzkp.org/projects

Semaphore

对于 Circom + ZKP 的代码实践例子比较多,首推 PSE 的 Semaphore,是个包括 zuzalu pass、Worldcoin 都有使用的 zkp 协议

Others:

【out of date】,请移步: zk Materials

Tools