区块链:哪种类型的 Layer3 具有意义?_AAG

在L2扩容探讨中经常会出现的话题是「layer3」这个概念。如果我们可以构建一个锚定L1安全性并在其之上增加可扩展性的L2协议,那么我们也一定可以构建一个锚定于L2安全性并在其之上增加更多可扩展性的L3协议,以此实现更多扩容?

简要地说,这种观点是这样的:如果你拥有一个能够让你进行二次方扩容的方案,那你可以将这个方案构建在它自己之上,然后达到指数级的扩容吗?

我在自己2015年的可扩展性论文、Plasma论文中的多层扩容想法等地方都讲到了类似的观点。不幸的是,这种关于L3的简单构思并不能像上述观点那样轻易实现。

这种方案的设计中总是会有一些无法直接堆叠的东西,只能在可扩展性上带来一次提升——因为数据可用性的限制,紧急提款依赖于L1宽带等多种问题。

如Starkware提议的框架等较新的关于L3观点变得更复杂:这些L3方案不只是在自己的网络之上堆栈叠相同的方案,而是为L2和L3分配不同的用途。这种方法的一些形式可能会是好主意——如果它能够以正确的方式实现。本文将会详细介绍在三层架构下哪些可能有意义,而哪些可能无意义。

为什么无法通过将rollup堆叠在rollup之上一直扩容

rollup是结合各种技术解决区块链运行中两大主要扩展瓶颈的扩容技术:计算和数据。计算可以通过欺诈证明或是SNARK解决,两种方式依赖于很少的行动者就能对每个区块进行处理和验证,只需要其他参与者运行一小部分的计算来检查证明过程是否正确完成了。

这些方案尤其是SNARK几乎可以无限地扩展,你真的就可以通过保持构建「在一个SNARK证明之上构建多个SNARK证明」,为单个证明扩展更多算li。

数据则不同。rollup使用许多压缩技巧来减少一笔交易在链上存储所需的数据量:一笔简单的货币转账从大约100字节减至大约16字节,兼容EVM的链上的一笔ERC-20代币转账从大约180字节减至23字节左右,而一笔保护隐私的ZK-SNARK交易可以从600字节左右压缩至80字节左右。

基本所有情况下的数据都能压缩至原来的1/8。但是,rollup还是需要在某一中介上让数据具有链上可用性,保证用户能够进行访问和验证,因此,用户可以自主地计算rollup的状态,并在现有证明生成者下线的情况下作为证明生成者加入证明过程。

数据只能压缩一次,无法再次压缩——如果数据可以再次压缩,那么通常有一种方式将第二个压缩器的逻辑放入第一个的逻辑中,只要压缩一次就能让第二个压缩器或跟第一个压缩器相同的效果。所以说,事实上「在rollup之上构建rollup」并不能在可扩展性方面提供巨大的收益——不过,这种模式可以用于其他的用途,正如下面我们将看到的一样。

所以「合理的」L3版本是什么样的?

好吧,让我们一起看看StarkWare在关于L3的文章中倡导的是什么。StarkWare团队由非常聪明且实际上理智的加密学家所组成,所以如果他们倡导L3,那么他们的观点会比「如果rollup的数据压缩至1/8,那么很明显,构建于rollup之上的rollup会将数据压缩为原来的1/64」的观点更为复杂。

这是StarkWare文章中的图表:

以下是一些引用:

第一张示例图中描述了这样一种生态系统的例子,其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低,但是相较之下便宜很多。

在我看来,这三种愿景本质上是合理的。「专用型/定制型数据压缩服务需要有自己的平台」的想法可能是所有主张中最不能令人信服的——设计一个通用型基础层压缩方案L2很容易,因为用户可以使用应用专用型的子压缩器进行扩展——而除此之外的用例都是合理的。

但这还是留下了很大的疑问:三层结构是实现这些目标的正确方式吗?将Validium、隐私系统和定制型环境锚定L2而不仅仅锚定L1的意义在哪?这个疑问的答案很复杂。

哪一个更好?

存款和提款在L2的子树中会变得更便宜、更容易吗?

这种三层模型优于两层模型的一个论证可能是:三层模型允许整个子生态系统存在于单个rollup中,这让生态系统内的跨域操作可以非常便宜地进行,不需要经由昂贵的L1。

但事实证明,即使是向同一个L1提交数据的两个L2之间,存款和提款也可以很便宜!关键是要意识到,代币和其他资产不一定非得在底部链中发行。换句话说,你可以在Arbitrum上持有一种ERC20代币,然后在Optimism上创建它的封装合约,并在两者之间来回转移资产而无需创建任何L1交易!

让我们来看看这样一个系统如何进行运作。现在有两种智能合约:Arbitrum上的基础合约和Optimism上的代币封装合约。要从Arbitrum转移资产到Optimism,你需要将代币发送到基础合约,这会生成一个收据。一旦Arbitrum敲定了这笔交易,你就可以获取该收据的Merkle证明,它植根于L1状态,并将其发送到Optimism上的代币封装合约中。封装合约会对它进行验证并向你发放封装代币。要将代币往回转移的话,则可以反向执行相同的操作。

尽管证明Arbitrum存款所需的Merkle路径会检查L1的状态,但Optimism只需要读取L1状态根以处理存款——不需要创建L1交易。请注意,由于rollup数据是最稀缺的资源,所以此类方案的可行实现将是使用SNARK或KZG证明以节省空间,而不是直接使用Merkle证明。

对比根植于L1的代币,这种方案有一个关键的弱点,至少在optimisticrollup上有这样的问题:存款也需要等待欺诈证明的窗口期到来。如果代币是在L1上的,那么从Arbitrum或Optimism上往L1的提款则需要一周的延迟时间,而存款则是即时的。

然而,这种方案中的存款和提款都需要一周时间。也就是说,尚不清楚optimisticrollup上三层架构是否会更好:因为要确保欺诈证明博弈会在一个自己运行欺诈证明机制的系统内安全地进行,这存在很多技术上的复杂性。

幸运的是,这些问题都不会在ZKrollup上出现。出于安全方面的原因,ZKrollup不会要求一周时长的等待窗口,但他们确实还会有较短窗口期的要求。

原因有二,首先,特别是更复杂的通用型ZK-EVMrollup需要较长的时间来囊括区块证明过程中的不可并行计算时间;其次,这其中还有经济考量:需要不那么频繁地提交证明以最大程度减少证明交易相关的固定开销。包括专用型硬件在内的下一代ZK-EVM技术将会解决上述的第一个问题,而架构更好的batch验证技术可以解决第二个问题。这其实是我们接下来会讨论的优化和批量提交证明的问题。

?

rollup和validium的确认期vs.固定开销权衡。L3们可以帮忙解决这个问题,但还有哪些方案可以帮忙解决?

rollup每笔交易的开销很便宜:只有16–60字节的数据,这取决于所使用的应用程序。但是rollup也必须在每次提交一个batch的交易至链上时支出一笔高昂的固定开销:optimisticrollup的每batch要支付21000L1gas,而ZKrollup则要支付400,000gas以上。

当然,rollup可以选择等着,直到有了价值1千万gas的L2交易再打包提交batch,但这会让rollup的batch间隔变得很长,迫使用户在获得高安全性确认之前等待更长的时间。因此,它们会有权衡:长时间的batch间隔和最优开销,或者说较短的batch间隔和大大增加的开销。

为了给出一些具体的数据,让我们一起探讨这样一个ZKrollup:它每batch开销600,000gas,能处理完全优化过的ERC-20转账,每笔交易会花费368gas。假设这种rollup在采用的早期和中期阶段的平均每秒交易为5笔。我们可以计算它的每笔交易的gasvs.batch间隔:

如果我们进入一个有着许多定制型validium和应用专用型环境的系统,那么它们中的大多数都不会处理超过5TPS。所以,在确认时间和开销之间的权衡开始变得至关重要。而实际上,「L3」范式确实可以解决权衡上的问题!就算是以简单的方式实现,一个ZKrollup套着另一个ZKrollup的方案也大约会有仅8000L1gas左右的固定开销。这就将上面的表格改为:

开销的问题基本上都解决了。那么,L3是不是有益的?可能吧。但值得注意的是,还有一种可以解决这个问题的方法,这个方法受到了ERC4337聚合验证的启发。

其对策如下。现在,如果每一个ZKrollup或validium收到了证明Snew=STF(Sold,D)的证明,即新的状态肯定是正确处理了交易数据或旧状态根上状态变换的结果,那它们就会接收状态根。

在这个新的方案中,ZKrollup会从batch验证器合约处接收消息,这个消息用于告知该验证器已验证了一个包含声明的batch证明,其中的每个声明都是Snew=STF(Sold,D)的形式。该batch证明可以通过递归SNARK方案或是Halo聚合进行构造。

这是一个开放协议:任何ZK-rollup都可以加入,任何batch的证明生成者都可以从任何兼容的ZK-rollup中聚合证明,并从聚合器处获得交易费的补偿。batch处理器合约会验证一次证明,接着将包含该rollup$(S_{old},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扩容生态系统的成熟,我猜本文中描述的更复杂的结构将开始发挥更大的作用。

gz呺Web3团子

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:15ms0-3:419ms