timezone |
---|
Asia/Shanghai |
请在上边的 timezone 添加你的当地时区,这会有助于你的打卡状态的自动化更新,如果没有添加,默认为北京时间 UTC+8 时区 时区请参考以下列表,请移除 # 以后的内容
timezone: Pacific/Honolulu # 夏威夷-阿留申标准时间 (UTC-10)
timezone: America/Anchorage # 阿拉斯加标准时间 (UTC-9)
timezone: America/Los_Angeles # 太平洋标准时间 (UTC-8)
timezone: America/Denver # 山地标准时间 (UTC-7)
timezone: America/Chicago # 中部标准时间 (UTC-6)
timezone: America/New_York # 东部标准时间 (UTC-5)
timezone: America/Halifax # 大西洋标准时间 (UTC-4)
timezone: America/St_Johns # 纽芬兰标准时间 (UTC-3:30)
timezone: America/Sao_Paulo # 巴西利亚时间 (UTC-3)
timezone: Atlantic/Azores # 亚速尔群岛时间 (UTC-1)
timezone: Europe/London # 格林威治标准时间 (UTC+0)
timezone: Europe/Berlin # 中欧标准时间 (UTC+1)
timezone: Europe/Helsinki # 东欧标准时间 (UTC+2)
timezone: Europe/Moscow # 莫斯科标准时间 (UTC+3)
timezone: Asia/Dubai # 海湾标准时间 (UTC+4)
timezone: Asia/Kolkata # 印度标准时间 (UTC+5:30)
timezone: Asia/Dhaka # 孟加拉国标准时间 (UTC+6)
timezone: Asia/Bangkok # 中南半岛时间 (UTC+7)
timezone: Asia/Shanghai # 中国标准时间 (UTC+8)
timezone: Asia/Tokyo # 日本标准时间 (UTC+9)
timezone: Australia/Sydney # 澳大利亚东部标准时间 (UTC+10)
timezone: Pacific/Auckland # 新西兰标准时间 (UTC+12)
⚠️ 正式开始前请确保你在身体上和精神上都处于合适的状态,请刻意练习,残酷面对 🆒。为方便检索 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》,学有余力者可以依此找到更多的扩展内容。
- 自我介绍: 学生开发者,后端+合约
- 你认为你会完成本次残酷学习吗? 会
- 目前阶段对于 ZK 的了解? 零基础
- 学习主题:20min 的视频:初步理解 ZK 是什么
- 学习内容小结:
- zkp定义:交互式系统,涉及证明者和验证者,证明者能够不暴露自身知识即可向验证者证明知识存在
- zkp为什么有价值:人们本质上是不信任他人的,所以相比将秘密共享,zkp这种不暴露秘密即可达到证明某件事情成立的技术更令人激动
- np问题与zkp:np问题是在多项式时间内难以解决的一类问题,但若是解决了其中一个,即可解决所有;zkp可以利用np的这种特性,只要其可以解决a问题(与秘密无直接关系),那就一定能解决b问题(与秘密有直接关系)
- zkp应用场景:目前最广泛的使用场景是区块链
- 注意区分information和knowledge: 后者是需要保护的
- 视频对zkp未来预测:寻找harder problems
- 学习主题: (一)初识「零知识」与「证明」
- 学习总结:zkp需要通过模拟第三方来达到证明的目的;文章还讲了地图三染色这种交互式的zkp,并以此引出信息和知识的区别;此外就是电路可满足问题,同样也是np问题,将程序转换为算术电路去验证,而像zksnark这样的零知识电路可满足性协议,则可以不暴露细节即可证明电路运算通过。
- 学习主题: (二)理解「模拟」
- 学习总结: 对安全有了一个新认识:在多项式时间内无法求解; 本文重点是介绍了模拟器的概念和作用;模拟器本质就是为了产生零知识过程,它可以通过一些root权限,比如“时光倒流”来达到效果;一个有知识的现实世界和一个模拟出来的没有知识的理想世界,以此达到零知识; 后面的地图三染色和阿里巴巴都是应用了模拟器的例子; 看完本文对于zkp有了更深的理解:zkp首先需要寻找一个算法去达成零知识的环境,随后若是验证全部能够通过,那么零知识证明成功,否则失败
- 学习主题: (三)寻找「知识」
- 学习总结: 开头讲解了一番可靠性的定义:用于保证若是验证通过则知识一定存在;介绍了schnorr这一零知识证明协议,利用了交互性+同态加密(有限域到循环群)+随机数;后面又简单介绍了ecdsa,其中强调了随机数必须随机,不然知识是可以被推出来的;关于最后的脑洞,我认为是的,所谓科学是一种更抽象的程序,所谓幻象往往就是bug
- 学习主题:1-Polynomial-Interaction-and-Proof部分内容
- 学习总结:
- 多项式是zksnark的核心,本质是因为当阶数较多时,多项式在任意点的计算结果一致的可能性几乎为0;
- 多项式中的知识指的是item的系数
- 基本的利用多项式的因式分解来构造的证明系统有一些问题,本质是因为暴露了原始值,所以可以用同态加密来解决,此处利用到了模运算
- 学习主题:80min的视频: ZKP Lecture 2: Overview of Modern SNARK Constructions
- 学习总结:首先学习了snarks是什么:一种非交互式零知识证明系统,一般是将functional commitment scheme和interactive oracle proof结合;还讲了交互式语言IOP,以及多项式承诺和IOP相结合
- 学习主题:1-Polynomial-Interaction-and-Proof
- 学习总结:继续学习了加密多项式的基本知识,要证明的内容是多项式有两个具体的根,证明的方式利用到了因式分解以及一个模糊运算;问题在于prover可以不适用verifier提供的加密值
- 学习主题:2-Non-interactivity&Distributed-Setup
- 学习总结:这篇文章主要是解决上一篇文章中“prover可以不适用verifier提供的加密值”的问题,还用复用值以达到非交互性; 数学部分没有彻底理解,明天继续
- 学习主题:2-Non-interactivity&Distributed-Setup
- 学习总结:从数学角度理解了一下文章中的kea和引入的随机值,并理解了后续复用秘密参数的使用场景,还有crs的生成;此处也体会到zk对数学的组合
- 学习主题: 3-General-Purpose-Computation
- 学习总结:这一篇将之前讲的多项式知识实际使用到了程序证明上,多个运算-经过一系列点-多项式结果为0;有一些值得注意的点:当处理多个运算时,对相同输入的系数要相同,核心是所有输入的操作数的系数应该是等比例变化,可以用之前讲的a-shift方法来实现;此外,当左操作数不止一个变量时,可以引入一个值为1或0的数
- 学习主题:4-Construction-Properties.md 部分
- 学习总结:相比前面的理论,还是后面的例子更直观更好理解;一点是操作数前面加上常量系数,第二点是将一系列系数赋予操作数,这是为了方便多个运算,用到该运算就是1,否则就是0;
- 学习主题:4-Construction-Properties.md 部分
- 学习总结:学习了操作数和输出的不可代替性质,还有可变一致性,非延展性变量等概念,数学部分没有深刻理解,明天继续