LeanDA:设计与基准测试——分片
作者: Long Meng、Benedikt Wagner、George Kadianakis、Francesco Risitano
感谢 Tom Wambsgans、Thomas Coratger、Arantxa Zapico 以及其他人的深刻讨论。
1. 动机
以太坊使用数据可用性采样(DAS)让验证者通过从纠删码编码对象中采样少量随机位置来检查大型 blob 数据的可用性,而不是下载整个负载。随着以太坊迈向后量子安全,当前基于 KZG 多项式承诺的 DAS 协议需要后量子替代方案。
本文首先介绍了一种使用 Reed-Solomon 码、哈希承诺和 LeanVM 证明系统实例化的 Encode + Prove 类型 PQ-DAS 构造,然后给出针对各种输入参数和输出指标的基准测试。最新实现的代码位于:LongMeng-Crypto/PQ-DAS。包含基准测试和安全结果的配套文档可在 Supplementary.md 中获取。
2. Encode + Prove DAS:工作流程
一般来说,DAS 协议由一组用户、一个区块构建者和一组验证者组成。本报告所基准测试的 DAS 协议,是 DAS 基础,第 7 节 解决方案空间中的 Encode + Prove 范式。在该类方案中,构建者使用纠删码对数据进行编码,使用向量承诺方案对码字进行承诺,并使用 SNARK 证明系统证明被承诺的对象是有效码字。采样打开的是码字符号中经过认证的位置,重构则使用已接受的采样值作为纠删码求值。
抽象地讲,此类 DAS 协议的工作流程如下:
-
初始化:所有用户将其数据发送给构建者。
-
承诺:构建者接收用户的数据,首先对数据进行编码并对码字进行承诺,然后生成一个 SNARK 证明,用于证明数据已被编码进码字、码字已被承诺为承诺值。最后,构建者将承诺值、SNARK 证明以及码字(包含所有符号的承诺打开信息)上传到网络。
-
下载承诺:每个验证者从网络下载完整的承诺值和 SNARK 证明。每个验证者检查 SNARK 证明是否能针对承诺值通过验证。如果不能,则立即拒绝。
-
采样与验证:每个验证者采样一组随机索引,并尝试从网络下载相应的码字符号及其打开信息。每个验证者检查收到的打开信息对于承诺值是否有效。如果无效则拒绝;如果全部有效则接受。
直观地说,如果任何一方收集到足够多的已验证符号,就可以重构原始数据,并将缺失的符号重新插入网络,以帮助其他验证者最终接受。
非正式地说,DAS 方案应满足以下安全属性:完备性、(子集)可靠性、一致性和可修复性。关于 DAS 语法和这些属性的正式定义,我们参考 DAS 基础。
其他方案。在本文中,我们不关注其他后量子替代方案,例如 FRIDA 和 ZODA。这是因为它们不满足一个称为可修复性的关键属性,该属性由当前 KZG 解决方案实现,并在整个协议中被隐式假设。非正式地说,该属性确保重构出的符号可以被重新插入网络,并相对于(可能恶意生成的)承诺值进行验证。这确保了各方最终能就数据是否可用达成一致。如果没有该属性,就必须对周围协议进行大幅调整。
3. 具体构造
在介绍了整体工作流程之后,我们现在将更精确地说明所考虑的构造是如何工作的。特别是,我们将定义承诺值是如何计算的,以及使用了哪些码。同时,我们还将介绍在基准测试中会变化的参数。
下图展示了工作流程:

V3 设计图
对于该构造,我们使用 Poseidon 哈希函数,记为 $\mathsf{H}$;我们将纠删码固定为域 $\mathbb{F}$ 上的 Reed-Solomon(RS)码,$\mathbb{F}$ 是 KoalaBear 五次扩展域。对于求值域,我们使用 KoalaBear 基域中的单位根,因此编码由 FFT 给出。
我们选择 Merkle 树承诺作为向量承诺方案,并使用 LeanVM 作为 SNARK 证明系统。下面,我们还描述了使用 LeanVM 证明的是哪个关系。
大致来说,该构造的工作方式与 PeerDAS 类似:先将数据排列成矩阵的行,再通过 Reed-Solomon 码扩展每一行。我们使用 Merkle 根而不是 KZG 承诺,并额外添加一个 SNARK,如上所述。
更精确地说,我们设置行长度 $k$、编码后行长度 $m = 2k$(意味着码率 $\rho = 1/2$)、单元大小 $c$、每行单元数 $\ell = m/c$,以及重构阈值 $t = \lceil k/c \rceil$。每个数据对象被解析为 $n$ 行(现在每一行都被称为一个 blob),每一行被编码为一个 Reed-Solomon 码字,前 $k$ 个符号是系统负载符号。使用这些参数,协议工作流程描述如下:
-
初始化:所有用户将其数据发送给构建者。
-
承诺:构建者按以下步骤操作:
-
将每个数据 blob 编码为一个 RS 码字。我们将 $w_i$ 记为第 $i$ 行码字。
-
将所有码字排列成一个 $n \times m$ 矩阵,其中每一行是一个码字。然后,每一行 $i \in [1, n]$ 上的码字被分割为 $\ell$ 个连续的单元 $W_{i,j}\quad (j \in [1, \ell])$,每个单元包含 $c$ 个域元素。每个单元被哈希为一个摘要 $e_{i,j}=\mathsf{H}(W_{i,j})$。
-
对于每一行 $i$,覆盖系统负载单元的前 $t$ 个单元摘要被哈希为行摘要 $r_i=\mathsf{H}(e_{i,1},\ldots,e_{i,t})$。然后,行摘要通过 Merkle 树承诺为 $\mathsf{root}_{\mathsf{row}}$。该行承诺为每行的系统数据提供了紧凑的绑定。
-
对于每个单元列 $j \in [1, \ldots, \ell]$,摘要 $(e_{1,j},\ldots,e_{n,j})$ 通过 Merkle 树聚合为列根 $C_j$。然后,列根 $(C_1,\ldots,C_\ell)$ 再通过 Merkle 树进一步聚合为 $\mathsf{root}_{\mathsf{col}}$。
-
行根 $\mathsf{root}{\mathsf{row}}$ 和列根 $\mathsf{root}{\mathsf{col}}$ 进一步哈希在一起,形成承诺值 $\mathsf{root}=\mathsf{H}(\mathsf{root}{\mathsf{row}},\mathsf{root}{\mathsf{col}})$。
-
从公共参数和 $\mathsf{root}$ 计算公共 Reed-Solomon 成员资格检查向量 $L$。如何通过 Fiat-Shamir 计算 $L$ 的细节可参考下一节“RS 成员资格检查实例化”。
-
LeanVM 证明 $\pi$ 将这些承诺值绑定到有效的 Reed-Solomon 码字上。具体来说,$\pi \leftarrow \mathsf{LeanVM}.\mathsf{Prove}(\mathsf{pp}_{\mathsf{STARK}}, \mathsf{stmt}, \mathsf{witn}, \mathcal{R})$。
-
公共语句、见证和被证明的关系定义如下:
$$ \begin{aligned}
\mathcal{R}
=
{(\mathsf{stmt},\mathsf{witn}) ;:;&
\mathsf{stmt} = ({r_i}{i \in [1, n]}, L, \mathsf{root}), \ & \ \mathsf{witn}= {W{i, j}}{i \in [1, n], j \in [1, \ell]}, \ & \forall i\in[1,n],j\in[1,\ell],; e{i,j}=\mathsf{H}(W_{i,j}),\ & \forall i\in[1,n],; r_i=\mathsf{H}(e_{i,1},\ldots,e_{i,t}),\ & \mathsf{root}{\mathsf{row}}=\mathsf{Merkle.Com}(r_1,\ldots, r_n), \ & \forall j\in[1,\ell],; C_j=\mathsf{Merkle.Com}(e{1,j}, ..., e_{n,j}),\ & \mathsf{root}{\mathsf{col}}=\mathsf{Merkle.Com}(C_1, ..., C{\ell}),\ & \forall i\in[1,n],; \langle L, w_i\rangle=0 }, \ & \mathsf{root} = \mathsf{H}(\mathsf{root}{\mathsf{row}}, \mathsf{root}{\mathsf{col}}).
\end{aligned} $$
在生成证明之后,构建者为每个 $j \in [1,\ell]$ 生成列单元 $W_{1,j},\ldots,W_{n,j}$ 的 Merkle 认证路径。随后,它上传所有码字单元 $W_{i,j}$、行哈希 $r_i\quad(i \in [1,n])$、列根 $\mathsf{root}_{\mathsf{col}}$、LeanVM 证明 $\pi$,以及所有列单元的 Merkle 打开信息。
-
下载承诺:每个验证者下载行哈希 $r_i\quad(i \in [1,n])$、列根 $\mathsf{root}{\mathsf{col}}$、LeanVM 证明 $\pi$。每个验证者根据行哈希计算 $\mathsf{root}{\mathsf{row}}$,再计算 $\mathsf{root} = \mathsf{H}(\mathsf{root}{\mathsf{row}}, \mathsf{root}{\mathsf{col}})$,根据公共参数和 $\mathsf{root}$ 重新计算向量 $L$,并检查 $\pi$ 能否针对 $\mathsf{root}$ 通过验证。如果不能,则立即拒绝。
-
采样与验证:验证者采样一组单元列索引 $Q$,查询网络并下载采样列 $W_{1,j},\ldots,W_{n,j}$(对于 $j \in Q$)及其到最终 $\mathsf{root}$ 的 Merkle 树路径。每个验证者检查 Merkle 路径是否针对 $\mathsf{root}$ 有效。如果无效则拒绝;如果全部有效则接受。
4. RS 成员资格检查实例化
在我们证明的关系中,最终要检查每一行码字 $w_i$ 是否为有效的 RS 码字。我们通过一个与随机向量 $L$ 的简单内积来实现这一点。
此检查有多种实例化方式。我们研究了三种方法,分别是奇偶校验、通用重心检查,以及针对 RS 码率 $\rho = {1}/{2}$ 的特殊重心检查。所有这些方法的细节详见 RS 成员资格检查。
这三种方法的计算开销非常接近。对于长度为 $m$ 的码字和 $n$ 行,在 Fiat-Shamir 之后,证明之外计算公共向量 $L$ 的成本为 $\mathcal{O}(m)$ 次域运算。在证明内部,RS 成员资格关系是每行一次长度为 $m$ 的内积,因此证明内部总成本为 $\mathcal{O}(nm)$ 次域运算。
在我们的实现中,我们选择了特殊重心检查,因为我们基准测试使用的 RS 码码率为 $\rho=1/2$,码字可以分割为偶数和奇数求值,成员资格简化为单一恒等式 $A_i(p)=B_i(p/\omega)$。与奇偶校验方法相比,它无需对所有高次系数构造随机线性组合;与通用重心检查相比,它无需在选定的系统切分上求值任意 Lagrange 基。因此,它的计算成本略低,LeanVM 工作负载也更低。
请注意,下面的 Fiat-Shamir 变换使用另一个哈希函数 $\mathsf{H}'$,它可以是 SHA256、Keccak 或 Blake 等标准哈希函数。
特殊重心检查
证明外预处理
-
令 $\mathsf{U}={\omega^0,\omega^1,\ldots,\omega^{m-1}}$,其中 $\omega$ 是 $m$ 次本原单位根,并假设 $m=2k=2h$。
-
令 $i$ 表示行索引,$j$ 表示每行上的码字符号索引,$r$ 表示半尺寸域上的索引。
-
定义 $x_r=(\omega^2)^r$,其中 $r\in[0,h-1]$。
-
对于每一行 $w_i$,定义 $A_i(x_r)=w_{i,2r}$ 和 $B_i(x_r)=w_{i,2r+1}$。
-
使用 Fiat-Shamir 变换导出随机挑战 $p \leftarrow\mathsf{H}'({\sf pp},\mathsf{root})$,并令 $q=p/\omega$。
-
定义 $\ell_r(z)=\frac{z^h-1}{h}\cdot\frac{x_r}{z-x_r}$。
-
计算共享的重心检查向量 $L=(L_0,\ldots,L_{m-1})$,其中 $\forall r\in[0,h-1]: L_{2r}=\ell_r(p)$ 且 $L_{2r+1}=-\ell_r(q)$。
证明内的内积
$$ \begin{aligned} \forall i\in[1,n]:\quad \langle L,w_i\rangle &= \sum_{j=0}^{m-1}L_jw_{i,j} = \sum_{r=0}^{h-1}L_{2r}w_{i,2r} +\sum_{r=0}^{h-1}L_{2r+1}w_{i,2r+1} \ &= \sum_{r=0}^{h-1}\ell_r(p)w_{i,2r} -\sum_{r=0}^{h-1}\ell_r(q)w_{i,2r+1} = A_i(p)-B_i(q) \ &= A_i(p)-B_i(p/\omega) = 0. \end{aligned} $$
可靠性直觉
关于可靠性的直觉如下:特殊重心检查通过 Fiat-Shamir 从公共承诺中采样一个公共随机点 $p$,然后导出公共向量 $L=L(p)$。证明只需对每一行证明 $\langle L,w_i\rangle=0$,这等同于检查 $A_i(p)=B_i(p/\omega)$。如果某行 $w_i$ 不是有效的 RS 码字,那么 $A_i(X)-B_i(X/\omega)$ 是一个次数不超过 $k-1$ 的非零多项式,因此随机 $p$ 使其取值为 $0$ 的概率至多为 $(k-1)/|\mathbb{F}|$。对所有 $n$ 行使用联合界,概率至多为 $n(k-1)/|\mathbb{F}|$。
5. 基准测试指标
我们关心的主要指标是完整 DAS 吞吐量:每秒能有多少有用 blob 负载通过构建者到验证者这条接受路径。下面我们解释如何从测量指标计算该吞吐量,这些指标在下表中说明。
使用下表中的参数,完整 DAS 吞吐量计算为
$$ \frac{D_{\mathrm{payload}}}{T_{\mathrm{total}}} $$
其中 $D_{\mathrm{payload}}$ 是有用 blob 负载大小。总工作流包含一个构建者和 $N_{\mathrm{clients}}$ 个验证者:
$$ T_{\mathrm{total}}=T_{\mathrm{builder}}+T_{\mathrm{verifiers}} $$
$B_{\mathrm{upload}}$ 和 $B_{\mathrm{download}}$ 分别表示假定的构建者上传带宽和验证者下载带宽。
构建者端时间为
$$ T_{\mathrm{builder}}=T_{\mathrm{encode+commit}}+T_{\mathrm{preprocess}}+T_{\mathrm{prove}}+T_{\mathrm{open}}+\frac{D_{\mathrm{codeword}}+D_{\mathrm{commit}}+D_{\mathrm{proof}}}{B_{\mathrm{upload}}} $$
验证者端时间写为
$$ T_{\mathrm{verifiers}}=\max_{a\in{1,\ldots,N_{\mathrm{clients}}}}T_{\mathrm{verifier}}^{(a)} $$
其中
$$ T_{\mathrm{verifier}}^{(a)}=T_{\mathrm{verifier\ rebuild}}+T_{\mathrm{verify\ proof}}+T_{\mathrm{verify\ openings}}+\frac{D_{\mathrm{commit}}+D_{\mathrm{proof}}+D_{\mathrm{sample}}}{B_{\mathrm{download}}}. $$
上面的公式是一个乐观的上界模型。它假设各方在协议各阶段之间没有空闲间隙,并且只计算测得的本地计算时间加上模型化的上传/下载时间;它不是实际的网络模拟,也不包含 gossip 延迟、对端调度或 mempool/区块传播效应。上传和下载时间由上传/下载的字节数以及假定的 $B_{\mathrm{upload}}=B_{\mathrm{download}}=50$ Mbps 带宽计算得出(该假设依据 EIP-7870:硬件和带宽建议)。流程终点是验证者接受,即完成证明验证和打开验证之后。
在计算完整 DAS 吞吐量时,我们假设理想并行情况,即所有验证者同时计算并花费几乎相同的时间,因此 $T_{\mathrm{verifiers}}$ 只是一个(最慢的)验证者的时间,而不是所有验证者的总和。
| 指标 | 含义 |
|---|---|
| $D_{\mathrm{payload}}$ | 用户数据的总大小 |
| $D_{\mathrm{codeword}}$ | 码字的总大小 |
| $D_{\mathrm{commit}}$ | 公共承诺值的大小 |
| $D_{\mathrm{proof}}$ | LeanVM 证明大小 |
| $D_{\mathrm{sample}}$ | $\lvert Q \rvert$ 列的采样打开大小 |
| $T_{\mathrm{encode+commit}}$ | 编码数据、计算单元摘要和构建向量承诺的时间 |
| $T_{\mathrm{preprocess}}$ | 计算 RS 成员资格检查向量 $L$ 的时间 |
| $T_{\mathrm{prove}}$ | 生成 LeanVM 证明的时间 |
| $T_{\mathrm{open}}$ | 生成采样打开的时间 |
| $T_{\mathrm{rebuild}}$ | 验证者重构向量 $L$ 的时间 |
| $T_{\mathrm{verify\ proof}}$ | 验证 LeanVM 证明的时间 |
| $T_{\mathrm{verify\ openings}}$ | 验证采样列打开的时间 |
| $T_{\mathrm{reconstruct}}$ | 从已接受的单元重构数据的时间 |
| VM cycles | LeanVM guest 周期数 |
| Poseidon16 calls | 证明关系使用的 Poseidon 宽度 16 调用次数 |
| ExtensionOp calls | RS 成员资格使用的扩展域运算调用次数 |
| LeanVM proving throughput | 有效负载除以 LeanVM 证明时间 |
| Full DAS throughput | 有效负载除以从构建者到验证者接受区块的关键工作流时间 |
备注。 验证者需要打开的采样单元列数(记为 $|Q|$)由期望的子集可靠性级别决定。推导它的公式在补充材料的子集可靠性公式一节中给出。
6. 基准测试结果概览
本报告中的基准测试数据在一台本地 PC 上测得,配置为 Intel Core i9-14900 CPU、32 个逻辑 CPU(16 核,每核 2 线程)、32 GiB 内存、单个 NUMA 节点、36 MiB L3 缓存,并支持 AVX2。基准测试使用该机器上的本地默认 Rayon 线程池。每个基准测试配置都作为一次端到端 PQ-DAS 执行来运行:编码并承诺数据、准备 LeanVM 语句、生成 LeanVM 证明、生成打开信息、验证证明和打开信息,并在启用时重构采样负载。报告的时序值是同一配置下 100 次运行的平均值;大小、安全估计和 VM 计数器对于固定配置是确定性的,因此各报告一次。
基准测试扫描基于上文总结的扩展域构造,变化 blob 大小 $k$、单元大小 $c$、行数 $n$ 和 WHIR 码率。基准测试配置名称使用 bX-cY-rZ-wT 格式:bX 表示 blob 大小倍数,cY 表示以扩展域符号为单位的单元大小,rZ 表示行数 $n$,wT 表示 WHIR 对数逆码率。为便于比较,每次扫描只变动一组参数,固定其余参数:blob 大小扫描固定 $n=14$ 和 $\ell=1024$,同时按比例缩放 $k,m,c$;2x 和 4x 单元大小扫描固定 blob 大小和 $n=14$,同时变化 $c$;2x 和 4x 行数扫描固定 blob 大小和单元大小,同时变化 $n$;WHIR 码率扫描固定两个代表性配置,仅变化 WHIR 对数逆码率。紧凑的参数总结见表 0,原始测量值收集在补充材料的基准测试表部分。
每次扫描中的最佳测量点总结如下,之后是详细要点。
| 扫描 | 最佳配置 | $n$ | $k$ | $m$ | $c$ | $\ell$ | WHIR 对数逆码率 | LeanVM 证明吞吐量 | 完整 DAS 吞吐量 |
|---|---|---|---|---|---|---|---|---|---|
| Blob 大小扫描 | b4-c64-r14-w1 |
14 | 32768 | 65536 | 64 | 1024 | 1 | 907.38 KiB/s | 623.21 KiB/s |
| 2x 单元大小扫描 | b2-c32-r14-w1 |
14 | 16384 | 32768 | 32 | 1024 | 1 | 846.33 KiB/s | 578.60 KiB/s |
| 2x 行数扫描 | b2-c32-r14-w1 |
14 | 16384 | 32768 | 32 | 1024 | 1 | 887.16 KiB/s | 602.28 KiB/s |
| 4x 单元大小扫描 | b4-c32-r14-w1 |
14 | 32768 | 65536 | 32 | 2048 | 1 | 882.29 KiB/s | 609.71 KiB/s |
| 4x 行数扫描 | b4-c32-r6-w1 |
6 | 32768 | 65536 | 32 | 2048 | 1 | 795.89 KiB/s | 538.65 KiB/s |
| WHIR 码率扫描 | b2-c32-r14-w1 |
14 | 16384 | 32768 | 32 | 1024 | 1 | 789.38 KiB/s | 551.19 KiB/s |
主要要点如下:
-
Blob 大小扫描: 在固定 $\ell=1024$ 和 $n=14$ 的情况下,从 1x 到 2x/4x 负载摊薄了固定的证明开销。该扫描中最佳完整 DAS 吞吐量是
b4-c64-r14-w1,为 623.21 KiB/s,而 2x 和 4x 的 LeanVM 证明吞吐量几乎相同,约为 0.9 MiB/s(表 1)。 -
2x 单元大小扫描: 对于 $k=16384$、$m=32768$ 和 $n=14$,$c=32$ 是测得的最佳点,LeanVM 证明吞吐量为 846.33 KiB/s,完整 DAS 吞吐量为 578.60 KiB/s。更大的单元减少了 VM 周期数,但增加了打开大小,并且在此次运行中没有改善完整吞吐量(表 2)。
-
2x 行数扫描: 增加 $n$ 会摊薄固定开销,直到出现填充悬崖。测得的最佳完整 DAS 吞吐量在 $n=14$ 处,为 602.28 KiB/s,而 $n=16$ 和 $n=32$ 显示出急剧的证明时间悬崖(表 3)。
-
4x 单元大小扫描: 在 4x blob 大小下,$c=32$ 是测得的最佳点,LeanVM 证明吞吐量为 882.29 KiB/s,完整 DAS 吞吐量为 609.71 KiB/s。$c=64$ 的点很接近,但 $c=16$ 慢得多,因为它使单元数量翻倍(表 4)。
-
4x 行数扫描: 测得的最佳完整 DAS 吞吐量在 $n=6$ 处,为 538.65 KiB/s。更大的行数不会单调地改善吞吐量,因为在几个边界处证明系统的填充成本占主导,尤其是 $n=16$(表 5)。
-
WHIR 码率扫描: 对于两个测试配置,WHIR 对数逆码率 1 始终快于对数逆码率 2。对数逆码率 2 减小了证明大小,但增加证明时间的程度足以降低完整 DAS 吞吐量(表 6)。
完整的测量值,包括证明大小、样本大小、VM 周期数、Poseidon16 调用次数、ExtensionOp 调用次数和重构时间,请参见补充材料中的基准测试表。
我们还在更强的服务器上运行了相同的基准测试配置,该服务器配备 AMD EPYC 9V74 处理器、32 个逻辑 CPU(16 核,每核 2 线程)、62 GiB 内存,并支持 AVX-512。对于具有代表性的 b4-c64-r14-w1 配置,该服务器将 LeanVM 证明吞吐量从 907.38 KiB/s 提升到 1183.20 KiB/s,提升了 30.4%;完整 DAS 吞吐量从 623.21 KiB/s 提升到 794.57 KiB/s,提升了 27.5%。完整的服务器端基准测试表可在 Supplementary2.md 中获取。
总结与未来方向
总体而言,我们从实验中得出以下总结:
-
主要成果: 后量子 DAS 构造可以使用基于哈希的承诺和 LeanVM 证明来实现,在最强测量配置下约为 0.9 MiB/s,单配置运行偶尔达到约 1 MiB/s。
-
参数选择: 单元大小 $c=32$ 是 2x 配置当前最强的点,$c=32$ 和 $c=64$ 在 4x 配置中都具有竞争力;行数在 $n=12$ 到 $n=14$ 左右,可以避开恰好为较大 2 的幂时出现的巨大证明时间悬崖。
-
主要瓶颈: 证明关系仍主要由单元/行/列承诺的 Poseidon 调用和 RS 成员资格的扩展域运算构成。在 LeanVM 内降低这些成本,是提升吞吐量最明确的路径。
我们还有以下下一步工作方向:
-
分布式 blob 证明:当前版本假设单个构建者接收所有用户数据并生成一个 DAS 承诺。分布式版本会让每个用户/证明者证明自己的行,并把行证明发送给中心聚合器,由聚合器构建最终的聚合承诺/证明。只有当每行的通信量小于直接把该行负载发送给聚合器的通信量时,这样做才划算:如果证明者必须发送其 LeanVM 证明 $\pi_i$、行摘要 $r_i$ 和全部 $\ell$ 个单元摘要,那么需要满足 $|\pi_i|+|r_i|+\ell\cdot|\mathsf{digest}| < D_{\mathrm{blob}}$。假设有 $\ell=1024$ 个单元,在基准测试的 2x blob 大小配置中,$D_{\mathrm{blob}}\approx310$ KiB,每个摘要为 32 字节,因此行证明需要小于约 $310\text{ KiB}-32\text{ KiB}-32\text{ B}\approx278\text{ KiB}$;对于 4x blob 大小配置,相应阈值约为 $620\text{ KiB}-32\text{ KiB}-32\text{ B}\approx588\text{ KiB}$。否则,将原始 blob 发送给聚合器并让其生成普通的中心化证明,会更简单也更便宜。
-
替代纠删码:我们计划用一些可能更高效的码替换 RS 码,例如多重码或线性时间可编码码,并对其效率进行基准测试,以与当前结果进行比较。
-
替代证明系统:我们还计划使用 LeanVM 之外的其他证明系统来实例化 DAS SNARK/STARK 层,或者对 LeanVM 进行一些 DAS 特定的增量修改,并基准测试它们是否能为相同的 DAS 构造带来更好的吞吐量。
- 原文链接: ethresear.ch/t/leanda-de...
- 鸿途知科网 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
鸿途知科网
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。