区块链 区块链技术 比特币公众号手机端

KZG变体系列:第五部分,Mercury多线性承诺——ZK/SEC季刊

Variants of KZG · 第 5 部分,共 5 部分

KZG 变体:第五部分,使用 Mercury 的多线性承诺

Variants of KZG

  1. 1 KZG 变体:第一部分,单变量
  2. 2 KZG 变体:第二部分,使用 PST 的多线性承诺
  3. 3 KZG 变体:第三部分,使用 Zeromorph 的多线性承诺
  4. 4 KZG 变体:第四部分,使用 Gemini 的多线性承诺
  5. 5 KZG 变体:第五部分,使用 Mercury 的多线性承诺

KZG-V Header

在第四部分中,我们研究了 Gemini,它逐个变量地递归约束多线性多项式。证明者需要对每个中间部分求值都进行承诺,这导致打开证明的大小随变量数量增长。在本系列的最后一部分,我们研究 Mercury,它通过一次折叠一半变量来改进这一方法。

记号。 我们沿用第四部分的记号。单变量多项式用戴帽符号表示,多线性多项式则不带帽。我们用 (\mathcal{U}_m) 表示 (m) 元多线性多项式的单变量化映射。

为了理解 Mercury 是如何执行这种大折叠的,我们先来看一看如何将多线性多项式的求值组织成块。

将求值组织成块

为简单起见,假设 (n=2t),定义 (N=2^n) 和 (T=2^t=\sqrt{N})。我们将求值点分成两半:

[ \vec{u}=(\vec{u}_L,\vec{u}_R),\quad \vec{u}L=(u_0,\ldots,u{t-1}),\quad \vec{u}R=(u_t,\ldots,u{n-1}). ]

多线性多项式 (f) 由它在布尔超立方体上的 (N) 个求值来表示。我们用两个索引 (i,j\in{0,\ldots,T-1}) 来索引这个求值向量,如下所示:

[ f_{i,j}=f(\vec{i},\vec{j}), ]

其中 (\vec{i},\vec{j}\in{0,1}^t) 分别是 (i) 和 (j) 的 (t) 位二进制表示。第一个索引表示对 (\vec{X}L=(X_0,\ldots,X{t-1})) 的赋值,而第二个索引表示对 (\vec{X}R=(X_t,\ldots,X{n-1})) 的赋值。

我们将第一个索引视为最低有效索引。因此,求值向量的顺序为

[ (f_{0,0},f_{1,0},\ldots,f_{T-1,0},f_{0,1},\ldots,f_{T-1,1},\ldots,f_{0,T-1},\ldots,f_{T-1,T-1}). ]

对于每个固定的 (i),定义向量 (\vec{f}i=(f{i,0},\ldots,f_{i,T-1})) 及其对应的单变量多项式 (\hat{f}_i),如下所示。

[ \hat{f}i(X)=\sum{j=0}^{T-1}f_{i,j}\cdot X^j ]

由于第一个索引是最低有效位,求值 (f_{i,j}) 在单变量化后成为 (X^{i+jT}) 的系数。因此,

[ \hat{f}(X)=\mathcal{U}n(f)(X)=\sum{i=0}^{T-1}\sum_{j=0}^{T-1}f_{i,j}\cdot X^{i+jT}=\sum_{i=0}^{T-1}X^i\cdot \hat{f}_i(X^T). \tag{1} ]

有了这种块表示,我们现在可以看出 Mercury 是如何把 Gemini 的单变量折叠扩展为一次折叠多个变量的。

从 Gemini 到 Mercury

现在回想一下,Gemini(第四部分)按第一个变量 (X_0) 拆分多线性多项式,如下所示:

[ f(X_0,X_1,\ldots,X_{n-1})=(1-X_0)\cdot f(0,X_1,\ldots,X_{n-1})+X_0\cdot f(1,X_1,\ldots,X_{n-1}). ]

之所以分成两项,是因为 (X_0) 可以为 (0) 或 (1)。Mercury 则将前 (t) 个变量分组,并在这 (T=2^t) 个布尔赋值上拆分多项式。对应的 (T) 路分解为

[ f(\vec{X}_L,\vec{X}R)=\sum{\vec{b}\in{0,1}^t}\mathrm{eq}(\vec{b},\vec{X}_L)\cdot f(\vec{b},\vec{X}_R) ]

其中,对于 (\vec{a},\vec{b}\in\mathbb{F}^t),

[ \mathrm{eq}(\vec{a},\vec{b})=\prod_{k=0}^{t-1}\bigl(a_kb_k+(1-a_k)(1-b_k)\bigr). ]

这里,(\vec{X}L=(X_0,\ldots,X{t-1})) 表示前 (t) 个变量,而 (\vec{X}R=(X_t,\ldots,X{n-1})) 表示其余变量。这是前 (t) 个变量上的多线性插值表达式。当 (t=1) 时,两个等式权重分别为 (1-X_0) 和 (X_0),因此该表达式就退化为 Gemini 的两路分解。

Mercury 通过计算部分求值来折叠前 (t) 个变量:

[ h(\vec{X}_R)=f(\vec{u}_L,\vec{X}R)=\sum{\vec{b}\in{0,1}^t}\mathrm{eq}(\vec{b},\vec{u}_L)\cdot f(\vec{b},\vec{X}_R). ]

验证者必须利用上述恒等式来检查部分求值 (h) 与 (f) 是否一致。但上述恒等式是关于多线性多项式的,而我们希望使用单变量 KZG。因此,我们通过应用单变量化映射,把上述多线性恒等式的一致性检查归约为相应单变量恒等式的一致性检查。由于 (\mathcal{U}_t) 是线性的,

[ \hat{h}(X)=\mathcal{U}t(h)(X)=\sum{\vec{b}\in{0,1}^t}\mathrm{eq}(\vec{b},\vec{u}_L)\cdot \mathcal{U}_t\bigl(f(\vec{b},\vec{X}_R)\bigr)(X). \tag{2} ]

现在用 (i\in{0,\ldots,T-1}) 为每个 (\vec{b}\in{0,1}^t) 编号,其中 (\vec{b}=\vec{i})。根据上一节中块多项式 (\hat{f}_i) 的定义,我们有:

[ \mathcal{U}_t\bigl(f(\vec{i},\vec{X}R)\bigr)(X)=\sum{j=0}^{T-1}f(\vec{i},\vec{j})\cdot X^j=\hat{f}_i(X). ]

将上述表达式代入方程 (2),得到以下单变量恒等式:

[ \hat{h}(X)=\sum_{i=0}^{T-1}\mathrm{eq}(\vec{i},\vec{u}_L)\cdot \hat{f}_i(X). ]

理想情况下,验证者会在随机点 (\alpha\in\mathbb{F}) 处检查上述恒等式。如果该恒等式不成立,那么根据 Schwartz-Zippel 引理,它在随机点 (\alpha) 处成立的概率很小。

[ \hat{h}(\alpha)\stackrel{?}{=}\sum_{i=0}^{T-1}\mathrm{eq}(\vec{i},\vec{u}_L)\cdot \hat{f}_i(\alpha). \tag{3} ]

然而,验证者只持有 (\hat{f})(多线性 (f) 的单变量化)的承诺,并没有块多项式 (\hat{f}_i) 的承诺,因此无法检查上述恒等式。一种朴素的做法需要证明者发送 (\hat{f}_i) 的 (T) 个承诺以及它们在 (\alpha) 处声称的求值,这会使证明大小依赖于 (T)。

我们能否将所有 (\hat{f}_i(\alpha)) 值打包到一个与 (\hat{f}(X)) 直接相关的多项式中?

(\hat{f}) 的块分解(来自上一节的方程 (1))提示了如何做到这一点:

[ \hat{f}(X)=\sum_{i=0}^{T-1}X^i\cdot \hat{f}_i(X^T). ]

在模 (X^T-\alpha) 下运算,等价于把每一处出现的 (X^T) 都替换为 (\alpha)。因此,

[ \hat{f}(X)\equiv \sum_{i=0}^{T-1}X^i\cdot \hat{f}_i(\alpha)\pmod{X^T-\alpha}. ]

于是,这次除法得到的余数是一个次数小于 (T) 的多项式 (\hat{g}(X)):

[ \hat{g}(X)=\hat{f}(X)\bmod (X^T-\alpha)=\sum_{i=0}^{T-1}\hat{f}_i(\alpha)\cdot X^i ]

它的系数恰好就是 (\hat{f}_i(\alpha))。于是,证明者用 ((X^T-\alpha)) 去除 (\hat{f}(X)),得到多项式 (\hat{q},\hat{g}),满足:

[ \hat{f}(X)=(X^T-\alpha)\cdot \hat{q}(X)+\hat{g}(X),\quad \deg(\hat{g})<T. ]

现在,单变量化编码为 (\hat{g}) 的 (t) 元多线性多项式 (g) 为:

[ g(\vec{X})=\sum_{i=0}^{T-1}\mathrm{eq}(\vec{i},\vec{X})\cdot \hat{f}_i(\alpha). ]

(g) 在 (\vec{u}_L) 处的求值正好是 (\hat{h}(\alpha)),即:

[ g(\vec{u}L)=\sum{i=0}^{T-1}\mathrm{eq}(\vec{i},\vec{u}_L)\hat{f}_i(\alpha)=\hat{h}(\alpha). ]

因此,我们把表达式 (3) 中的检查归约为下面两个检查:

[ \hat{h}(\alpha)\stackrel{?}{=}\sum_{i=0}^{T-1}\mathrm{eq}(\vec{i},\vec{u}_L)\cdot \hat{f}_i(\alpha) \implies \begin{cases} g(\vec{u}_L)\stackrel{?}{=}\hat{h}(\alpha)\ \hat{f}(X)\stackrel{?}{=}(X^T-\alpha)\cdot \hat{q}(X)+\hat{g}(X) \end{cases} ]

然而,仅凭上述检查还不够。验证者还必须检查 (\deg(\hat{g})<T),因为如果没有这个次数检查,商 (\hat{q}) 和余数 (\hat{g}) 就不是唯一的。(\deg(\hat{g})<T) 的检查使得 (\hat{g}) 成为除以 (X^T-\alpha) 后的唯一余数,并确保它的 (T) 个系数编码的是一个 (t) 元多线性多项式 (g)。

到目前为止,我们只检查了部分求值 (h) 与多线性多项式 (f) 之间的一致性。但我们的目标是检查完整求值 (f(\vec{u}_L,\vec{u}_R)=v)。利用部分求值表达式 (h(\vec{X}_R)=f(\vec{u}_L,\vec{X}_R)),并令 (\vec{X}_R=\vec{u}_R),可得

[ h(\vec{u}_R)=f(\vec{u}_L,\vec{u}_R)=v. ]

因此,验证者还必须检查部分求值 (h) 是否求值得到原始声称值 (v),即:

[ h(\vec{u}_R)\stackrel{?}{=}v. ]

总结一下归约的链条:原始声明 (f(\vec{u})\stackrel{?}{=}v) 已被归约为以下检查:

[ f(\vec{u})\stackrel{?}{=}v \implies \begin{cases} g(\vec{u}_L)\stackrel{?}{=}\hat{h}(\alpha)\text{ and }h(\vec{u}_R)\stackrel{?}{=}v\ \deg(\hat{g})<T\ \hat{f}(X)\stackrel{?}{=}(X^T-\alpha)\cdot \hat{q}(X)+\hat{g}(X) \end{cases} ]

  • 两个多线性求值检查,它们被批量处理,并通过内积协议来证明。
    • (g(\vec{u}_L)\stackrel{?}{=}\hat{h}(\alpha)) 将部分求值 (h) 与余数 (g) 联系起来。
    • (h(\vec{u}_R)\stackrel{?}{=}v) 检查部分求值 (h) 与声称值 (v) 是否一致。
  • (\deg(\hat{g})<T) 确保 (\hat{g}) 是模 ((X^T-\alpha)) 的有效余数。
  • (\hat{f}(X)\stackrel{?}{=}(X^T-\alpha)\cdot \hat{q}(X)+\hat{g}(X)) 检查 (\hat{g}) 与 (\hat{f}) 之间的一致性。证明者先对 (\hat{q}) 和 (\hat{g}) 进行承诺,然后验证者采样一个随机点 (z),证明者使用 KZG 打开证明来证明下面的等式:

[ \hat{f}(z)\stackrel{?}{=}(z^T-\alpha)\cdot \hat{q}(z)+\hat{g}(z) ]

现在还缺两块拼图:证明多线性求值的内积协议,以及次数检查协议。接下来我们逐一研究。

作为内积的多线性求值

考虑一个 (t) 元多线性多项式 (g)。我们可以用等式函数把 (g) 表示如下:

[ g(\vec{X})=\sum_{\vec{b}\in{0,1}^t}\mathrm{eq}(\vec{b},\vec{X})\cdot g(\vec{b}). ]

对于 (\vec{u}\in\mathbb{F}^t),要证明的是 (g(\vec{u})=v)。Mercury 把这个多线性求值声明归约为两个单变量多项式系数之间的内积。

下面是 (g) 的单变量化:(g) 在布尔超立方体上的 (T=2^t) 个求值,正好就是单变量多项式 (\hat{g}) 的系数。

[ \hat{g}(X)=\sum_{i=0}^{T-1}g(\vec{i})\cdot X^i ]

我们还可以将等式函数的求值编码为多项式的系数:

[ \hat{P}{\vec{u}}(X)=\sum{i=0}^{T-1}\mathrm{eq}(\vec{i},\vec{u})\cdot X^i=\prod_{k=0}^{t-1}\bigl((1-u_k)+u_kX^{2^k}\bigr) ]

借助乘积形式,验证者只需 (O(t)=O(n)) 次域运算即可计算出 (\hat{P}_{\vec{u}}) 的求值。

于是,我们可以把求值声明 (g(\vec{u})=v) 归约为单变量多项式 (\hat{P}_{\vec{u}}) 与 (\hat{g}) 的系数内积,如下所示:

[ \langle \hat{P}{\vec{u}},\hat{g}\rangle=\sum{i=0}^{T-1}\mathrm{eq}(\vec{i},\vec{u})\cdot g(\vec{i})=g(\vec{u})=v. ]

Mercury 有一种证明此类内积的优雅方法。注意,(\langle \hat{P}_{\vec{u}},\hat{g}\rangle) 正是下面这个函数的常数项:

[ \hat{P}_{\vec{u}}(X)\cdot \hat{g}(1/X) ]

因此,声明 (\langle \hat{P}_{\vec{u}},\hat{g}\rangle=v) 等价于存在多项式 (\hat{S}_1) 和 (\hat{S}_2),使得

[ \hat{P}_{\vec{u}}(X)\cdot \hat{g}(1/X)=1/X\cdot \hat{S}_1(1/X)+v+X\cdot \hat{S}_2(X). ]

其中 (\hat{S}_1) 容纳负次数项,(\hat{S}_2) 容纳正次数项。直接检查这个恒等式需要对 (\hat{S}_1) 和 (\hat{S}_2) 都做承诺。Mercury 则对这个表达式进行对称化:

[ \hat{P}{\vec{u}}(X)\cdot \hat{g}(1/X)+\hat{P}{\vec{u}}(1/X)\cdot \hat{g}(X)=2v+X\cdot \hat{S}(X)+1/X\cdot \hat{S}(1/X). ]

这样,证明者只需要承诺一个多项式 (\hat{S}),内积声明便归约为在某个随机点处检查上述恒等式。

现在,把这一观察应用到上一节的两个多线性求值声明上:

[ g(\vec{u}_L)\stackrel{?}{=}\hat{h}(\alpha)\quad\text{and}\quad h(\vec{u}_R)\stackrel{?}{=}v ]

我们首先将这些多线性求值声明归约为以下内积声明:

[ \langle \hat{g},\hat{P}_{\vec{u}L}\rangle\stackrel{?}{=}\hat{h}(\alpha) \quad\text{and}\quad \langle \hat{h},\hat{P}{\vec{u}_R}\rangle\stackrel{?}{=}v ]

Mercury 用随机挑战 (\gamma\in\mathbb{F}) 把这两个内积声明批量处理。证明者构造一个多项式 (\hat{S}),满足

[ \begin{aligned} &\hat{g}(X)\cdot \hat{P}_{\vec{u}L}(1/X)+\hat{g}(1/X)\cdot \hat{P}{\vec{u}L}(X) \ &+\gamma\cdot\bigl(\hat{h}(X)\cdot \hat{P}{\vec{u}R}(1/X)+\hat{h}(1/X)\cdot \hat{P}{\vec{u}_R}(X)\bigr) \ &=2(\hat{h}(\alpha)+\gamma\cdot v)+X\cdot \hat{S}(X)+1/X\cdot \hat{S}(1/X). \end{aligned} ]

至此,两个多线性求值声明被归约为对上述恒等式的检查。最后,验证者在随机非零点 (z\in\mathbb{F}^*) 处检查该恒等式。

剩下的最后一块拼图是次数检查协议,它用于确保 (\deg(\hat{g})<T)。我们接下来就研究它。

次数检查协议

Mercury 所用的次数检查协议,与我们在第三部分中为 Zeromorph 研究的次数检查协议有所不同。

目标是证明 (\deg(\hat{g})<T)。证明者定义

[ \hat{D}(X)=X^{T-1}\cdot \hat{g}(1/X). ]

为了理解它为什么能强制次数界限,把 (\hat{g}(X)=\sum_{i=0}^{d}g_iX^i) 代入:

[ \hat{D}(X)=X^{T-1}\hat{g}(1/X)=\sum_{i=0}^{d}g_iX^{T-1-i}. ]

若 (d<T),所有指数都非负,因此 (\hat{D}) 是一个多项式;若 (d\ge T),项 (g_dX^{T-1-d}) 的指数为负,(\hat{D}) 就不再是多项式。不过,恶意的证明者仍可以承诺一个无关的多项式 (\hat{D}),因此验证者还必须通过随机非零点 (z\in\mathbb{F}^*) 处的如下恒等式,把已承诺的 (\hat{D}) 绑定到 (X^{T-1}\hat{g}(1/X)):

[ \hat{D}(z)\stackrel{?}{=}z^{T-1}\cdot \hat{g}(1/z) ]

至此,描述完整端到端协议所需的全部要素都已就绪。

端到端协议

公共输入为原始单变量 KZG 承诺 (C=[\hat{f}(\tau)]_1)、求值点 (\vec{u}=(\vec{u}_L,\vec{u}_R)) 以及声称的求值 (v)。证明者的见证(witness)是多线性多项式 (f)。

  1. 承诺大折叠。 证明者计算

[ \hat{h}(X)=\sum_{i=0}^{T-1}\mathrm{eq}(\vec{i},\vec{u}_L)\cdot \hat{f}_i(X) ]

并将其单变量 KZG 承诺 (C_h=[\hat{h}(\tau)]_1) 发送给验证者。

  1. 承诺商和余数。 验证者采样 (\alpha\xleftarrow{$}\mathbb{F}) 并将其发送给证明者。证明者计算

[ \hat{f}(X)=(X^T-\alpha)\cdot \hat{q}(X)+\hat{g}(X),\quad \deg(\hat{g})<T ]

并发送 (C_q=[\hat{q}(\tau)]_1) 和 (C_g=[\hat{g}(\tau)]_1)。

  1. 承诺批量内积证明和次数检查。 验证者采样一个随机批量挑战 (\gamma\xleftarrow{$}\mathbb{F})。证明者计算满足以下条件的 (\hat{S})

[ \begin{aligned} &\hat{g}(X)\cdot \hat{P}_{\vec{u}L}(1/X)+\hat{g}(1/X)\cdot \hat{P}{\vec{u}L}(X) \ &+\gamma\cdot\bigl(\hat{h}(X)\cdot \hat{P}{\vec{u}R}(1/X)+\hat{h}(1/X)\cdot \hat{P}{\vec{u}_R}(X)\bigr) \ &=2(\hat{h}(\alpha)+\gamma\cdot v)+X\cdot \hat{S}(X)+1/X\cdot \hat{S}(1/X) \end{aligned} ]

以及满足如下条件的 (\hat{D})

[ \hat{D}(X)=X^{T-1}\hat{g}(1/X). ]

证明者发送承诺 (C_S=[\hat{S}(\tau)]_1) 和 (C_D=[\hat{D}(\tau)]_1)。

  1. 打开已承诺的多项式。 验证者采样一个随机非零挑战 (z\xleftarrow{$}\mathbb{F}^*)。证明者发送

[ g_z=\hat{g}(z),\quad \bar{g}_z=\hat{g}(1/z),\quad h_z=\hat{h}(z),\quad \bar{h}_z=\hat{h}(1/z),\quad S_z=\hat{S}(z),\quad \bar{S}_z=\hat{S}(1/z). ]

由这些值,验证者计算 (\hat{D}) 在 (z) 处的期望求值:

[ D_z=z^{T-1}\bar{g}_z, ]

并从批量内积恒等式恢复出 (\hat{h}) 在 (\alpha) 处的期望求值:

[ \begin{aligned} h_\alpha=\frac{1}{2}\bigl(&g_z\hat{P}_{\vec{u}_L}(1/z)+\bar{g}z\hat{P}{\vec{u}L}(z) \ &+\gamma\bigl(h_z\hat{P}{\vec{u}_R}(1/z)+\bar{h}z\hat{P}{\vec{u}_R}(z)-2v\bigr)-zS_z-(1/z)\bar{S}_z\bigr). \end{aligned} ]

  1. 证明除法恒等式。 证明者计算

[ \hat{H}_z(X)=\frac{\hat{f}(X)-(z^T-\alpha)\hat{q}(X)-g_z}{X-z} ]

并发送 KZG 打开证明 (\pi_z=[\hat{H}_z(\tau)]_1)。验证者检查

[ e\bigl(C-(z^T-\alpha)C_q-g_z[1]_1,[1]_2\bigr)\stackrel{?}{=}e\bigl(\pi_z,[\tau]_2-z[1]_2\bigr). ]

这样就检查了随机点 (z) 处的除法恒等式。

  1. 证明其余求值。 证明者发送一个批量单变量 KZG 证明 (\pi_{\mathrm{batch}}),用于

[ \hat{g}(z)=g_z,\quad \hat{g}(1/z)=\bar{g}_z,\quad \hat{h}(z)=h_z,\quad \hat{h}(1/z)=\bar{h}_z,\quad \hat{S}(z)=S_z,\quad \hat{S}(1/z)=\bar{S}z,\quad \hat{D}(z)=D_z,\quad \hat{h}(\alpha)=h\alpha. ]

这些声明可以用第一部分的批量单变量 KZG 打开协议组合起来。如果除法检查和批量打开证明都有效,验证者便接受。

协议的复杂度

对于一个 (n) 元多线性多项式,若它有 (N=2^n) 个系数且 (T=2^{n/2}=\sqrt{N}),主要开销如下:

  • 证明大小: 证明者发送的承诺、求值和 KZG 打开证明数量均为常数,与变量个数 (n) 无关。按照 Mercury 论文的约定(一个群元素用两个域元素编码),证明大小为 (O(1)) 个域元素。
  • 证明者开销: 证明者的主要开销包括:
    • 计算商 (\hat{q}) 和余数 (\hat{g}) 需要 (O(N)=O(2^n)) 次域运算。
    • 计算多项式 (\hat{H}_z) 的承诺:(\hat{H}_z) 最多有 (N) 个系数,因此计算承诺 (\pi_z) 最多需要 (N=2^n) 次群标量乘法。
  • 验证者开销: 验证者用 (O(n)) 次域运算计算 (\hat{P}_{\vec{u}L}) 和 (\hat{P}{\vec{u}_R}) 的求值,以及所需的 (z) 的各次幂。由于承诺数量为常数,验证者只需执行 (O(1)) 次群标量乘法和两次配对运算。

打开开销可以总结如下:

组件 开销
证明大小 (O(1)) 个域元素
证明者工作量 (O(2^n)) 次域运算,(O(2^n)) 次群标量乘法
验证者工作量 (O(n)) 次域运算,(O(1)) 次群标量乘法,两次配对运算

结论

作为本系列的最后一篇,这篇文章为整个五部分系列画上了句号。我们研究了 KZG 承诺如何通过基于商和基于折叠的方法,从单变量多项式扩展到多线性多项式。

Overview of the Variants of KZG series

  • 第一部分介绍了单变量 KZG 承诺,包括其批量变体和隐藏变体。
  • 第二部分通过 PST 将 KZG 扩展到多线性多项式;PST 使用专门的多变量 setup 来检查多线性商恒等式。
  • 第三部分研究了 Zeromorph,它将多线性商恒等式编码为单变量恒等式,并批量处理所需的次数检查。
  • 第四部分介绍了 Gemini,它每次递归地折叠一个变量,并用单变量 KZG 打开来验证这些折叠。
  • 第五部分研究了 Mercury,它用一个大的折叠取代了 Gemini 的一连串单变量折叠,并把打开证明的大小缩减为常数。

总的来说,这些构造展示了多线性 KZG 承诺的两大类方法,以及它们在 setup、证明大小、证明者工作量和验证者工作量方面所做的不同权衡。

  • 原文链接: blog.zksecurity.xyz/post...
  • 鸿途知科网 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门