希望通过本文的介绍,让大家对这几种主流的PC方案有更全面的认识,然后在实际的应用过程中,选择最合适的PC方案。
在学习各种零知识证明算法的过程中,经常会看到这样一个 Cryptographic Primitives:Polynomial Commitment(PC)。
先看一下 Commitment 的定义:一个 Committer 提供一个 Public Value,这个 Value 称为 Commitment,是与原始的 Message 绑定(即 Computation Binding),且不暴露 Message(即 Hiding);Committer 需要“Open”这个 Commitment,并发送 Message 给 Verifier 来验证 Commitment 和 Message 的对应关系。
而 PC 可以看成对某个多项式 P 的 Commitment,Committer 可以在不暴露多项式 P 的前提下,通过一个 Proof,来证明多项式在某点 z 的值,满足 P(z) = a。
实现 PC 的方案有很多种:
- KZG10 Commitment :基于pairing group
- IPA Commitment:基于discrete log group