SubnetDAS - 一种中间 DAS 方法 - 分片

本文提出了一种名为 SubnetDAS 的中间数据可用性抽样(DAS)方案,旨在弥合 EIP-4844 和 Danksharding 之间的差距。该方案基于子网,每个样本对应一个子网,节点通过连接到这些子网来获取样本。SubnetDAS 牺牲了查询的不可链接性,但旨在提供更高的可扩展性,同时不影响整个网络的活跃性或增加节点需求。该方案还讨论了安全性分析以及吞吐量与带宽之间的权衡。

SubnetDAS – 一种中间的 DAS 方法

作者: Francesco Ansgar感谢 Mark Simkin 的讨论和安全分析方面的帮助,以及 EF 研究团队的各位成员的反馈。

这是一个基于子网的 DAS 提案,旨在弥合 EIP-4844 和完整 Danksharding 之间的差距,很像 peerDAS。我们提出了一种 DAS 构造,其中每个样本都有一个子网,节点通过连接到这些子网来获取它们的样本。我们认为,与 EIP-4844 相比,这可以为我们提供更多的扩展性,而不会危及整个网络的活跃性或增加节点需求。

为此,我们确实牺牲了一些东西,即 查询的不可链接性,或者更确切地说,是在此 DAS 框架内稍后解决此问题的可能性。要检索样本,节点必须加入相应的子网,并且在尝试这样做时,它会暴露其查询。这使得攻击者只能发布那些样本,从而使其确信数据是可用的而实际上并非如此。查询的可链接性是所有 DAS 构造都面临的问题,但特别难看出如何在基于子网的构造中解决它。它不会影响整个链的可用性保证,因此也不会影响 Rollup 的安全性,但它确实削弱了完整节点针对双重支付的安全性。我们将在后面详细讨论此问题,并认为这种削弱并不像看起来那么重要,并且对于中间 DAS 解决方案来说,这可能是一个明智的权衡。

为什么选择 SubnetDAS

我们认为子网是中间解决方案的主要网络结构的一个合理的候选者,原因如下:

  • 很少有网络未知因素:子网是以太坊网络基础设施中一个经过尝试和测试的部分,因为自信标链的第一天起就使用了证明子网。新颖之处在于使用了更多的子网,但这将被完整节点加入多个子网来抵消,因此每个子网仍应包含足够多的节点。
  • 规模:在带宽要求与 EIP-4844 相似的情况下,我们认为 subnetDAS 可以实现与完整 Danksharding 相似的规模。使用我们稍后给出的示例参数,吞吐量将为每个插槽 16 MiB,同时要求完整节点参与子网,每个插槽的总数据分配为 256 KiB,验证者为每个插槽 512 KiB,大致与 4844 一致。
  • 未来兼容性:我们认为即使在 DAS 的未来迭代中也会使用子网基础设施,因此这项工作是可重用的:

    • 无论 DAS 的最终网络构造如何,完整 Danksharding 的网络结构都可能涉及子网,其中 Danksharding 方阵的行和列被分配到这些子网中,并且至少验证者会加入这些子网以下载分配给他们保管的行和列(这在 peerDAS 中也有假设)。

    • 即使在以后的迭代中,使用某种形式的 subnetDAS 用于验证者的分叉选择仍然可能是有意义的,这不需要使用完整节点在其分叉选择中使用的相同 DAS 构造来遵循链并确认交易(有关详细信息,请参见此处)。当用于此目的时,subnetDAS 的弱点是可以接受的或无关紧要的:

    • 查询的可链接性无关紧要,因为对于验证者的分叉选择,我们只关心全局可用性保证,而不是单个保证(不必担心双重支付保护,因为这不用于确认交易)。

    • 可以预期验证者比完整节点具有更高的带宽要求,因此即使从长远来看,对验证者保持与 4844 相似的带宽要求也可能是可以的。

    • 即使在以后的迭代中,也可以选择使用 subnetDAS 作为分叉选择过滤器,同时仅当作为确认规则的一部分时才使用一些额外的采样(同样,请参见此处了解详细信息)。例如,完整节点可以通过仅使用 subnetDAS 进行分叉选择来跟踪链(验证者参与共识),同时仅进行一些对等采样以确认交易。对等采样的活跃性失败只会影响完整节点确认交易的能力,而不会影响 p2p 网络、共识和超级完整节点的交易确认。这种额外的采样甚至可以是可选的,从而使完整节点可以选择其自身在确认安全性和活跃性之间的权衡。与前面的要点一样,由于作为确认规则的一部分进行的额外采样,查询的可链接性将无关紧要。

构造

示例参数
参数 描述
b 128 Blob 数量
m 2048 列子网数量 = 样本数量
k 16 每个插槽的样本数量 = 每个节点的列子网数量
r 1 每个验证者的行子网数量

Blob 为 128 KiB,与 EIP-4844 相同,非扩展数据的总吞吐量为每个插槽 16 MiB。

数据布局
  • 我们使用一维扩展,而不是二维扩展。Blob 在水平方向上扩展,并在垂直方向上堆叠。与 Danksharding 矩阵中一样,但没有垂直扩展。
  • 生成的矩形被细分为 m 列。使用示例参数,每列的宽度为 4 个字段元素(每个扩展的 blob 为 256 KiB,即 8192 个字段元素)。每列都是一个样本。使用示例参数,样本的大小为 128 4 32 字节 = 16 KiB
子网
  • 列子网:每列(样本)对应于一个列子网。列子网用于采样,所有完整节点都连接到其中的 k 个子网。
  • 行子网:每行(一个扩展的 blob)对应于一个行子网,该子网用于重建。只有验证者需要连接到行子网,并且他们连接到其中的 r 个子网。

使用示例参数,每个列子网拥有 k/m = 1/128 的所有完整节点,每个行子网拥有 r/n = 1/128 的所有验证者

分发

blob 在行子网中分发,样本在列子网中分发,同时进行。

采样

完整节点通过连接到相应的子网来查询每个插槽的 k 个样本。这只是在一维扩展上进行采样,但样本是“长的”(列而不是点)。

使用示例参数,总共为 16^2 = 256 KiB,甚至低于 EIP-4844(对于验证者来说,还有从行子网下载 r=1 个扩展 blob 的额外负载,额外增加 256 KiB)。

子网选择和数据可检索性

保留期内的数据可检索性提出了与此处类似的问题。为了解决这些问题,可以错开子网的轮换,并在数据保留期的时间范围内进行轮换。这样做的效果在 subnetDAS 中与在 peerDAS 中截然不同,因为子网的选择就是样本的选择,因此不每插槽轮换子网的选择意味着始终对相同的索引进行采样。

为了解决这个问题,我们可以让节点连接到 2k 个子网,其中 k 个是稳定的,k 个是每插槽轮换的。连接到前者纯粹是为了帮助子网密度和数据可检索性,而后者实际上是用于采样的。尽管如此,subnetDAS 仍然特别容易受到查询的可链接性的影响,因此即使在这种情况下,稳定的子网选择也可能是有意义的。

重建

本地重建可以在行子网中进行。如果在行子网中缺少某些数据,但在列子网中存在,则同时位于两个子网中的验证者会在行子网中传播丢失的数据。扩展 blob 中 > 50% 的数据可用后,行子网中的所有验证者都会在本地重建它,然后将来自此行的任何他们丢失的数据带到他们的列子网。

安全性

我们分析了此构造的两个安全方面(同样,请参见此处了解有关安全概念的更多详细信息):

  • 全局安全性:除非以可忽略不计的概率,否则不可用数据会被除少数完整节点之外的所有节点拒绝(具体来说,我们可以设置完整节点的最大可容忍比例,这些节点可能不会拒绝不可用数据)。
  • 客户端安全性:除非以可忽略不计的概率,否则客户端不会被说服说不可用数据是可用的。

这些与完整节点的两个角色并行:有助于强制执行网络规则,并允许与链进行最小信任的交互。第一个安全属性使完整节点能够有助于强制执行构建在以太坊上的 Rollup 的规则,最终保证其安全性,前提是只有少数完整节点将其视为规范的链永远不会最终成为以太坊链,即使所有验证者都是恶意的。重要的是,即使攻击者事先知道所有查询,这仍然成立。

客户端安全性和查询不可链接性

第二个概念要强大得多:我们要求任何采样节点都不能被欺骗完全(除非以可忽略不计的概率)。为了实现它,我们不能假设攻击者事先知道所有查询。实际上,它需要查询不可链接性,即隐藏一组查询来自同一节点/参与者的能力,因为如果没有这种能力,攻击者始终只能提供单个节点所请求的确切数据。

如果 Rollup 在较弱的概念(全局安全性)下是安全的,并且数据可用性的全部意义在于供 Rollup 使用,那么我们为什么需要这种更强的安全概念?这是因为 DA 层与以太坊链的其余部分紧密耦合:完整节点只是忽略某些 blob 数据不可用的链。欺骗完整节点认为不可用数据是可用的,可能会使它们遭受安全违规,即双重支付:它们确认有效链中的交易看起来安全且可用,但实际上不可用,因此最终不会成为规范的以太坊链。这适用于以太坊交易以及 Rollup 交易的确认,因为 Rollup 状态是从规范的以太坊链派生的。

以太坊交易

我认为引入没有查询不可链接性的 DAS 不会过多地改变以太坊完整节点针对双重支付的安全性。有两种情况,基于完整节点一开始使用的确认规则

  • 同步确认规则:这些节点不等待最终性,而是使用一个规则(例如这个规则),该规则做出同步假设和诚实多数假设。如果后者不满足(即在 51% 的攻击中),那么该规则无论如何都是不安全的,并且可能发生双重支付。如果后者满足,我们保证确认的链可用,因为只有一小部分诚实验证者可能被欺骗投票支持不可用链。换句话说,由于 DAS 故障,诚实多数只能略微削弱。因此,同步确认规则在没有 DAS 的情况下仍然在它所需的相同假设下是安全的。
  • 最终性:如果一个节点今天等待最终性,它可以保证除非有两个相互冲突的最终确定区块,否则它不会遭受双重支付,这需要 1/3 的验证者集做出可削减的违法行为。使用 DAS,也可能存在最终确定的区块根本不可用,而没有相互冲突的最终确定。请注意,这仍然需要几乎是恶意超级多数,同样是因为只有一小部分诚实验证者可能被说服投票支持不可用链。另一方面,它似乎没有提供针对双重支付的经济最终性保证。完整节点可能无法识别出最终确定的链不可用,并在其中确认交易。如果它从未变为可用,社会共识最终将必须介入并协调一个从完全可用的链开始的分叉,从而导致完整节点的安全违规。原则是,这不需要涉及任何罚没,从而否定了任何经济最终性。实际上,社会共识可以选择削减任何投票最终确定不可用链且未能按一定截止日期产生他们应该保管的数据的验证者。如果链确实变为不可用,这将意味着几乎超级多数的验证者未能产生他们保管的数据,并可能被削减。

此外,请记住,运行一个下载所有数据的超级完整节点将是一个选择,当然对于那些交易大量价值并希望获得与今天完整节点相同的针对双重支付的完全安全保证的人来说,这并不是一个过高的成本。至少值得讨论的是,这种(我们认为微小的)完整节点交易确认安全方面的降低是否真的是一个不可逾越的问题。

Rollup 交易

确认 Rollup 交易的安全性情况非常相似,但还有一些围绕有效的考虑因素,再次取决于 Rollup 节点使用的确认规则。让我们假设基线确认规则是以太坊最终性,然后通过一些特定于 Rollup 的条件来增强它。

对于有效性 Rollup,明智的选择显然是在确认之前等待有效性证明,但不一定是为了在以太坊本身上发布和验证它。这样的节点确实获得了与以太坊完整节点在确认最终确定交易时相同的完全安全保证(模数证明系统的问题或验证器的实现),因为保证了有效性。换句话说,唯一的攻击向量是我们在上一节中讨论的相同类型的双重支付。

对于乐观 Rollup,有多种选择。可以运行 Rollup 完整节点并简单地验证所有状态转换,在这种情况下,显然没有其他问题。当然,这并不理想,因为 Rollup 节点原则上可能比以太坊节点重得多。它也可以只是等待 Rollup 桥来确认交易,这同样安全,但由于欺诈证明期而需要更长的确认期。另一种选择是侦听 p2p 网络上的(发起)欺诈证明的消息,这可能以比桥更短的欺诈证明期来完成。如果最终确定了不可用数据并且被欺骗认为它是可用的,则可以诱导运行这种快速确认规则的节点确认无效交易。

全局安全性

总结:即使一个事先知道所有查询的攻击者也无法说服超过一小部分采样节点,不可用数据是可用的

对于自适应攻击者,在决定提供哪些数据之前,它会同时考虑所有查询,当从总共 m 个样本中下载 k 个样本时,成功定位一小部分 \epsilon 的 n 个节点的概率可以通过 \binom{n}{n\epsilon}\binom{m}{m/2} 2^{-kn\epsilon} 进行联合限制:攻击者选择一个 n\epsilon 节点的子集,从 \binom{n}{n\epsilon} 个可能的子集中选择一个,一个由至少 \frac{m}{2} 个样本组成的子集,使其不可用,从 \binom{m}{m/2} 个这样的子集中选择一个,并且在给定这些选择的情况下,成功的概率为 2^{-kn\epsilon}。近似二项式系数,我们得到 \left(\frac{2^{n}}{\sqrt{\frac{n\pi}{2}}}e^{-\frac{\left(n\ -\ 2n\epsilon\right)^{2}}{2n}}\right)\frac{2^{m}}{\sqrt{\frac{m\pi}{2}}}2^{-kn\epsilon} = \left(\frac{2^{n}}{\sqrt{\frac{n\pi}{2}}}e^{-\frac{\left(n\ -\ 2n\epsilon\right)^{2}}{2n}}\right)\frac{2^{\left(m-kn\epsilon\right)}}{\sqrt{\frac{m\pi}{2}}},我们希望这个值小于 2^{-30} 或类似的值。这给了我们 (n + m - kn\epsilon) - \log_{2}\left(e\right)\frac{n\left(1\ -\ 2\epsilon\right)^{2}}{2} < \log_2(\sqrt{nm}\frac{\pi}{2})-30

在下面的图中,我们设置 k = 16 和 m = 2048。在 y 轴上,我们有 n,即节点数,在 x 轴上,\epsilon 是可以被欺骗的最大节点比例(这里特别是在概率 \ge 2^{-30} 的情况下,但结果对所选的失败概率几乎不敏感)。只要我们至少有 2000 个节点,那么不到 10% 的节点会被欺骗,认为不可用的数据是可用的。此外,在 6000 到 10000 个节点之间,可攻击节点的比例下降了 5% 到 4% 之间。

graph\ graph800×800 52.1 KB

(你可以在此处使用这些参数)

也许值得注意的是,使用 m = 512^2(在正方形上进行采样)和 k = 75 进行的完整 Danksharding 采样在这种分析中并没有做得更好,这种分析考虑了事先知道所有查询的攻击者。事实上,由于 m 有多大,它的表现要差得多。这不应该完全令人惊讶,因为此构造中的节点需要下载更大一部分数据(0.256 KiB/32 MiB,或 1/128,与 37.5 KiB/128 MiB,或 ~1/3000 相比)。也就是说,这只是一个可能不太严格的绑定,因此糟糕的绑定并不一定意味着糟糕的安全性。另一方面,如果绑定被证明是严格的,那将意味着在这种高 m 下,全局安全性对于完全自适应的攻击者来说是无效的,而是需要对查询的不可链接性做出一些假设。

安全性-吞吐量-带宽权衡

当然,我们可以通过恶化其他两个中的一个或两个来提高带宽要求、安全性和吞吐量中的任何一个。例如,将 blob 的数量减半到 b = 64,并将样本的数量加倍到 k=32,将保持带宽要求相同,同时将吞吐量减半,但会给我们一个更好的安全曲线。另一方面,我们可以通过设置 b = 256 和 k = 8 来在保持带宽要求相同的同时将吞吐量加倍,从而牺牲安全性。在这里,我们比较了 k=8,16,32 的安全性,即对应于最大吞吐量 32MiB、16MiB 和 8MiB。

graph1\ graph1800×800 42.1 KB

(你可以在此处使用这些参数)

  • 原文链接: ethresear.ch/t/subnetdas...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
以太坊中文
以太坊中文
以太坊中文, 用中文传播以太坊的最新进展