欧易数字货币交易所 更快、更好、更强

Vitalik新作:L2与执行分片有何不同?

撰文:VitalikButerin

编译:PengSun,ForesightNews

两年半前,我在“Endgame”一文中提到,区块链未来的不同发展路径至少在技术上看起来是非常地相似。在这两种情况下,链上都有大量的交易,而处理这些交易需要:(1)大量的计算;(2)大量的数据带宽。普通的以太坊节点(譬如我现在电脑上运行的2TBreth归档节点),即使有着强大软件工程性能和Verkle树,也不足以直接验证巨大的数据量和计算量。相反,在“L1分片”和以Rollup为中心的两种方案中,ZK-SNARK用于验证计算,DAS用于验证数据可用性。无论是L2分片还是Rollup,DAS都是一样的,ZK-SNARKs技术也相同。它们既是智能合约代码,也是协议的一个功能。从真正的技术意义上讲,以太坊正在分片,而Rollup就是分片。

这自然会引出一个问题:二者有什么区别?其中一个就是代码漏洞导致的后果不同:在Rollup中,代币会被盗;在分片中,共识则会破裂。但我预计,随着协议的稳固和形式验证(formalverification)技术的改进,代码漏洞的影响将越来越小。那么,这两个可能会长期存在的方案之间还有哪些不同?

执行环境的多样性

2019年,我们在以太坊中简单讨论过的一个想法是执行环境。从本质上讲,以太坊将拥有不同的“zones”,这些“zones”可以对账户(包括完全不同的方法,如UTXO)、虚拟机的工作方式以及其他功能制定不同的规则。这样就能在堆栈的各个部分实现方法的多样性,但如果以太坊试图将多职能集于一体,就很难实现这一点。

最后,我们放弃了一些更有雄心的计划,只保留EVM。不过,以太坊L2(包括rollups、valdiums和Plasmas)可以说最终还是起到了执行环境的作用。目前,我们通常专注EVM等效L2,但其实忽略了许多其他方法所带来的多样性:

ArbitrumStylus,它在EVM之外新增了第二个基于WASM的预言机;Fuel,它使用类似于比特币(但功能更齐全)的基于UTXO的架构;Aztec,它引入了一种围绕基于ZK-SNARK的隐私保护智能合约设计的新语言和编程范式。

基于UTXO的架构,来源:Fuel文档

我们可以尝试将EVM打造成一个涵盖所有可能范式的超级虚拟机,但这样做会让各个功能的效率大打折扣,还不如让这些平台做他们专业的事情。

安全折中:扩容与交易速度

以太坊L1提供了非常强大的安全保障。如果L1上最终完成的区块中包含了某些数据,那么整个共识(包括极端情况下的社会共识)都会努力确保这些数据不会被修改,确保由这些数据触发的任何执行都不会被还原,并仍可访问这些数据。为了实现这种安全保证,以太坊L1愿意接受高昂的成本。在本文撰写时,交易费用相对较低:Layer2每笔交易收费不到1美分,即使在L1上,基础的ETH转账也不到1美元。如果技术进步足够快,可用区块空间的增长能跟上需求的增长,那么这些费用在未来可能会一直比较低,但也可能不会。对于许多非金融应用(譬如社交媒体或游戏)来说,即使每笔交易0.01美元也太高了。

但社交媒体和游戏并不需要与L1相同的安全模式。如果有人花一百万美元就能撤销他们输掉一盘棋的记录,或者让你的一条推文看起来像是在实际发布三天后发布的,那也没关系。因此,这些应用不应支付相同的安全成本。L2方案通过支持从rollups、plasma到validiums的一系列数据可用性方法来实现这一点。

不同的L2类型适用于不同的使用情况。更多可阅读。

另一个折中方案是围绕从L2到L2的资产传输问题产生的。我预计,未来5到10年,所有Rollups都将是ZKRollup,而Binius和带有lookups的CircleSTARKs等超高效证明系统,再加上证明聚合层,将使L2在每个slot提供最终状态根成为可能。但目前,我们只能将OptimisticRollup和ZKRollup复杂地糅合在一起,并使用不同的证明时间窗口。如果我们在2021年实施执行分片,那么保持分片诚实的安全模型将是OptimiticRollup,而不是ZK,因此L1将不得不管理链上系统复杂的欺诈证明逻辑,提款时间也要长达一周,以便将资产在分片之间转移。但和代码漏洞一样,我认为这个问题最终也是暂时的。

交易速度是安全折中的第三个方面,也是更持久的一个方面。以太坊每12秒出块,而且不会更快,否则中心化程度过高。然而,许多L2正在探索将出块时间压缩到几百毫秒。12秒已经不算太差:用户在提交交易后平均需要等待约6-7秒才能被纳入一个区块(不只是6秒,因为下一个区块可能不会纳入他们)。这与我用信用卡付款时需要等待的时间相当。但是,许多应用需要更快的速度,而L2可以做到。

为了让速度更快,L2有一个预确认(preconfirmation)机制:L2自身的验证者以数字签名的方式承诺在特定时间包含交易,如果交易未被包含,他们会受到惩罚。StakeSure机制进一步推广了这一机制。

L2预确认

现在,我们可以尝试在L1实现所有这些功能。L1可以包含一个“快速预确认”和“慢速最终确认”系统。它可以包含具有不同安全级别的不同分片。不过,这会增加协议的复杂性。此外,在L1完成所有工作会有使共识超载的风险,因为许多更大规模或更高吞吐量的方法,其中心化风险更高,或需要更强的“治理”形式,如果在L1完成,这些更强需求的影响会波及协议的其他部分。通过L2提供折中,以太坊在很大程度上可以避免这些风险。

Layer2之于组织与文化的裨益

设想一个国家被一分为二,一半变成资本主义国家,另一半变成政府高度主导的国家(与现实中发生的情况不同,假设在这个思想实验中,这不是任何创伤性战争的结果,而是有一天边界自然出现,仅此而已)。在资本主义部分,餐馆都是由不同的去中心化所有权、区块链和选举权组成。在政府主导制国家,它们都是政府的分支机构,就像警察局一样。第一天,不会有太大变化。人们基本上会遵循现有的习惯,哪些可行,哪些不可行,取决于劳动技能和基础设施等技术现实。然而,一年之后,你就会看到巨大的变化,因为不同的激励和控制结构会导致行为上的巨大变化,从而影响人的来去留,什么被建设,什么被维护,什么被遗弃。

产业组织理论讲了很多此类区别:它不仅谈到了政府管理的经济与资本主义经济之间的区别,还谈到了由大型特许经营企业主导的经济与每家超市都由独立企业家经营的经济之间的区别。我认为,以L1为中心的生态系统与L2为中心的生态系统之间的区别也是类似的。

“核心开发者管理一切”的架构出了大问题

作为一个以L2为中心的生态系统,我认为以太坊的主要优势如下:

由于以太坊是一个以L2为中心的生态系统,因此你可以自由地独立构建一个具有自己独特功能的子生态系统,同时也是更大的以太坊的一部分。

如果你只是在构建一个以太坊客户端,那么你是更大的以太坊的一部分,虽然你有一定的创新空间,但远远不如L2。而如果你正在构建一个完全独立的链,你的创造空间会非常大,但你也失去了共享安全和共享网络效应等好处。L2是一个很好的平衡点。

它不仅提供了尝试新的执行环境和安全折中的技术机会,可以实现扩容、灵活性和速度,还提供了一种激励机制,既激励开发者构建和维护,也激励社区支持。

事实上,每个L2都是孤立的,这也意味着部署新方法是无需许可的:无需说服所有核心开发者,你的新方法对整个链的其他部分是“安全的”。如果你的L2失败了,那是你的责任。任何人都可以提出奇思怪想(譬如,Intmax的Plasma方法),即使以太坊核心开发者完全没有关注,他们也可以继续构建并最终部署。L1功能和预编译不是这样的,即使在以太坊中,L1开发的成败最终也往往取决于政治,其程度比我们希望的要高。无论理论上可以构建什么,以L1为中心的生态系统和以L2为中心的生态系统所产生的不同激励机制最终都会严重影响实际构建的内容、质量水平和顺序。

以太坊以L2为中心的生态系统面临哪些挑战?

L1+L2架构出了大问题。图片来源:Reddit

这种以L2为中心的方法面临着一个关键挑战,而以L1为中心的生态系统几乎不用面对同样的问题:协调(coordination)。换言之,虽然以太坊有很多L2,但面临的挑战是怎么让它仍然感觉像“以太坊”,并具有以太坊的网络效应,而不是N个独立的链。如今,这种情况在很多方面都不尽如人意:

L2之间跨链通常需要中心化跨链桥,这对普通用户来说非常复杂。如果你有Optimism上的代币,就不能把别人的Arbitrum地址粘贴到你的钱包里发送资金。对于个人智能合约钱包和组织钱包(包括DAO)来说,跨链智能合约钱包支持都不是很好。如果你换了一个L2上的密钥,还需要去换其他每个L2上的密钥。去中心化验证基础设施通常比较缺乏。以太坊终于开始有了像样的轻客户端,比如Helios。但是,如果所有活动都发生在L2,都需要自己的中心化RPC,那就没有意义了。原则上,一旦你有了以太坊区块头,为L2构建轻客户端并不难;但在实践中,对这一点的重视太少了。

社区正在努力改进这三个方面。对于跨链代币交换,ERC-7683标准是一个新方案,与现有的“中心化跨链桥”不同,它没有任何固定的中心化节点、代币或治理。对于跨链账户,大多数钱包采取的方法是,在短期内使用跨链可重放(replayable)消息更新密钥,长期使用keystorerollups。用于L2的轻客户端开始出现,譬如用于Starknet的Beerus。此外,最近通过下一代钱包改善用户体验已经解决了更基本的问题,譬如用户无需手动切换网络即可访问DApp。

Rabby多链资产余额综合视图,此前的钱包还做不到这一点!

但必须认识到,以L2为中心的生态系统在试图协调时,在某种程度上确实会很难办。因为单一L2没有自然经济激励来构建基础设施进行协调:小规模L2不会这样做,因为它们只为了获得一小部分利益;大规模L2也不会,因为它们可以从加强自己的本地网络效应中获得同样多甚至更多的利益。如果每个L2都只为自己考虑,而没有人考虑如何与更广泛的以太坊系统相匹配,那么我们就会失败,就像上面几段图片中的城市化乌托邦一样。

很难说有一个完美无缺的方案来解决这个问题。我只能说,生态系统需要更充分地认识到,跨L2基础设施与L1客户端、开发工具和编程语言一样,都是以太坊基础设施的一种类型,因此应该得到重视和资助。我们有ProtocolGuild,也许我们需要BasicInfrastructureGuild。

总结

在各种公开讨论中,“L2”和“分片”经常被视为区块链扩容的两种相反策略。但是,当你研究底层技术时,就会发现一个难题:实际的底层扩容方法是完全相同的。无论是数据分片、欺诈验证器或ZK-SNARK验证器,还是跨“Rollup、分片”通信的解决方案,主要区别在于:谁负责构建和更新这些组件,他们有多大的自主权?

以L2为中心的生态系统从真正的技术意义上讲就是分片,但在分片中,你可以用自己的规则构建自己的分片。这非常强大,创造力无限,可以实现大量自主创新。但它也存在一些关键挑战,尤其是在协调方面。像以太坊这样以L2为中心的生态系统要想取得成功,就必须了解这些挑战,并迎难而上地解决它们,以便尽可能多地获得以L1为中心的生态系统的好处,并尽可能接近二者的最佳状态。