LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > [Polygon] 数据可用性问题

[Polygon] 数据可用性问题

2021-06-23 wanbizu AI 来源:区块链网络

特别感谢 Dankrad Feist 对这篇文章的深入审查。 特别提及 John Adler 的评论。

Polygon 解释的数据可用性问题

在这篇文章中,我们深入研究了数据可用性问题的细节以及它如何影响以太坊的扩展。

什么是数据可用性问题?

数据可用性(DA)问题:区块链网络中的节点如何确保新提议区块的所有数据实际上都可用? 如果数据不可用,则该块可能包含被块生产者隐藏的恶意交易。 即使区块包含非恶意交易,隐藏它们也可能危及系统的安全。

举个例子,假设 Alice 是 ZK-Rollup (ZKR) 的运营商。 她在以太坊上提交了经过验证的 ZK 证明。 如果她没有在以太坊上提交所有交易数据,尽管她的证据证明汇总中进行的所有状态转换都是有效的,但汇总的用户仍然可能对其当前账户余额一无所知。 由于它的零知识性质,提交的证明没有说明当前状态。

Optimistic Rollup (OPR) 设置中有一个类似的例子,A??lice 在以太坊上提交了一个断言,但 OPR 的任何参与者都不能挑战它,因为交易数据不可用,因此他们无法重新计算或挑战该断言.

为了应对上述情况,OPR 和 ZKR 的设计都要求运营商将以太坊上的所有交易细节作为“通话数据”提交。 虽然这使他们在短期内避免了 DA 问题,但随着汇总中事务数量的增加,需要提交的数据量也会增加,从而限制了这些汇总可以提供的扩展量。

更糟糕的是,数据不可用并不是唯一可归因的故障。 这意味着参与者无法向其他对等方证明丢失了特定的数据块。 这是因为 Bob 可以广播 Alice 提交的区块有缺失数据,但是当 Charlie 查询 Alice 时,她可能会将数据提供给他。

这对今天的区块链有何影响?

为了回答这个问题,让我们首先回顾一下类似以太坊的区块链的一般区块结构以及任何区块链网络上存在的客户端类型。

一个块可以分为两个主要部分:

块标题:一个小的区块头包含与区块中包含的交易相关的摘要和元数据。块体:这包含所有交易数据并占块大小的大部分。

在传统的区块链协议中,所有节点都被视为同步整个区块并验证所有状态转换的完整节点。 他们需要花费大量资源来检查交易有效性并存储区块。 从好的方面来说,这些节点不能接受任何无效的交易。

可能还有另一类节点没有(或不想花费)资源来验证每笔交易。 相反,他们主要对了解区块链的当前状态以及与他们相关的某些交易是否包含在链中感兴趣。 理想情况下,这些轻客户端也应该受到保护,以免跟随包含无效交易的链。 这实际上可以使用所谓的欺诈证明。 这些是显示特定块体包含无效交易的简洁消息。 任何全节点都可以产生这样的欺诈证明,因此轻客户端不必相信特定的全节点是诚实的。 他们只需要确保他们与八卦网络连接良好,以确保如果区块头有防欺诈手段,他们就会收到它。

然而,这个系统存在一个问题:如果一个区块生产者没有透露一个区块背后的全部数据怎么办。 在这种情况下,全节点显然会拒绝他们认为的块,如果它没有块体,它甚至不是一个块。 然而,轻客户端可以看到头链并且无法注意到数据丢失。 同时,全节点无法生成欺诈证明,因为它们会丢失创建欺诈证明所需的数据。

为了解决这个问题,我们需要一种轻客户端机制来验证数据可用性。 这将确保区块生产者无法通过说服轻客户端来隐藏数据。 它还将迫使区块生产者公开部分数据,使整个网络以协作的方式访问整个区块。

让我们借助一个例子更深入地探讨这个问题。 假设区块生产者 Alice 用交易 tx1、tx2、……、txn 构造了一个区块 B。 让我们假设 tx1 是一个恶意交易。 如果 tx1 被广播,任何全节点都可以验证它是恶意的,并将其发送给轻客户端作为欺诈证明,轻客户端会立即知道该块是不可接受的。 但是,如果 Alice 想隐藏 tx1,她会显示标头和除 tx1 之外的所有交易数据。 全节点无法验证 tx1 的正确性。

有人可能认为一个简单的解决方案是,如果所有轻客户端只是随机地对交易进行采样,并且如果他们发现他们的样本可用,他们就可以确信该块可用。 让轻节点查询任意一笔交易,均匀随机。 轻客户端查询 tx1 的概率为 1n。 因此,Alice 能够以压倒性的可能性欺骗轻客户端接受恶意交易。 换句话说,大多数轻客户端都会被愚弄。 由于不可归因的性质,全节点无法以任何方式证明 tx1 不可用。 不幸的是,增加样本数量并没有使这变得更好。

那么,我们该怎么办呢?

这个问题的解决方案在于在块中引入冗余。 总的来说,有大量关于编码理论的文献,特别是擦除编码,可以帮助我们解决这个问题。

简而言之,擦除编码允许我们将任何 n 个数据块扩展为 2 个数据块,这样 2n 块中的任何 n 块都足以重建原始数据块(参数是可调的,但在这里我们考虑这一点)简单)。

如果我们强制区块生产者擦除交易 tx1、tx2、…、txn 的代码,那么,为了隐藏单个交易,它需要隐藏 n+1 个数据块,因为任何足以构建整个交易集的数据块。 在这种情况下,恒定数量的查询使轻客户端非常确信底层数据确实可用。

哇,原来是这个?

不。虽然这个简单的技巧使隐藏工作变得更加困难,但区块生产者仍有可能故意以错误的方式执行擦除编码。 然而,一个完整的节点可以验证这个擦除编码是否正确完成,如果没有,它可以向轻客户端证明这一点。 这是另一种欺诈证明,就像上面的恶意交易一样。 有趣的是,轻客户端需要有一个诚实的全节点邻居才能确定如果该块是恶意的,那么它将收到欺诈证明。 这确保了轻客户端以非常高的概率访问没有恶意交易的链。

但是有一个问题! 如果天真地完成,某些欺诈证明的大小可能与块本身的大小有关。 我们对轻客户端的资源假设禁止我们使用这样的设计。 通过使用多维擦除编码技术在这方面有所改进,该技术以承诺大小为代价减少欺诈证明的大小。 为简洁起见,我们不涉及这些,但本文对其进行了详细分析。

基于防欺诈的解决方案的问题在于,轻客户端永远无法完全确定尚未收到防欺诈的任何块。 此外,他们一直相信其全节点对等方是诚实的。 还需要激励诚实的节点不断保持审计区块。

我们在这里将注意力集中在保证区块编码无效的系统上,完整节点可以检测到它,并向轻客户端提供证据,让他们相信错误行为。 然而,在下一节中,我们将研究块编码,它保证只有有效的编码才能被提交到链中。 这消除了证明编码错误的欺诈证明的需要。 这些基于有效性证明的解决方案使应用程序能够使用系统而无需等待来自全节点的此类欺诈证明。

那么这些解决方案是如何工作的呢?

最近,多项式承诺重新激发了区块链领域的兴趣。 这些多项式承诺,尤其是常数大小的 KZG/Kate 多项式承诺,可用于设计简洁的 DA 方案,而无需欺诈证明。 简而言之,Kate 承诺允许我们使用单个椭圆曲线组元素提交多项式。 此外,该方案支持我们证明在某个点 i 多项式使用恒定大小的见证计算为(i)。 承诺方案在计算上具有约束力,而且是同态的,使我们能够巧妙地避免欺诈证明。

我们强制块生产者获取原始交易数据并将其排列在大小为 n m 的二维矩阵中。 它使用多项式插值将大小为 n 的每一列扩展为大小为 2n 的列。 这个扩展矩阵的每一行都会生成一个多项式承诺,并将这些承诺作为区块头的一部分发送。 下面给出了该块的示意图。

轻客户端查询这个扩展矩阵的任何单元格以获得见证,这使它能够立即根据块头验证它。 恒定大小的成员证明使抽样非常有效。 承诺的同态性质确保只有在正确构造块的情况下才验证证明,并且多项式插值确保恒定数量的成功样本意味着数据以非常高的概率可用。

块的示意图

该方案的更精细细节以及进一步的优化和成本估算超出了本文的范围。 然而,我们想指出,虽然我们在这里讨论的是 2D 方案,但 1D 方案也可以提供类似的保证,它具有较小的标头大小,但代价是较低的并行度和轻客户端采样效率。 我们将在后续文章中深入探讨。

其他选择是什么,下一步是什么?

更高维的擦除代码和 Kate 承诺并不是解决 DA 问题的唯一方法。 我们在这里跳过了其他方法,如编码默克尔树、编码交错树、FRI 和基于 STARK 的方法,但每种方法都有其优点和缺点。

在 Polygon,我们一直在使用 Kate 承诺开发数据可用性解决方案。 在后面的文章中,我们将介绍实现细节、您现在可以如何使用它以及我们如何致力于转变 DA 问题空间。

补充阅读

使用多项式承诺方案的替代低度证明 以太坊 2.0 轻节点上的数据可用性 (En) | 作者:吴基米 | 硬币僧侣 数据可用性检查 什么是数据可用性?

数据可用性问题最初发表在 Medium 上的 Polygon 博客上,人们通过突出显示和回应这个故事来继续对话。

>> 查看多边形

加入我们的 Telegram

在推特上关注我们

在 Facebook 上关注我们

帖子 [Polygon] 数据可用性问题首先出现在 AZCoin 新闻上。

—-

原文链接:https://azcoinnews.com/polygon-the-data-availability-problem.html

原文作者:Polygon News

编译者/作者:wanbizu AI

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...