Hello ZKP

👩‍💻 作者: Jade 🔗 github仓库:awesome-zkp-learning

Introduction

如果你刚入门ZKP,个人推荐从视频课程开始,有老师带着学习,会更容易上手,并且课程也是比较系统的,能对ZKP有一个大致的把握。后续可以深入理论、项目、论文等等。ZKP和密码学、区块链紧密相关,因此这里也推荐了一些相关课程和书籍,而深入密码学又会发现和数学相关,特别是抽象代数、数论的知识,只能说前路漫漫,道阻且长,希望不会劝退你。

本文推荐资料概览如下:

xmind

本文的资料推荐完全是鉴于我个人的学习路径,是从我个人角度的一些推荐。每个人的专业背景与学习方法都有所不同,因此仅供参考。不管怎样,能从这里有所收获都是我莫大的荣幸。

闻道有先后,术业有专攻。我也一直在学习的路上,难免有所不足与错误,欢迎批评指正,与我讨论。

Contents

ZKP Courses

探索零知识证明系列 - 郭宇

如果你想通过博客文章来入门学习ZKP,强烈推荐郭宇老师的系列文章。相信很多人入门ZKP都是从这里开始的(至少我是😂)。推荐按照顺序来进行阅读,同时里面提到的一些概念可以结合 ZKP MOOC(见下一个推荐)中的第一讲Introduction and History of ZKP来进行学习,基本都有对应,不过ZKP MOOC中讲得更理论些。

ZKP MOOC - Zero Knowledge Proofs

如果你想系统了解ZKP,或者刚入门ZKP,这门课程强烈推荐。通过这门课程的学习,你会对ZKP有很深入的理解,同时课程涉及面也比较广。每节课的讲义都非常不错,值得反复回顾与学习。课程官网还给出了每节课的补充资料,可以延伸拓展。

Modern Zero Knowledge Cryptography - MIT IAP 2023

如果你想敲敲代码来学习ZKP,非常推荐这门课程,可以跟着课程学习Circom语言,自己动手写写电路约束。该课程还有课后作业,推荐自己做一做(我的作业是跟着ZK Shanghai 2023课程(可以看作该课程的中文版)做的,在下一条推荐中有我的作业链接,供参考)。

ZK Shanghai 2023 - Icer

如果你觉得直接看上一个推荐的英文课程Modern Zero Knowledge Cryptography有点难度,推荐看这个课程,可以理解为中文版。同时这门课程在讲解过程中也加入了老师的理解,有很多补充和扩展。课程的第7讲第8讲邀请了陆晨博士来讲解,比较偏数学一些,但其中的FFT算法在ZKP中应用还比较多,如果不好理解可以找其他一些资料来补充学习。作为ZKP入门,可以先尝试去理解,后续用到再深入进行研究。

WTF-zk

如果你想了解ZKP的数学原理,这门教程是不错的选择,讲解了ZKP中用到的抽象代数的知识,同时结合python代码,能边学习理论边用编程进行实践。

Blockchain

了解区块链也有助于理解ZKP的应用场景。

区块链技术与应用 - 肖臻

🔗 bilibili课程视频

如果你想深入了解区块链,非常推荐这门课程,课程由浅入深,讲了比特币和以太坊底层原理。

Cryptography Courses

密码学系列课程 - lynndell

这门课程从密码学的常见算法讲起,再讲到零知识证明。每一节课都很硬核,老师的讲义非常棒,值得自己反复研读,强烈推荐。

密码学基础系列

ECDSA多签系列

zk系列

Cryptography I - Dan Boneh

如果你觉得上面推荐的课程密码学系列课程还不够过瘾,强烈推荐这门课程,同时推荐读读这门课程的讲义,非常全面,讲义中的证明比较多,前期可以选择跳过。

Plonk

对ZKP有一个大致的了解后,可以具体来学学一些证明系统,首推Plonk。

理解Plonk系列 - 郭宇

如果你想深入理解Plonk,强烈推荐郭宇老师的这一系列文章。有的文章中会涉及较多的数学公式,推荐自己跟着文章手写推导一遍(或者更多),由于这些置换证明、算术约束、拷贝约束、查表约束等会在很多证明系统中反复用到,因此这里打下扎实的基础还是非常有必要的。

Halo2

在学习了Plonk之后,就可以开始看看Halo2。官方教程The halo2 Book可以作为学习手册进行参考。下面推荐一些不错的课程。

Halo2 - 0xPARC

强烈推荐跟着这门课程来入门Halo2。不仅有理论的讲解,也有编程实践,课上跟着老师敲敲代码,课后再自己独立实现下,或者改改代码实现不同的约束,相信会对Halo2有更深入的理解。

Halo2 - StarLi

这一系列的课程也可以作为上面推荐课程Halo2 - 0xPARC 的补充。

ZKEVM

ZKEVM或者ZKVM是一个非常庞大的项目,个人认为可以从一些介绍视频入手,有个大致的了解,再进行深入代码细节。(👀我还刚刚接触一点,下面是我看到的不错的资料,这里简单的做一些推荐,想更深入学习ZKVM或者ZKEVM,建议另外找更全面的资料)

ZKP Books

Proofs, Arguments, and Zero-Knlowledge - Justin Thaler

关于ZKP的书籍,很多人首推这本书。(👀我还未细看这本书,后续看完补充更详细的描述)

The MoonMath Manual

这本书还是比较全面,涵盖初等代数、抽象代数、椭圆曲线、电路以及 ZKP 的知识,尽可能地不涉及过多的数学理论,同时又和实践进行结合,非常推荐。

Mathematics Books

Algebra

高等代数 - 丘维声

强烈推荐丘老师的这本教材,有上下两册,通过这本书一步一步自然地引入了群、环、域的概念,对入门抽象代数很有帮助。网上也有丘老师的课程视频,可以结合着学习。

抽象代数 - 张贤科

如果你想看抽象代数的中文教材,我觉得这本很不错,带你从群环域到伽罗瓦群,书中也有部分提到ZKP中常用的有限域,但更多还是整个抽象代数的理论知识,对深入理解有限域有很多帮助。如果想要深入研究有限域,推荐阅读有更细化的书籍(下面在Finite Fields中有对应推荐)。

A Book of Abstract Algebra - Charles C. Pinter

如果你想看抽象代数的英文教材,推荐这本。还是比较推荐英文资料,这样在看到一些英文术语时能够直接对应上。

Algebra A Graduate Course

这本作为一些学校的本科教材,也比较推荐。

Finite Fields

ZKP中的大部分证明系统都是基于有限域来进行计算的,因此很有必要深入学习下有限域的理论知识。下面先推荐一些大家都说还不错的书籍。(👀由于我还未细读,后续再补充上这些书籍的描述与区别)

Finite Fields - Rudolf Lidl, Harald Niederreiter, P. M. Cohn

Handbook of Finite Fields - Gary L. Mullen, Daniel Panario

Introduction to Finite Fields and their Applications - RUDOLF LIDL, HARALD NIEDERREITER

Applications of Finite Fields - IanF.Blake, XuHong Gao, Ronald C. Mullin, et al

Cryptography Books

图解密码技术

这本书非常适合密码学入门,图解系列的书籍都比较易懂。

Foundations of Cryptography

这本书有两卷,第I卷是 Basic Tools,第II卷是 Basic Applications。涵盖的内容非常全面,在第I卷的第4章就讲到了ZKP。(👀还未细看这本书,后续看完补充更详细的描述)

Handbook of Elliptic and Hyperelliptic Curve Cryptography - ODED GOLDREICH

(👀还未细看这本书,后续看完补充更详细的描述)

Coding Theory

在FRI中,涉及到Reed-Solomon编码,因此如果要研究这些证明系统相关的细节,就比较有必要学习编码理论相关知识。

Essential Coding Theory

这本书非常推荐,编码理论讲得非常深入。

ZKP Resources

这里推荐一些不错的ZKP学习资源。