Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

译自 halo2 book:https://zcash.github.io/halo2/design/proving-system.html

证明系统(Proving system)

Halo 2 的证明系统可以分解为五个阶段:

  1. 对编码电路主要组成部分的多项式做承诺(commit):
    • 单元格赋值(cell assignment)。
    • 每个查表论证(lookup argument)的置换值(permuted value)与乘积(product)。
    • 等式约束置换(equality constraint permutation)。
  2. 构造消失论证(vanishing argument),以将所有电路关系约束为零:
    • 标准门(standard gate)与自定义门(custom gate)。
    • 查表论证规则。
    • 等式约束置换规则。
  3. 在所有必要的点上对上述多项式求值:
    • 所有列上、所有自定义门所用的相对旋转(relative rotation)。
    • 消失论证的各个分片。
  4. 构造多点打开论证(multipoint opening argument),以检查所有求值与各自的承诺保持一致。
  5. 运行内积论证(inner product argument),为多点打开论证的多项式创建一个多项式承诺打开证明(polynomial commitment opening proof)。

本章接下来将依次介绍这些阶段。

示例

为了便于讲解,我们有时会引用如下示例约束系统(constraint system):

  • 四个建议列(advice column)
  • 一个固定列(fixed column)
  • 三个自定义门:

tl;dr(太长不看)

下表对 Halo 2 协议给出一个(可能过于)简洁的描述。这一描述很可能会被 Halo 2 论文及其安全性证明所取代,但目前可作为接下来各小节内容的摘要。

Prover(证明者)Verifier(验证者)
检查
构造多点打开多项式

然后证明者与验证者:

  • 使用 的幂次,将 构造为 的线性组合;
  • 构造为 的等价线性组合;并
  • 执行

TODO:撰写提供零知识(zero-knowledge)的协议组件。