如果你刚入门ZKP,个人推荐从视频课程开始,有老师带着学习,会更容易上手,并且课程也是比较系统的,能对ZKP有一个大致的把握。后续可以深入理论、项目、论文等等。ZKP和密码学、区块链紧密相关,因此这里也推荐了一些相关课程和书籍,而深入密码学又会发现和数学相关,特别是抽象代数、数论的知识,只能说前路漫漫,道阻且长,希望不会劝退你。
本仓库推荐资料概览如下:
本仓库的资料推荐完全是鉴于我个人的学习路径,是从我个人角度的一些推荐。每个人的专业背景与学习方法都有所不同,因此仅供参考。不管怎样,能从这里有所收获都是我莫大的荣幸。
闻道有先后,术业有专攻。我也一直在学习的路上,难免有所不足与错误,欢迎批评指正,与我讨论。
- Awesome zero knowledge proofs learning
如果你想通过博客文章来入门学习ZKP,强烈推荐郭宇老师的系列文章。相信很多人入门ZKP都是从这里开始的(至少我是😂)。推荐按照顺序来进行阅读,同时里面提到的一些概念可以结合 ZKP MOOC(见下一个推荐)中的第一讲Introduction and History of ZKP来进行学习,基本都有对应,不过ZKP MOOC中讲得更理论些。
如果你想系统了解ZKP,或者刚入门ZKP,这门课程强烈推荐。通过这门课程的学习,你会对ZKP有很深入的理解,同时课程涉及面也比较广。每节课的讲义都非常不错,值得反复回顾与学习。课程官网还给出了每节课的补充资料,可以延伸拓展。
- Introduction and History of ZKP
- Overview of Modern SNARK Constructions
- 🌟 Zero Knowledge Canon:关于ZKP相关的资料汇总,比较全面。
- Libraries and Compilers to build ZKP
- Interactive Proofs (IP)
- Plonk Interactive Oracle Proofs (IOP)
- Discrete-log-based Polynomial Commitments
- ZKP based on Error-Correcting Codes
- Transparent ZKP
- Linear Probabilistically Checkable Proofs (PCP)
- Recursive SNARKs, Aggregation and Accumulation
- Theoretical Foundations & Recent Theoretical Advancement
- Overview of ZKP Applications & zkRollup and zkEVM
- Building opcode compatible zk EVMs
- Privacy-preserving Blockchains
- ZKP Applications & zkBridge, Trustless Bridge made Practical
- More ZKP Applications
- Formal Verification of ZKP
- Hardware Acceleration of ZKP
Modern Zero Knowledge Cryptography - MIT IAP 2023
如果你想敲敲代码来学习ZKP,非常推荐这门课程,可以跟着课程学习Circom语言,自己动手写写电路约束。该课程还有课后作业,推荐自己做一做(我的作业是跟着ZK Shanghai 2023课程(可以看作该课程的中文版)做的,在下一条推荐中有我的作业链接,供参考)。
- Session 1 Introduction to ZK
- Session 2 Circom 1
- Session 3 Mathematical building blocks
- Session 4 Circom 2
- Session 5 Commitment Schemes
- Session 6 Algorithms for Efficient Cryptographic Operations
- Session 7 Arithmetizations
- Session 8 PLONK and polynomial identities
- Session 9 Proving systems stack; recursion and composition.
- Session 10 Applied ZK Constructions 1
- Session 11 Applied ZK Constructions
- Session 12 Student and Staff Demos
ZK Shanghai 2023 - Icer
如果你觉得直接看上一个推荐的英文课程Modern Zero Knowledge Cryptography有点难度,推荐看这个课程,可以理解为中文版。同时这门课程在讲解过程中也加入了老师的理解,有很多补充和扩展。课程的第7讲和第8讲邀请了陆晨博士来讲解,比较偏数学一些,但其中的FFT算法在ZKP中应用还比较多,如果不好理解可以找其他一些资料来补充学习。作为ZKP入门,可以先尝试去理解,后续用到再深入进行研究。
- 第 1 课 初识零知识
- 第 2 课 CIRCOM基础电路
- 第 3 课 数学基础构件
- 第 4 课 CIRCOM实用电路
- 第 5 课 承诺方案
- 第 6 课 算术化
- 第 7 课 高效密码运算算法 1
- 📝 笔记
- 第 8 课 高效密码运算算法 2
- 📝 笔记
- 第 9 课 PLONK及证明系统技术栈
- 第 10 课 递归和组合;应用ZK结构 1
- 第 11 课 应用ZK结构 2
如果你想了解ZKP的数学原理,这门教程是不错的选择,讲解了ZKP中用到的抽象代数的知识,同时结合python代码,能边学习理论边用编程进行实践。
了解区块链也有助于理解ZKP的应用场景。
区块链技术与应用 - 肖臻
如果你想深入了解区块链,非常推荐这门课程,课程由浅入深,讲了比特币和以太坊底层原理。
密码学系列课程 - lynndell
这门课程从密码学的常见算法讲起,再讲到零知识证明。每一节课都很硬核,老师的讲义非常棒,值得自己反复研读,强烈推荐。
Cryptography I - Dan Boneh
如果你觉得上面推荐的课程密码学系列课程还不够过瘾,强烈推荐这门课程,同时推荐读读这门课程的讲义,非常全面,讲义中的证明比较多,前期可以选择跳过。
对ZKP有一个大致的了解后,可以具体来学学一些证明系统,首推Plonk。
理解Plonk系列 - 郭宇
如果你想深入理解Plonk,强烈推荐郭宇老师的这一系列文章。有的文章中会涉及较多的数学公式,推荐自己跟着文章手写推导一遍(或者更多),由于这些置换证明、算术约束、拷贝约束、查表约束等会在很多证明系统中反复用到,因此这里打下扎实的基础还是非常有必要的。
在学习了Plonk之后,就可以开始看看Halo2。官方教程The halo2 Book可以作为学习手册进行参考。下面推荐一些不错的课程。
Halo2 - 0xPARC
强烈推荐跟着这门课程来入门Halo2。不仅有理论的讲解,也有编程实践,课上跟着老师敲敲代码,课后再自己独立实现下,或者改改代码实现不同的约束,相信会对Halo2有更深入的理解。
- Introduction
- 📝 笔记
- Halo2 API & Building a Basic Fibonacci Circuit (Part 1)
- 📝 笔记
- 💻 example1.rs : Fibonacci 例子,advice 有三列。
- Halo2 API & Building a Basic Fibonacci Circuit (Part 2)
- 💻 example2.rs : 对 Fibonacci 电路 example1.rs 进行了优化,advice 只需要一列。
- 💻 is_zero.rs : 判断是否为0电路。
- 💻 example3.rs : 利用判零电路 is_zero.rs 来实现简单的if-else逻辑。
- Circuit Exercise (Part 1)
- 📝 笔记
- Circuit Exercise (Part 2)
- 📝 笔记
- Circuit Exercise (Part 3)
- 📝 笔记
- Custom Gates
- PLONK Cost Model
这一系列的课程也可以作为上面推荐课程Halo2 - 0xPARC 的补充。
- 01-Halo2入门基础介绍
- 02-Halo2 深入理解 Permutation & Lookup算法
- 03-Halo2协议基础及介绍
- 04-Halo2电路进阶(sha256)
- 05-Halo2源代码导读
ZKEVM或者ZKVM是一个非常庞大的项目,个人认为可以从一些介绍视频入手,有个大致的了解,再进行深入代码细节。(👀我还刚刚接触一点,下面是我看到的不错的资料,这里简单的做一些推荐,想更深入学习ZKVM或者ZKEVM,建议另外找更全面的资料)
- 📺 视频-zkEVM总览:Scroll的 Ye Zhang 大佬的讲解视频,对于初步了解zkEVM是什么有很大帮助。
- 📺 Dream@Scroll:halo2 (zkEVM gadgets) 分享
关于ZKP的书籍,很多人首推这本书。(👀我还未细看这本书,后续看完补充更详细的描述)
这本书还是比较全面,涵盖初等代数、抽象代数、椭圆曲线、电路以及 ZKP 的知识,尽可能地不涉及过多的数学理论,同时又和实践进行结合,非常推荐。
高等代数 - 丘维声
强烈推荐丘老师的这本教材,有上下两册,通过这本书一步一步自然地引入了群、环、域的概念,对入门抽象代数很有帮助。网上也有丘老师的课程视频,可以结合着学习。
抽象代数 - 张贤科
如果你想看抽象代数的中文教材,我觉得这本很不错,带你从群环域到伽罗瓦群,书中也有部分提到ZKP中常用的有限域,但更多还是整个抽象代数的理论知识,对深入理解有限域有很多帮助。如果想要深入研究有限域,推荐阅读有更细化的书籍(下面在Finite Fields中有对应推荐)。
如果你想看抽象代数的英文教材,推荐这本。还是比较推荐英文资料,这样在看到一些英文术语时能够直接对应上。
这本作为一些学校的本科教材,也比较推荐。
ZKP中的大部分证明系统都是基于有限域来进行计算的,因此很有必要深入学习下有限域的理论知识。下面先推荐一些大家都说还不错的书籍。(👀由于我还未细读,后续再补充上这些书籍的描述与区别)
这本书非常适合密码学入门,图解系列的书籍都比较易懂。
这本书有两卷,第I卷是 Basic Tools,第II卷是 Basic Applications。涵盖的内容非常全面,在第I卷的第4章就讲到了ZKP。(👀还未细看这本书,后续看完补充更详细的描述)
(👀还未细看这本书,后续看完补充更详细的描述)
在FRI中,涉及到Reed-Solomon编码,因此如果要研究这些证明系统相关的细节,就比较有必要学习编码理论相关知识。
这本书非常推荐,编码理论讲得非常深入。
课程视频见这里。
这是一门很不错的讲编码理论的课程,每节课都对应书籍 Essential Coding Theory 中的一部分,可以视频书籍结合着学习。
这里推荐一些不错的ZKP学习资源。
- Vitalik Buterin's website:V神的博客文章,必看。
- 零知识证明学习资源汇总:非常不错的文章推荐列表,也包含一些经典论文。
- 微信公众号 - 星想法:有很多零知识证明文章与教程。
- 微信公众号 - XPTY:Kurt Pan老师的微信公众号,可以实时跟进ZKP和密码学的最新研究。
- World of Z2O-K7E:收录了郭老师的系列文章,同时还涵盖了Plonk、Halo2、格密码等内容,非常丰富。
- Zero Knowledge Canon:很全面的zk相关资料总结,有很多论文课程资源。
- Awesome zero knowledge proofs (zkp): github仓库,丰富的ZKP相关资源汇总。
- ZKProof:很全面的ZKP资源网站。
- USEFUL SITE FOR CRYPTO:有很多不错的密码学链接资源。
- ZenGo X:有很多rust实现的加密算法库。
- Twitter推荐: