timezone |
---|
Asia/Shanghai |
⚠️ 正式开始前请确保你在身体上和精神上都处于合适的状态,请刻意练习,残酷面对 🆒。为方便检索 The First ZK Intensive CoLearning 简写为 ZICL1st,第 2 期即为ZICL2nd,第 3 期即为 ZICL3rd,以此类推。
⚠️ 报名需要按要求认真填写下面 [ XXX ] 部分,方可通过报名审核,通过审核即可开始自主学习。
第一期的重点是向大家介绍什么是 ZK、 ZKP 的基础知识,以及 Circom 代码入门,有一定难度,共学资料如下:
- 第一周:7 月 29 日 - 8 月 4 日:Introduction and History of ZKP
- 20min 的视频:初步理解 ZK 是什么
- 70min 的播客:零知识证明:一场”无知“的游戏
- (一)初识「零知识」与「证明」
- (二)理解「模拟」
- (三)寻找「知识」
- 100min 的视频:ZKP Lecture 1: Introduction and History of ZKP
- 第二周:8 月 5 日 - 8 月 11 日:Overview of Modern SNARK Constructions
- 第三周:8 月 12 日 - 8 月 18 日:Write some Circom
- 基础电路:
- ZK Shanghai 基础电路教学
- 编辑器:zkREPL
- 基础电路练习 这部分材料结合了Circom源码,可以多花时间来研究
- 实用电路:
- 基础电路:
本次共学资料前两周的 lecture 来自 zk-learning,博客来自 《探索零知识证明系列》和《从零开始学习 zk-SNARK》,第三周的 Circom 部分来自 0xparc,视频讲解为 ZK Shanghai 的中文版本。郭宇老师还推荐了这篇文章《Survey-SNARKs》,学有余力者可以依此找到更多的扩展内容。
- 自我介绍
CPP多年开发,学过Go、Rust,尝试搞Web3副业 - 你认为你会完成本次残酷学习吗?
应该能 - 目前阶段对于 ZK 的了解?
了解不多,仅限部分概念
- 学习主题:了解ZKP(零知识证明,Zero-Knowledge Proof),以及共学提供的资料
- 学习内容小结:
- Amit Sahai教授针对不同年龄和知识水平的人讲解ZKP的几个示例(Amit Sahai是UCLA的计算机方面的一位杰出教授,研究兴趣集中在密码学和安全等领域),初步了解零知识证明的作用。视频:初步理解 ZK 是什么
- 简单听了下介绍ZKP的中文播客,听得有点累,还是先看看文档吧
- z2o-k7e社区整理的学习ZKP资料,看起来质量很不错
目前学习了:1. 初识「零知识」与「证明」
番外:
找郭宇老师推特(1dot2)过程中,看到已退推的kurtpan.eth(复旦密码学博士,也是上面z2o-k7e项目的主要贡献者之一)博客上截取自《过河卒》的这篇文章:过河卒·日出江花红胜火。
周六去杭州的web3 summer线下,正好嘉宾也谈到比特币白皮书和国人的渊源,引用文献的第一篇就是一个华人的文章。也就是上面文章中的Wei Dai。
这里简单记录每日学习小结,具体内容放在zk_learn_note笔记。
- 学习主题:学习 2. 理解「模拟」
- 学习内容小结:主要讲述怎么证明系统是零知识的。真实世界和理想世界,模拟器可区分这两个世界,但是世界里的个体不可区分。这个模拟器可理解为计算机系统的快照。
概念还有点晦涩,似懂非懂,还需继续往下学习。
- 学习主题:学习 3. 寻找「知识」
- 学习内容小结:
- 描述了可靠性和零知识,里面用数学知识来描述和证明加密算法,有点抽象,先放一放。
- 通过里面的
单向映射
举例,对椭圆曲线加密算法(ECC)理解更直观了一点
- 学习主题:密码学相关概念学习
- 学习内容小结:
- 对称/非对称加密算法有哪些;
- 数字签名、数字证书、数字信封、PKI、PMI等概念;
- 国密标准
- 相关笔记:密码学相关学习笔记
- 学习主题:1-Polynomial-Interaction-and-Proof
- 学习内容小结:
- 了解 zk-snarks 这种零知识证明协议的概念
- 简单跟踪了下多项式因式分解对应的协议过程,大致有个了解
剩下的几篇大概浏览了下,都是关于zk-SNARK的数学知识,第一篇还能大概跟上,剩下的理解还是比较费劲。
- 2-Non-interactivity&Distributed-Setup
- 3-General-Purpose-Computation
- 4-Construction-Properties.md
- 5-Pinocchio-Protocol
先大概有个概念,看后面比较偏实践的内容,工程上如何利用零知识。
- 学习主题:视频学习,ZK Shanghai 基础电路教学,暂学到45min
- 学习内容小结:
- 算术电路的概念(区别于电子电路)
- 初步了解zkREPL,demo运行
- 零知识证明电路的常见设计方法,了解各方法背后对应的数学运算
- 学习主题:视频学习,下半部分 ZK Shanghai 基础电路教学
- 学习内容小结:
- 了解 Circom,可定义可用于生成零知识证明的算术电路
CircomLib
是一个公开可用的库,带有数百个电路,例如比较器、哈希函数、数字签名、二进制和十进制转换器等等。
- 学习主题:通过基础电路练习学习语法
- 学习内容小结:
- 学习
===
、<--
、<==
含义和示例,顺便学英语阅读 - 参考circom文档:Constraint Generation
- 学习
- 学习主题:通过基础电路练习学习语法
- 学习内容小结:
\
含义,信号赋值后的约束判断- 参考circom文档:Constraint Generation
- 学习主题:继续学习 基础电路练习
- 学习内容小结:
- 算术电路:IsEqual、Selector、IsNegative
- template 和 component 文档学习
- 学习主题:继续学习 基础电路练习
- 学习内容小结:
- 算术电路:LessThan
- 学习主题:回头听一下 零知识证明:一场”无知“的游戏
- 学习内容小结:
- 比之前能稍微听得进去一点了
- 学习主题:回头看一下视频 ZKP Lecture 2: Overview of Modern SNARK Constructions
- 学习内容小结:
- 只看了部分
- 学习主题:继续学习视频 ZKP Lecture 2: Overview of Modern SNARK Constructions
- 学习内容小结:
- 学习视频
- 学习主题:看完视频 ZKP Lecture 2: Overview of Modern SNARK Constructions
- 学习内容小结:
- ZK学习暂告一段落,对基础概念和简单原理有了一个认识。看数学公式的过程里,也提升了其他方面的技能,比如最近看leveldb的布隆过滤器原理,里面一些概率论方面的证明过程,看到也能稍微沉下心来看明白。相比而言,ZK的数学原理自己当前还比较吃力。
- 这次初学作为一个起点。