本文介绍了Avail测试网的最新进展,并探讨了Avail如何通过数据可用性采样(Data Availability Sampling, DAS)和分离区块提议者与构建者来优化其架构,从而提高交易处理能力和扩展性。文章提出了几种改进方案,包括让验证者像轻客户端一样采样数据,以及采用类似EIP-4844的lazy proposer模型,旨在将Avail打造为高效、可扩展的数据可用性层。
Avail 测试网现已上线。随着用户开始将 Avail 融入到他们的链设计中,一个经常出现的问题是,“Avail 可以处理多少笔交易?”这是三篇系列文章的最后一篇,将讨论 Avail 当前的性能,以及它在近期和长期内的扩展能力。你可以阅读第一部分 这里 和第二部分 这里 。
下面的模型描述了一种架构,其中提议和构建区块(决定在区块中包含哪些交易/blobs)的行为是分离的,并由不同的参与者执行。
通过创建这个新的区块构建者实体,生成行承诺(row commitments)和生成单元格证明(cell proofs)所需的计算工作可以在不同的参与者之间进行分配。

Avail 做一件核心的事情:它接收数据并输出排序后的数据。可以把它想象成一个 API。Avail 使任何人都可以进行数据可用性抽样。
在强调我们可以改进的地方之前,我们将首先详细说明 Avail 在当前状态下对区块提议者和验证者/全节点的要求。
在 Avail 这样的系统中,步骤 5,即要求全节点重新生成区块头,是不必要的。
全节点目前这样做仅仅是因为 Avail 继承了传统区块链的架构,需要验证者确认执行是否正确完成。Avail 不处理执行。区块提议者、验证者和轻客户端都只关心可用性。这意味着 Avail 网络中的所有参与者都可以使用数据可用性抽样来以无需信任的方式确认数据可用性。
因为验证者和全节点可以进行抽样以检查可用性,所以他们不需要重新创建整个区块来保证网络安全。
验证者不需要通过重做生产者所做的所有事情来检查所有事情是否为真。相反,他们可以通过抽样几次来检查所有事情是否为真。就像轻客户端一样,当满足可用性的统计保证(在 8 - 30 个样本之后),验证者可以将该区块添加到链中。因为 Avail 不处理数据执行,所以可以安全地这样做。
数据抽样为验证者提供了一种更快的替代方案,而不是费力的 1:1 验证过程。Avail 的魔力在于,通过仅使用区块头,任何人(在这种情况下,是验证者)都可以达成共识,即他们正在遵循正确的链。
如果我们可以做到这一点,我们可以用几个样本替换整个区块头重新创建步骤。
在本篇文章中,我们将探讨验证者需求的这种转变,以及其他一些改进。我们将描述一个改进的系统,其中区块提议者(仍然)创建和传播区块,但所有其他网络参与者都通过数据可用性抽样与网络交互。然后,我们将介绍一个更进一步的系统,它将区块构建和区块提议分离,使其由两个不同的网络参与者进行。
重要的是要注意,这些变化在某种程度上更高级,并且仍在积极研究中。

Avail 更有效的模型是让单个节点构建并将承诺传播到网络。所有其他参与者然后将生成和验证证明。
这是我们第一次不仅启用轻客户端,而且链的任何部分都可以做到这一点。我们允许验证者以与轻客户端相同的方式进行抽样。
此模型具有单个验证者节点,该节点提议一个区块,为数据矩阵的所有行创建承诺,然后仅提议块头。
步骤 1:提议者仅传播块头。
步骤 2:由于验证者仅接收块头,因此他们无法解码或重建区块。但是因为他们能执行数据可用性抽样,他们也不需要这么做。
在这种情况下,其他验证者的行为类似于轻客户端。
这些其他验证者将使用承诺来抽样数据可用性,并且仅在他们达到可用性保证时才接受区块。
在这个世界中,所有节点都将以类似于轻客户端的方式运行。验证者可以避免使用区块体来重新生成承诺,以确保区块生产者的正确计算。
当验证者可以简单地依赖证明验证时,生成承诺来证明计算是不必要的。
全节点有可能仅通过块头就确定它们正在遵循正确的链,因为我们不需要全节点来验证区块的有效执行;Avail 不执行执行!我们只需要可用性证明,块头(结合一些随机样本)可以提供该证明。这使我们能够减少成为验证者所需的计算量。
这还具有可能减少通信时间的额外好处。
我们不愿在短期内commit于此模型,因为这需要脱离 Substrate 的基本结构。我们需要删除 extrinsic 根,这将破坏对 Substrate 工具的所有访问,尽管这是我们正在积极探索的改进。

另一种模型从 EIP-4844 借用了分片 blob 模型。
对于此系统,请想象:
区块提议者不需要做太多的工作,因为承诺是由许多参与者生成的。
lazy proposer 模型具有单个区块提议者。然后可以以类似于上述提议者-构建者分离的方式分解行动者。
可以有多个构建者创建小块区块。他们都将这些块发送到一个实体(提议者),该实体对每个块进行随机抽样以构建提议的块头。
区块体是用逻辑结构构建的。
lazy prosper 模型与其他模型的不同之处在于,区块构建者和区块提议者是独立的实体。
假设四个区块构建者各自具有数据矩阵的一行。每个构建者使用该行创建一个承诺。
然后,每个构建者将其行和构建的承诺发送给指定的提议者,后者从区块体中抽样数据以确认给定的承诺。然后,提议者对承诺执行多项式插值,以便他们不仅具有最初构建的四个承诺,而且还具有八个承诺。现在已经对数据矩阵进行了纠删码和扩展。
这八行和八个承诺由同一提议者验证。
在查看整个矩阵时,我们可以看到一半的行是由提议者(通过纠删码)构建的,另一半提供给他们。
然后,生产者提出一个块头,每个人都接受。这导致生成的区块看起来与 Avail 测试网当前生成的区块相同,尽管它们的构建效率更高。
Avail 的 lazy proposer 模型效率更高,但也相当复杂。虽然还有其他的,更容易实现的机会来优化整个系统,但 Avail 团队很高兴探索实施此模型。
lazy proposer 模型与当今在非 Avail 区块链上处理单个区块链交易的方式没有太大不同。
今天,当任何人在几乎任何链上进行交易时,他们都会将该交易的记录发送给所有对等方。很快,每个对等方在其 mempool 中都有此交易。
那么区块生产者做什么?
区块生产者从其 mempool 中获取交易,将它们整理在一起,并生成一个区块。这是区块生产者的典型角色。
对于 Avail,数据 blobs 及其承诺的处理方式与单个交易类似。这些 blob+承诺组合在系统上传播,就像在传统链上发送单个交易一样。
很快,每个人都会对 blobs 做出承诺。有了这些承诺,提议者就可以开始随机抽样以确保数据可用性。通过足够的抽样信心,节点将扩展这些承诺,接受区块体中的数据,并构建块头——从而创建下一个区块。
这些针对 Avail 的架构提案旨在展示将数据可用性层与区块链其余核心功能分离的影响。
当数据可用性由其自身处理时,可以进行优化以将数据可用性视为独立的层,该层比将数据可用性绑定到其他区块链功能(如执行)时可以进行的改进更大。
无论它们被称为第 3 层解决方案、模块化区块链还是链下扩展解决方案,我们都很高兴看到团队使用此专用数据可用性层来实现什么。团队可以放心,Avail 将能够直接与构建在其上的任何链或应用程序一起扩展。当我们构建一个由 100 多个验证者、数千个轻客户端和许多新链组成的模块化区块链网络时,我们预计在扩展以满足需求方面不会出现任何问题。
Avail 测试网已经上线,更新的版本正在路上。随着 Avail 向主网发展,我们有兴趣与任何希望在其链上实施数据可用性解决方案的团队合作。如果你想了解更多关于 Avail 的信息,或者只是想直接问我们一个问题,我们很乐意收到你的来信。请查看 我们的存储库,加入 我们的 Discord 服务器。
本文最初发表在 Polygon 的官方博客上。
开发者 Avail DA 可扩展性 区块链可扩展性 数据可用性抽样 KZG 模块化区块链
- 原文链接: blog.availproject.org/ab...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!