OpenAI新任CEO敲定,Emmett
DA的可扩展性:Avail目前的状态
随着用户开始将 Avail 集成到他们的链设计中,经常会出现一个问题:“Avail 能处理多少交易?”在这篇文章中,我们将根据目前两个链的架构,比较以太坊和 Avail 的吞吐量。
这是关于 Avail 扩展性系列文章的第一篇,将讨论 Avail 目前的性能以及其在近期和长期的扩展能力。
Avail vs Ethereum
以太坊的区块最大可以容纳 1.875 MB 数据,区块时间约为 13 秒。然而,以太坊的区块通常并不是被填满的。几乎每个区块都会因为达到 gas 限制而未达到数据的上限,因为执行和结算都消耗 gas。因此,每个区块存储的数据量是可变的。
将执行、结算和数据可用性结合在同一个区块中的需求,是单一区块链架构的核心问题。L2 rollup 开始了模块化区块链的运动,允许在一个单独的链上处理执行操作,且该链的区块专门用于执行。Avail 进一步采用了模块化设计,将数据可用性也解耦,允许一个链的区块专门用于数据可用性。
目前,Avail 的区块时间为 20 秒,每个区块可容纳大约 2 MB 数据。假设平均交易大小为 250 字节,每个 Avail 区块今天可以容纳大约 8, 400 笔交易(每秒 420 笔交易)。
更重要的是,Avail 可以始终将区块填满到存储限制,并根据需要增加大小。我们有许多可以快速调整的杠杆,以在需要时将每个区块的交易数量提高到超过 500, 000 笔(每秒 25, 000 笔交易)。
我们能增加吞吐量吗?
为了增加吞吐量(特别是每秒交易数),链的架构师需要增加区块大小或减少区块时间。
要被添加到链上,每个区块必须产生承诺、构建证明、传播它们,并让所有其他节点验证这些证明。这些步骤始终需要时间,这为区块的生成和确认时间设定了一个自然的上限。
因此,我们不能将区块时间简单地减少到比如一秒钟。这样根本没有足够的时间来产生承诺、生成证明,并将这些部分传播给整个网络的所有参与者。在理论上的一秒钟区块时间内,即使每个网络参与者都运行着能够瞬间产生承诺和证明的最强大的机器,瓶颈也在于数据的传播。由于互联网速度的限制,网络无法足够快地将区块通知给所有全节点。所以我们必须确保区块时间足够高,以允许在达成共识后将数据分发到网络中。
相反,通过增加区块大小来也可以增加吞吐量,即增加我们每个区块可以包含的数据量。
当前架构:向链上添加一个区块
首先,让我们看看向链上添加一个区块所需的步骤。向链上添加每个区块需要三个主要步骤。这包括生成区块、传播区块和验证该区块所需的时间。
1. 区块生成
这一步包括收集和排序 Avail 交易、构建承诺以及扩展(纠删码)数据矩阵所需的时间。
区块生成测量生成区块所需的时间,因为这至少总是需要一些时间。因此,我们必须考虑不仅是最佳情况下的时间,还有在不同机器上的平均情况和最坏情况下的时间。
能够参与新区块生成的最弱机器是在平均情况下性能达到极限的那一台。所有更慢的机器最终都会落后,因为它们无法赶上更快的机器。
2. 传播延迟
传播延迟是衡量将区块从生产者传播到验证者和点对点网络所需的时间。
目前,Avail 的区块大小为 2 MB。在当前 20 秒的区块时间限制内,这样的区块大小可以被传播。更大的区块尺寸使得传播变得更加棘手。
例如,如果我们增加 Avail 以支持 128 MB 的区块,计算可能能够扩展(约 7 秒)。然而,瓶颈则变成了在网络上发送和下载这些区块所需的时间。
在 5 秒内通过点对点网络向全球发送 128 MB 的区块可能是目前可以实现的极限。
128 MB 的限制与数据可用性或我们的承诺方案无关,而是通信带宽限制的问题。
这种需要考虑传播延迟的需求为我们提供了 Avail 当前理论上的区块大小限制。