V神:若将 rollup 作为ETH发展中心 路线图将做怎样的调整?
译者注:今年以来,rollup 作为一种非常有潜力的扩容方案得到了广泛的关注,多个使用 rollup 技术的二层项目在主网或测试网上线,Vitalik 本人则是多次号召社区关注并使用 rollup。本月初,Vitalik 更是在以太坊魔术师论坛上写了一篇文章详细讲述,如果将 rollup 作为以太坊未来发展中心,以太坊的路线图应该做怎样的调整?
需要注意的是,以太坊社区采用的是一种市集类型的开发模式——在这种模式中,不存在一个集权式的中心,取而代之的是透明开放的讨论。也就是说 Vitalik 本人发了这个帖子之后,并不意味着以太坊的路线图马上就做相应变更了。市集模式大大增强了以太坊的包容性和演化过程中涌现出群体智慧的可能性,因此当 rollup 在区块链世界的演化过程中逐渐展现出了其潜力之时,Vitalik 发起的讨论势必会使 rollup 在以太坊演化的过程中扮演更重要的角色。
为了更好地说明自己文章中观点的背景,Vitalik 在多个场合进行了更详细的补充说明,我们将 Vitalik 在社交媒体中的相关发言放在本文的开头,充当背景介绍和摘要;Vitalik 在以太坊魔术师论坛上的帖子则作为正文放在中间;最后,我们还节选了 Vitalik 在月初的 ETHGlobal 活动上的问答,供读者参考。
分片不是被取消,只是被叠加
当前的 ETH2.0 路线图包含 3 个阶段:
Phase 0:PoS(该阶段正在实施并将很快实现)
Phase 1:数据分片,但不包括计算分片(也就是说,分片链将会 “包含” 容量达 2 MB/秒 的数据,但数据都是哑数据对象,不是交易)
Phase 2:交易分片(分片化的交易处理功能)
以太坊当前的 TPS 大约为 15-45,使用 Rollup 可以提升吞吐量 100 倍。分片则可以提升吞吐量 64 倍。将这两项技术实现的吞吐量叠加,也就是说在分片基础上叠加实现 rollup,可以实现 6400 倍的吞吐量提升。
但目前的路线图会衍生出一个有趣的意外:实现分片应用的愿景要到 Phase 2 才会实现,但分片 rollup 在 Phase 1就可以实现了,因为 rollup 只需要用到主链上存储数据的功能,不需要主链实现计算功能。所以在 ETH 2.0 完整实现前,以太坊就具备了扩容 6400 倍的条件。
因此,并不是用 rollup 取代分片,而是在分片上叠加 rollup。也就是说,在分片实现之前,rollup 已经可以实现 100 倍吞吐量的提升,因此尽快使用 rollup!
以 Rollup 为中心的以太坊路线图
上周,Optimism 团队宣布启动 Optimism 的第一阶段测试网(中文译本),同时宣布了迈向主网上线的路线图。Optimism 并不是唯一正在实现 optimisitic rollup 的团队,Fuel 的 rollup 也在向测试网迈进,Arbitrum 也在做一个 rollup。Loopring、zkSync 实现的基于 zk-rollup 的 rollup 方案已经上线,基于 Starkware 技术的 Deversifi 也已经上线,已经有用户在主网上使用这些产品了。OMG 的主网测试版上线则表明 plasma 也在向前发展。与此同时,eth1 上的 Gas 价格正在攀升到新的高点,以至于一些非金融类的 dapp 被迫关闭,还有一些 dapp 只能在测试网上运行、无缘主网。
系统的可扩展性本是 Eth2 的题中之义,而且 Eth2 的早期阶段也正在快速推进。但对于使用基础层的应用来说,可扩展性要到 Eth2 的最后一个主要阶段(Phase 2)才会出现,这还需要几年时间。略具讽刺意味的是,在 Eth2 的 Phase 1,Eth2 就可以作为 rollup 的数据可用性层使用了,这远早于 Eth2 可以被 “传统的” 一层应用(译者注:即当前运行于 eth1 上的应用)所用的时间。汇总这些因素,会得出一个特别的结论:以太坊生态系统很可能会全身心地投入到 rollup(外加一些 plasma 和状态通道方案)中,作为近期和中期实现可扩展性的战略。
若以此结论作为前提,则关于以太坊核心开发和生态开发的优先事项,我们将得出一些结论,暗示了在某种意义上与当前的路线图不同的方向。具体来说,我们可以得出哪些结论?
短期路线图:围绕 rollup 推进 ETH1
关于短期内的方向,一个主要的结论是,以太坊基础层的可扩展性将主要聚焦在扩展每个区块可以容纳的数据量,而不是链上计算或 IO 操作的效率。因为对于 rollup 来说,其可扩展性的唯一决定性因素是链上能容纳多少数据。任何超过当前数据容量(约为 60 kB/秒)的扩容办法,都将有助于进一步提高 rollup 的可扩展性。
在此视角下,以下基础层的改进方案仍具有意义(可帮助提高 rollup 的可扩展性):
EIP 2929 , 确保以太坊主链在当前的 Gas 设定下可以抵御 DoS 攻击
EIP 1559 , EIP 1559 既可以实现 ETH 的燃烧,也可以使一笔交易更容易被下一个区块打包(rollup 系统需要依赖交易在主链上得到确认)
新的椭圆曲线预编译,从而可以更全面地挖掘 ZK rollup 的潜在性能
十六进制 -> 二进制树变更,以及其它推动更好支持无状态客户端的变更(不论如何使用主链,无状态客户端都是很有价值的)
账户抽象的重要性稍弱,因为不管 L1 是否支持账户抽象,都可以在 L2 上实现。其他类似的 “巧妙的基础层特性” 也会变得相对不那么重要。
Eth1客户端可以被 optimistic rollup 客户端再利用。optimistic rollup 仍然需要有全节点,如果 rollup 内部的状态转换规则与以太坊类似,只是做了一些修改(这是 Optimism 的目标),那么现有的代码可以被再利用,用来运行 rollup 的全节点。将共识引擎与状态转换引擎分离出来的工作已经在 eth1+Eth2 合并的背景下进行,该工作也可以帮助实现上述目标。需要特别注意的是,像 TurboGeth 这样的项目仍然是非常重要的,只是从中获益最大的将是高吞吐量的 rollup 客户端,而不再是基础层的 eth1 客户端。
短期路线图:围绕 Rollup 调整相应的基础设施
目前,用户的账户在 L1 上,ENS 域名在 L1 上,应用也都运行在 L1 上。一切都需要改变。我们需要适应这样一个世界:用户的主要账户、余额、资产等完全在 L2 里面。由此会造成这些情形:
ENS 需要支持在 L2 上注册和转移域名;关于如何实现这一点的一个可能的提案参见这里。
L2 层协议应内置到钱包中,而不是像 dapp 那样放到网页上。目前,L2集成到 dapp/ 类 dapp 中(例如 Gitcoin 对于 zksync 的集成)需要用户完全信任 dapp,这与现状相比安全性大大降低。理想的情况是让 L2 成为钱包(metamask、status等)本身的一部分,这样我们就可以维持目前的信任模型。这种支持应该是标准化的,这样一个支持 zksync 支付的应用就会立即支持 zksync-inide-Metamask、zksync-inide-Status 等。
我们需要在跨 L2 转账上做更多的工作,使资产在不同 L2 之间的转移时,具有尽可能即时和无缝衔接的用户体验。
更明确地将 Yul 或类似的东西标准化为中间编译语言。以太坊的底层 EVM 和 Optimism 推出的 OVM 使用的编译目标略有不同,但都可以由 Solidity 编译。为了支持一个具有不同编译目标的生态系统,但同时避免 Solidity 的单一文化并接纳多种语言,更明确地标准化像 Yul 这样的东西作为中间语言可能是有意义的,从而使所有高级语言都可以(通过编译至中间语言而)被编译至 EVM 或 OVM。我们也可以考虑一种更明确的对于形式化验证友好的中间语言,它可以处理像变量这样的概念,并确保基本的不变量,从而使形式化验证更加容易。
Rollup 中心主义的经济可持续性优势
一个不可回避的事实是:一个密码货币项目必须在财务上实现可持续发展。在2020年,这意味着一个项目需要数百万甚至上千万美元的资金。其中一部分可以由常见的公益资助实体(如 Gitcoin Grants 或以太坊基金会)提供,但其规模实在不足以达到上述资金量级。二层项目可以通过推出自己的代币的方式筹得资金 —— 当然,前提是该代币有真正的经济价值支持(即预期该 L2 可捕获未来的手续费用)。
以 rollup 为中心的路线图的第二个重要好处是,它为 L2 协议留出了开放的空间,这些 L2 协议或可直接收集费用/ MEV,或可间接通过发行代币,从而获得开发所需的资金。以太坊基础层有一个重要的需求是可信中立性,这使得协议内的公益资助变得困难(想象一下对谁应该获得多少钱达成一致的难度),但 L2 自己设立公益资助机制(也可以在 Gitcoin Grants 上进行)的争议要小得多。因此,留出这个空间对于整个以太坊长期的经济可持续性来说是一个很好的战略举措。
除了资金问题之外,最有创造力的研究人员和开发人员往往希望在自己的地盘上创造影响力,而不是在一个没有什么影响力的位置上与其他人争论以太坊协议的未来。此外,已经有很多现有的项目在尝试创建各种平台。以 rollup 为中心的路线图为所有这些项目提供了一个明确的机会,使他们既能成为 Ethereum 生态系统的一部分,又仍然能保持高度的经济和技术自主权。
长期路线图
除了上述这些短期路线图层面的考量,以 rollup 为中心的路线图还可能意味着重新设想 Eth2 的长期未来:一个所有人都可以处理的具有高安全性的执行分片,再加上一个具有可扩展性的数据可用性层。
要想理解为什么可以这么说,可以思考一下下列数据:
以太坊目前的 TPS 约为 15。
如果所有人都转移到 rollup,TPS 将达到 3000。
一旦 Eth2 的 Phase 1 实现,rollup 转移到 Eth2 分片链进行数据存储,理论 TPS 最大值可达 100000。
最终,Eth2 的 Phase 2 将会实现,在分片基础上实现了计算,此时 TPS 约为 1000-5000 TPS。
在我看来,当 Eth2 Phase 2 最终实现的时候,已经不会有人关心了。届时无论我们喜欢与否,大家都已经适应了一个以 rollup 为中心的世界。到那时,继续沿着之前这条路走下去,比试图让大家迁移到 Eth2 完成后的基础链上要容易得多,因为迁移到 Eth2 完成后的基础链上没有明显的好处,可扩展性则会降低20-100倍。
这意味着 Eth2 到 “Phase 1.5 就完成了”,届时基础层重新收缩,只需专注于做好几件事 —— 即共识和数据可用性。
对于 Eth2 来说这可能是更合适的目标,因为对数据可用性分片比对 EVM 计算分片要安全得多。想验证分片化 EVM 计算在不诚实者占多数假设下的证明(dishonest-majority-proof),就需要欺诈证明,这需要一个严格且具有潜在风险的两个 epoch 的同步假设,但数据可用性采样(如果使用零知识证明或多项式承诺完成)在异步假设下是安全的。
这将有助于把以太坊与其他分片式二层链的安全模型区分开,这些二层链都是在执行层面进行了分片。Eth2 作为基础层的功能只需要刚刚好就行(中文译本),不需要很强大。
从长远看,Eth2 应该做什么?
错开不同分片上的区块时间,这样在任何时候总会有一些分片会在几百毫秒内出块。这样就可以让跨多个分片运行的 rollup 具有超低的延迟,而不使链本身面临超低延迟所带来的风险。
改进并巩固其共识算法
调整EVM,使其对欺诈证明的验证更加友好(例如,这可能意味着某种“框架”特性,以防止代码脱离沙盒,或允许 SLOAD/SSTORE 指令被重映射至账户存储以外的东西作为其数据源)。
与 ZK-SNARK 有关的一切
更妥协的提案
如果你不认可上述 “一路” 走到 “Phase 1.5 即完成” 的发展方向,那么有一条自然的折中之路:使 Eth2 具有少量的执行分片(例如 4-8个)和更多的数据分片。我们的目标是,执行分片的数量仍然足够少,在特殊情况下,普通计算机能够完全验证所有的执行分片,但基础层空间仍然会比现在路线图中所设定的大得多。
基础层空间不能太小,因为用户和应用仍然需要使用基础层进行一系列操作,例如在不同的 rollup 之间移动,提交欺诈证明,在 ZK rollup 中提交 ZK 证明,发布根 ERC20 代币合约(当然,多数用户大多数时间都会使用 rollup,但基础层合约必须存储在基础层的某个地方...)等等。而如果这些操作所涉及的每笔交易的成本是140美元,用户体验仍然是非常差的。因此,如果有必要,设定 4-8 个执行分片而不是 1 个,可以大大缓解这一问题。而且一台计算机仍然可以验证所有的分片。如今,以太坊上每 13 秒就能挖出一个区块,而验证一个区块平均耗时约 200-500 毫秒,所以短时间内验证 8 个线程是完全可行的。可以想象客户端会有这样的对策:"只要网络延迟很低,或委员会人数达到满员数量的 80%,依靠欺诈证明和委员会,可以在特殊情况下直接验证所有分片"。
在 ETHGLOBAL 上针对该文的问答
Q: L2 致力于解决扩容问题,在社区已经被研究和讨论多年,但之前的尝试似乎不太成功,你对 rollup 有多大信心?这次扩容尝试和之前相比有什么不同?
A: 我在博客文章中对这个问题有更详细的讨论(中文译本)。我的主要观点是 rollup 与状态通道及 plasma 都有所不同。对于扩容来说,要扩容两样东西,扩容计算和扩容数据可用性。我的观点是,状态通道和 plasma 都不解决数据可用性问题,他们用了一类特殊的与应用场景相关的技巧试图解决这个问题。与前两者不同的是,rollup并不把所有东西都放在链下,而是将计算放在链下,但是将一定量(比如10,16,50 bytes)的数据存储在链上,这是 rollup 的扩容性能受到一些限制的原因。也就是说 Rollup 更加妥协一些,为了支持任意状态机牺牲了一些扩展性。对于 plasma 来说,一开始我们认为可以解决在 plasma 中运行任意状态机的问题,但最终我们意识到这是做不到的。但对于 rollup 来说,有一些数学和技术层面的证据可以证明 rollup 可以实现这些功能 —— 任意状态机,也即是某种图灵完备性。在实践中,rollup 已经成功运行一段时间了,例如已经有了 3 个使用 rollup 的 DEX,你也可以在 gitcoin 捐款时使用 rollup,sythentix 等项目则在支持 evm 的测试网中进行测试。可以说,在状态通道和plasma中没有得到解决的问题,我觉得在 rollup 中已经得到逐步解决了。
Q:当前 L1 具有可组合性/互操作性,你觉得未来仍然会具备吗?换一个角度,你是觉得未来是会是多 rollup 共存,还是会形成赢家通吃? A:这是一个好问题。我觉得会有一些 rollup 在最后占据主导地位。我觉得 rollup 同时具备了网络效应和反网络效应。主要的反网络效应是:TPS 越大,跑一个 rollup 全节点越难,这在一定程度上会降低其可用性。另一方面,目前 rollup 有几个不同的技术路线,我是希望这些技术路线和对应的技术特性在短中期都得到测试的。从长期来看,也许某一个 rollup 会赢家通吃,但我还不能确定 :)
Q:你在文章中描绘了一个可能的愿景,你觉得以太坊基础层什么时候会稳定下来?还是说会一直在迭代改进?
A:在我提出的路线图中,我希望以太坊 2.0 在 1.5 阶段达到基本稳定的状态,这也是我在文章中提及 “1.5阶段即完成” 的原因。但是在这之后还是会有持续的技术迭代,这些技术迭代主要包括增加更多零知识证明从而提高安全性和效率,将共识机制从 FFG 改为 CBC,以及将密码学原语切换为后量子密码学原语。这些改进基本不会影响以太坊的经济系统和基本的安全特性。我绝对期待持续在很长一段时间里技术会持续迭代优化,当然这些优化更多接近于运维层面。
原文链接:
https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698
https://twitter.com/VitalikButerin/status/1312905882330521600
作者: Vitalik
翻译&校对: 安比实验室 & 阿剑