Vitalik Buterin:探讨以 Rollup 为中心的以太坊发展路线

温馨提示:这篇文章已超过853天没有更新,请注意相关的内容是否还可用!

以太坊生态需要将发力点集中到 Rollup 上以应对短期和中期的扩容需求。

原文标题:《Vitalik:以 Rollup 为中心的以太坊路线图》
撰文:Vitalik Buterin
来源:ETH 中文网

Optimism 团队不久前发布了其测试网的第一阶段,及其通向主网的路线图。除此之外,Fuel 也在推进测试网进程,Arbitrum 也已经登陆测试网。在 ZK Rollup 领域中,Loopring、Zksync 以及基于 Starkware 技术的 Deversifi 已经正式在主网上线,并且聚集了一定的用户。随着 OMG network 推出其主网 bata 版本,plasma 也有所进展。

与此同时,Eth1 链上的 gas 费已经达到了新高,以至于非金融类 DApps 被迫停止运行,其他应用也只能在测试网中运行。

Eth2 的发展目标之一就是增强扩容性,我们已经非常接近 Eth2 前期阶段了,但要为应用提供基础层扩容性,我们还需要等到数年之后 Eth2 最后一个主要阶段 (译者注:即阶段 2) 的实现。讽刺的是,Eth2 作为 Rollups 数据可用性层的可用性在阶段 1 就能实现,而在许久之后 Eth2 才能真正用于「传统」的 L1 应用。

将这些事实结合起来,我们可以得出一个结论:以应对近期和中期的扩容性需求,整个以太坊生态系统需要将发力点集中到 Rollups 上 (以及 plasma 和通道技术)。

如果以此为前提,我们就能得知以太坊中心开发和生态系统发展应该优先考虑的问题,而这多多少少与当前的发展路径有所不同。那么我们应该优先考虑哪些问题呢?

短期:推进 Eth1 基础建设以支持 Rollups

在短期内,这样做的一个主要结果在于:针对以太坊基础层的扩容工作将主要集中于扩大区块的数据容量,而不是优化链上计算或 IO 操作的效率。Rollup 扩容性的决定性因素在于该链能包含多少数据,如果能够在当前约 60 kB/ 秒的基础上有所提升,Rollups 的扩容性则能得到进一步优化。

在基础层上,以下因素需要持续重视:

  • EIP 2929:在当前 gas 情况下保证以太坊区块链能够抵御 DoS 攻击
  • EIP 1559:一是推动 ETH 销毁,二是优化交易效率,并且几乎能够确保交易被打包到下一个区块中 (Rollups 仍然需要等待确认)
  • 新的椭圆曲线预编译,以实现对 ZK Rollups 编程的完全支持
  • 无状态客户端的相关工作,包括从十六进制树转换为二进制树等 (无论我们如何使用以太坊区块链,无状态客户端都非常有意义)

账户抽象 (account abstraction) 不太迫切,因为无论 L1 是否支持,我们都能在 L2 上实现。还有其他「巧妙的基础层功能」目前相对来说都没那么重要。

Eth1 客户端可以被重新定义为 Optimistic Rollup 客户端。Optimistic Rollups 仍然需要全节点,并且如果 Rollup 的内部状态转换规则本质上仍然是以太坊式的,只是进行了一些修改 (例如 Optimism 的目标),那么我们可以使用现有代码来运行全节点。

目前 eth1+eth2 合并工作已经实现将共识引擎从状态转换引擎中分离出来,而这项工作也有助于达成该目标。请注意,这也意味着类似 TurboGeth 的项目仍然非常重要,高吞吐量的 Rollup 客户端 (而非 Eth1 客户端) 将成为最大受益者。

短期:调整基础设施以支持 Rollups

目前,用户的账户、ENS 域名、以及应用等等都在 L1 上,这些都需要改变。我们要将用户的主要账户、余额、资产等等都放在 L2 中。随之而来的是以下几个需求:

  • ENS 需要对在 L2 上注册和转移的域名提供支持,此处是一个可能的相关提案。
  • Layer 2 协议应该被集成到钱包中,而不是网页版的 dapp 中。目前,集成了 L2 的 dapp 或是类 dapp (例如集成 zksync 的 Gitcoin) 都要求用户完全信任该 dapp,这导致安全性大打折扣。

要维持当前的信任模型,L2 成为钱包本身的一部分 (metamask、status 等等) 是最理想的情况。这类支持应该进行标准化,因此支持 zksync 支付的应用也能随即兼容内置 zksync 的钱包。

  • 加大跨 L2 转移的工作力度,目标是能够即时、无缝进行跨 L2 链的资产转移。
  • 对 Yul 或其他中间编译语言进行更加明确的标准化。以太坊的基础层 EVM 和 Optimism Rollup 所使用的 OVM 作为编译目标稍有不同,但都可以由 Solidity 编译而成。为了使生态系统存在不同的编译目标,但同时还要接受不同的语言,避免 Solidity 的单一化使用,因此更明确地对所有高级语言都能编译的中间语言 (例如 Yul) 进行标准化或许是有意义的。

我们也可以考虑对形式验证友好的中间语言,能够处理诸如变量之类的概念,还能保证基本不变量,从而使所有被编译的高级语言都更易进行形式验证。

以 Rollup 为中心带来的经济可持续性

加密货币项目必须具备经济上的可持续性,这是无法回避的事实,在 2020 年这意味着数百万甚至数千万的融资金额。其中的一部分能够由公共物品募资平台提供 (如 Gitcoin Grants 或以太坊基金会),但这些机制的规模不足以覆盖这个等级的融资。

但是 Layer 2 项目能够通过发布自己的代币来解决这个问题,前提是其代币具备真正的经济价值,即未来 L2 所捕获到的价值。

如果路线图以 Rollup 为中心,随之而来的另一个好处是为 L2 协议留出了开阔的空间,这些 L2 协议有能力通过收费或是 MEV 形式来获取发展资金,无论是直接还是间接地 (即代币发行)。

以太坊基础层非常需要保持中立,这就使得在协议内进行公共物品募资 (public good funding) 变得十分困难,但 L2 具备自己的公共物品募资机制,这样一来争议就会大大减少。因此,在这个方面留出空间对于整个以太坊长期的经济可持续性来说可能是一个不错的战略举措。

除了募资问题,具有创造力的研发人员通常都倾向于在他们自己的领域中拥有影响力,而不是针对以太坊的整体协议进行无足轻重的争辩。此外,有许多现有的项目正在尝试创建各种平台。以 Rollup 为中心的路线图使得所有这些项目有机会成为以太坊生态系统的一部分,同时仍能保留高度的经济和技术自主权。

长期视野

除了上文提到的短期考虑外,路线图以 Rollup 为中心还可能意味着我们要重新构想 eth2 的长远未来:每个人都可以进行处理的强安全性单一执行分片,以及可扩容的数据可用性层。

要理解为什么是这样,需考虑以下因素:

  • 当前以太坊的 TPS 约为 15
  • 如果大家都迁移到 Rollups 上,TPS 很快可以达到 3000
  • 一旦阶段 1 到来,Rollups 的数据存储迁移到 eth2 分片链上,理论上 TPS 最高能达到 10 万左右
  • 最后,阶段 2 实现之后为 eth2 分片链提供本地计算,TPS 达到 ......1000-5000

在我看来,阶段 2 最终到来时,基本上没有人会在意。无论我们是否愿意,所有人都已经适应了以 Rollup 为中心的世界,到了那时,比起将大家召回没有任何强处且扩容性低 20-100 倍的基础链,继续沿着这条路走下去会更加容易。

这意味着 eth2 的「phase 1.5 and done」道路,精简基础层并且工作有所侧重,即共识和数据可用性。

实际上这对于 eth2 来说是更好的发展方向,因为分片数据可用性相对分片 EVM 计算要安全得多。虽然分片 EVM 计算的不诚实多数证明 (dishonest-majority-proof) 验证需要欺诈证明,这需要有潜在风险且严格的 2 epoch 同步假设,但在异步情况下,数据可用性采样 (如果使用 ZKP 或多项式承诺) 是安全的。

这将有助于以太坊拥有比其他分片型 L2 链更强壮的安全模型,而这些分片型 L2 链都朝着某种形式的分片执行方向发展;eth2 将是功能强大的基础层,强大到足以提供功能逃逸速度 (functionality escape velocity) 就足够了。

长期来看 eth2 的工作重点有哪些?

  • 将不同分片的出块时间错开,从而保证每几百毫秒内都会有某个分片提议区块。这使得在多个分片上运行的 Rollups 拥有极低的延迟性,而链本身没有超低延迟的风险
  • 优化并巩固共识算法
  • 对 EVM 进行改动,使其对欺诈证明验证更加友好 (例如,这可能意味着某种「框架」功能,可防止代码脱离沙盒,或允许将 SLOAD / SSTORE 重新映射,使其能够使用除账户存储之外的其他数据源)
  • 对一切进行 ZK-SNARK

折衷方案

如果你并没有被说服接受「phase 1.5 and done」这个发展方向,也有自然的折衷方案:使用少量分片作为执行层 (例如 4-8 个),其他的分片则作为数据层。目标是使执行分片的数量足够低,以至于在特殊情况下,常规计算机将能够对所有分片进行完全验证,但是与当前的基础层相比,其空间仍然要大得多。

基础层空间不能被最小化太多,因为用户和应用程序仍然有需求,例如:在 Rollups 之间切换、提交欺诈证明、在 ZK Rollups 中提交零知识证明、发布 ERC20 代币根合约 (确保大多数用户将在 Rollups 中活动,但基础合约必须有安放之处)。如果每笔交易的成本为 140 美元,则大大破坏了用户体验。因此,如果有必要的话,使用 4-8 个执行分片可以显著减轻负担。一台计算机设备仍然可以验证所有分片。

如今,验证每 13 秒产生的 eth1 区块大约需要 200-500 毫秒,因此在短时间内验证这种执行的八个线程是完全可行的。我们可以想象客户端采取这些规则:如果网络延迟很低,或者委员会人数 > 80%,则可以依靠欺诈证明和委员会,而在特殊情况下直接验证所有分片。

参考资料:

Vitalik Buterin 在 ETHOnline 上的相关演讲:
https://www.youtube.com/watch?v=r0jtV9mxdI0&list=PLXzKMXK2aHh4sF0ZlCE49Frl4VJq3ME_V&index=12

来源链接:mp.weixin.qq.com