使用 FullDASv2(使用 getBlobs、mempool 编码以及可能的 RLC)加速 blob 扩展

本文为机器翻译
展示原文

大约一年前,我们发布了基于二维纠错码的FullDAS设计,针对每个插槽32MB数据(256个数据块),包含以下要素:

  1. 用于分散到托管的高效协议,使用

    • 单元级消息传递
    • 基于位图的行/列/单元ID gossip
    • 网络内即时纠错码恢复
    • 行和列之间的交叉转发以实现可用性放大
    • 批量发布以减少或消除发布者的带宽开销
    • 推拉阶段转换以减少或消除P2P网络中的带宽开销,同时保持低延迟并分散负载
  2. 用于从托管中采样的快速轻量级协议,使用

    • 单元级消息传递
    • 本地随机性以提高采样安全性
    • 从托管快速传递样本
    • 使用LossyDAS改进和自适应采样
  3. 基于行和列ID的新对等节点发现结构以消除连接延迟

事实上,设计的几个部分自2022年以来就在开发中,首次在EthereumZurich'2023上展示

[翻译已完成,由于篇幅限制,只显示了部分内容。如需完整翻译,请告知。]

另一个问题是,随机系数分布在整个单元ID空间中,没有部分修复。一个节点需要收集与结构中单元数量相同的(至少)原始单元的线性组合。这就是为什么许多基于线性组合(甚至简单的异或)的编码会限制用于构建组合的原始元素(单元)的数量和范围。可以想象大多数系数被强制为0,只有少数被允许随机选择。这以轻微降低编码效率为代价,实现了部分修复。例如,LT码使用这个技巧来实现高效解码。我们将这个概念称为受限随机线性组合(R-RLC)

同样,我们可以将RLC限制在列(或行),仅使用给定列的单元的线性组合,并将这些组合发送到拥有该列的节点。这将使节点在获得足够的列单元时能够进行恢复,这是一种部分恢复。然而,我们仍然无法在行和列之间进行交叉转发,因为列单元的线性组合对行分布没有帮助。即使解码列后,交叉转发也会受限:解码相同列的节点将拥有行的相同元素,而不是不同的线性组合。

另一个可能想到的选择是使用类似于二维里德-所罗门码的线性组合,具有预定义的扩展因子,并使系数取决于行和列ID……但是通过这种方式,我们基本上是复制了我们的里德-所罗门码所做的事情。

那么我们可以用RLC做什么呢?以下是设计空间中的几个选项及其优缺点。请注意,这仍在进行中,所以不要期待比我们基线(二维里德-所罗门编码)更好的明确解决方案。

基于RLC的设计第1种

我们保持行和列分布不变,使用二维里德-所罗门码,但我们改变采样以获得线性组合。这里的想法是赋予采样节点在恢复情况下做更多事情

优点:
在可能的重建中,单个样本现在更有用。它不仅仅是一个单元,而是给定列(或行)的所有单元的随机线性组合。这意味着我们需要更少的样本来恢复一列或整个块,因为没有两个样本是相同的。构建概率模型很容易(我们留待以后),但更重要的是,欺骗节点变得更加困难。在里德-所罗门情况下,我们可以选择255(或N-K-1)个单元,并分发任意多的副本,重建仍然是不可能的。在RLC情况下,一旦分发了256个NI-RLC副本,解码就是有保证的。

缺点:
我们v1 FulDAS设计中采样快速的原因之一是,托管节点可以在接收到单元时立即转发。这使得采样在托管层面上仅落后于分散1跳延迟。在新设计中,样本只能在节点拥有整个列(或行)的托管权后才能发送。这更慢。

基于RLC的设计第2种

我们保持基于行和列的分布,但使用RLC进行。块构建者向对托管列(或行)感兴趣的节点发送受限且可验证的NI-RLC,这些节点以点对点方式转发,例如使用GossipSub。

然后我们按照第1种设计进行基于RLC的采样。

优点:

  • 我们没有混合使用里德-所罗门和RLC

缺点:

  • 与第1种设计一样,我们减慢了采样速度。
  • 基于RLC的行/列分布意味着我们无法在行和列之间交叉转发,这导致扩散较慢,可用性放大程度降低。

基于RLC的设计第3种

在这种设计中,我们改变了包括验证者和全节点在内的所有人的托管和采样概念。

在我们最初的设计中,节点托管blob数据的整行和整列。然而,为了获得概率保证,情况不必如此。具有可验证的目标依赖随机性的线性组合可以履行相同的角色

这种设计的问题是,应该由谁创建这些组合,只有块构建者或拥有所有blob的节点才有数据来执行此操作。因此我们将失去点对点重分发,转而采用客户端-服务器模型。显然这不是我们想要的。

优点:

  • 我们拥有更强的个性化样本,没有重叠。这比二维里德-所罗门给我们的更强,意味着我们需要从网络收集更少的片段来重组原始数据。

缺点:

  • 我们失去了点对点网络效应,块构建者基本上作为服务器为整个网络提供服务。
  • 节点只有线性组合,但没有人拥有原始数据的实际片段。虽然理论上这已经足够,但实践中拥有数据本身(如系统编码如里德-所罗门)有其优势。

由于没有点对点重分发,这不是一个真正可行的选项,只是通向第4种选项的序曲

基于RLC的设计第4种

我们能否更好地结合基于RLC的概率保证、目标强制线性组合和点对点重分发?

我们认为可以,通过构建受限线性组合(R-RLC)的分层结构,但对此我们计划进行专门的撰写。

当然,存在GossipSub开销,但是正如讨论的推拉技术,可以将这种开销降低2倍甚至更多,且不会显著增加延迟。

那么瓶颈在哪里?

基于单元的模型中,最可能的瓶颈在于每条消息的开销。这包括处理开销,如消息验证和擦除编码,以及网络开销,如报头和消息ID传播。

对于后者,我们提出了使用结构化消息ID和IHAVE/IWANT位图。这仍有待具体说明和实施。

对于处理开销,我们应该审查我们的网络堆栈并改进批量验证等方面。我们可能最终不得不使用多单元消息而不是单一单元作为折中方案。混合模型,即同时使用列级和单元级消息,也正在讨论中。

结论

FullDAS仍在不断发展,设计很可能会改变,但我们已经有一系列技术可以逐步引入,以增量方式扩大blob数量。这些变化中的许多是正交的,能够成倍地提高我们支持的blob数量,使我们能够快速扩展以太坊的blob数量。


来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
收藏
评论