零知识证明之书

2025年02月27日更新 28 人订阅
原价: ¥ 144 限时优惠
专栏简介 P vs NP 及其在零知识证明中的应用 ZK的算术电路 用于零知识证明的有限域与模运算 为程序员准备的基础集合论 抽象代数 程序员的基本群论 同态映射 椭圆曲线点加法 有限域上的椭圆曲线 Python、Solidity 和 EVM 中的双线性配对(Bilinear Pairings) 将代数电路转换为R1CS(一阶约束系统) 从R1CS构建零知识证明 使用Python实现拉格朗日插值 Schwartz-Zippel 引理及其在零知识证明中的应用 二次算术程序 在Python中将R1CS转换为有限域上的二次算术程序(QAP) 可信设置 在可信设置中评估和二次算术程序 Groth16 详解 Circom 零知识电路简介 Circom 之 Hello World Circom模板参数、变量、循环、If语句、断言 二次约束 - Circom Circom中的符号变量 Circom 中间信号与子组件 先指示再约束 - 在 Circom 中复杂约束条件的方法 先计算,后约束 - ZK 电路设计模式 Circom循环中的组件 使用虚假证明攻击欠约束的Circom电路 Circomlib中的AliasCheck和Num2Bits strict Circom 中的条件语句 Quin Selector(选择器) ZK 中有状态计算简介 在Circom中交换数组中的两个条目 选择排序的零知识证明 在 ZK 中建模栈数据结构 - 如何在 Circom 中创建一个堆栈 ZKVM 的工作原理 ZK中的32位仿真 Circom 中的 MD5 哈希 零知识证明友好的哈希函数 排列论证 - The Permutation Argument Tornado Cash 的工作原理(开发者逐行解析) BulletProofs 详解 什么是Pedersen承诺及其工作原理 多项式承诺通过 Pedersen 承诺实现 零知识乘法 内积的零知识证明 向量承诺的简洁证明 对数大小的承诺证明 Bulletproofs零知识证明:内积的零知识与简洁证明 内积代数 通过随机线性组合减少等式检查(约束)的数量 范围证明

Schwartz-Zippel 引理及其在零知识证明中的应用

  • RareSkills
  • 发布于 2024-08-28 23:21
  • 阅读 1051

文章详细介绍了Schwartz-Zippel Lemma在零知识证明(ZK-Proof)中的应用,通过多项式例子和Python代码展示了如何利用该引理进行多项式相等性测试和向量相等性测试。

几乎所有 ZK-Proof 算法都依赖于 Schwartz-Zippel 引理来实现简洁性。

Schwartz-Zippel 引理指出,如果我们有两个多项式 $p(x)$ 和 $q(x)$,它们的次数分别为 $d_p$ 和 $d_q$,并且 $p(x) \neq q(x)$,那么 $p(x)$ 和 $q(x)$ 的交点数量小于或等于 $\mathsf{max}(d_p, d_q)$。

让我们来看几个例子。

多项式示例与 Schwartz-Zippel 引理

一条直线与抛物线的交点

考虑多项式 $p(x) = x$ 和 $q(x) = x^2$。它们在 $x = 0$ 和 $x = 1$ 处相交。y = x 和 y = x^2 的图像

它们在两点相交,这是多项式 $y = x$ 和 $y = x^2$ 之间的最大次数。

三次多项式与一次多项式

考虑多项式 $p(x) = x^3$ 和 $q(x) = x$。这些多项式在 $x = -1$、$x = 0$ 和 $x = 1$ 处相交,其余地方不相交。交点的数量受多项式最大次数的限制,本例中为 3。

y = x^3 和 y = x 的图像

有限域中的多项式与 Schwartz-Zippel 引理

Schwartz-Zippel 引理适用于有限域中的多项式(即所有计算都是对一个质数 $p$ 取模)。

多项式相等性测试

我们可以通过检查它们的所有系数是否相等来测试两个多项式是否相等,但这需要 $\mathcal{O}(d)$ 的时间,其中 $d$ 是多项式的次数。

如果我们能在一个随机点 $u$ 处评估多项式并在 $\mathcal{O}(1)$ 的时间内比较评估值,则会更快。

也就是说,在有限域 $\math...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论