来源:vitalik.ca
作者:VitalikButerin
特别感谢GeorgiosKonstantopoulos、KarlFloersch以及Starkware团队的反馈和校对。
在L2扩容探讨中经常会出现的话题是「layer3」这个概念。如果我们可以构建一个锚定L1安全性并在其之上增加可扩展性的L2协议,那么我们也一定可以构建一个锚定于L2安全性并在其之上增加更多可扩展性的L3协议,以此实现更多扩容?
简要地说,这种观点是这样的:如果你拥有一个能够让你进行二次方扩容的方案,那你可以将这个方案构建在它自己之上,然后达到指数级的扩容吗?
我在自己2015年的可扩展性论文、Plasma论文中的多层扩容想法等地方都讲到了类似的观点。不幸的是,这种关于L3的简单构思并不能像上述观点那样轻易实现。
这种方案的设计中总是会有一些无法直接堆叠的东西,只能在可扩展性上带来一次提升——因为数据可用性的限制,紧急提款依赖于L1宽带等多种问题。
如Starkware提议的框架等较新的关于L3观点变得更复杂:这些L3方案不只是在自己的网络之上堆栈叠相同的方案,而是为L2和L3分配不同的用途。这种方法的一些形式可能会是好主意——如果它能够以正确的方式实现。本文将会详细介绍在三层架构下哪些可能有意义,而哪些可能无意义。
为什么无法通过将rollup堆叠在rollup之上一直扩容
rollup是结合各种技术解决区块链运行中两大主要扩展瓶颈的扩容技术:计算和数据。计算可以通过欺诈证明或是SNARK解决,两种方式依赖于很少的行动者就能对每个区块进行处理和验证,只需要其他参与者运行一小部分的计算来检查证明过程是否正确完成了。
这些方案尤其是SNARK几乎可以无限地扩展,你真的就可以通过保持构建「在一个SNARK证明之上构建多个SNARK证明」,为单个证明扩展更多算力。
数据则不同。rollup使用许多压缩技巧来减少一笔交易在链上存储所需的数据量:一笔简单的货币转账从大约100字节减至大约16字节,兼容EVM的链上的一笔ERC-20代币转账从大约180字节减至23字节左右,而一笔保护隐私的ZK-SNARK交易可以从600字节左右压缩至80字节左右。
VitalikButerin提议使用Flashbots系统实现“账户抽象”:3月11日消息,以太坊联合创始人 Vitalik Buterin 在研究机构 Flashbots 的 GitHub 仓库中提议利用 Flashbots 作为“账户抽象”的一种实现方式。“账户抽象”是以太坊社区中讨论的改进提案之一,以实现交易不需要从私钥控制的 EOA 账户发起,而是可以直接从智能合约发起,具体的用例包括智能合约钱包、Tornado.Cash 这类隐私保护工具等。Vitalik Buterin 认为 Flashbots 可以解决这个问题,通过搭建一个插件将其变成智能合约钱包的中继器以实现。他表示该方案不需要对以太坊底层协议进行很多改动。
Flashbots是由五位区块链行业人士发起成立的开放研究机构,旨在针对以太坊及各智能合约公链所面对的 MEV 问题进行研究,并实施解决方案。[2021/3/11 18:35:51]
基本所有情况下的数据都能压缩至原来的1/8。但是,rollup还是需要在某一中介上让数据具有链上可用性,保证用户能够进行访问和验证,因此,用户可以自主地计算rollup的状态,并在现有证明生成者下线的情况下作为证明生成者加入证明过程。
数据只能压缩一次,无法再次压缩——如果数据可以再次压缩,那么通常有一种方式将第二个压缩器的逻辑放入第一个的逻辑中,只要压缩一次就能让第二个压缩器或跟第一个压缩器相同的效果。所以说,事实上「在rollup之上构建rollup」并不能在可扩展性方面提供巨大的收益——不过,这种模式可以用于其他的用途,正如下面我们将看到的一样。
所以「合理的」L3版本是什么样的?
好吧,让我们一起看看StarkWare在关于L3的文章中倡导的是什么。StarkWare团队由非常聪明且实际上理智的加密学家所组成,所以如果他们倡导L3,那么他们的观点会比「如果rollup的数据压缩至1/8,那么很明显,构建于rollup之上的rollup会将数据压缩为原来的1/64」的观点更为复杂。
这是StarkWare文章中的图表:
OKEx将于9月2日12:00暂停VITE充提:据OKEx公告,由于VITE主网升级,OKEx将于2020年9月2日12:00 (HKT) 暂停VITE的充提,待升级完成后开放。[2020/9/2]
以下是一些引用:
第一张示例图中描述了这样一种生态系统的例子,其L3包括:
使用Validium数据可用性方案的StarkNet,比如,为定价上具有极度敏感性的应用程序提供多种用途。
应用专用型StarkNet系统可以定制更好的应用程序性能,比如,通过采用指定的存储结构或数据可用性压缩方式。
使用Validium或Rollup数据可用性解决方案的StarkEx系统,会很快地为StarkNet带来经过长期考验的可扩展性效果。
隐私StarkNet的例子可以在不将交易打包至公共StarkNet的情况下进行隐私保护交易。
我们可以将这篇文章压缩为「L3s」的三个愿景:
L2用于扩容,L3用于定制功能,如隐私。这个愿景的L3无意于提供「可扩展性平方」;不如说,会有一层堆栈帮助应用程序进行扩展,然后还有一些独立的堆栈层用于满足不同用例定制功能的需求。
L2用于通用型扩容,L3用于定制型扩容。定制型扩容可能会有不同的形式:专用型应用可以使用EVM以外其他虚拟机来进行计算,rollup的数据压缩也会围绕定制型应用程序的数据结构进行优化。
L2用于去信任扩容,L3用于弱信任扩容。Validiums指使用SNARK验证计算结果的系统,但是它将数据可用性放在了受信任的第三方或委员会处。在我看来,Validium被大大低估了:尤其是,运行Validium证明生成器并定期提交哈希上链的中心化服务器也许真的可以很好地服务于许多「企业区块链」应用程序。Validium的安全性指数比rollup低,但是相较之下便宜很多。
声音 | V神:邮箱Vitalik,S_{new},D)$三元组的消息传递至每一个rollup;三元组来自batch处理器合约的事实会是交易有效性的证据。
如果优化得不错,那么这个方案中每个rollup的开销则将近8000gas:5000用于写入新添加的更新状态,1280用于旧状态根和新状态根,还有剩下的1720用于有效利用各种数据。所以说,这种方案也能节省开销。
StarkWare实际上已经有了类似的方案,叫做SHARP,尽管它还不是一个无需许可的开放协议。
对于这类方法的反应可能会是:但这不就是另一种L3方案吗?比起baselayer<-rollup<-validium结构,你有baselayer<-batchmechanism<-rolluporvalidium。
从一些哲学的建筑角度来看,这可能是事实。但这里有一个重要的区别:比起将中间层作为复杂完整的EVM系统,还不如说它是简化且高度专业化的对象,所以它更可能是安全的,也更可能在还完全不需要其他专门的代币的情况下构建起来,还更可能实现治理最小化且不会随着时间改变。
总结:实际上什么是「层」?
在其自身网络之上的堆叠相同扩容方案的三层扩容架构通常无法很好地运作。构建于rollup之上的rollup,这两层rollup当然不会使用相同的技术。
但是,可以使用第二层和第三层具有不同用途的三层架构。构建于rollup之上的Validium确实是有意义的,即使无法确定它们是否会是长期的最佳运作方式。
然而,一旦开始深入了解哪种架构有意义,我们就会陷入哲学问题:什么是「层」,什么不是?baselayer<-batchmechanism<-rolluporvalidium模式与baselayer<-rollup<-rolluporvalidium模式执行着相同的工作。
但在工作方式方面,证明聚合层看起来更像是ERC-4337,而不是rollup。通常,我们不会将ERC-4337称为「L2」。同样,我们不会将TornadoCash称为「第2层」——所以如果要保持归类上的一致,我们不会将构建于L2之上的以隐私为中心的子系统称为第3层。因此,关于什么对象应该首先被称为「层」,这存在一个未解决的语义争论。
关于这个问题,可能有很多思想流派的不同看法。我个人偏向则会是保持L2这个术语限定于具有以下特点的事物:
其用途在于增加可扩展性
它们遵循着「处于一条区块链中的区块链」模式:它们有自己处理交易和内部状态的机制
它们完全继承了以太坊区块链的安全性
所以,optimisticrollup和ZKrollup是L2,但是validium、证明聚合方案、ERC-4337、链上隐私系统和Solidity则属于其他方案。可能把这些方案中的一部分称为L3是说得通的,但也许不能全都称作L3;任何情况下,在多rollup生态系统的架构确定下来之前就为其下定义可能为时过早了,而大部分讨论也只是在理论上。
也就是说,语言上的争论远不如「哪个结构实际上最有意义」这种技术问题来得重要。显然,服务于隐私等非扩容需求的某种「层」可以发挥重要作用,并且显然需要以某种方式填补重要的证明聚合功能,最好由开放协议来填充这个位置。
但与此同时,我们有充分的技术理由,让连接着面向用户的环境和L1之间的中间层尽可能变得简便;在许多情况下,将「粘合层」作为EVMrollup可能不是正确的运作方法。随着L2扩容生态系统的成熟,我猜本文中描述的更复杂的结构将开始发挥更大的作用。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。