Appearance
Plonk方案
Plonk全称为Permutations(排列) over Lagarange-bases(拉格朗日基) for Oecumenical(普世的) Noninteractive arguments of Knowledge。
准备阶段
准备双线性映射的两个群
这里建议先再看看之前的KZG承诺
定义有限域
- 这里使用
,既bls12_381曲线
以下以
寻找 的循环子群
下面的具体计算可以参考这里

扩展域
为了完成双线性映射需要找到扩展域 要求 r | p^k − 1 是为了让 r 次单位根包含在 F_{p^k}^× 中,从而配对 e: G1 × G2 → GT(|GT|=r)可以定义。
在这里假设
- 扩展域
- 寻找一个不可约多项式
- 为什么不能用
,
- 为什么不能用
为该式的解,既 - 则在该扩展域上所有元素可写作$ a + bu $
找到第二个子群

可信设置
- 生成私钥
- 构造结构引用字符串SRS:
将问题转化为电路
这里将问题假设为:
我们要证明我们有
R1CS:
Plonk基本多项式
:左输入 :右输入 :输出 :乘法 :常数

转化为向量:

拉格朗日插值,把向量转为多项式
这里对
具体参照之前的介绍

单位根
定义:对
在当前的例子中向量长度为4。
寻找单位根
在上面这里提到

计算陪集
对于上面的单位根
拷贝约束
由于需要构建

还需要嵌入到多项式中:

具体看Code
承诺
为了简化表示,以下用
Stage 1 :承诺a,b,c
对于在单位根中的群
在
易得:
然后使用SRS进行承诺:
取
这里是和基点
Sage 2 : 承诺
产生随机数:
获得挑战:
计算
Stage 3 : 计算商多项式 与承诺
然后将多项式分割为
然后输出
我们有:
然后得到 Commit:
Stage 4 : 线性化,计算评估点
计算:
计算
然后计算
The definition of
最后计算线性评估点:
Stage 5 : 计算公开多项式承诺
输出:
给定
证据输出
总共16个元素,9个
验证
SRS预处理
证明步骤
检查:
检查:
检查:
计算零多项式评估:
计算:
计算:
计算商多项式评估:
计算第一部分多项式承诺,先定义:
,计算: 计算完整批多项式承诺
- 计算群编码的批量评估
:
- 验证所有的等式:
Let's check steps 9 − 11 for each of the polynomials. For example the terms with 𝑢.
Let's check
Let's check
The other terms are easy to check as well.
