Rollup的丝滑利器?一文读懂共享排序器Astria

转载
147 天前
3530
Foresight News

文章转载来源: Foresight News

作者:1912212.eth,Foresight News

随着以太坊二层网络的日益成熟以及 Gas 费用的显著降低,这些网络正呈现出蓬勃增长的趋势,但随之而来的问题也随之浮现,如费用以及速度会受到多方面的影响而差强人意,令用户体验不尽人意。在此背景下,交易排序的重要性愈发凸显,成为解决交易瓶颈和优化用户体验的关键所在。

今年 4 月,专注共享排序器的模块化区块链 Astria 完成 550 万美元种子轮融资,Maven 11 领投,1kx、Delphi Ventures、Robot Ventures 等参投。仅仅过了 3 个月,Astria 再次完成 1250 万美元融资,dba 和 Placeholder VC 领投,Hasu 等参投。

Astria 是什么?

Astria 正在开发去中心化的共享排序器网络,旨在为 Rollups 提供快速最终确定性、抗审查性、可组合性以及去中心化。

目前,L2 运行一个中心化排序器更方便、更便宜、更易于用户使用,所以主流的 L2 都由自己的团队负责。虽然 L2 用户可以直接向 L1 提交交易以绕过排序器,但用户必须向 L1 支付交易 Gas 费,而且交易可能需要更长的时间才能最终完成。

排序器控制着交易的排序,理论上它有权不将用户交易纳入其中。排序器还可以从交易组中提取 MEV。如果只有一个排序器,中心化的风险就会变大。

因此,一个去中心化的共享排序器仍具有其意义。

Astria 如何运转

Astria 去中心化的排序器有多个排序器节点,从而能够排序 Rollup 交易。Astria 的运转模式里,用户将交易提交到 Rollups 中,交易自动进入各自的 Rollup 节点内存池,其中组合器负责收集 txnx,并将其发送到排序器。最后,排序器将 txnx 汇总到一个共享区块中,最后向用户发送预确认。

目前的排序器都是基于特定 Rollup 来实现的。Astria 则为多个 Rollup 来批量处理区块。通过数据压缩,可以在将数据发布到 L1 时节省更多成本。去中心化的共享排序器网络会激励来自多个 Rollup 生态系统的参与者,来充当网络上的验证者。

Astria 堆栈

Astria 的主要构成部分包括 5 大部分,分别是组合器、排序层、中继器、DA 以及调度器。

组合器

懂技术的专业人员或许能直接利用排序层来进行更好的交易排序,但绝大多数的普通用户实际用起来会增加难度。直接与排序层交互,需要用户持有排序器代币并维护排序器钱包,这两点都给用户体验带来了不小的负面影响。

Astria 为用户提供组合器来抽象化这种复杂性的工具。组合器相当于一个 Gas 加油站,承担用户交易的排序成本。组合器还为用户提供无序保证,按照收到的顺序捆绑交易。

排序层

Astria 排序层使用 CometBFT 作为其共识算法。支持 CometBFT 的链能够支持 IBC(区块链间通信),这意味着它能在许多其他链之间跨链。

Astria 排序器的独特之处在于,它包含的事务不会被执行(延迟排序),而是被指定给另一个执行引擎 Rollup。排序器节点可以选择充当「验证者」,这意味着它积极参与新块的生产和最终确定。

Astria 排序器的应用程序逻辑允许三个主要功能:

  • Rollup 数据的排序
  • 价值转移
  • 验证器集的更改

中继器

中继器的功能是从排序器中获取经过验证的块,并将它们传递到 DA 层。由于排序器的块时间比 DA 快,因此中继器会先对来自多个排序器块的有序数据进行批处理,然后再对其进行压缩,并将其提交给 DA。

各个排序器块也可以在中继器将其提交给 DA 之前由调度器获取。这可以实现改进的用户体验的快速最终确定,充当执行层的软提交。由中继器发送到 DA 层的数据集合被用作事实来源,并最终从 DA 中提取出来,用作 Rollup 中最终确定性的确认提交。

DA

Astria 使用 Celestia 作为数据可用性层,是排序器网络排序的所有数据最终目的地。一旦数据写入到 Celestia,交易顺序就被认为是最终的,当新的 Rollup 节点启动时,所有数据都将从这里提取。

调度器

调度器可以被认为是 Rollup 全节点的共识实现,类似于 OP Stack 中的操作节点。 调度器是执行引擎的对应部分,它们共同构成一个完整的 Rollup 节点。它的作用是通过从每个排序器块中,提取属于 Rollup 节点的事务并将其转发到执行层,将排序器和 DA 层连接到 Rollup 执行层。

对于每个排序器块,提取其所需的相关 Rollup 数据,然后验证批量的 Rollup 数据,等待验证完成,它就会将其转换为事务列表,并将其传递给执行引擎。