数据可用性比你想的更重要。
- 原文链接:x.com/paramonoww...
- 译者:AI翻译官,校对:翻译小组
- 本文链接:learnblockchain.cn/article…
大多数人将数据可用性层视为用户和应用访问数据的临时存储。确实如此,但这忽略了一些关键细节: • 为什么需要临时存储? • 谁需要这个存储? • 需要存储何种数据? • 如果数据没有正确存储会怎样? • 为什么我们不能仅仅使用以太坊来满足所有这些需求?
像 EigenDA 这样的外部数据可用性解决方案可以提高速度和吞吐量并降低成本,同时仍然提供强大的安全保障。数据可用性是一个复杂的话题,涉及可扩展性、速度、经济性、安全性和架构。那么,我们为什么要关心这个问题?
数据可用性问题简单地问:“我们如何确保重构区块链状态所需的数据能够访问?”
正如大多数人所知道的,状态实际上是指在特定时刻存储在区块链上的所有数据,这些数据不断更新。这也被称为活跃性。没有这些数据,验证交易就会变得不可能,并且会为恶意区块提议者打开大门。
以太坊通过要求完整节点下载每个区块,验证交易,通过对本地状态副本重新执行它们来解决这个问题。显然,对于Rollup(rollups)来说,情况并非如此,因为这牺牲了很多速度,但我们仍然需要确保数据可用以维护安全性。
那么,数据究竟是什么?我多次提到状态,因此需要可用的数据是“状态数据”,也就是交易历史。如果数据不是实时的,你就会牺牲安全性,并面临你的Rollup不会抵抗重组(re-org)的风险。
重组可能发生在 L1 区块最终确定的过程中,这意味着以太坊可能由于恶意行为而分裂成不同的版本。
一个Rollup可能会与一个分叉对齐,而不是与规范链对齐,直到正确的链得到确认。此外,由于数据可用性层薄弱,用户可能会面临审查,他们的交易不会被包括在内。
这不仅在技术上造成数据丢失的挑战,还影响用户面向应用程序的用户体验/用户界面(UX/UI)。
数据可用性问题首先涉及安全性,而非速度和可扩展性。
许多Rollup使用以太坊作为数据可用性,因为它提供了强大的安全性。那么,使用 EigenDA 是否有任何理由?是的,有很多理由。
一个Rollup可以分为多个层,包括结算层、数据可用性层、执行层等。模块化区块链的总体思路是将其分为多个组件,以最大化效率。
然而,在你不仅盯着安全性而且还想降低成本的情况下,依赖以太坊作为数据可用性层并没有太大的意义。以太坊上 L2 解决方案的激增导致了对区块空间的高竞争,使交易成本上涨。
截至 2024 年 3 月,L2 在以太坊上花费了超过 3740 万美元来存储和访问数据。随着引入 blob,价格降低了 99%。嗯,价格是固定的,但由于以太坊的拥堵,费用仍然不确定。
使用 EigenDA,因为以太坊并不是一个实现高吞吐量的舒适地方。这意味着以太坊Rollup必须与其他 L1 交易竞争有限的区块空间,这在此过程中可能增加存储成本。
• 以太坊区块可以处理 768kB 的 blob 和其他数据,总计约 2.5 MB。 • 每 12 秒生成一个区块,这提供了 0.2 MB/s 的带宽。 • 这非常慢,约等于 9000 TPS。
这不是一个Rollup的 TPS,而是所有将以太坊用作数据可用性层的Rollup的 TPS。是的,这很慢,并且没有可用的横向扩展(计算增长与节点增长不成比例)。 此外,使用 EigenDA 的Rollup有自主权来处理自己的状态更新,而以太坊基础的Rollup则依赖以太坊网络来管理更改。
• 正如我之前所说,像 MegaETH 这样的Rollup,其 TPS 超过 100,000,不能使用以太坊进行数据可用性。 • EigenDA 目前具有 15MB/s 的写入吞吐量。 • 这意味着它可以处理最多 654,000 TPS,经过压缩。
这对于希望引入应用程序且需要高吞吐量的链非常适合,例如 API、不同的后端、高频交易等。但是,为什么这是可能的?
• 当一个Rollup的排序器将一个区块发送到 EigenDA 时,分发器(disperser - EigenDA 的一个组件)将该 blob 进行纠删码(erasure code)处理,分割成块,这大致是 blob 的更小部分。
• 这些块被发送给不同的存储运营商,确认他们已经存储了数据。 • 关键是每个独特的存储运营商处理其独特的一组块,因此没有两个运营商处理相同的块。
这种方法使横向扩展成为可能:更多的运营商 -> 更多的块可以被处理 -> 更高的吞吐量 -> 更高的 TPS。根据写作时的信息,存储 1MB 数据在 EigenDA 中的平均成本约为 0.05 美元,这使得想要存储数据并随时让其可访问的Rollup变得相当便宜和便利。
一开始,我提到数据可用性是以安全性为首要的。但是,EigenDA 如何处理这方面的安全性?
EigenDA 是 EigenLayer 上的 AVS,这意味着 EigenDA 拥有自己的运营商集,利益通过委托给这些运营商来经济上确保 EigenDA 的安全性。总共有超过 200 个运营商,合计超过 150 亿美元的利益。所以,这个系统是相当安全的。
当前的数据可用性系统通常将数据可访问性验证与数据排序合并,创建复杂的设置。虽然验证数据可以并行进行,但为共识进行排序是缓慢的。
这对于管理自己数据顺序的系统是有用的,但对于像 EigenDA 这样的系统,利用以太坊现有的排序机制则是多余的。EigenDA 通过使用纠删编码和 KZG 承诺方案,允许仅存储最低限度所需的数据,从而在数据存储中实现更大的速度和效率。
EigenDA 架构在一开始可能看起来很复杂,但最终一切都说得通。
1) Rollup的排序器将 L2 交易批处理作为一个 blob 发送到分发器。
2) 分发器将该 blob 分割成小块(chunks),并创建两种类型的证明:KZG 承诺证明和 KZG 多重揭示证明。
3) 所有块在 EigenDA 运营商集上唯一分配(运行 EigenDA 节点软件并委托利益的运营商)。
4) 运营商还收到承诺证明,以便使用多重揭示证明验证块。
5) 运营商向分发器发送签名,确认他们已经成功验证了这些块。
6) 分发器聚合接收到的签名,通过向 EigenDA 管理合约发送交易将 blob 注册到链上。
7) 管理合约检查运营商注册表,确认签名是否正确验证。
8) Rollup排序器向其在以太坊的收件箱合约发送 EigenDA blob ID。
9) 收件箱合约检查管理合约,以确定 blob ID 是否确实可用。
10) 如果可用,blob ID 将被添加到收件箱合约中,并且以太坊的 rollup 视图会被更新。如果不可用,则恶意操作员将被惩罚。
一个重要的特点是 blobs 按 4.54 的比例进行了差错编码。这意味着系统提供了更多的冗余,系统能够从更多的同时节点或存储故障中恢复而不会丢失数据。
使用差错编码的主要原因是允许单个操作员只存储一个块,从而显著降低成本。随着更多操作员的加入,个人成本将下降。
Rollup 不能仅使用 EigenDA,因为它仍然需要在某个地方进行结算。而使用 EigenDA,你只能在以太坊上结算交易。
EigenDA 没有自己的共识机制;它通过重新质押使用以太坊的安全性和验证者集。这意味着,rollup 或最终用户依赖以太坊的共识来确保数据的正确排序和最终确定。 • rollup 确定约定的交易序列。 • 然后它使用 EigenDA 进行存储,交易以批量形式发布。 • rollup 将状态根发布到以太坊以进行最终确认。 • 在交易在基础层被排序和记录后,它们被永久添加到 rollup 链中,在一定时间后成为不可逆(最终确定)。
有两个大问题是许多团队正在解决的:重组保护和审查抵抗。
防止审查和重组的安全性需要一个稳健的 DA 层,其中经济安全防止大多数控制。主要的设计关注点是共识攻击的成本。
正如古老的谚语所说:“为了最小化恶意行为,我们需要让它无利可图。”当攻击成本大大超过潜在收益时,区块链是经济安全的。在以太坊上验证证明增强了对审查的 rollup 安全性,但并未解决数据可用性的所有问题。
如果 DA 层受损,rollup 将仍然脆弱,因为以太坊的智能合约只检查证明。这可能导致活跃性问题,即无法生成新块,说明使用一条区块链进行数据限制了来自另一条区块链的安全保证。
在 EigenDA 之前,有数据可用性委员会,看起来与 dPoS 非常相似。EigenDA 不同,因为它向任何想要运行节点软件或委托其资产的人开放。它还提供了更多安全性,因为操作员如果恶意行为实际上可以被惩罚。
嗯,有很多。DEX、DeFi 协议、NFT 市场、DAOs、质押协议和互操作性协议都需要完整的交易历史以满足各种目的,如流动性跟踪、财务计算、真实性验证、合规、治理、奖励计算和安全消息传递。
AltLayer 在其平台上使用 EigenDA 启动 rollup,
Calderaxyz 让你可以在 1 分钟内使用 EigenDA 启动 rollup 等等。有许多不同且有趣的用例。
过去一年关于“单块链与模块化”的讨论很多,但在以太坊的生态系统中,更加模块化的东西正在获胜。
提议者-建造者分离 (PBS)、DA 层、不同的排序模块、最终层:似乎以太坊生态系统的每个重要组成部分都在被拆分成多个部分,并最大化每个部分的效率。
正如我在之前的写作中多次提到的,未来数百万个通用 rollup 和专用 rollup 是不可避免的,所以如果它不可避免,那就让它高效。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!