译自 halo2 book:https://zcash.github.io/halo2/design/proving-system/comparison.html
与其他工作的对比
BCMS20 附录 A.2
BCMS20 的附录 A.2 描述了一种多项式承诺方案(polynomial commitment scheme),它与 BGH19 中描述的方案相似(BCMS20 是原始 Halo 论文的推广)。Halo 2 建立在这两项工作之上,因此其自身使用的多项式承诺方案与 BCMS20 中的方案非常相似。
下表给出了 BCMS20 中的变量名与 Halo 2 中等价对象(其建立在 Halo 论文的命名法之上)之间的映射:
| BCMS20 | Halo 2 |
|---|---|
msm 或 | |
challenge_i | |
s_poly | |
s_poly_blind | |
s_poly_commitment | |
blind / | |
Halo 2 的多项式承诺方案与 BCMS20 附录 A.2 在两个方面有所不同:
-
算法的第 8 步在内积论证(inner product argument)之前计算一个"非隐藏(non-hiding)"承诺 ,它打开到与 相同的值,但它是对一个随机抽取的多项式所做的承诺。协议的其余部分不涉及任何盲化(blinding)。相比之下,在 Halo 2 中我们对我们做出的每一个承诺都进行盲化(即便是对实例(instance)和固定(fixed)多项式也是如此,不过对固定多项式使用盲化因子 1);这使得协议更易于推理分析。由此带来的结果是,验证者需要在协议末尾处理累积的盲化因子,因此无需在协议开始时推导出等价于 的对象。
- 也是 的随机预言机(random oracle)的一个输入;在 Halo 2 中,我们使用的副本(transcript)在采样 之前已经对 的等价组成部分做出了承诺。
-
子例程(BCMS20 的图 2)通过加上 来计算初始群元素 ,这需要两次标量乘法。我们改为从原始承诺 中减去 ,从而实际上将多项式在该点打开到值零。计算 在递归(recursion)语境下更高效,因为 是一个固定基(fixed base)(所以我们可以使用查找表)。