2022年3月30日,Jump Crypto副总裁Rahul Maganti发文总结了一个简洁但功能强大的,分析L1公链的框架。4月1日,Rahul Maganti接着上一篇文章,再发文概述了各种1层和2层扩容解决方案,并沿着一些核心维度分析和比较这些不同解决方案。
笔者编译如下:
引言
在上一篇文章中,我们开发了一个分析L1公链的框架,特别是考虑到最近建立数量众多的新公链。我们还简要指出,这些新颖的L1公链背后的动机主要集中在寻找区块链可扩展性的解决方案。让我们仔细看看其中的一些解决方案。这篇文章的目标是:
可扩展性三难困境
在2017年初的一篇博客文章中,Vitalik Buterin提出了可扩展性三难困境,指的是定义区块链系统可行性的三个主要属性:(1)去中心化;(2) 安全性;(3) 可扩展性。
在这三个方面,我们认为在不过度损害其他两个支柱的情况下,可扩展性仍然是最难解决的问题。安全性和去中心化对于这些系统的性能仍然至关重要,但正如我们稍后将看到的,解决扩展分布式系统的挑战也从根本上为去中心化和安全性提供了关键突破。因此,我们强调有效扩展区块链的能力将是更普遍地决定加密行业未来成功的关键因素。
从广义上讲,扩容有两种主要类别:1 层和2层。两者对于增加区块链的吞吐量都是相关的和关键的,但侧重于Web3堆栈的不同层面。在过去的几年里,扩容无疑得到了很多关注,并且经常被吹捧为大规模采用区块链技术的关键途径,尤其是在零售使用量持续攀升和交易量增加的情况下。
1层 (L1s)
有一些主要的扩容架构已经脱颖而出:
状态分片
分片有很多种,但核心原则始终保持不变:
分片允许将单个链拆分为K个不同的独立子网或分片。如果网络S中总共有N个节点,则子网K有N/K个节点运行。当给定分片(例如K_1)中的一组节点验证一个区块时,它会吐出一个证明或一组签名,声称该子网是有效的。然后所有其他节点,S-{K_1}需要做的就是验证签名或证明。(验证的时间通常比重新运行计算本身要小得多)。
要了解分片的扩容优势,了解此架构在增加链的总计算能力方面提供的价值至关重要。现在,假设一个节点的容量平均约为C:O(C)。假设链需要处理B区块。非分片链的计算能力为很小的O(C);但是,由于分片链可以并行处理区块,所以分片链的容量为:O(CB)。通常,运行时节省是成倍增加的!可以在这里找到Vitalik更深入的技术解释(https://vitalik.ca/general/2021/04/07/sharding.html)。分片一直是以太坊2.0和 NEAR路线图中最显著的基础组件。
并行执行
分片和并行执行在许多方面是相似的。虽然分片尝试在不同子链上并行验证区块,但并行执行侧重于将处理单个交易的工作拆分到节点上。这种架构的效果是,节点现在可以并行处理数千个合约!
我们不会详细介绍其工作原理,但这里有一篇很棒的文章(https://medium.com/solana-labs/sealevel-parallel-processing-thousands-of-smart-contracts-d814b378192),更深入地介绍了Solana到Sealevel中并行执行的工作原理。
共识模型
共识是一层区块链协议的核心——对于要在链上最终确定的交易/数据,网络中的参与者需要一种就链状态相互达成一致的方法。因此,随着新交易的增加和链的进展,共识是确保共享状态一致性的一种手段。然而,不同的共识机制也可能导致我们衡量区块链性能的关键指标出现根本差异:安全性、容错性、去中心化、可扩展性等等。然而,单独的共识模型并不能决定区块链系统的性能。不同的共识模型适用于不同的扩容机制,最终可以确定特定网络的效能。
2层 (L2s)
从根本上说,2层扩容基于1层上的资源(无论是计算资源还是其他资源)变得异常昂贵的前提。为了降低用户、服务和其他社区参与者的成本,应将繁重的计算负载移至链外(2层),同时仍试图保留1层上的加密和博弈论原语提供的底层安全保证(公私密钥对、椭圆曲线、共识模型等...)
这方面的早期尝试主要涉及在链下两方之间建立“可信通道”,然后在1层完成状态更新。状态通道通过“将区块链状态的某些部分锁定到由一组定义的参与者控制的多重签名合约中”来做到这一点。Plasma链,首先由Vitalik提出:允许创建无限数量的侧链。然后使用欺诈证明(PoW、PoS)来完成1层上的交易。
Rollups+Flavors
Rollups也是一种将计算移至链下(2层),同时仍在链上(1层)记录消息或交易的方式。原本在1层上记录、聚合和验证的交易在2层上记录、汇总和验证,然后发布到原始1层。该模型实现了两个目标:(1)释放基础层的计算资源;(2) 仍然保留1层的底层密码安全保证。
交易被“汇总”,然后将由Sequencer排序的交易传递给Inbox合约
存储在L2上的合约执行链下合约的调用
然后合约将新状态的Merkle根作为calldata发布回L1链
Optimistic Rollups
Optimistic Rollups是乐观的。验证者在先验假设有效的情况下将交易发布到链上。如果他们这样选择,其他验证者可以质疑交易,但不是必须的。(把它想象成一个疑罪从无的模型)。然而,一旦发起挑战,两方(比如Alice和Bob)就被迫参与争议解决协议(dispute resolution protocol)。
争议解决算法的工作原理如下:
1、Alice声称她的断言是正确的。Bob不同意。
2、然后Alice将断言分成相等的部分(为简单起见,假设这是一个二等分)
3、然后Bob必须选择他认为断言的哪一部分(比如前半部分)是错误的
4、递归运行步骤1-3。
5、Alice和Bob玩这个游戏,直到子断言的大小只是一个指令。现在,协议只需执行此指令。如果Alice是正确的,那么Bob就会失去他的质押,反之亦然。
可以在此处找到对Arbitrum争议解决协议的更深入解释。
在乐观的情况下,成本为O(1),很小/不变。在有争议的情况下,算法运行复杂度为O(log n),n是原始断言大小。
这种乐观验证和争议解决架构的一个关键结果是乐观Rollup有一个诚实方保证,这意味着为了保证链的安全,协议只需要一个诚实方来发现和报告欺诈行为。
ZK Rollups
在当今的许多区块链系统和1层公链中,共识是通过有效地“重新运行”计算交易来验证链的状态更新来实现的。换句话说,要在网络上完成交易,网络中的节点需要执行相同的计算。这似乎是一种验证链历史的幼稚方法,确实如此!那么问题就变成了,有没有一种方法可以确保我们可以快速验证交易的正确性,而不必在大量节点上重复计算。(对于那些有一定复杂性理论背景的人来说,这个想法是P vs. NP的核心)嗯,是的!这就是ZK rollups派上用场的地方——实际上,它们确保验证的成本大大低于执行计算的成本。
现在,让我们深入了解ZK-Rollups如何在保持高度安全性的同时实现这一目标。在高级ZK-rollup协议中包含以下组件:
已经出现了大量的零知识证明系统,尤其是在2021年。有两种主要的证明类型已经很出名:(1)SNARK;(2) STARK,尽管他们之间的界限每天都变得越来越模糊。
我们不会讨论ZK证明系统如何工作的技术细节,但这里有一个很好的图表,它说明了我们如何从智能合约获得类似于可以有效验证的证明的东西。
不同Rollup比较的关键维度
速度
正如我们之前提到的,扩容的目标是提供一种方法来提高网络处理交易的速度,同时降低计算成本。因为Optimistic Rollups没有为每笔交易生成证明(在诚实的情况下没有额外的开销),它们通常比ZK Rollups快得多。
隐私
ZK证明本质上是保护隐私的,因为它们不需要访问计算的基础参数来验证它。想想下面这个具体的例子:假设我想向你证明我知道知道很多钥匙中的哪把钥匙能打开盒子。一种天真的方法是与你分享并要求你尝试打开盒子。如果盒子打开,那么很明显我知道这个组合。但是假设我必须证明我知道这个组合而不透露任何关于组合的信息。让我们设计一个简单的ZK-proof协议来演示它是如何工作的:
就是这样!一个简单的零知识证明。一旦你确认该纸条实际上与你放入盒子中的纸条相同,我已向你证明我能够打开盒子,因此先验地知道打开盒子的钥匙。
通过这种方式,零知识证明特别擅长允许一方向对方证明声明的真实性,而无需透露给对方任何信息。
EVM兼容性
以太坊虚拟机 (EVM) 定义了一组指令或操作码,用于实现基本的计算机操作和特定的区块链操作。以太坊上的智能合约编译成字节码。然后字节码作为EVM操作码执行。EVM兼容性意味着正在运行的虚拟机指令集和EVM指令集之间存在1:1映射。
当今市场上最大的2层解决方案建立在以太坊之上。当以太坊原生项目想要迁移到2层时,EVM兼容性提供了一种无缝的、最少代码的扩展路径。项目只需要在L2上重新部署他们的合约并从L1桥接他们的代币。
最大的乐观Rollup项目Arbitrum和Optimism/Boba都与EVM兼容。zkSync是为数不多的考虑到 EVM兼容性而构建的ZKRollup之一,但仍然缺乏对一些EVM操作码的支持,包括ADDMOD、SMOD、MULMOD、EXP和CREATE2。虽然不支持CREATE2确实会给带来与合约交互、限制升级性和用户进入的问题,但我们认为对这些操作码的支持将很快实现,并且长期来看不会成为在 ZK rollups中使用的重大障碍。
桥
因为L2是独立的链,它们不会自动继承原生L1代币。以太坊上的原生L1代币必须桥接到相应的L2才能与部署在那里的dApp和服务进行交互。无缝连接代币的能力仍然是一个关键挑战,不同的项目探索各种架构。通常,一旦用户调用L1上的deposit,就需要在L2端铸造一个等价的代币。为这个过程设计一个高度通用的架构可能特别困难,因为有广泛的代币和代币标准驱动协议。
最终确定性
最终确定性是指确认链上交易有效性的能力。在1层,当用户提交交易时,它几乎是瞬间完成的。(尽管节点处理来自mempool的交易需要时间)。在2层上,情况不一定如此。提交到运行乐观Rollup协议的2层链的状态更新将首先假定更新是有效的。但是,如果提交此更新的验证者是恶意的,则需要有足够的时间让诚实的一方来质疑该声明。通常,此挑战期设置为约7 天。平均而言,想要从L2提取资金的用户可能需要等待大约2周!
另一方面,Zk Rollup不需要这么长的挑战期,因为每个状态更新都使用证明系统进行验证。因此,ZK Rollup协议上的交易与一层的交易一样是最终确定的。毫不奇怪,ZK rollups提供的即时确定性已成为L2扩容的关键优势。
即时流动性作为快速最终确定性的手段
一些人认为,虽然乐观Rollup并不一定能保证L1的快速最终确定性,但快速提款通过让用户在挑战期结束之前获得资金,提供了一种清晰、易于使用的解决方法。虽然这确实为用户提供了一种访问其流动性的方法,但这种方法存在几个问题:
用于维护L2到L1提款的流动性池子的额外开销。
快速提款不是通用的——仅支持代币提款。不能支持任意L2到L1的调用。
在挑战期结束之前,流动性提供者无法保证交易的有效性。
流动性提供者必须:(1)信任他们的流动性提供给的人,限制去中心化的好处;(2) 构建自己的欺诈/有效性证明,有效地违背了利用L2链中内置的欺诈证明/共识协议的目的。
排序
排序器与任何其他完整节点一样,但可以任意控制收件箱(inbox)队列中的排序交易。如果没有这种排序,网络中的其他节点/参与者无法确定特定批次交易的结果。从这个意义上说,这为用户在执行交易时提供了一定程度的确定性。
反对为此目的使用定序器的主要论点是,它们会产生一个中心故障点——如果排序器出现故障,则L2层活动可能会受到影响。等一下……这是什么意思?这不是破坏去中心化的愿景吗?嗯……有点。排序器通常由开发L2的项目运行,通常被视为半信任实体,通常按项目利益相关者意愿行动。对于一想到这一点就咬牙切齿的去中心化强硬派,如果知道有人正在对去中心化公平排序进行大量工作/研究,你可能会感到安慰。
最近大型L2生态系统(包括Arbitrum/Optimism)上的排序器中断,继续证明了对容错、去中心化排序的需求。
资金效率
乐观Rollup与ZK Rollup之间比较的另一个关键点是它们的资金效率。如前所述,乐观L2依赖欺诈证明来保护链,而ZK Rollup则利用有效性证明。
欺诈证明提供的安全性基于一个简单的博弈论原则:攻击者试图分叉链的成本应该超过他们能够从网络中提取的价值。在乐观Rollup的情况下,验证者将一定数量的代币(例如ETH)质押在他们认为随着链进展而有效的Rollup区块上。恶意行为者(那些被发现有罪并由诚实节点报告的行为者)将被惩罚。
因此,资金效率和安全性之间存在根本性的权衡。提高资金效率可能需要缩短延迟/质询期,同时增加欺诈性断言未被网络中其他验证者检测或质询的可能性。
移动延迟期相当于沿着资金效率与延迟期曲线移动。然而,随着延迟期的变化,用户需要考虑其对安全性和最终确定性之间权衡的影响——否则他们会对这些变化无动于衷。
目前Arbitrum和Optimism等项目的7个延迟期是由社区考虑到这些方面决定的。Offchain Labs的Ed Felten对他们如何确定延迟期的最佳长度做过深入解释。
通过构建(依赖于密码学假设而不是博弈论假设),有效性证明不易受到相同的资本效率/安全性权衡的影响。
特定应用链/扩容
当我们谈论多链未来时,我们到底指的是什么?是否会有大量具有不同架构的高性能1层、更多的2层扩展解决方案,或者只有少数具有针对自定义用例的定制优化的3层链?
我们的信念是,对基于区块链的服务的需求将从根本上由用户对特定类型应用程序的需求驱动,无论是NFT铸造还是用于借贷、质押等的DeFi协议……从长远来看,与任何技术一样,我们希望用户希望从底层原语(在这种情况下,为结算、可扩展性和安全性提供核心基础设施的 L1和L2)中抽象出来。
特定于应用程序链提供了一种通过利用狭义优化来部署高性能服务的机制。因此,我们预计这些类型的链将成为旨在推动大规模采用的Web3基础设施的关键组成部分。
这些链的出现主要有两种方式:
在中短期内,这些独立的链可能会出现显著增长,但我们认为这是因为它们短期的新颖性能,而不是可持续的兴趣和使用的信号。即使是现在,像Celo这样更成熟的特定于应用程序的链似乎也相对稀少。虽然这些独立的特定应用程序链的生态系统为特定用例提供了卓越的性能,但它们通常缺乏使其他通用生态系统如此强大的特性:
下一代扩展容基础设施必须在这两种方法之间取得平衡。
分形扩容(Fractal Scaling)方法
分形扩容方法与区块链扩容的“分层模型”高度相关。它提供了一种独特的方式来将原本孤立的、不同的应用程序特定链生态系统与更广泛的社区统一起来,这样做有助于保持可组合性,实现对通用逻辑的访问,并从底层L1和L2获得安全保证。
它是如何工作的?
这是Starkware的一篇很棒的文章,讨论了分形扩容的架构(https://medium.com/starkware/fractal-scaling-from-l2-to-l3-7fe238ecfb4f)。
结束的想法
区块链扩容在过去几年中变得更加突出,这有充分理由——在像以太坊这样的高度去中心化的链上进行验证的计算成本已经变得不可行。随着区块链的普及,链上交易的计算复杂度也在快速增长,进一步增加了保护链的成本。对现有1层和动态分片等架构的优化可能非常有价值,但需求的急剧增长需要采用更细致的方法来开发安全、可扩展和可持续的去中心化系统。
我们相信,每个链层都针对特定行为进行优化是一种构建区块链链层机的方法,包括通用计算到特定应用程序和启用隐私的逻辑。因此,我们将Rollup和其他2层技术视为通过启用链下计算/存储和快速验证来扩展吞吐量的核心。