关键见解
◉ 无论有效性如何,所有数据都必须广播给网络中的所有参与者,以便他们在选择时进行验证。随着节点要求和责任的减少,维持这种保证变得困难。
◉ 链外数据可用性(DA)比链上选项的安全性要低得多;根据数据的性质,用户可能会选择在链外发布以获得更少的费用。
◉ 带有danksharding的以太坊、Celestia、Polygon Avail、EigenDA和zkPorter以不同方式处理数据可用性,都是为了寻求更高的DA吞吐量。
◉ 随着danksharding的实施,以太坊的数据可用率将从85 KB/s跃升至1.3 MB/s。
区块链存储历史并保证其真实性。为了使其成为一个可信的网络,所有参与者必须能够查看和验证存储的数据。这个问题与验证数据是分开的,因为所有的数据,无论是否有效,都需要供网络使用,不能被任何一方扣留。这种保证被称为数据可用性(DA),随着区块链规模的扩大,它是一个活跃的问题。
以太坊和其他项目已经开发了新的方法,以确保应用程序和卷轴可以信任他们的数据被托管在其上并可用。
术语和定义
区块链有三个主要功能。
◉ 共识。区块链的状态通过排序数据和防止双重消费来验证和保障,这个过程称为共识。共识提供了安全性,因为它确保所有添加的交易都是有效的。
◉ 数据可用性。保证交易数据的可用性和透明性,供整个节点网络查看和验证(与存储层不同)。
◉ 执行。执行层在交易发生时对智能合约采取行动,以更新链的状态。计算改变了区块链的状态,并以智能合约或签署的交易为线索。
区块链中的每个区块都包含一个头和一个交易列表。根据系统的设计,节点的职责会有所不同–然而,它们通常的功能是:。
轻客户端。下载标头,并假设交易是有效的。大多数系统中的轻客户端对所涉及的验证者做出诚实的多数假设。他们承担着下载无效交易的风险,因为他们假设共识只包括有效交易。他们只能与完整节点通信,不能相互通信。
完整节点。下载由验证者节点传播的整个头和交易,并对其进行验证。完整节点向轻客户发送Merkle证明,证明交易被包含在区块头中。如果全节点遇到不诚实的行为,他们可以使用欺诈证明提醒网络。
运行一个节点的要求越轻,可以加入网络的节点就越多。计算负载可以分布在所有的节点上,使之成为高效的DA。然而,DA变得具有挑战性,因为较轻的节点不会下载所有的数据来验证自己。
Merkle树。散列是将任何大小的数据映射成一个固定的大小。Merkle树是一棵哈希值树。它代表了区块链的状态,因为每两笔交易都会被散列,直到达到一个Merkle根。这种结构允许默克尔证明,它可以验证数据块在树上的位置。

问题空间
以太坊在一个与其他执行和共识功能紧密耦合的层中支持数据可用性。用相同的资源运行所有的区块链功能,为所有的功能创造了一个扩展瓶颈,因为用户必须为相同的区块空间出价,而不是功能。模块化DA层Polygon Avail和Celestia选择开发一条执行共识和DA的链。他们可以实现更高的DA吞吐量,因为该链不执行执行或支持通用计算。EigenDA也是一个独立的DA层,但它消除了对P2P网络的依赖,并使用现有的以太坊验证器来保证经济安全。 zkPorter允许最终用户挑选他们希望DA发生的地方,在链上或链下。
随着rollups处理更多的活动,基础层Ethereum将实施danksharding来横向扩展,以支持更多的DA吞吐量。但是,通过在一个单独的层上提供DA,模块化DA借以获得辅助性的好处,如支持主权滚动、侧链和任何虚拟机(VM)。
当一个交易被发送时,它在mempool中进入预处理。mempool是一个队列,区块生产者(矿工或验证者)从中挑选要验证的内容。他们生产区块并提供给共识节点进行验证。共识节点是完整的节点,它们遵循严格的规则来验证将被纳入链中的区块是否有效。然后,生产的区块被发送到其他节点进行验证。运营商可能是恶意的,从网络的其他部分压制数据,这使得系统无法保证数据的可用性。
规模化的三难问题 可扩展性三难困境 能够为可扩展性、安全性和分散性这三种保证中的两种进行优化是可扩展性有限的主要原因。在保证数据可用性的情况下,安全与可扩展性是最重要的。一个全节点系统在理论上是理想的,因为每个人都可以下载整个区块,以确保所有数据都是可用的。由于资源要求较高,这种方法会将系统推向集中化。反过来说,轻型节点需要全节点的帮助,以验证提供的无效数据。
以太坊如何保证数据可用性?
当区块链执行所有功能时,单体结构提供了强大的数据可用性保障,因为设计通常依赖于下载整个区块的完整节点。这种方法确保任何错误,如重复花费的计算,几乎无一例外地会被发现。
缩放问题的一个解决方案是增加区块容量或大小。但是,简单地增加区块容量会给运行节点带来昂贵的硬件要求,这使分布式系统走向集中化。轻型节点的系统创造了去中心化,但由于轻型客户端的限制,它降低了安全性。第二个解决方案是减少区块时间,鉴于完成DA所需的操作,这很难做到。
Rollups在Ethereum上发布
Rollups在以太坊上发布calldata,这是非执行的数据。Rollups本质上是独立的执行层。考虑到目前以卷轴为中心的路线图,以太坊的数据可用性功能已经开发出来,以支持对卷轴的长期依赖。在以太坊的滚动中,排序器做的工作是对滚动中的交易进行批处理,并将其发布在以太坊的主链上。
为了使卷轴发挥作用,排序器必须向网络提供数据。乐观的卷轴使定序者保持诚实。他们允许任何人在被认为不诚实的情况下提交欺诈证明,这意味着所有的交易都被认为是有效的,直到有理由相信不是这样。对于ZK-rollups,定序者必须在向主网提交批次时提交有效性证明,在主网中每笔交易都被验证。
无论排序器的能力或滚动的吞吐量如何,以太坊上的滚动只能发布其DA容量允许的数据。但是,在以太坊上托管数据往往是最安全的途径。如果全节点确定当前链上的数据不可用,网络会自动分叉到一个新的链。然而,Ethereum全节点无法为例如Celestia或validium提供这种保证–它们无法检查数据是否在核心协议层面的滚动或独立DA层上提供。
链外数据可用性
DA可以在链上或链下进行。Volition是由Starkware创造的,用来描述用户可以选择在链上或链下进行DA的系统。链外DA产生更高的吞吐量,但代价是降低了安全性。Validiums通过数据可用性委员会(DACs)和有效性证明来保证链外DA。DACs提供签名,证明数据对其他节点是可用的。随后,这些签名被排序器用来批准数据块。一个DAC可以非常小,低至5个参与者,而对如此小数量的参与者的信任会导致可能的重大风险。
Validiums的DA率可以达到1MB/s,高于目前以太坊的容量(85KB/s)。DA率是通过网络中单个节点的带宽与节点数量相乘来实现的。通过validiums,运营商可以阻止对用于重建数据的证明的访问。阻止访问将有效地冻结用户资金,因为网络将失去活性。在运营商不诚实的情况下,可能无法获得重建数据的证明。如果DAC被破坏,用户资金将被冻结。此外,提取到L1的退出证明不会被生成,使逃生舱口失去作用,这是一个滚动提供的功能。
用户可能会选择在链外发布数据,如果它是非金融数据,比如说。理想情况下,系统应该继承最大的安全性,链上系统通常可以提供这种安全性,但成本更高。
数据可用性层的构成
为了实现完全的DA,必须防止运营商能够压制数据。由于让全节点下载整个区块历史是低效的,所以引入了DA采样(DAS)。
简单的DAS将数据集分成n个块,每个节点采样并下载k个块以检查数据是否可用。由于替换式随机抽样的工作方式,该系统本身是有缺陷的,因为不能保证集合中的每个项目都会被选中。然而,它大大降低了区块生产者压制区块的能力,因为采样节点将不得不错过包含被压制数据的块。
这种限制促使随机抽样与Reed-Solomon擦除编码相结合。现在,一些数据块被编码到一个单项式中。这种设置允许在50%的数据块丢失时通过多项式插值检索数据。数据冗余使压制数据而不被发现变得更加困难。攻击者需要隐藏50%的数据以防止系统用多项式重建数据。
有了Reed-Solomon擦除编码,用随机抽样的方式漏掉一大块数据的机会非常非常小。在这种情况下,区块生产者仍然可以计算错误的擦除代码。因此,轻客户仍然应该从全节点接收欺诈证明,以提醒潜在的错误行为。因为这对轻客户来说可能是一个沉重的负担,所以采用了一个二维(2D)方案,其中数据以矩阵形式表示。在这里,轻型客户只需要下载一行或一列来验证擦除编码。
综上所述,数据冗余和复杂的采样防止矿工或验证者从网络的其他部分压制数据。
数据可用性和挖空保全
Danksharding使用KZG(Kate, Zaverucha, and Goldberg)承诺结构对数据进行编码。这是一个专门的哈希函数,带来了多项式的使用。使用默克尔树,哈希中的数据性质无法确定,但使用KZG承诺树,它们被保证是多项式的。
这个想法被进一步扩展到一个二维方案。在这个方案中,数据矩阵被扩展为Reed-Solomon擦除编码,每一行和每一列被编码为多项式。二维KZG承诺方案上的随机抽样需要75%的数据矩阵可用。
为了完成空投的建设,使用了提案人建设分离(PBS)。在防止价值集中到具有较高资源的节点时,这也被用于最大可提取价值(MEV)。PBS将验证者分配为提议者或构建者,提议者通过拍卖挑选构建者。然后,构建者做编码数据的工作。由于构建者因编码数据而获得奖励,因此使用PBS进行空投可以实现价值的公平分配。
Danksharding需要几年的时间来实现,所以将首先建立一个更简单的实现,称为原Danksharding。以太坊目前的数据可用性达到了85KB/s,有了danksharding,它的实现将被提升到1.3MB/s。有了danksharding,以太坊的可扩展性仍将有一个上限。虽然卷积可能会吸收以太坊上的大部分执行,但基础层仍然继续与共识和执行紧密结合,除了在P2P网络上分配数据,同时试图确保大量数据的可用性,这就产生了DA存储限制。
其他数据可用性参与者
有四个玩家正在努力积极地将DA从单一的L1上移开:Celestia、Polygon Avail、EigenDA和zkPorter。
Celestia
Celestia是第一个将执行与共识和数据可用性脱钩的模块化L1。Celestia以前被称为LazyLedger,它不验证任何发布在它上面的数据–它只负责订购数据并确保数据的可用性。
Celestia的节点责任被最小化了。每一个节点都必须验证、下载和处理交易,而Celestia对共识、存储和客户节点有单独的节点功能。共识节点决定添加什么区块,存储节点存储整个链的副本。客户端节点与正在使用Celestia的应用程序进行互动。
该系统使用轻型客户端进行DA采样与2D Reed-Solomon擦写编码。Celestia中的一个区块只有在其背后的数据被提供时才是有效的,而不管数据本身是否有效。Celestia的光节点不做诚实的多数假设,因为他们可以通过DA采样来验证块的内容。这个系统可以达到1.4MB/s。
由于分离的DA,不支持EVM的运行时间可以使用Celestia作为DA层。Celestia块的大小可以随着更多节点加入网络而增加。由于轻型客户端只处理非常小的数据量,块大小的增加不会显著增加节点的需求。
尽管最终将使用Celestia的滚动数量,但一个新的L1意味着引导一个新的验证器集来达成共识,这很困难,将决定Celestia的成功。由于Celestia上没有执行,因此与其他单体L1相比,代币的功能价值较低。最后,Celestia将作为DA层与Ethereum竞争,由于方便和安全,执行层可能会坚持使用Ethereum。
Polygon Avail
Polygon Avail是一个独立的共识和DA层,像Celestia一样。
与danksharding类似,它使用了带有KZG承诺的擦除编码。通过这种构造,该系统避免了诚实的全节点广播欺诈证明和诚实的多数假设。它利用一组轻量级客户端来采样数据。Avail有一个属性,像Celestia一样,没有区块大小限制。因此,系统会随着越来越多的节点加入Avail而增加区块大小。
Avail目前是在测试网,将不得不像Celestia一样启动自己的验证器集。Avail主网将与Polygon进行桥接,以使用MATIC作为基础货币。与Celestia代币相比,MATIC是一种成熟的代币,将管理所有Polygon链。它已经具有实用性和流动性,可以保证Avail向主网的转移。
EigenDA
Celestia和Avail是独立的DA层,将负责引导验证者网络,以确保各自网络的安全。它的成功也取决于在其之上发展的执行层的数量,因为一个既不验证也不执行数据的账本作为L1的价值是有限的。
EigenDA将是一个建立在EigenLayer上的DA,它允许ETH持有者通过对所持有的ETH进行额外的削价条件,重新获取他们的ETH以提供中间件服务。作为回报,他们将获得更多的上升空间。从理论上讲,以太坊提供了最符合加密经济的安全网络,因为它的订户队列。EigenDA创造了hyper-danksharding,以进一步放大danksharding实现的吞吐量。该DA所产生的经济安全相当于该层重新提取的ETH数量。与Celestia不同,EigenDA不需要引导一个新的验证器集,因为它将从以太坊继承。
EigenDA将在没有P2P网络的情况下提供DA。滚动排序器将进行数据编码的工作,并将数据块和KZG证明分配给节点。没有P2P网络执行DA,向整个网络传递数据块的时间和成本就会降低。相反,通过注册节点IP,排序器DA在EigenDA上进行,但共识在Ethereum的P2P网络上进行。
由于他们原来的ETH处于危险之中,在这个过程中未能诚实的节点将被砍掉。EigenLayer上的中间件将有自己的代币。EigenDA上的提供者将得到EigenDA代币的奖励。
EigenDA是独特的,因为它不面临可扩展性和安全性之间的权衡。无论EigenDA选择如何扩展网络,它都继承了Ethereum的安全性。EigenDA的成功直接取决于休息者市场。EigenDA的设置可以带来中心化的担忧,类似于Lido在液体赌注市场上不断增加的市场份额。
通过紧密耦合的DA和共识系统所发现的开销最小化,EigenDA将在DA上实现高达15MB/s的速度,这比没有danksharding的Ethereum的DA率高出176倍。
zkPorter
zkPorter是一个自愿的系统,允许用户选择他们希望DA发生的地方。ZKSync 2.0是一个EVM语言级别兼容的zkEVM。L2的状态将被分为ZK-rollup,它有链上DA和zkPorter,有链下DA。这两种类型的账户都是可以组成的,但链外DA的存在会减少zkPorter账户的费用。
zkPorter账户的DA将由zkSync代币持有人保证,他们通过签署区块来跟踪zkPorter的状态,以确认DA,如DACs。监护人是PoS网络的一部分,容易受到抵押的zkSync代币的砍价条件的影响。与EigenDA类似,底层网络代币是有风险的。
用户可以选择链上DA以获得安全,但费用较高,或者选择链外DA以获得较低的费用。
离别感想
所有这些解决方案都实现了更高的DA吞吐量,但有各种权衡。链外DA很可能不是最终方案,因为不可用的DA风险很高。随着这些项目的发展,链上DA最终会实现更高的吞吐量(验证者、恢复者)。链上和链下的选择最终应该由终端用户通过自愿系统来决定。最佳的DA解决方案将是可扩展的,并且容易被卷积和非EVM运行时间所利用。
Sou Ph.D. em ciências financeiras e atualmente estou estudando criptomoedas e seu artigo me deu uma boa ideia. Acho que sua forma de escrever é muito útil para minha tese criptomoedas, obrigado. No entanto, tenho algumas dúvidas e gostaria de saber se você pode me ajudar. Obrigado.