我们可以用一个KZG证明来表示一组数据[D₁...Dₙ],该证明是从数据派生出的多项式P的证明:具体而言,多项式P满足P(w) = D₁,P(w²) = D₂...P(wⁿ) = Dₙ。这里的w是一个“单位根”,满足wᴺ = 1,其中N是“评估域”的大小(所有操作都在一个有限域上进行)。
要对P进行“承诺”,我们创建一个椭圆曲线点com(P) = P₀ * G + P₁ * S₁ +...+ Pₖ * Sₖ。在这里:
9 w9 o' V; E; \6 xG是曲线的生成点。
Pᵢ是多项式P的i次系数。
Sᵢ是“可信设置”中的第i个点。
# r1 k) U! R! c. V B' Q; ~% X
要证明P(z) = a,我们创建一个“商(quotient)多项式”Q = (P - a) / (X - z),并创建一个对它的承诺com(Q)。只有在P(z)实际等于a时才能创建这样的多项式。
要验证一个证明,我们检查方程式Q * (X - z) = P - a,通过对证明com(Q)和多项式承诺com(P)进行椭圆曲线检查,我们检查e(com(Q), com(X - z)) ?= e(com(P) - com(a), com(1))。
# e9 H, @8 j) X! G$ W2 h. p