a16z:关于数据可用性抽样和 danksharding 的概述及改进建议

互联网 阅读 1544 2023-04-28 17:10:00

Danksharding是一种用于扩展未来版本以太坊链上数据量的方法。这次升级的目标是确保链上的数据在首次发布时就能被归档方访问。它通过一种叫做数据可用性采样(简称 DAS)的技术来实现这一目标。

在这篇文章中,我们将研究 Danksharding 中的数据可用性是如何工作的,并对底层技术提出一些修改建议。特别地,我们探讨了一种可能改进数据恢复的小改动:当前的方案需要 75% 的份额来恢复一个区块,而这项修改可能将此界限降低到 25%。

Protodanksharding

Danksharding 计划在 Protodanksharding(EIP-4844)之后推出。Protodanksharding 将通过引入一种名为“携带数据块交易”的新交易类型,使客户端能够将更多数据写入区块链。最初,这种新交易类型将携带多达四个数据块,每个数据块最大为 128 KB(每个 32 字节的 4096 个字段元素),每个区块可添加多达 512 KB 的额外数据(平均目标为 256 KB),而目前以太坊的区块大小平均为 100 KB。

这些数据块将被处理得不同:

(一)它们只会被存储一段有限的时间,比如 30-60 天;

(二)尽管这些数据是交易数据的一部分,但智能合约无法直接访问这些数据。相反,智能合约只能访问到数据块数据的一个简短承诺,称为 DATAHASH。验证者承担的额外负担似乎是可以接受的:验证者目前存储不到 100 GB 的数据以维护区块链的状态。在 protodanksharding 之后,他们将不得不额外存储 50-100 GB 的数据。

紧接着将推出 Danksharding。它将通过增加每个区块的数据块数量上限,将客户端可用的数据提高 60 倍。区块将从每个区块 0.5 MB 增长到 30 MB。但是,因为验证者不能被迫存储 60 倍的数据,数据将在它们之间分散,使得每个验证者只存储一小部分数据。然而,他们可以通过数据可用性采样(DAS)协议就他们是否共同存储所有数据达成共识。

验证者这些数据块的定价将通过类似于 EIP-1559 的机制进行,并且将以每字节约 1 个数据-gas 为目标。当前最便宜的替代品 Calldata 的价格为每字节 16 gas。但由于有两个不同的费用市场,这些费用无法直接比较。Roll-up 客户端将从这些升级中受益,因为目前超过 90% 的客户端费用用于支付以太坊数据费。

其他项目,如 Celestia 和 EigenLayer,也采用 DAS 技术来增加可用的数据空间。这些设计比完全分片的以太坊网络要简单得多。

数据可用性采样的目标

我们描述这个方案,假设采用了提议者-构建者分离(PBS)设计:

  • 客户端将其携带数据块的交易提交给区块构建者。
  • 区块构建者通过选择 N 个客户端数据块来形成一个区块 B。数据块编号为 i,附带一个由发送它的客户端签名的简短承诺 Ci。让 C =(C1,...,CN)是区块 B 中所有 N 个签名承诺的列表。
  • 区块构建者将他们提议的区块提交给当前的区块提议者(验证者之一)。区块提议者选择其中一个区块并将其原样发布到网络上。

验证者挑战在于确保稍后可以重建区块B。为此,构建者将区块在 V 个验证者的大型网络中进行复制。可以要求每个验证者都存储整个区块,但这被认为太昂贵。相反,区块构建者:

  1. 使用纠删码将区块B编码成更大的区块E;
  2. 将区块E分成V个重叠的片段P1,...,PV;
  3. 将一对(Pi,C)发送给编号为i的验证者。

每个验证者检查它接收到的片段Pi是否与签名承诺列表C一致。区块构建者为验证者提供证明以方便这些检查。

有了这个设置,数据可用性采样方案有两个协议:

  1. 采样协议在采样验证者和验证者集之间运行。采样验证者将列表C作为输入,并从验证者集合中随机请求区块E的元素。如果采样验证者收到了所有请求的元素,并且都与C一致,它将输出成功。
  2. 重构协议在重构代理和验证者集之间运行。重构代理将C作为输入,从验证者集请求区块E的元素。一旦收集到超过75%的元素,且所有元素都有效,重构代理计算并输出区块B。 (我们在下面讨论了一种可能减少重建所需元素数量的方法。)

要求是,如果采样验证者输出成功,那么只要输入超过四分之三的元素,重构代理将输出区块B。只要提供足够的元素,即使提供的元素是对抗性选择的,重构也应该成功。

总之,以下各方参与到Danksharding中:

  • 客户端:将数据块(可以是交易或捆绑包)发送给构建者。
  • 构建者:创建区块并将此区块的片段发送给验证者。
  • 区块提议者(验证者之一):将区块发布到网络。
  • 采样验证者(任何一个验证者):运行采样协议,如果协议输出成功,则对区块头进行签名。
  • 重构代理:在需要时与整个验证者集合进行交互以重构先前发布的区块。如果验证者回应超过四分之三的有效元素,重构将成功。

纠删编码和多项式承诺

接下来我们解释该方案的两个构建模块:纠删编码和多项式承诺。

构建模块#1:纠删编码

纠删编码可以追溯到20世纪60年代,它的产生是为了满足在损耗信道上传输信息的需求。在danksharding中,它被用来防止验证者丢失数据片段。该技术将数据从N个元素扩展到M个元素(M > N),以便可以从扩展数据的任何完整的N个元素中重建原始数据。想象一下,将N个元素(原始数据)编码成M = 2N个元素,并将一个编码元素分给2N个验证者。如果大多数验证者都是诚实的,他们就可以共同重建原始数据。这种技术可以防止任何一半验证者的崩溃故障。通过在下一节中讨论的多项式承诺,可以扩展以防止一半验证者的拜占庭行为。

以下是扩展的详细过程。要将数据从N个字段元素d1、d2、...、dN ∈

免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:一文速览 Lens Protocol 扩展解决方案 Momoka:运作方式、基本构成与特点 下一篇:Binance「闺蜜板块」传闻从何而来?

您可能感兴趣