Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
tmors committed Aug 14, 2024
2 parents 8587a77 + a37dd53 commit fb69515
Show file tree
Hide file tree
Showing 13 changed files with 786 additions and 23 deletions.
40 changes: 40 additions & 0 deletions Capybara_ZICL1st.md
Original file line number Diff line number Diff line change
Expand Up @@ -267,4 +267,44 @@ template ForceEqualIfEnabled() {
- 学习内容小结:

今天,从头到尾看了一遍这篇文章,文章主要在讲多项式的的方式来说明,验证者和证明者两者之间的证明和验证过程,且此过程保证了零知识。同时文章提到了有限域,生成元。折合我之前看视频学习到的讲某一个值映射到椭圆曲线上(也是在有限域的基础上做到的)。同时对于某一个数进行加密时更多的是有限域配合生成元和模运算来达到加密且很难反算出结果的目的。而且这些方式在现代密码学中也运用的很广泛。但是这个成立是基于当前算力的前提之下。如果一旦量子计算普及那么意味着现代密码学的很多东西都将被颠覆。不知道理解的是否对?

### 2024.08.09

- 学习主题:2-Non-interactivity&Distributed-Setup
- 学习内容小结:
1、保证 prover 的证明是按照规则正确构造的 ——> KEA ( a′ =a^α * (modn)) )
2、保证知识的零知性 ——> “无成本的” δ 变换
3、可复用证明 ——> 非交互式
4、非交互中如何设置安全公开且可复用的参数 ——> 参数加密,verifier 借助 airing 进行验证
5、保证参数的生成者不泄密 ——> MPC’s Setup


### 2024.08.10

- 学习主题:3-General-Purpose-Computation
- 学习内容小结:
1、将要证明的程序转换为数学语言表达的形式(即加减乘除的计算)
2、用多项式在某处的取值来进行计算以此表示数学计算,进而进行证明
3、用多项式在多处的取值来进行计算表示多个数学运算,进而加以证明
4、对证明的“程序”在不同计算中使用的相同的变量进行约束


### 2024.08.11

- 学习主题:4-Construction-Properties
- 学习内容小结:
协议中是如何增加可变系数的和如何做加减乘除运算的
协议如何保证操作数和输出的不可替代性
协议如何保证跨操作数的可变一致性
协议如何处理非延展性变量和变量一致性
协议中变量值一致性检查优化


### 2024.08.12

- 学习主题:5-Pinocchio-Protocol
- 学习内容小结:
Pinocchio 协议是针对 GGPR 论文的改进,在3.1节中也提到了实现零知识只需要沿用 GGPR 论文的方法即可,并不是这篇论文的贡献。另外,Pinocchio 协议论文侧重工程实践,在2013年时,零知识证明还并没有得到应用。真正的应用还是自从 ZCash 起始

所谓 Argument——论证,区别于 Proof —— 证明。 Pinocchio 协议是 Argument 而非 Proof。这是因为 Pinocchio 的可靠性是 Computational Soundness,Statistical ZK,这一类的证明系统被称为 Argument。所谓的 Computational Soundness 暗含了这样的事实:如果 Prover 计算能力足够强大的话,可以破坏可靠性。
<!-- Content_END -->
24 changes: 24 additions & 0 deletions Draculabo_ZICL1st.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,30 @@ timezone: Asia/Shanghai

### 2024.08.11

- 学习主题:Plonk 核心实现 [](https://github1s.com/dusk-network/plonk)
- 学习内容小结:
1. 研究 Plonk 代码实现

### 2024.08.12

- 学习主题:Plonk 核心实现 [](https://github1s.com/dusk-network/plonk)
- 学习内容小结:
1. 研究 Plonk 代码实现

### 2024.08.13

- 学习主题:Plonk 核心实现 [](https://github1s.com/dusk-network/plonk)
- 学习内容小结:
1. 研究 Plonk 代码实现

### 2024.08.14

- 学习主题:Plonk 核心实现 [](https://github1s.com/dusk-network/plonk)
- 学习内容小结:
1. 研究 Plonk 代码实现

### 2024.08.15

- 学习主题:Plonk 核心实现 [](https://github1s.com/dusk-network/plonk)
- 学习内容小结:
1. 研究 Plonk 代码实现
Expand Down
5 changes: 5 additions & 0 deletions HazelGong_ZICL1st.md
Original file line number Diff line number Diff line change
Expand Up @@ -251,4 +251,9 @@ Naive 协议:

blog 2 - 5: 用 blog 1 的 proof 构建通用 zk-SNARK 的协议。没有完全理解。待梳理。

### 2024.08.14

[ZKP Lecture 2: Overview of Modern SNARK Constructions](https://www.youtube.com/watch?v=bGEXYpt3sj0)


<!-- Content_END -->
19 changes: 18 additions & 1 deletion Lu_ZICL1st.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,5 +212,22 @@ GPT解释:同态加密的解谜过程固定。难度是受解密密钥和算
2.2 稳定元 = 4 = 确定一个面后,正方体能旋转4次却不改变面的位置
2.3 轨道 = 1 -> 1个单一的、连续的轨道,轨道大小 = 6 = 可被移动的面 = 互换性 & 对称性
- 3. 同构 = 结构相同而名字不同,同态 = 名字相同罢了,同构是同态的一种特殊表现形式,即映射且一一对应。
`点了。看似不同的数学对象之间其实有深层次联系。`
`点了。看似不同的数学对象之间其实有深层次联系。`

### 2024.08.13
今日了解「群论」- group theory & Euler's formula 欧拉公式
- 了解它可以改变对numbers和algebra - 代数的看法
- group theory & the nature of symmetry 对称性
- example: a square 正方形,不管怎么作用都具有对称性,把8种对称性作用力放在一起就是group of symmetry。正方形的这个例子是一种finite group,自然就有infinite group,如圆
- 学习的意义是知道对称性之间如何作用影响的:作用A + 作用B = 作用C
- 从「对称性」和「对称性的复合」- composing symmetries 可以引申例子:Square materices, Molecular, Cryptography, numbers.
- Numbers as group: addditive 加法 + multiplicative 乘法 -> numebrs as actions, not just counting things.
- why numbers are actions?
- 1)加法可以看成是groups of line symmetries,aka Additive group of real number 实数加法群,甚至在直角坐标系xy轴中这个结论也成立,也就是Additive group of complex numbers
- 3) 乘法可以看成是 group of stretching/squishing actions,aka multiplicative group of positive real numbers -> multiplicative group of complex numbers
`GPT解释number的各种分类:在等式x²+1 = 0中,无real numbers解,因为实数不可能是负数,可是可以有复数解,解是个虚数imaginary unit。还有,5+0i是pure real numbers,0+2i是pure imaginary numbers,3+4i是general complex numbers`
- 剩10分钟幂函数这块明天在看。

### 2024.08.13
- 幂函数对于群论的作用?Adding inputs = multiply outputs
<!-- Content_END -->
19 changes: 18 additions & 1 deletion Oscar_ZICL1st.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,28 @@ timezone: Asia/Shanghai
- ZK 在 VC 领域的融资额远超 Al 和 Depin, 不论是在任意一年。🤔
- 投资ZK以投资先进性为主导原则,会不断有新项目新技术来冲击现有格局。除非 Zksync、Starknet 故步自封,不再送代,否则这两个项目就是 ZK 软件赛道估值的天花板。🤔
- ZK 赛道是人才密度最高的 web3 赛道,投 ZK 就是投人。🤔
- TODO 学习 https://mp.weixin.qq.com/s/7Noxmi7tKjDMB6RYWbKaGg


### 2024.08.13

- 学习主题:zk-SNARK vs zk-STARK
- 学习内容小结:
- zk-SNARK,通过使用复杂的数学工具,如双线性配对和算术电路,来实现高效的零知识证明。特点是证明过程简洁化、非交互式,证明者和验证者之间只需要单次通讯不需要多次交互。此外,**zk-SNARK 的证明尺寸非常短小,验证效率高,适合在资源有限的环境中使用。**
- zk-STARK,旨在克服 zk-SNARK 的某些局限性。zk-STARK不依赖于可信设置,使用更透明的数学构造系统,如多项式承诺和有限域运算、哈希碰撞等,来生成和验证证明。**zk-STARK 比 zk-SNARK更具可扩展性,适用于更大规模的计算,证明生成速度更快,但是 Proof 本身的尺寸通常较大。**
- 总体来看,**一个 ZK 证明系统通常包括 PIOP(多项式交互式预言机)和 PCS(多项式承诺方案)两大部分。**常见的 PIOP 方案包括 PLONKish、GKR 等,而常见的 PCS 方案包括 FRI,KZG,IPA 等,比如 Zcash 版本的Halo2 使用了 Plonkish + IPA 的实现方式,至于 zk-STARK 其实可以当成是一种基于 FRI 的特殊的 zk-SNARK。如果更详细的说,不同类型的证明系统会使用不同的多项式承诺方案(PCS)、算术化方案、交互式预言机证明(IOP)或概率可检查证明(PCP)。


### 2024.08.14

- 学习主题:跳过基础电路,ZK 理论集应用方向学习为主
- 学习内容小结:
- [构建非交互式零知识证明](https://secbit.io/blog/2020/01/08/nizk-by-crs/#back-to-top)
- CRS 的使命就是让「模拟器」与「验证者」不平等。怎么做呢?隐藏一些「秘密」进去。
- 如果我们真的生活在一个没有秘密的世界,那会是什么样子?「环形监狱 Panopticon」是 18 世纪英国哲学家 Jeremy Bentham 提出的一个惊悚概念。囚徒们被中心全天候监控,没有任何隐私可言,而且他们对自己是否处于被监控状态也无从得知。这个无比悲观的论调让人浑身不适,但很多人认为,这可能是两百多年前对未来网络数字时代的一则精准寓言。🤔
- TODO 学习 https://mp.weixin.qq.com/s/7Noxmi7tKjDMB6RYWbKaGg

### 2024.08.15

- 学习主题:
- 学习内容小结:

Expand Down
61 changes: 45 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,51 +106,51 @@ ZK 的原理是什么?为什么能实现隐私保护?ZK 技术为什么被
| Ache || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| Rayerleier |||| ⭕️ | ⭕️ || | | | | | | | | | | | | | | |
| Lambert || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| Draculabo ||||||||||||||| | | | | | | |
| Draculabo ||||||||||||||| ||| | | | |
| Suweet ||| ⭕️ | ⭕️ || | | | | | | | | | | | | | | | |
| Leo ||||||||||||||| ⭕️ | | | | | | |
| Leo ||||||||||||||| ⭕️ | ⭕️ | | | | | |
| Iyi ||| ⭕️ | ⭕️ || | | | | | | | | | | | | | | | |
| cin || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| Cora |||||| ⭕️ | ⭕️ | ⭕️ | ⭕️ || | | | | | | | | | | |
| Tim0 ||||||| ⭕️ |||||| ⭕️ || | | | | | | |
| Tim0 ||||||| ⭕️ |||||| ⭕️ || ⭕️ | ⭕️ | | | | | |
| YuanboXie ||||||||||| ⭕️ | ⭕️ || | | | | | | | |
| AricRedemption || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| Derick ||| ⭕️ | ⭕️ || | | | | | | | | | | | | | | | |
| Stone ||| ⭕️ | ⭕️ || | | | | | | | | | | | | | | | |
| Xiongyi |||||| ⭕️ | ⭕️ |||| ⭕️ | ⭕️ || | | | | | | | |
| Oscar |||||| ⭕️ | ⭕️ |||||| ⭕️ ||| | | | | | |
| Oscar |||||| ⭕️ | ⭕️ |||||| ⭕️ ||| || | | | |
| Alex |||||||||||| ⭕️ | ⭕️ || | | | | | | |
| ChloeZhu ||| ⭕️ || ⭕️ || | | | | | | | | | | | | | | |
| Ziicu2019 || ⭕️ ||||||||| ⭕️ | ⭕️ || | | | | | | | |
| Hansen ||| ⭕️ |||| ⭕️ | ⭕️ | ⭕️ || | | | | | | | | | | |
| xiaodongQ ||||||||||| ⭕️ | ⭕️ ||| | | | | | | |
| Ray || ⭕️ |||||||||||||| | | | | | |
| xiaodongQ ||||||||||| ⭕️ | ⭕️ ||| ||| | | | |
| Ray || ⭕️ |||||||||||||| || | | | |
| monnaliya |||||||||||| ⭕️ | ⭕️ || | | | | | | |
| tom_jerry || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| barry |||| ⭕️ | ⭕️ || | | | | | | | | | | | | | | |
| Dust ||||||||||||| ⭕️ | ⭕️ | | | | | | | |
| Dust ||||||||||||| | | ⭕️ | ⭕️ | | | | | |
| Transnature ||| ⭕️ | ⭕️ || | | | | | | | | | | | | | | | |
| Antigone4224 ||| ⭕️ ||| ⭕️ || | | | | | | | | | | | | | |
| Alvan || ⭕️ || ⭕️ || | | | | | | | | | | | | | | | |
| Yiyanwannian |||||||||||||||| | | | | | |
| Yiyanwannian |||||||||||||||| || | | | |
| GINAYY || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| Coooder |||| ⭕️ || ⭕️ ||||| ⭕️ | ⭕️ || | | | | | | | |
| liujianyu2022 |||| ⭕️ || ⭕️ |||| ⭕️ |||| ⭕️ | | | | | | | |
| Capybara |||||||||||| ⭕️ | ⭕️ | | | | | | | | |
| liujianyu2022 |||| ⭕️ || ⭕️ |||| ⭕️ |||| ⭕️ | ⭕️ ||| | | | |
| Capybara |||||||||||| | | | | ⭕️ | ⭕️ | | | | |
| billchen-818 ||| ⭕️ | ⭕️ || | | | | | | | | | | | | | | | |
| hython |||| ⭕️ |||| ⭕️ | ⭕️ || | | | | | | | | | | |
| spn ||||||||||||||| | | | | | | |
| HazelGong |||| ⭕️ | ⭕️ ||| ⭕️ | ⭕️ |||||| | | | | | | |
| Punkcan |||||||||||||||| | | | | | |
| Zemmer |||||||||| ⭕️ || ⭕️ ||| | | | | | | |
| Lu |||||||| ⭕️ |||||| ⭕️ | | | | | | | |
| spn ||||||||||||||| || ⭕️ | | | | |
| HazelGong |||| ⭕️ | ⭕️ ||| ⭕️ | ⭕️ |||||| ⭕️ | ⭕️ || | | | |
| Punkcan |||||||||||||||| ⭕️ | ⭕️ | | | | |
| Zemmer |||||||||| ⭕️ || ⭕️ ||| ||| | | | |
| Lu |||||||| ⭕️ |||||| ⭕️ | ⭕️ || | | | | |
| Zedz ||||||||||| ⭕️ | ⭕️ || | | | | | | | |
| jidalii || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| 0xhardman || ⭕️ ||| ⭕️ || | | | | | | | | | | | | | | |
| Kero || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| Warmzhang || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| treesirop || ⭕️ | ⭕️ || | | | | | | | | | | | | | | | | |
| btou ||||| ⭕️ || ⭕️ ||||||||| | | | | | |
| btou ||||| ⭕️ || ⭕️ ||||||||| || | | | |
| ocean |||| ⭕️ | ⭕️ |||| ⭕️ | ⭕️ || | | | | | | | | | |
| maxwell || ⭕️ |||| ⭕️ || ⭕️ | ⭕️ || | | | | | | | | | | |
<!-- END_COMMIT_TABLE -->
Expand Down Expand Up @@ -322,6 +322,35 @@ ZK 的原理是什么?为什么能实现隐私保护?ZK 技术为什么被



































Expand Down
21 changes: 20 additions & 1 deletion Ray_ZICL1st.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ timezone: Pacific/Auckland # 新西兰标准时间 (UTC+12)
- P != NP


### 2024.8.12
### 2024.08.12
- 学习主题:zk-SNARK 学习
- 学习内容小结:
- 核心:
Expand All @@ -278,6 +278,25 @@ timezone: Pacific/Auckland # 新西兰标准时间 (UTC+12)
- 一个多项式只要有解,就可以分解成线性多项式,比如 x^3−3x^2+2x=(x−0)(x−1)(x−2),它的解就是 0,1,2
- 如果 prover 想要在不揭示多项式的前提下证明他的多项式确实有这两个根,那么他就需要去证明他的多项式 p(x) 是 t(x)=(x−1)(x−2) 和一些任意多项式 h(x) (例子中 x−0 )的乘积

### 2024.08.13
- 学习主题:zk-SNARK 学习
- 学习内容小结:
- 多项式可以被因式分解成它的根的因式的乘积,所以如果一个多项式有某些解,那么它被因式分解之后的式子中一定包含这些解的因式 -> 利用这个性质去构造证明
- 证明过程:
- Bob 挑选一个随机值 r,计算 t = t(r),然后就 r 发送给 Alice
- Alice 计算 h(x) = p(x)/t(x),并对 p(r) 和 h(r) 进行休止,将计算结果 p, h 提供给 Bob
- Bob 验证 p = t*h,如果多项式相等,就意味着 t(x) 是 p(x) 的因式
- 这种校验方式要求多项式系数也是整数,对协议产生了很大的限制(这里比较难理解,需要消化一下)

### 2024.08.14
- 学习主题:zk-SNARK 学习
- 学习内容小结:
- 如果 Alice 不知道真正的 p(x),那么就可以会使用一个假的 p(x),其中并不包括必须的因式,所以就会产生一个余数,导致最后算出的结果不是整数,那么 Bob 就会发现 Alice 并不真正知道这个结果,然后就会拒绝这个证明,但是这样同样也要求多项式的系数必须是证书,这样就对协议产生了很大的限制,需要让这个余数不被整除(即使这个原始值可以被整除)
- 利用因式构造证明协议的缺陷:
- 一旦 Alice 知道了 t(r),就可以反过来构造一个可以整除 t(r) 的 p(r)
- Alice 知道了点(r, t(r)*h(r)),就可以构造经过这一点的任意(高次)多项式来满足校验条件
- 协议并没有对 prover 的多项式阶数进行约束
- 所以关键是 r 这个值能不能隐藏起来不可见,这里可以通过模运算来解决这个问题


<!-- Content_END -->
20 changes: 19 additions & 1 deletion Yiyanwannian_ZICL1st.md
Original file line number Diff line number Diff line change
Expand Up @@ -336,5 +336,23 @@ timezone: Pacific/Auckland # 新西兰标准时间 (UTC+12)
- 抗碰撞
- 不同的哈希函数对不同的电路友好性不一样
- 课程PPT: https://zkshanghai.xyz/lecture/4-circom2.pdf
### 2024.08.13
- 学习主题:
- 阅读文档:
- [snarkjs resources (zkiap.com)](https://zkiap.com/snarkjs)
- [What Is Semaphore? | Semaphore](https://docs.semaphore.pse.dev/)
- 学习内容小结:
- snarkjs 代码转电路的js库
- Semaphore 一种zk协议,可以用来构建zk应用:私人投票、举报、匿名去中心化自治组织和混合器等
### 2024.08.14
- 学习主题:
- circom本地环境搭建
- 学习内容小结:
- circom本地环境搭建
<!-- Content_END -->
Loading

0 comments on commit fb69515

Please sign in to comment.