KZG Polynomial Commitment
Table of Contents
1. 多项式承诺
2010 年,Aniket Kate, Gregory M. Zaverucha, Ian Goldberg 在论文 Constant-Size Commitments to Polynomials and Their Applications 中提出了多项式承诺,一般称为 KZG 多项式承诺,或称为 KZG10,有时也称为 Vector Commitment,本文将介绍它。
1.1. Motivation
在 KZG10 多项式承诺提出之前,已经有了其它的承诺方案,比如哈希承诺,Pedersen 承诺等等。为什么还需要多项式承诺呢?论文作者以 Verifiable Secret Sharing 为例介绍了引入多项式承诺的动机。
下面简单地回顾一下 Feldman's Verifiable Secret Sharing (VSS):Dealer 随机选择一个
上面的 VSS 有个缺点:Commitment 有
多项式承诺可以解决上面问题:
- 在承诺的 Commit 阶段, 生成的 Commitment 比较小;
- 在承诺的 Open 阶段, 不需要公开整个多项式,支持 Partial Open。
注:对于 KZG10 多项式承诺的这两个优点,Merkle Tree 都有,也就是说 Merkle Tree 的 Commitment 也比较小,也支持 Partial Open。和 Merkle Tree 相比,KZG10 多项式承诺的优点是 Proof Size 比较小,如表 1 所示。
Commitment Size | Proof Size | |
---|---|---|
Merkle Tree | ||
KZG10 |
2. KZG10 多项式承诺
下面按 Setup/Commit/Open/Verify 四个阶段来介绍 KZG10 多项式承诺。注:本文采用椭圆曲线的记号来描述,而 KZG10 原始论文是采用离散对数记号来描述的。
2.1. Setup
KZG10 多项式承诺依赖于 Pairing:
2.2. Commit
假设 Prover 需要向别人承诺
对这
2.3. Open
2.4. Verify
Verifier 收到 Witness
为什么
2.5. Batch Opening(同时打开多项式的多个点)
在节 2.3 中,只打开了多项式的一个点
首先,把需要打开的这
由于前面介绍的多项式
Prover 计算 Witness 时,其定义不变,为:
Verifier 收到
为什么
2.6. KZG10 多项式承诺的实例
这里有个使用 BLS12-381 曲线演示 KZG10 多项式承诺的例子:https://github.com/qizhou/research/blob/main/poly_commit/bls/poly_commit.py
3. 多项式承诺的应用
KZG10 论文中介绍了 KZG10 多项式承诺的几个应用:
- Verifiable Secret Sharing
- Zero-Knowledge Sets
- Credentials and Content Extraction Signatures
4. 和其它多项式承诺的对比
除了 KZG10 多项式承诺外,还有其它的多项式承诺方案,如:
- KZG10 Commitment: based on pairing group, used in Plonk
- IPA (Inner Product Argument) Commitment: based on discrete log group, used in Bulletproof, Halo2
- FRI Commitment: based on hash function, used in zk-STARKs
- DARKS Commitment: based on unknown order group, used in Supersonic
在 KZG10, IPA, FRI, and DARKS: Analysis Of Polynomial Commitment Schemes 中对上面这些方案进行了对比。
5. 参考
- Aniket Kate, Gregory M. Zaverucha, Ian Goldberg. Constant-Size Commitments to Polynomials and Their Applications. 2010
- Aniket Kate, Gregory M. Zaverucha, Ian Goldberg. Polynomial Commitments. 2010(和上一篇论文类似,不过这篇多了一个附录,附录中有一些证明)
- https://en.wikipedia.org/wiki/Commitment_scheme#KZG_commitment
- KZG10, IPA, FRI, and DARKS: Analysis Of Polynomial Commitment Schemes