Mina中的多项式承诺方案
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mina中的多项式承诺方案相关的知识,希望对你有一定的参考价值。
1. 引言
Mina系列博客有:
- Mina概览
- Mina的支付流程
- Mina的zkApp
- Mina中的Pasta(Pallas和Vesta)曲线
- Mina中的Schnorr signature
- Mina中的Pickles SNARK
- Mina中的Kimchi SNARK
- Mina Kimchi SNARK 代码解析
- Mina Berkeley QANet测试网zkApp初体验
- Mina中的Poseidon hash
2. 多项式 VS 函数
令
R
R
R为某域,基于域
R
R
R变量为
X
X
X的多项式表示为:
a
0
+
a
1
X
+
a
2
X
2
+
⋯
+
a
d
X
d
a_0+a_1X+a_2X^2+\\cdots +a_dX^d
a0+a1X+a2X2+⋯+adXd
其中
a
i
∈
R
a_i\\in R
ai∈R且
d
d
d为任意自然数。
针对基于
R
R
R的多项式的函数
e
v
a
l
:
R
[
X
]
→
(
R
→
R
)
\\mathsfeval:R[X]\\rightarrow (R\\rightarrow R)
eval:R[X]→(R→R)定义为:【可将
e
v
a
l
\\mathsfeval
eval看成是对多项式采样。】
e
v
a
l
(
a
0
+
a
1
X
+
⋯
+
a
d
X
d
)
=
(
x
:
R
)
↦
a
0
+
a
1
x
+
⋯
+
a
d
x
d
\\mathsfeval(a_0+a_1X+\\cdots+a_dX^d)=(x:R)\\mapsto a_0+a_1x+\\cdots +a_dx^d
eval(a0+a1X+⋯+adXd)=(x:R)↦a0+a1x+⋯+adxd
其中
X
X
X为未赋值的变量名,
e
v
a
l
\\mathsfeval
eval将其映射为field element
x
x
x,整个evaluation函数可看成是系数
<
a
0
,
a
1
,
⋯
,
a
d
>
<a_0,a_1,\\cdots,a_d>
<a0,a1,⋯,ad>与
<
1
,
x
,
⋯
,
x
d
>
<1,x,\\cdots, x^d>
<1,x,⋯,xd>的inner product。
注意,多项式与函数是不同的。多项式是一组系数列表,基于某些域值,对于多项式
p
1
,
p
2
p1,p2
p1,p2,会存在
e
v
a
l
(
p
1
)
=
e
v
a
l
(
p
2
)
\\mathsfeval(p1)=\\mathsfeval(p2)
eval(p1)=eval(p2),但
p
1
≠
p
2
p1\\neq p2
p1=p2的情况。
如,以
F
2
[
X
]
\\mathbbF_2[X]
F2[X]为域的多项式
X
X
X和
X
2
X^2
X2,二者可映射为相同的函数
F
2
→
F
2
\\mathbbF_2\\rightarrow \\mathbbF_2
F2→F2(即意味着对
x
∈
R
=
F
2
=
0
,
1
x\\in R=\\mathbbF_2=\\0,1\\
x∈R=F2=0,1 有
x
=
x
2
x=x^2
x=x2),但是二者是不同的多项式。
使用多项式的原因在于:
- 1)将关于一组域值的statement 转换为 关于多项式的statement,从而可构建zkSNARKs。
- 2)基于多项式的特定运算效率更高。
对于函数
φ
:
A
→
F
\\varphi: A\\rightarrow F
φ:A→F,
A
A
A为数组,长度为
∣
A
∣
|A|
∣A∣,需基于
∀
x
∈
A
,
(
x
,
φ
(
x
)
)
\\forall x\\in A, (x,\\varphi(x))
∀x∈A,(x,φ(x))进行插值构建多项式。
对于每一个
x
i
∈
A
x_i\\in A
xi∈A,可构建多项式:
f
i
(
X
)
=
φ
(
x
i
)
X
=
x
i
0
X
≠
x
i
f_i(X) =\\left\\\\beginmatrix \\varphi(x_i)& X=x_i\\\\ 0 & X\\neq x_i \\endmatrix\\right.
fi(X)=φ(xi)0X=xiX=xi
最终的多项式:
f
(
X
)
=
∑
i
f
i
(
X
)
f(X)=\\sum_if_i(X)
f(X)=∑ifi(X)。
相应的vanishing 多项式表示为:
v
S
(
X
)
=
(
X
−
x
0
)
(
X
−
x
1
)
⋯
(
X
−
x
d
)
v_S(X)=(X-x_0)(X-x_1)\\cdots(X-x_d)
vS(X)=(X−x0)(X−x1)⋯(X−xd)。
同时有
i
n
t
e
r
p
A
(
e
v
a
l
A
(
f
)
)
=
f
\\mathsfinterp_A(\\mathsfeval_A(f))=f
interpA(evalA(f))=f,即对多项式
f
f
f基于
A
A
A采样后,再插值获得的多项式仍然是
f
f
f。(多项式degree为
d
d
d,不同的采样点数为
d
+
1
d+1
d+1。)【
i
n
t
e
r
p
以上是关于Mina中的多项式承诺方案的主要内容,如果未能解决你的问题,请参考以下文章 多项式承诺Polynomial commitment方案汇总