原文标题:《以太坊多链发展前路何方,或许波卡能给参考答案》
撰文:Apoorv Sadana
编译:夫如何,Odaily 星球日报
当越来越多的 L2、应用链依靠以太坊作为结算层后,多链之间的互操作性和每条链的去中心化程度就显得尤为重要。
本文讨论了共享排序器的概念,共享排序器可以使不同的应用链共享一组验证者来实现去中心化,并通过订单引擎和 Rollup 引擎来处理交易排序和执行。
但共享排序器和 Polkadot 的多链设计架构具备高度相似性,可否将 Polkadot 现成的技术引入以太坊生态系统,从而提高以太坊多链的发展进程。
以下由 Odaily 星球日报编译。
100 个应用链会发生什么?
假设我们处在一个未来,现在有 100 个不同的应用链在以太坊上结算。让我们来解决这将引发的问题。
去中心化的碎片化
每个应用链都需要自行解决去中心化的问题。现在,应用链的去中心化并不像 L1 那样必要,主要是因为我们依赖 L1 来确保安全性。然而,我们仍然需要去中心化来确保生命力、抵抗审查和避免垄断优势(例如高费用)。然而,如果每个应用链都采用自己的方式解决去中心化问题,这将导致验证者集的碎片化。每个应用链都必须开发经济激励措施来吸引新的验证者。此外,验证者还需要选择他们愿意运行的客户端。这为开发者启动自己的应用链创造了巨大的准入门槛(与部署智能合约相比,后者只是一次交易)。
可组合性
可组合性基本上意味着跨应用的交互。在以太坊或 Starknet 上,这仅仅意味着调用另一个智能合约,其他一切都由协议自己处理。然而,在应用链中,这变得更加困难。不同的应用链有自己的区块和共识机制。每次尝试与另一个应用链交互时,你需要仔细审查共识算法和最终性保证,并相应地设置跨链桥接(直接到链上或通过 L1)。如果你想与 10 个具有不同设计的应用链交互,你需要做这 10 次。
开发体验
解决去中心化和桥接并不容易。如果每个应用链都需要解决这些问题,对于普通的智能合约开发者来说,建立自己的应用链将变得非常困难。此外,由于每个应用链都试图以自己的方式解决这些问题,我们很快会看到不同的链遵循不同的标准,这将使新项目方加入生态系统变得更加困难。
共享排序器可以解决这个问题
如果你关注应用链领域,你可能听说过「共享排序器」这个术语。它是指为解决上述问题而共享一组公共验证者的想法。它的工作原理如下。
共享去中心化
共享排序器的核心思想是不需要为每个应用链或 L2 拥有不同的验证者集。但可以拥有一组非常高效和去中心化的验证者,为所有的链排序区块。
由于今天几乎每个排序器都是集中化的,排序器被视为一个单一应用程序,它收集交易,对它们进行排序,执行它们,并将结果发布到 L1 上。然而,这些任务可以分解为多个模块化组件。出于解释的需要,我将其分为两个部分。
排序引擎:负责按照特定的顺序对交易进行排序。一旦排序引擎决定了这个顺序,就必须遵循此顺序。此举在 L1 上提交此顺序并强制 L1 验证者检查是否按照所需的顺序执行交易来实施的。
Rollup 引擎:Rollup 引擎基本上包括 Rollup 所做的一切:从用户收集交易,执行交易,创建证明并更新 L1 上的状态。理想情况下,这可以分解为更多的组件,但在本文中我们将避免这样做。 在这里,排序引擎是共享排序器,Rollup 引擎基本上是所有 Rollup 逻辑。
因此,交易的生命周期如下所示。
共享排序器基本上对 Rollup 中的交易进行排序,并将其提交到 L1 上。共享排序器通过将共享排序器集合去中心化,也就意味着与该排序器集合连接的所有 Rollup 都变得去中心化了。
可组合性
可组合性的一个主要问题是了解交易在其他应用链上何时最终完成,并相应地在链上采取行动。但是共享排序器可以让可组合的 Rollup 互相共享区块。因此,如果在 Rollup B 上发生交易回滚,整个区块都会回滚,这也导致 Rollup A 上的交易回滚。
现在,这听起来肯定比实际操作要容易。为此,Rollup 之间的通信需要高效且可扩展。共享排序器需要制定关于 Rollup 如何通信、跨链消息应该是什么样子、如何处理 Rollup 升级等方面的适当标准。尽管这些问题是可以解决的,但也不易实现。
开发者体验
虽然共享排序器确实抽象了去中心化方面,使跨链消息传递变得更容易,但每个链仍然需要遵循一些标准,以与共享排序器兼容。例如,所有 Rollup 交易都需要转换为排序器所理解的通用格式。同样,需要过滤排序器的区块以获取相关交易。为了解决这个问题,我认为共享排序器将推出 Rollup 框架或 SDK,将样板代码抽象出来,只向应用链开发者公开业务逻辑部分。
以下是应用链在使用共享排序器时的示意图。
以太坊多链可否借鉴 Polkadot 的设计架构
Polkadot 在以太坊之前就开始着手多链的未来。实际上,他们已经在这方面工作了 5 年多了。如果你熟悉 Polkadot,你可能已经注意到上面的设计基本上是重新发明了 Polkadot 已经完成的许多事情。
中继链(共享去中心化)
中继链基本上就是上面序列图中的排序引擎 +L1。中继链的功能包括:
对所有平行链(Rollup)的交易进行排序 验证交易是否正确执行(它不使用零知识验证,而是重新运行 Rollup 的执行代码,以验证状态差异)。
你可能已经意识到,中继链基本上就是我们上面讨论过的共享排序器。不同的是,中继链还需要验证执行,而我们将这一点留给了以太坊。
XCM 和 XCMP
我们在前面的部分提到,如果每个链都建立自己的方法来与其他链进行互操作,那么很快我们就会在所有链上看到不同的标准和格式。你需要跟踪与每个链交互的所有这些格式。此外,你还需要回答诸如如果一个链升级会发生什么之类的问题。然而,这些问题可以通过引入所有链必须遵循的标准来解决。
正如你可能已经猜到的,Polkadot 已经做到了这一点。XCM 是消息格式,XCMP 是消息协议,所有的子链都可以使用它们来相互通信。
Substrate 和 Cumulus
Substrate 是 Parity 开发的一个用于构建区块链的框架。虽然 Polkadot 上的所有平行链都使用 Substrate,但 Substrate 实际上是以链无关的方式构建的。该框架抽象了区块链的所有通用方面,专注于应用逻辑。正如我们所知,Madara 是基于 Substrate 构建的,Polkadot、 Polygon Avail 和许多其他项目也是如此。此外,Cumulus 是在 Substrate 之上的中间件,可以将你的链连接到 Polkadot。
因此,继续之前的类比,Substrate 和 Cumulus 可以被视为替代 Rollup 框架的解决方案,它们允许构建应用链并将其连接到共享排序器。
- 共享排序器 → 中继链
- 可组合性 → XCM 和 XCMP
- Rollup 框架 / 堆栈 → Substrate 和 Cumulus
上述基本上就是 Polkadot 的翻版,除此之外,Polkadot 和 Parity 拥有一些经验丰富且资金充裕的团队,他们继续改进 Substrate 和 Polkadot,增加更多功能并提高可扩展性。这项技术经过多年的实战测试,并且具备丰富的开发工具。
在以太坊上结算 Polkadot?
虽然 Polkadot 确实在以太坊之前开始构建多链的未来,但无可否认的是,截至今天,以太坊是最具去中心化的区块链,也是大多数应用和流动性所在的地方。然而,如果有一种方法将所有 Polkadot 技术引入以太坊生态系统,会怎样呢?
实际上,我们已经开始这个工作了,Madara 就是一个例子。Madara 使用 Substrate 框架允许任何人在以太坊上构建自己的基于 zk 的 L2/L3 解决方案。接下来我们需要的是以共享排序器形式的 Polkadot 中继链。如果我们可以重用 Polkadot 中继链,但是移除验证部分,因为在 L1 上通过 zk 证明进行验证 将交易的顺序提交到 L1 上 优化节点和共识算法,以支持 Tendermint /HotStuff 我们就可以得到前面提到的共享排序器。
显然,这说起来容易做起来难。然而,我认为这条道路比从头开始重建排序器、标准和框架更加务实。Polkadot 已经以一种与链无关的方式解决了许多问题,我们可以借鉴它们用于以太坊。作为一个附带产品,我们也能得到:
● 一个积极开发者社区,继续为 Substrate 构建和教育全世界。
● 一个活跃的开发工具集和强大的社区。
● 许多活跃的平行链也可以选择在以太坊上结算,如果他们愿意这样做的话(最近我们看到 Astar 使用 Polygon CDK 做了同样的事情) 。
结论
我撰写这篇文章的主要目的是在 Starknet 和以太坊的更广泛生态系统中引发讨论。我认为共享排序模型将在 Starknet 的去中心化以及所有考虑在其上构建的应用链的去中心化中起着重要的作用。只要我们对应用链的论点和 zk 扩展性有信心,对共享排序模型进行彻底的分析是不可避免的。此外,随着 Madara 向生产环境迈进,Starknet 已经开始了去中心化的工作,我认为现在是解决这个问题的时候了。因此,我请求每个阅读这篇文章的人对这个话题提出任何反馈 / 建议。期待阅读你的想法。