Halo2 学习笔记——背景资料之Polynomial commitment
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Halo2 学习笔记——背景资料之Polynomial commitment相关的知识,希望对你有一定的参考价值。
1. 引言
本文重点关注基于inner product argument实现的polynomial commitment。
对polynomial
p
(
X
)
∈
F
p
[
X
]
p(X)\\in\\mathbb{F}_p[X]
p(X)∈Fp[X]进行commit,并需可provably evaluate the committed polynomial at arbitrary points。
最直观的解决方案是:
Prover将多项式的系数都发给Verifier,这需要
O
(
n
)
O(n)
O(n) communication。
而借助polynomial commitment scheme,可实现 O ( log n ) O(\\log n) O(logn) communication。
2. Setup
根据参数 d = 2 k d=2^k d=2k,生成common reference string σ = ( G , G ⃗ , H , F p ) \\sigma=(\\mathbb{G},\\vec{G},H,\\mathbb{F}_p) σ=(G,G,H,Fp) :
- G \\mathbb{G} G为a group of prime order p p p。
- G ⃗ ∈ G d \\vec{G}\\in\\mathbb{G}^d G∈Gd为a vector of d d d random group elements。
- H ∈ G H\\in\\mathbb{G} H∈G为a random group element。
- F p \\mathbb{F}_p Fp为the finite field of group p p p。
3. Commit
Pedersen vector commitment
C
o
m
m
i
t
Commit
Commit定义为:
C
o
m
m
i
t
(
σ
,
p
(
X
)
;
r
)
=
<
a
⃗
,
G
⃗
>
+
[
r
]
H
Commit(\\sigma,p(X);r)=<\\vec{a},\\vec{G}>+[r]H
Commit(σ,p(X);r)=<a,G>+[r]H
其中,多项式
p
(
X
)
∈
F
p
[
X
]
p(X)\\in\\mathbb{F}_p[X]
p(X)∈Fp[X],blinding factor
r
∈
F
p
r\\in\\mathbb{F}_p
r∈Fp。每个vector元素
a
i
∈
F
p
a_i\\in\\mathbb{F}_p
ai∈Fp为
p
(
X
)
p(X)
p(X)第
i
i
i项的系数,
p
(
X
)
p(X)
p(X)的最大degree为
d
−
1
d-1
d−1。
4. Open (prover) and OpenVerify (verifier)
改进版的inner product argument用于证明以下关系:
{
(
(
P
,
x
,
v
)
;
(
a
⃗
,
r
)
)
:
P
=
<
a
⃗
,
G
⃗
>
+
[
r
]
H
,
v
=
<
a
⃗
,
b
⃗
>
}
\\{((P,x,v);(\\vec{a},r)):P=<\\vec{a},\\vec{G}>+[r]H, v=<\\vec{a},\\vec{b}>\\}
{((P,x,v);(a,r)):P=<a,G>+[r]H,v=<a,b>}
其中
b
⃗
=
(
1
,
x
,
x
2
,
⋯
,
x
d
−
1
)
\\vec{b}=(1,x,x^2,\\cdots,x^{d-1})
b=(1,x,x2,⋯,xd−1) 包含的为increasing powers of the evaluation point
x
x
x。
即,需要Prover向Verifier证明:
the polynomial contained “inside” the commitment
P
P
P evaluates to
v
v
v at
x
x
x,且该committed polynomial的最大degree为
d
−
1
d-1
d−1。
inner product argument需 k = log 2 d k=\\log_2d k=log2d轮。仅需知道其最后一轮的输出即可,而不需要中间轮的结果,详细可参看Halo论文第3节内容。
在开始证明之前,Verifier需选择一个随机group element U U U,并将 U U U发送给Prover。并从第 k k k轮开始,递减到 1 1 1,初始 a ⃗ ( k ) = a ⃗ , G ⃗ ( k ) = G ⃗ . b ⃗ ( k ) = b ⃗ \\vec{a}^{(k)}=\\vec{a},\\vec{G}^{(k)}=\\vec{G}.\\vec{b}^{(k)}=\\vec{b} a(k)=a,G(k)=G.b(k)=b,在每一轮 j = k , k − 1 , ⋯ , 1 j=k,k-1,\\cdots,1 j=k,k−1,⋯,1:
- Prover计算2个值
L
j
,
R
j
L_j,R_j
Lj,Rj:【其中
l
j
,
r
j
l_j,r_j
lj,rj为random blinding factors。
L
j
,
R
j
L_j,R_j
Lj以上是关于Halo2 学习笔记——背景资料之Polynomial commitment的主要内容,如果未能解决你的问题,请参考以下文章
Halo2 学习笔记——背景资料之PLONKish arithmetization
Halo2学习笔记——背景资料之Elliptic curves