理想状态下的扩容方案是:在不牺牲去中心化和安全性的前提下,还能尽可能提高区块链网络的交易速度(更短的finality time)和交易吞吐量(更高的TPS)。
原文作者:Ellaine Xu, Hettie Jiang, June Wang, Walon Lin, Yiliu Lin
原文来源:Cobo Global
1. 扩容的必要性
2. 扩容方案的类别
3. 链下扩容的方案
4. 总结展望
参考目录
1. 扩容的必要性
区块链的未来是一个宏大的愿景:去中心化、安全性和可扩展性;但通常区块链只能实现其中两个,同时满足这三个要求被称为区块链的不可能三角问题(如下图所示)。多年来,人们一直在探索如何解决这一难题,如何在保证去中心化和安全性的前提下,提高区块链的吞吐量和交易速度,即解决扩容问题,是当前区块链发展过程中讨论的热点话题之一。
让我们先笼统地定义区块链的去中心化、安全性和可扩展性:
比特币网络的第一次重大硬分叉就是源于扩容问题。随着比特币的用户数量和交易量的增多,每个区块上限为1MB的比特币网络开始面临拥堵问题;2015年开始,比特币社区就扩容问题存在分歧,一方是以Bitcoin ABC为代表的支持扩大区块的扩容派,另一方是以Bitcoin Core为代表的小区块派,认为应当使用隔离见证Segwit方案去优化主链结构。2017年8月1日,Bitcoin ABC自行开发至8MB的客户端系统开始运行,导致了比特币历史上第一次重大硬分叉的出现,同时也由此诞生了新币种BCH。
同样,以太坊网络也是选择牺牲了一部分可扩展性,用来保障网络的安全性和去中心化;虽然以太坊网络并未像比特币网络一样通过限制区块大小来限定交易量,而是变相转变为对单一区块可容纳的燃料费设置上限,但是目的都是为了实现Trustless Consensus并确保节点的广泛分布(无论取消还是提高限额都会淘汰很多带宽、存储和计算量不足的较小节点)。
从2017年的CryptoKitties,DeFi summer、再到后来GameFi和NFT等链上应用的兴起,市场对吞吐量需求不断增加,但即使是图灵完备的以太坊每秒也只能处理15~45笔的交易(TPS),这导致的结果是交易成本不断增加,结算时间变长,大部分Dapps难以承受运行成本,整个网络对于用户而言也变的又慢又贵,区块链扩容问题亟待被解决。理想状态下的扩容方案是:在不牺牲去中心化和安全性的前提下,还能尽可能提高区块链网络的交易速度(更短的finality time)和交易吞吐量(更高的TPS)。
2. 扩容方案的类别
我们按照“是否改变一层主网“作为标准,把扩容方案分为链上扩容和链下扩容两大类。
2.1 链上扩容
核心概念:通过改变一层主网协议达到扩容效果的解决方案,目前的主要方案是分片。
链上扩容有多种方案,此篇文章不进行展开,以下简要列举两种方案:
改变一层主网协议的代码可能会产生难以预料的负面影响,因为底层任何细微的安全漏洞都会严重威胁整个网络的安全性,网络可能会被迫进行分叉或中断修复升级。例如,2018年的Zcash的通胀漏洞事件:Zcash的代码是基于比特币0.11.2版本代码修改的,2018年一位工程师发现其底层代码存在高危漏洞,即代币可无限增发,随即团队花了8个月的时间进行秘密修补,漏洞修复后才公开这一事件。
2.2 链下扩容
核心概念:不改变现有一层主网协议的扩容解决方案。
链下扩容方案又可以细分为Layer2和其他方案:
注:表格内的术语定义来自以太坊官网,内容由Cobo Ventures总结梳理。
下面我们将从发展时间线、技术原理、优缺点和应用对比等方面展开介绍目前主流的链下扩容方案。
3. 链下扩容的方案
3.1 State Channels
3.1.1 概要
状态通道规定只有在通道打开、关闭或解决纠纷时,用户才需要与主网进行交互,并把用户与用户的交互放在链下进行,以此来降低用户交易的时间和金钱成本,并且实现交易次数不受限制。
状态通道是简单的P2P协议,适合“基于回合的应用程序”,例如,两人国际象棋游戏。每个通道都由主网上运行的多签智能合约管理,该合约控制存入通道的资产,验证状态更新,并仲裁参与者之间的争议(根据带有签名和时间戳的欺诈证明)。参与者在区块链网络部署合约后,存入一笔资金并锁定,双方签名确认后,通道正式开通。通道允许参与者之间进行不限次数的链下免费交易(只要他们的转账净值不超过存入的代币总额)。参与者轮流发送状态更新给对方,等待对方的签名确认。一旦对方签名确认,这笔状态更新就算完成。正常情况下,双方同意的状态更新不会上传主网,只有在出现争议或关闭通道时,才会依赖主网确认。需要关闭通道时,任一参与者可在主网提出交易请求,如果退出请求获得全员一致签名批准,则链上立即执行,即智能合约根据通道最终状态下每个参与者的余额,分发剩余的锁定资金;如果其他参与者没有签名批准,则所有人需等待“挑战期”的结束才能收到剩余资金。
综上,状态通道方案可以大大减少主网计算量,提升交易速度,降低交易成本。
3.1.2 时间线
上图时间线展示了State Channels的发展和演变的主要里程碑。
3.1.3 技术原理
Source: L. D. Negka and G. P. Spathoulas, "Blockchain State Channels: A State of the Art" in IEEE Access, vol. 9, pp. 160277-160298, 2021, doi: 10.1109/ACCESS.2021.3131419.
图1展示的是传统链上的工作流程:Alice和Bob与部署在主网上的智能合约进行交互,用户通过向链上发送交易来改变智能合约的状态。缺点是会带来上面讨论的时间和成本问题。
Source: L. D. Negka and G. P. Spathoulas, "Blockchain State Channels: A State of the Art" in IEEE Access, vol. 9, pp. 160277-160298, 2021, doi: 10.1109/ACCESS.2021.3131419.
图2展示的是大多数状态通道协议遵循的一般工作流程:乐观情况下,Alice和Bob需要执行与之前相同的操作,但这次他们使用状态通道,而不是与链上合约进行交互。
第一步,Alice和Bob通过从其个人EOA存入资金到链上合约地址(交互1,2),这些资金被锁定在合约中,直到通道关闭时才将余额返回给用户;二人签名确认后,二人之间的状态通道正式开通。
第二步,Alice和Bob通过该通道理论上可在链下开展不限次数的交易(蓝色虚线),参与者通过加密的签名消息相互通信(而不是与区块链网络通信)。双方用户都需要对每笔交易进行签名,以防止双花作恶。通过这些消息,他们提出自己账户的状态更新,并接受对方提出的状态更新。
第三步,如果Alice想关闭通道结束和Bob之间的交易,Alice需要向合约提交自己账户的最终状态(交互3),如果Bob签名批准,合约则会根据最终状态将锁定的资金释放返回对应用户(交互4,5)。如果Bob未响应签名,合约则会在挑战期结束后将锁定的资金释放返回对应用户。
Source: L. D. Negka and G. P. Spathoulas, "Blockchain State Channels: A State of the Art" in IEEE Access, vol. 9, pp. 160277-160298, 2021, doi: 10.1109/ACCESS.2021.3131419.
图3显示的是悲观情况下状态通道的工作流程:起初,两个参与者存入资金(交互1,2),然后开始交换状态更新(蓝色虚线)。假设在某个时间点,Bob在他的轮次中不响应Alice发送来的状态更新签名(交互3),此时,Alice可以通过向合约提交自己最后一次的有效状态来发起挑战(交互4),这个有效状态也包含了Bob之前的签名,从而证明最后一笔交易已经收到Bob的批准,最后状态已经收到Bob的确认。然后,合约允许Bob在一段时间内通过将下一个状态提交给合约进行响应;如果Bob响应,则二人可以继续在状态通道内进行交易;如果Bob在该时间段内没有响应,则合约自动关闭状态通道并将资金返回给Alice(交互5)。
3.1.4 优缺点
3.1.5 应用
比特币闪电网络
概述:
闪电网络是比特币网络的小额支付通道,其整体技术演变经历:2/2多签构建单向支付通道,增加RSMC(Revocable Sequence Maturity Contract)后可构建双向支付通道,再增加HTLC(Hash Time Lock Contract) 后可连接支付通道拓展到多人支付,最终构建支付网络即闪电网络。通过链下小额支付通道,然后借助中间人构成交易网络,可以解决比特币网络扩容问题。闪电网络的整体使用遵循着“存款(建立通道)→ 闪电网络交易(更新通道状态)→ 退款/结算(结束通道)” 的流程;理论上闪电网络每秒可以处理一百万笔交易。
时间线:
生态发展:
Source:https://blog.coinbase.com/is-the-bitcoin-lightning-network-for-real-26e47029687f
如上图所示,BTC闪电网络生态从下到上依次为:底层的BTC网络—核心基础设施—各种Dapps。
核心基础设施包括
核心基础设施之上是各种支付和金融服务以及应用程序,例如,Strike建立在LND解决方案之上允许用户买卖BTC,在Twitter上使用BTC打赏创作者和允许Shopify商家接受BTC等。
截止2022年11月,基于比特币闪电网络的Dapps已增涨至超20个类别和100多个应用,应用类别主要包括比特币闪电网络支付、钱包、节点管理、浏览器扩展程序、播客和流媒体等。当前与节点基础设施相关的技术基础层已经基本成熟,钱包支持增加,金融服务和支付集成继续增长,更多的娱乐应用在闪电网络上构建,闪电网络生态系统正在蓬勃发展。
以太坊雷电网络
概述:
雷电网络是基于以太坊的小额支付通道,与闪电网络非常相似,都是通过建立状态通道的方式来对链上交易进行拓展,目的是在以太坊上实现近乎即时、低费用和可扩展的ERC20代币支付。
时间线:
目前这项技术未获得广泛采用,原因包含:
1)使用门槛过高:以太坊上的Gas费用过高时,开启通道的成本过高,这成为采用Raiden网络的一大障碍。
2)更先进的扩容技术出现:Raiden Network于2015年开始研发,当时是以太坊唯一的扩容方案。但目前出现了Rollup等更好的扩容方案,导致Raiden Network本身的用例受限。
生态发展:
目前雷电网络的生态发展缓慢,团队正在改造Raiden Network,使其运行在以太坊Layer2 Rollup网络上,从而进一步降低创建State Channel的Gas费用;2022年5月团队宣布Raiden Network在Arbitrum上线,成为一个rollup native protocol,L2之上运行的L2;该方案把初始创建通道的费用降低了35%,使其更适用于高频小额支付场景;雷电网络未来将以Rollups为中心进行转变,作为与Rollups共存的补充方案。
Celer Network
概述:
Celer Network本质上是一个增加了激励层(代币$CELR)的闪电网络,可通过链外扩展技术和激励性经济模型构建快速、易于使用、低成本和安全的高频交互类型的区块链Dapps,如电子竞技平台等。因为其用户入场费和奖金的发放有极高的交互频率,非常适合状态通道技术的应用。
假设Alice和Carl之间通过状态通道进行下棋游戏,二人需要首先在主网存款创建通道,链下有一个管理游戏规则的合约,并且该合约的地址会在有条件的支付中被引用,举例,“如果合约判定Carl赢得游戏,Alice将支付Carl1美元”;每个链下合约都有一个唯一可识别的链下地址,只有在需要时合约才在区块链上进行部署,并且由内置的链下地址转换器分配对应的链上地址,其他合约或对象可以明确的引用它。二人之间所有的游戏状态转换(账户余额)经双方签名确认,也都发生在链下,这些状态在需要时(出现争议时)可在链上验证。通过Celer Network提供的链下地址转换器OAT(Off-chain Address Translator),每一个链下地址可以唯一映射一个链上的智能合约;因此,Alice和Carl之间的游戏,只要双方持续合作,没有争议产生,整个游戏(合约+状态)都无需上链操作。
Source: https://www.celer.network/doc/CelerNetwork-Whitepaper.pdf
如上图所示,Celer Network基于以太坊实现的链下扩容框架由三层组成,从下到上为:
时间线:
生态发展:
随着区块链生态系统朝着多链发展,状态通道被赋予桥接Layer1和Layer2的新使命。Celer Network扩展了其广义状态信道网络的核心技术,转变为支持跨链的L2扩容聚合平台,目前已推出的产品包含DeFi协议Layer2.finance,信息跨链协议Celer IM和资产跨链桥cBridge。cBridge已支持多达139种token和38条链。
2022年11月11日,MetaMask Bridges Beta集成cBridge,11月17日cBridge的总交易数达到1M,当日同时宣布cBridge和Celer IM集成zkSync 2.0测试网。
3.1.6 应用比较
3.2 Sidechains
3.2.1 概要
侧链的概念首次于2012年比特币开发人员在聊天室中被提出,而第一篇关于比特币的侧链文章是由一位Blockstream的研究员撰写并于2014年出版。
2014年的论文当中提出,侧链是为了加快比特币交易而出现的一种区块链形态,可以使用更复杂的合约,或是通过改善共识机制(如PoS),或是区块参数让侧链符合特定作用。侧链的交易结果最终在传送回主链时,会记录在验证者端。这种区块链模式并非新的区块链形态,而是附着于主链上并协助主链解决问题的基础建设。
3.2.2 时间线
3.2.3 技术原理
在侧链的技术原理当中,2014年的论文提到双向锚定(Symmetric Pegged)与不协调锚定(Asymmetric Pegged)两种方式让侧链可以与主链进行沟通。双向锚定或不协调锚定的讯息传递只会在主链跟侧链的代币进行跨链时发生。由于侧链用到了跨链技术,因此,下文会先行讨论两种最根本的跨链技术原理,然后讨论侧链技术在应用层面的优缺点。
Symmetric Pegged
双向锚定(Symmetric Pegged)是指主链上(Parent Chains)跟侧链上的验证者,彼此都实时记录对方当前的状态(区块头信息)。在信息传递时,双向锚定会运用双向SPV(Simplified Payment Verification)的技术。当主链的token要发送到侧链上时,会产出一个special output(SPV-Locked Output),而只有侧链上的验证者可以用SPV证明解锁。SPV技术是指只保留区块头信息,而从全节点获取merkle proof来验证交易的技术。
主要流程:
1.用户将原生资产发送给SPV-Locked Output(一个特殊地址)。
2.等待confirmation peirod,结束后即可向侧链提交SPV证明,侧链可以依据此准备发出链上资产。
SPV证明用于验证交易是否已经发生。它包括一个展示工作证明的区块头列表以及一个加密证明(Merkle proof),证明一个输出(SPV-Locked Output)是在列表中的一个区块中创建的。
3.用户继续等待contest period,以避免双花攻击。如果有人在此期间提交重组证明(reorganisation proof),其中包含了一个有更多总工作的链,而不包括创建SPV-Locked Output的区块,则之前的SPV证明无效。
4.所有确认程序完成后,用户即可在侧链上使用新铸的封装资产。
Source:https://blockstream.com/sidechains.pdf
Asymmetric Pegged
Asymmetric Pegged是2014年最早提出侧链的论文当中提及的第二个方式,主要分成forward端与backward端的交易。在Asymmetric Pegged中,侧链的validators必需实时监控主链的活动,因此当主链需要将代币打给侧链时,侧链可以主动记录(forward transaction)。然而,当侧链需要将代币打回主链时,则会发生主链因为没有记录侧链信息,而无法确认侧链区块状态的问题。
因此,在这个状况下Asymmetric Pegged就必须引入Certifiers的机制,将
记录在Certifiers当中,通常Certifiers都需要stake固定资产以确保Certifiers不会破坏系统,这些Certifiers就会负责验证侧链传回的backward transaction,并经由aggregated signature签名后送回主链。
然而随着目前的技术演进,越来越多的侧链会选择使用第三方公证人(Proof of Authority, PoA)的机制,让多个具名节点针对合约锁定与释放的通讯(主网的区块头信息)验证,以确代币锁定与铸造价值相等;或是使用Relayers建立中间层让侧链可以通过中间层确认主链的区块状态。
简单来说侧链的机制可以总结为:
可见,侧链上资产的安全性,并非取决于主链,而是取决于侧链的安全性,再进一步说是侧链的共识机制。如果有人设法“凭空”在侧链上创造了与锁定在主链上的资产不符的资产,继而在侧链销毁这些资产,再向主链提出解锁并不属于他们的资产,会有窃取资金的风险。
3.2.4 优缺点
3.2.5 应用
xDai (现今更名为Gnosis Chain)
概述:
代币$xDai的产生来自于以太坊上的$Dai被锁定在代币桥上,因为$xDai = 1USD,这使得xDai上的交易手续费容易被计算。xDai的验证模式采用PoSDAO的模式,是通过质押的方式成为节点,质押者可以获得固定的APR 15%,即$xDai的年通膨率为15%。
时间线:
Source: https://forum.gnosis.io/t/gip-16-gnosis-chain-xdai-gnosis-merge/1904
Gnosis Chain目前的跨链的方式是部署节点在主链与侧链上,而主链上的验证者是通过committee选举出来的certifiers,换言之Gnosis Chain目前是采用asymmetric pegged的模式并使用PoA的选举完成。
生态发展:
目前Gnosis Chain的TVL在Defi Llama的排名为第二十,拥有~$53mil的TVL,让人最熟悉的项目是Dark Forest。在Defi Llama的收录中,目前Gnosis Chain共有35个进行中的项目,其中头部项目分布在Defi与跨链桥领域。
Polygon
概述:
2017年,Matic Network成立。2020年6月同时主网发布以太坊侧链——Matic PoS Chain和Matic Plasma Chain(在3.3.5有详述),2021年品牌升级为Polygon。其实Polygon被定义为是L2还是侧链一直以来都存在较大的争议,原因是虽然Polygon创始人认为他们是一种L2扩容方案,但因为Polygon拥有自己的验证模型,其安全性与以太坊主网不同,另外技术上以太坊如果停摆,Polygon仍然可以运行,所以在此定义Polygon是一个侧链。
但以Polygon的未来路线图来说,创始团队希望把Polygon逐渐往L2靠拢。2022年,Polygon在BD层面迅速与许多web2巨头公司开展合作(如Reddit,Disney和Instagram)并且开启Hermez zkEVM以及Polygon Zero的计划,逐渐朝着路线图上的目标迈进。
Polygon有四层:以太层、安全层、Polygon层、执行层。
Source:https://research.thetie.io/polygon-matic-research
时间线:
生态发展:
由于Polygon的低成本、EVM兼容与速度快的特性,Polygon在2021年发展迅速,开始在上面出现各种应用,目前的TVL从四月的$110million到现今已经$1.07billion。生态系已经有超过200个项目部署,但没有太多的明星项目的诞生。
Ronin
概述:
Ronin是一条因为Axie Infinity游戏爆红而产生的侧链,在2021年3月时主网上线。Axie Infinity一开始部署在以太坊主网上,但因为以太坊高成本的交易手续费与时常拥堵的问题让Axie Infinity的进一步发展受到限制,因此Axie Infinity就开发出专门的侧链解决方案Ronin。
Ronin的主要特性为:快速与无缝交易,大幅度减少Gas Fee,会把得到的Gas Fee用来作为锦标赛奖金,资产可以退回以太坊主网与钱包订制化的解决方案。在跨链桥被黑客攻击前,Ronin有$1.4billion的锁仓量,同时内建的NFT Marketplace也紧追在Looksrare后面,可以说是承袭了Axie Infinity能量的一条侧链。目前上面的应用只有Katana DEX一个,作为Ronin上的代币交换平台。
Ronin的验证机制是PoA(Proof of Authority),有别于PoS可以容纳128个验证节点,PoA至多只能包含25个节点,相较起来量体更小。节点大部分为战略性伙伴或是知名VC:如Binance,AnimocaBrands,SparqVenture,Ubisoft等。有别于PoS,PoA是以自身名誉为担保进行的验证模块,更像是联盟链通过权威型机构来进行认证,因此验证速度与Gas Fee的re-allocate上可以有比较好的分配与调整。
时间线:
生态发展:
目前仅有Axie Infinity相关生态系会需要使用,被黑客攻击前的DEX和Bridge基本都是为了Axie Infinity的游戏内需而部署。
3.2.6 应用比较
3.3 Plasma
3.3.1 概要
Plasma
Plasma本身指的是一个构建可扩展Dapp的框架,开发者可以使用其提供的工具进行开发。Plasma是作为侧链的演化方案出现的,旨在将用户对侧链Operator的信任降至最低,即使Operator作恶,Plasma也可以防止用户资金被盗。Plasma的基本原则是,如果Plasma链上出现安全故障,所有用户的资产仍可以撤出Plasma链并退回到主网。
Plasma链
Plasma链,也被称为“子链”,是依赖于另一个区块链(称为“根链”/“主链”/“主网”)构建的独立运行的区块链,具有独立共识机制;每个“子链”具有一个部署在根链上可以自定义的智能合约;不同的子链在根链对应不同的合约,因此,我们可以将不同的子链用于不同的任务。在POS共识机制下,任何人在主网Plasma合约里质押代币可成为该Plasma链的Operator;通常Plasma链处理交易的节点很少,往往是项目方自己运营1个节点(Operator),这会带来新的中心化问题。
Plasma链上再部署合约,可构建子子链,这些不同的子链可形成一层一层树状的Plasma网络(如下图);Plasma利用MapReduce算法,可将大的计算任务拆分成小任务,再分配给各个子链计算,最后一层层汇总后向上提交结果,从而可以快速、低成本处理大量复杂的计算。
Plasma合约
Plasma合约是指在根链如以太坊上运行的智能合约,用于处理用户资金进出Plasma链,负责跟踪Plasma链的状态承诺(State Commitments),并通过提交欺诈证明惩罚作恶行为。
Plasma合约内的数据结构包含:
1) 合约所有者(在初始化时设置)
2)Plasma链区块列表:每个区块的Merkle root和Merkle root提交的时间
3)用户提交的退出Plasma链的交易请求列表:包含了提交者地址、UTXO位置(Plasma区块编号,txindex,outindex)
关系
Plasma合约起着桥梁的作用,允许用户在以太坊主网和Plasma链之间移动资产。用户可以将资金从根链转移到子链,再由子链处理复杂的计算,从而节省Gas费用。在子链部署的DApp不必与根链直接交互,子链的状态更新只需提交块哈希Merkle Root给根链,这样根链只接收最小数量的数据,且只有在遇到争议时才需要计算,可大大减少根链的计算量。
3.3.2 时间线
3.3.3 技术原理
三个核心思想:
使用流程如下图所示:
1.存款:要使用Plasma链,用户首先需要在以太坊的Plasma合约中存入ETH或任何ERC-20代币。当用户存入资金时,将在Plasma链上创建一个区块,该区块仅包括一笔交易,同时负责监控Plasma合约的Plasma Operator会在Plasma链创建相同金额的资产发送到用户在Plasma链上的地址,用户在Plasma链上收到资金后可以在Plasma链上交易。
2.交易:用户在Plasma链上通过签署加密消息来确认每笔交易,然后该交易以及对应的签名会发送给Plasma链的Operator进行打包。
3.Operator: Operator将接收的交易打包进Plasma链区块,一旦Operator收到足够多的交易来填充一个区块,这些交易将组成一个Merkle树,Operator提交Merkle根作为对该区块的状态承诺到以太坊主网,因为只提交数据量小且数据大小恒定的Merkle根,可以大大减少提交到主网产生的Gas费用。此外,Operator提交主链的Plasma链区块哈希值,如果被任一用户挑战成功,则Plasma链上的错误区块会被回滚,而错误区块的创建者会被惩罚。
4.退出
4.1 发起提款请求:
为了把资产从Plasma链提出,用户需要向主网的Plasma合约发起退出交易,并和Merkle Proof一起提交(Merkle Proof可通过Operator获取),Plasma合约会验证Merkle Proof的有效性,以确保金额正确且没有被双花。
用户同时还需要在提款请求中添加保证金,如果有挑战者证明该用户的退出请求无效,则笔保证金的一部分将被没收作为奖励给挑战者。
4.2 挑战提款请求:
虽然以太坊主网有Plasma链的状态信息,但它无法验证该信息是否正确。恶意用户可能提出恶意提款请求,例如用户在主网实际上没有1000ETH,但声称在主网锁定了1000ETH,并请求从Plasma提出1000ETH,或者尝试提取他们已经花费的资产,并通过提供虚假证明来支撑这些虚假请求。
为了防止以上两种作恶行为,Plasma引入了“挑战期”(通常为一周)。在此期间内,任何人都可以向主链提交欺诈证明挑战提款请求的有效性。例如,因为一笔历史交易已被签名,所以可证明作恶用户的该笔资金在过去已经被花费,已无效。如果挑战成功,则Plasma合约会拒绝作恶的提款请求,挑战者将获得奖励。
然而,如果挑战期内没有任何人提供欺诈证明,用户的提款请求将被视为有效,可以从以太坊的Plasma合约中提取资产,会造成Plasma链其他诚实用户的损失,这是Plasma在安全性上的一大缺陷。
5.监控Plasma Chain(缺点)
用户为了确保Plasma链上的资金安全,需要不时地监控Plasma链,通过运行一个软件,定期自动同步下载Plasma链的数据,确保一切正确运行;数据同步频率取决于Plasma智能合约里设置的参数。
如果Plasma链上发生恶意行为,比如恶意Operator试图窃取资金,那么用户的钱包将自动开始从Plasma链中提取资金来保障用户的资金安全;由于用户无法保障全程在线,类似闪电网络的watchower委托人角色的设计就变得很有必要,但目前完整机制和激励模型暂未出现。
3.3.4 优缺点
出于上述缺点,很多应用最初使用Plasma方案进行扩展,但后来又放弃而转向Rollups方案。
3.3.5 应用
Plasma Group → Optimism(Optimistic Rollup)
2017年,Plasma被正式提出后,三个以太坊核心开发者和研究者成立了一个非营利研究小组Plasma Group,致力于Plasma框架的研究。
2019年1月,Plasma Group发布了一份Plasma Cash的说明书,一个月后又发布了一种通用型Plasma架构尝试将Plapps(plasma apps)在通用型Plasma链上部署。但随着研究的深入,Plasma的缺点变得越发明显,尽管技术团队做了很多尝试,通用型智能合约始终无法运行在Plasma上,使得Plasma的开发在2019年时陷入停滞。
2019年6月,John Adler提出了一种称为“最小可行的合并共识”的设计,该设计实现了在以太坊上完全可验证的链外共识系统,而无需零知识加密。之后,Plasma Group发布了一个扩展版的合并共识设计,即现在被大家所熟知的:Optimistic Rollup。
2020年1月,在Paradigm和IDEO CoLab Ventures350万美元的支持下,Plasma Group从一个非盈利的研究组织转变为一家营利性初创公司,Optimism正式诞生,这也意味着团队正式放弃研究Plasma,转向专注于Optimistic Rollup的研究(具体内容见下文Optimistic Rollup部分)。
OMG Network → Boba Network(Optimistic Rollup)
OMG Network是最早提出「链下扩容」概念的以太坊扩容项目之一,也一度是该领域的龙头项目。2013年,泰国金融支付企业SYNQA旗下的子公司Omise成立,主要业务是APP端在线支付。2017年,Omise成立了区块链部门OmiseGO,同年发行$2500万的$OMG代币,发行总量1.4亿枚。
2020年6月,OmiseGO更名为OMG Network后主网上线,使用More Viable Plasma技术来扩充以太坊网络的容量;More Viable Plasma设计,是Minimal Viable Plasma的扩展,针对用户和交易所之间的支付结算和价值交换进行了优化。随后,Bitfinex宣布支持OMG网络进行USDT存款和取款。
2021年6月,Plasma路线式微后,OMG Network宣布更名为OMG Foundation,与Enya公司合作一起推出Boba Network,并发布新代币$BOBA。Boba是基于Optimistic Rollup的以太坊L2解决方案,从此OMG网络不复存在,BobaNetwork继承了OMG网络的社区。(Boba Network的具体内容见下文Optimistic Rollup部分)
Polygon (previously Matic Network) → 全栈L2解决方案
2017年,Matic Network成立。2020年6月主网同时发布以太坊侧链Matic PoS Chain和以太坊Plasma方案Matic Plasma Chain,后者采用Plasma的链下扩容方案,并在Plasma的基础上做了一系列的改进。该扩容方案与以太坊主网通过Plasma桥进行跨链交互,允许用户将资产从主链转移到Plasma链,从而实现快速和低成本的交易。Plasma方案虽然比Matic PoS侧链更安全,但缺点是用户从Plasma网络中提取资金需要更长的等待时间(7天),而Matic PoS侧链仅需要约3小时;此外,Plasma链也不能运行通用的智能合约。
虽然Matic方案改进了Plasma More VP,但是仍然无法解决Plasma最根本的问题,包括无法确保链下数据可用性、大规模退出问题和用户需要经历挑战期等,并且原Plasma研究团队也都逐步转向开发Rollup,这使Plasma方案的突破难上加难。
2021年2月,Matic品牌升级为Polygon,向以太坊链下扩容方案的聚合器转变。同年5月,发布核心组件Polygon SDK,一个用Golang语言编写的模块化和可拓展的框架,能够与以太坊实现完全的兼容,开发者可以使用Solidity、Vyper等语言以及以太坊工具和库等直接进行开发。这是一个模块化、灵活的框架,支持开发者自定义构建自己的链下扩容方案如Plasma、Optimistic Rollups、zkRollups、Validium以及侧链如Polygon PoS链,并且让它们轻松跨链互通并可以直接共享以太坊的安全性和网络效应。当前Polygon Plasma的扩容方案已逐渐被社区抛弃,Polygon将重心移至Rollup技术的开发。2021年Polygon通过收购Hermez和Mir Protocol一步到位集成ZK Rollups,朝着「全栈」链下扩容解决方案又近一步。(具体内容见下文ZK Rollups部分)
目前Polygon已逐步搭建起从DeFi、Gamefi到NFT等细分领域的多样化生态体系,拥有37k+的Dapp,1.8B的总交易数和135M+的用户。
总结:
Plasma是一种技术上的过度方案:受制于Plasma技术本身存在的问题,Plasma Group没有等到上线基于Plasma的项目就转入了Optimistic Rollup的研究;OMG Network和Polygon都在主网上线Plasma方案后的一年内,也分别快速转入了基于Optimistic Rollups和ZK Rollups方案的开发;综上,基于Plasma的应用乏善可陈。
3.4 Rollups
3.4.1 概要
早在2014年,Vitalik就提出了“将交易数据和状态放在链上,而计算放在链下”的shadow chain的概念。这是Rollups的雏形,但在当时似乎没有受到重视。由于Plasma受限的智能合约执行能力和大规模退出(mass exit)问题,以太坊研究者们开始寻找一种新的扩容解决方案 – Rollups。
2018年9月,V神提出用零知识证明来解决以太坊扩容问题。2019年6月,Consensys研究员兼Celestia联合创始人John Adler在Ethereum Research上发文“Minimal Viable Merged Consensus”,提出了带终止时间的欺诈证明的Optimistic Rollups扩容方案。随着2019年12月以太坊Istanbul硬分叉,calldata存储成本下降4倍,Rollups吞吐量大大提升,Rollups上生态和各种应用迅速发展了起来,而Rollups也成为了目前主流的二层网络(Layer2)扩容解决方案之一。
3.4.2 技术原理
Rollups的核心思想是将计算过程和状态存储放在链下,而在打包上链的是状态承诺和被压缩的交易数据。
Layer1上会有一份智能合约,负责更新Rollup交易的状态根(状态承诺)和记录压缩后的交易内容。任何人都可以收集在二层网络上的交易,聚合压缩形成交易批次(batch)后,以calldata的形式发送给主链的合约。这个batch包括了压缩后的交易集,前一个区块状态的默克尔根(Merkle root)和新状态根(处理交易之后的状态根)。主链合约收到batch后,会检查前状态根和合约上的状态根是否匹配,如果匹配,就能证明Rollup状态是前后连接的,合约就会更新自己的状态根。
由于交易数据是压缩后存储在主网的智能合约的calldata里的,任何人都可以从合约里拿到交易数据,从而在链下重建二层网络的状态。用户能随时提供Merkle proof从而取走二层网络的资产。因此,Rollups的安全性仍然是由一层的安全性保证的。
Source: https://vitalik.ca/general/2021/01/05/rollup.html
但Rollups是怎么保证上传的交易批次(batch)的正确性呢?换句话说,如何得知交易批次里的后状态根 (post-state root) 是正确的呢?如果某人能够提交一个具备任意后状态根的batch,而无需承担任何后果,他们完全可以将Rollups中的所有代币都转移给自己。而这个问题,带来了两种解决方案以及其对应的两种类型的Rollups:
链下虚拟机
Rollups的计算和状态存储是在链下的虚拟机上完成的。这个虚拟机完成交易的计算和状态的改变,同时也是Layer2应用的执行环境。
以太坊Layer2存在的主要目的是扩容Layer1,因此,Layer2需要尽可能地去提供和Layer1相似的执行环境。而这个相似程度就是由Layer2的虚拟机来决定的,也叫做EVM兼容性。EVM兼容意味着创建一个类似EVM的代码执行环境,使以太坊开发者可以很容易地将智能合约迁移到EVM兼容的链上,而不必重写代码。
实现EVM兼容,最简单的方案就是fork GETH,比如BNB链。但对于Rollups来说,他们还需要兼容证明的验证(欺诈证明和有效证明)。Optimistic Rollups能做到比较好的EVM兼容性,比如Arbitrum的Nitro和Optimism的OVM。而对于ZK Rollups的协议来说,有效证明(零知识证明)很难做到EVM兼容,因为我们需要把智能合约的逻辑转变成电路逻辑,而电路逻辑本身非常复杂且需要零知识证明相关知识。因此,目前所有生产级的ZK Rollups协议都是特定于应用的,如Loopring,ImmutableX,dYdX,zkSync1.0,zkSwap。
谁能打包区块?
理论上来说,任何人都可以打包区块并上传给主链的合约,但为防止作恶,这个人需要在合约里质押一笔钱。如果很多人同步打包交易,而只有一个区块生成,这样会消耗额外的计算和区块资源。因此,为了提高交易速度,目前大部分Rollups项目都是用中心化的排序器(Centralized Sequencer)进行打包交易的;中心化排序器是最有效率的,但会出现单点故障问题。
此外,我们可以进行排序器拍卖,POS验证节点随机抽人或者通过DPoS投票的方式决定打包区块的人。排序器拍卖能捕获MEV价值,但不能解决单点故障的问题。POS和DPoS都需要锁定资金,这会降低资金使用效率。
交易压缩
压缩技巧是Rollups实现可扩展性的关键之一。压缩使得链上存储的数据量减少,从而降低成本。
一笔简单的ETH转账交易在以太坊需要~110字节,而在Rollups中只需要~12字节。其中一部分原因来自于编码,还有一部分原因来自于巧妙的压缩技巧。比如,我们可以在主链合约上存储一个地址和索引的映射表,而20字节的地址就可以用3~4个字节的索引来替代了。此外,BLS集合算法可以将多个签名压缩成一个签名,从而减少签名大小(在ZK Rollups里,零知识证明替代了签名)。
下面这个图片显示了以太坊上一笔简单交易的具体压缩情况:
https://vitalik.ca/general/2021/01/05/rollup.html
交易成本
我们知道了通过交易压缩可以减少Rollup交易在链上的存储成本,那Rollup交易成本到底由什么组成呢?
Rollups 交易成本 = L1 数据存储成本 + L2计算处理成本
其中,L1存储成本远远大于L2计算的成本,所以要节约成本,我们需要找到L1上性价比最高的存储空间。以太坊上有三种数据存储位置:memory,storage和calldata。calldata是一个不可修改的、非持久性的区域。calldata可以被用来保存函数的输入数据。它不会改变以太坊网络本身的状态,因此calldata的存储成本是最便宜的。为了减少成本,Rollups把交易数据存在L1合约的calldata里。
Rollups要解决的核心问题就是如何在不降低安全性和去中心化下,尽可能地增大以太坊的吞吐量,从而减少用户交易成本。从EIP的提案中,我们也可以看到以太坊在减少Rollups链上存储成本上做出的努力:
交易吞吐量
以太坊是有区块大小限制的。每个区块的目标大小为1,500万单位的gas,如果网络需求增大,区块限制可以阶梯性上升至3,000万单位gas(2倍目标区块大小)。这里我们用常规的1,500万区块限制。目前以太坊的平均出块时间是12~15秒,简单的转账交易需要花费21,000单位gas,在接下来的计算中,我们假设以太坊出块时间是15秒。
对以太坊主网而言,受限于区块空间,理论TPS(每秒交易量)可以达到15,000,000(Gas Limit)/21,000/15=47.6。
对于Optimistic Rollups而言,我们需要把压缩后的交易数据上传到主网合约。前面提到,目前一笔Rollup转账交易大概是12个字节。目前的calldata gas成本是16单位/字节。那么一个区块就可以有15,0000,000/12/16=78,125笔交易。延续上文假设,以太坊出块时间是15秒,那么Optimistic Rollups每秒能处理78,125/15=5,208笔转账交易。
对于ZK Rollups而言,我们还需要考虑零知识证明在链上的验证成本,大概是500,000 gas单位。同样的逻辑,ZK Rollups每秒能处理(15,000,000-500,000)/12/16/15=5,034笔转账交易。
以上是一个相当乐观的估计(理论吞吐量),因为Rollups不可能占用以太坊的整个区块,且不可能所有交易都是转账交易。但在同样尺度下,我们可以看到,Rollups对交易速度的提升为100多倍。
目前而言,Rollups能实现的TPS极限是2,000笔交易左右。Rollups的实际吞吐量取决于一批交易能被压缩成较小摘要的幅度。由于ZK Rollups不需要像Optimistic Rollups一样上传所有的交易内容,ZK Rollups的TPS往往高于Optimistic Rollups。
3.4.3 优缺点
3.4.5 Optimistic Rollups
3.4.5.1 概要
Optimistic Rollups(OPRUs)是Rollups的一种,依靠欺诈证明(Fraud proofs)来保证链下执行交易的正确性。正如它的名字,Optimistic Rollups上打包的交易被乐观地假设为正确的,因此不用做额外功;只有发生争议时,主链才会执行Rollups区块上的每笔交易,确认是否发生了欺诈。
3.4.5.3 技术原理
Optimistic Rollups(OPRUs)采用欺诈证明,乐观地默认所有交易的计算是正确的,除非有人提出争议。在Aggregator上传交易批次后,Optimistic Rollups会有一个7天左右的争议窗口期。在此期间,任何人都可以对状态转换提出异议。只要其中有一人诚实,对错误的状态变化发起挑战,Optimistic Rollups协议的安全性就能得到保证。
Optimistic Rollups主要有以下两个技术角色:
用户流程
欺诈证明
验证者从L1合约下载交易数据后,可以在本地重建(L2状态的)merkle tree。验证者可以通过比较本地和合约的merkle root(状态根)确认是否存在作假行为。如果发现作假,验证者需要向L1合约提供merkle proof,也就是图中的绿色部分,从而发起挑战。
Source: https://vitalik.ca/general/2021/01/05/rollup.html
争端解决(Dispute Resolution)
目前处理纠纷的方法是重新执行交易(re-executing transactions)和互动证明(interactive proving)。
重新执行交易依赖于L1来执行整个L2区块的交易,实现即时验证。因为需要执行一个L2区块内所有交易,这种方式成本高。此外,重新执行交易需要单一区块能容下整个L2的交易,这导致了L2的交易存在上限。采用此方式的有Optimism,Metis等。
互动证明通过不断拆分存在争议,来回移动争议点以缩小争议点来解决争端。具体来说,Aggregator首先把争议一分为二,Challenger(发起挑战的Validator)选择其中一个有争议的。然后Aggregator再把这个争议一分为二,直到找到最后的争议点,后由链上的合约判断胜负。由于拆分争端这个过程是在链下进行的,L1只需要执行争议点交易,而不是在链上重新处理全部交易,此方式通常手续费更低。但是,由于需要互动,此方式生成证明的时间更长,Challenger和Aggregator需要同时在线去完成多轮的争议拆分。Arbitrum和Optimism Cannon(未上线)采用的都是互动证明。
值得注意的是,和重新执行交易相比,互动证明在L1上执行的数据更少,因此会有更高的吞吐量上限。
为什么验证者的挑战期是7天
理论上来说,挑战期越长,就更有可能检查到错误并发起挑战,因此系统也就越安全。
假设一个挑战期是C个区块长度,Rollup链上的价值(攻击者在L2上能得到的最大值)是V。通常情况下,区块越多(更多时间受到挑战),攻击者能够获得的利润也就越小。因此,我们可以假设攻击者利润随着区块数量(C)的增加而指数下降,即攻击者利润 = V exp(-AC),其中A是一个常数,A值越大,区块长度的增加带来的利润降低效果越明显。
攻击者往往是Aggregator,因为只有他们能发布错误的状态根,因此Optimistic Rollups需要Aggregator质押一笔钱才能打包交易。为了减少从经济层面发起攻击的可能性,这笔钱需要远远大于攻击者能获得的收益,使得攻击者的损失远远大于收益。假设Aggregator质押金额是攻击者价值的10倍(足够大),那么Aggregator的质押金额 = 10V exp(-AC) ,远远大于攻击获利。
但对于诚实的Aggregator而言,这带来了质押的时间成本。我们把资本利率记作I,那么Aggregator的时间成本 = 10V exp(-AC) I。挑战时间越长(C值越大),Aggregator的时间成本就会越高,使得Aggregetor的运营成本上升。
对于退出用户而言,过长的挑战期会导致用户提款周期变长,从而带来不好的用户体验。假设每个区块的平均取款比率为W,那么每个区块的提款金额是VM,每个时间点处于提款锁定状态的资金为CWV,利息CWVI。挑战时间越长(C值越大),用户取款的时间成本也就越高。
因此,最优的挑战期应该是Aggregator质押的时间(运营)成本和取款用户的时间成本总和(10V exp(-AC)I + CWVI)的最小值。求最小值就等于对C求导=0,得到C’=ln(10A/W)/A,其中C’是最优挑战期。
计算
由此可以得出,最佳的挑战时间是10.79天左右,和大多数协议的7天挑战时间差不多。核心思路就是聚合者(Aggregator)质押和取款用户时间成本总和的最小值。
思路来源:https://medium.com/offchainlabs/optimizing-challenge-periods-in-rollup-b61378c87277
3.4.5.4 优缺点
3.4.5.6 应用
Arbitrum
概述:
Arbitrum是Offchain Labs开发的L2可扩展性解决方案:采用多轮交互式挑战协议的 Optimistic Rollup。目前Arbitrum在以太坊主网上有两条链:Arbitrum One(Optimistic Rollup)以及Arbitrum Nova(AnyTrust)。
时间线:
技术特点:
1. 采用多轮交互式挑战协议,可减少L1链上解决争议的成本。
2. EVM等效:基于Geth构建的虚拟机,可以执行任何以太坊字节码,Gas费用的计算也是等效的。
3. Rollup设计:验证者需要对新的状态质押,并提出区块。这是一个额外的确认。更具体的说,验证者需要去sequencerInbox合约中下载交易数据,在本地的虚拟机(WAVM)上执行交易,更新本地L2状态,并通过对新的状态质押,提出新的区块,然后等待7天的挑战期,最终确认区块。
生态发展:
截止2022年11月,Arbitrum占Layer2的市场份额52%左右,TVL$2.3B,位居第一。目前生态内TVL排行前三的项目是GMX,Stargate和Uniswap V3。其中比较有特色的项目有:
Source: https://news.cryptorank.io/arbitrum-ecosystem-overview/
Optimism
概述:
Optimism,是OP Labs(前身Plasma Group) 开发的Optimistic Rollup项目,目前的主流Optimistic Rollups应用之一。
时间线:
技术特点:
生态发展:
截止2022年11月,Optimism占Layer2的市场份额29%左右,TVL$1.26B,位居第二。目前生态内TVL排行前三的项目是AAVE,Synthetix和Velodrome。其中比较有特色的项目有:
Source:https://twitter.com/Coin98Analytics/status/1569640055165325314/photo/1
Metis
概述:
Metis是由Elena Sinelnikova、Kevin Liu和Yuan Su于2018年共同创办的以太坊扩容解决方案。Metis开始于对Optimism的硬分叉,将Optimistic Rollup和DAO基础设施结合起来,旨在为WEB3公司提供一个成本低、去中心化、可扩展性强的基础设施,以满足去中心化商业运营对隐私和存储等方面的需求。
时间线:
技术特点:
source: https://drive.google.com/file/d/1LS7CmKFt-FkfVXxSNu06hNgoZXxMzTC-/view
生态发展:
截止2022年11月,Metis占Layer2的市场份额2.6%,TVL$90M,位居第五。目前生态内TVL排行前三的项目是Hummus Exchange,Hermes Protocol和NetSwap。其中比较有特色的项目有:
Boba Network
概述:
Boba Network(前OMG Network)是一个专注于计算的L2项目。Boba Network由Enya团队创建。Boba Network开始于Optimism的分叉,其核心在于混合计算提供的Web3和Web2的互操作性。
时间线:
技术特点:
生态发展:
截止2022年11月,Boba Network占Layer2的市场份额0.5%,TVL$20M,位居第十,从21年11月的高点$600M下滑了96%。目前生态内TVL排行前三的项目是OolongSwap,Synapase和Connext。OolongSwap是Boba Network上首个原生AMM去中心化交易所。Synapase和Connext都是跨链转账协议。
3.4.5.7 应用比较
在Rollups的设计上面,基于Optimistic Rollups的协议们大同小异。核心逻辑就是计算和状态存储放在链下,交易数据和状态根放在链上,并通过欺诈证明确保状态根的正确性。目前主流的Optimistic Rollups协议都是中心化的Sequencer在运行整个网络,且均计划在未来将这一角色去中心化。除了Arbitrum(白名单验证者)外,上面提及的其他应用,欺诈证明的功能均在开发中。也就是说,目前中心化的Sequencer是可以发布错误的状态根,而无人能够提供欺诈证明,从而导致资金被盗。
在EVM兼容和等效的开发工作中,可以看到Optimism、Arbitrum和Metis采用的方式趋同,都通过fork GETH致力于降低L1和L2的执行环境差异,避免因此带来的风险,并且致力于使得Layer1的应用迁移到Layer2的体验更加顺滑。
Optimistic Rollups应用的核心区别点在于针对不同场景进行的差异化定位。Arbitrum和Optimism团队技术积累深厚,开发的是以太坊通用场景的扩容方案。Metis和Boba Network均始于Optimism分叉,但对不同场景进行了对应的适配和调整。Metis为去中心化自主公司(DAC)做了一系列的工具,方便了公司的链上运营。Boba Network通过API提供web2和web3的互操作性,更适用于计算场景。
3.4.6 ZK Rollups
3.4.6.1 零知识证明
零知识证明是一种让验证者相信某些声明为真,但不透露任何其他信息的方法。
零知识证明通常由两个角色:证明者和验证者。证明者计算并生成证明,却不泄露任何知识;验证者在不知道知识的情况下,验证证明。
零知识证明的概念诞生于1985年MIT学者 Goldwasser、Micali 和 Rackoff 合作发表的论文The Knowledge Complexity of Interactive Proof Systems(即GMR85)。在这篇论文里,零知识证明被定义为只证明问题的正确性而不传达任何额外信息的证明,而交互性的证明方式可以减少为证明一个定理而必须交流的知识量。
交互式的零知识证明要求验证者和证明者进行多轮交互而验证证明的正确性。如何使验证者能够独立完成验证成了关键。1988年,Manuel Blum、Paul Feldman和Silvio Micali提出了第一个非交互式零知识证明。他们提出,如果证明者和验证者有一个共享的随机字符串,证明者可以不需要和验证者交互,仍能说服验证者他们对知识的了解。
Source: https://www.notboring.co/p/zero-knowledge
此后的一段时间,零知识证明在学术界得到了进一步的研究,但在实际实施或使用方面却很少。最早的实际用例之一就是2000年出现的用零知识证明来登录网站而不向服务器泄露密码信息的方案。
2011年,Groth提出了SNARK(Succinct Non-Interactive Arguments of Knowledge),把零知识证明带入了实用领域(数字货币)。
2013年,Pinocchio(PGHR13)算法被提出,极大地减少了证明和验证时间。第一个运用零知识证明的加密货币是14年推出的Zcash(最初叫Zerocash或Zerocoin),而Zcash最初使用的就是PGHR13算法。
2016年,Groth16被提出,该算法拥有常数级证明大小和常数级验证时间,比PGHR13算法更快,是目前最为广泛使用的算法。
2017年,Bulletproofs(BBBPWM17)被提出;该算法不需要可信设置,和Groth16相比,Bulletproofs证明大小更大和验证时间更长,因此更适用于简单关系;Monero就是使用的Bulletproofs。
2018年,ZK-STARKs由Starkware提出;该算法不需要可信设置,且当证词(witness)的规模较大时,ZK-STARKs在生成和验证证明方面比ZK-SNARKs更快;但缺点就是证明本身比较大,往往是kb级别。
2019年1月,Sonic问世;该算法需要可信设置,但是可以用于多个电路,且初始字符串可升级。证明大小恒定,验证证明贵。理论上来说,可以多个证明一起验证。
2019年5月,微软研究中心发布Spartan,一个无需可信设置的ZK-SNARKs,具有极快的证明和验证时间(亚线性)。
2019年8月,Aztec提出PlonK,并且开展了176人参与的初始可信设置。PlonK是Sonic的改进版,证明时间缩短5倍。在L2项目中采用的最多是PlonK,比如Aztec,zkSync,zkSpace,Polygon Hermez。
2019年9月,Zcash团队提出HALO算法,支持递归证明,无需可信设置,线性验证时间(不简洁)。
2020年9月,同样是Zcash团队提出的HALO2问世,HALO2是HALO和PlonK的结合版,有着更灵活的电路设计且更高效。Scroll目前采用的就是HALO2。
2021年3月,Nova(Spartan + Bulletproof)被提出,无需可信设置,支持更高效的递归证明,拥有目前最快的证明速度,但证明大小较大(线性)。
2022年1月,Polygon Zero提出Plonky2,它结合了PlonK和FRI,具有快速证明和无信任设置的特点,支持递归且验证成本低。
2022年10月,Espresso Systems团队发布HyperPlonk。HyperPlonk是对PlonK的改进,使用了多线性多项式承诺(multilinear polynomial commitments),去掉了PlonK里面的FFT部分,减少了证明时间(线性),但证明大小更大。
ZK-SNARKs
ZK-SNARKs是在区块链领域广泛应用的零知识证明系统。第一个使用零知识证明的区块链应用是Zcash,一个用于隐私支付的数字货币。2014年成立,Zcash早期用的是Pinocchio算法,在2018年Sapling升级后使用Groth16。
传统ZK-SNARKs(例如Groth16)有以下三个问题:
因此产生了两种解决方案:透明设置(Transparent Setup)和通用设置(Universal Setup)。
透明设置会生成一个公有的参考字符串。在这种设定下,字符串的泄露不会对证明造成影响,但证明大小会很大,如Fractal和ZK-STARK证明能达到250KB,而Halo和SuperSonic的证明要小一些,不到10KB。
通用设置会创建一个结构化参考字符串。这个参考字符串需要可信设置,但可以被用于多个电路,通常被用于通用的协议或应用。此外,构建生成的参考字符串可以升级而无需重新完成初始可信设置,以便提高安全性。使用通用设置的算法有Sonic、PlonK和Marlin等。
3.4.6.2 概要
ZK Rollups是Rollups的其中一种。与Optimistic Rollups依靠欺诈证明不同,ZK Rollups通过有效证明(零知识证明)来证明二层网络状态变化的正确性。换句话说,零知识证明以密码学的确定性证实了执行所有交易的结果等于Rollups的状态变化。由于有效证明可在链上得到及时确认,因此用户能更快的把钱从Rollups的合约中取出。和Optimistic Rollups相比,ZK Rollups有更快的交易最终确认时间(Transaction Finality)。
现在的ZK Rollups解决方案一般分为两种:特定应用(Application-Specific)ZK Rollups和通用(General-purposed)ZK Rollups。
特定于应用的zk Rollups协议(如Loopring, StarkEx等)会设计专门的证明电路,因此证明效率高且用户交易成本低。但是,特定电路使得不同DApps之间不能交互,而做不到应用之间的可组合性。此外,对于不同DApps,开发者需要单独设计电路。这极大地增加了开发难度和周期。
另一个方案就是构建通用(General-purpose)ZK Rollups,例如Scroll, Polygon Hermez, Starknet,zkSync v2.0等。也就是说,做一个通用电路(zkEVM)去执行智能合约。这样的做法,把复杂的电路设计工作留给了Rollup项目方,而程序员就可以直接使用Solidity编程,无需担心设计电路的问题。但这样做会带来极高的额外损耗,例如只想验证一个加法,用户也需要运行整个电路。最近一些技术突破(比如多项式承诺,递归证明,硬件加速等)使得通用电路的证明成本大大降低,构建EVM通用电路的想法也就更加容易实现。
Source:https://immutablex.medium.com/ground-up-guide-zkevm-evm-compatibility-rollups-787b6e88108e
3.4.6.3 时间线
3.4.6.4 技术原理
ZK Rollups通过链上验证的零知识证明确认状态变化的正确性。ZK Rollups能够扩容的关键是零知识证明的简洁性。由于验证成本与被证明的交易数量成亚线性(sublinear)关系,验证证明远远小于计算所有交易的复杂程度,因此ZK Rollups能极大的减少交易成本。
ZK Rollups有下述一个技术角色:
Relayers有时也叫Aggregators或Sequencers。一些项目(计划)把打包交易和提供证明分两种角色(Sequencers & Provers)来完成。其中,Sequencers负责汇总和打包交易;Provers负责生成证明。
把零知识证明外包给证明者网络(Prover Network),可以允许更多设备参与零知识证明的生成(外加并行计算和聚合证明),零知识证明的生成速度能显著提高,从而提高交易速度。此外,协议方也无需承担证明设备的维护成本(但需要给证明者网络经济激励),且去中心化程度提高。这一做法目前仍在研究和开发过程中,尚未实现。
用户流程
数据可用性
ZK Rollups并不需要把所有的交易数据都放在链上。由于链上验证的零知识证明本身证明了状态变化的正确性,用户的状态是得到L1保护的。尽管如此,我们还是需要把一部分的交易数据上传至主网的Rollup合约。有了链上数据的可用性,任何跟踪了ZK Rollups状态的节点才能在链下重建二层网络的状态,进而打包交易,防止L2中继者作恶(如资产冻结和审查)。如果中继者(Relayers )下线,其他节点也能接力成为中继者,使Rollup网络继续运行。
在ZK Rollups中,项目方是可以选择上链的数据类型,如原始交易数据,每笔交易的状态变化,一个交易批次的最终状态变化。这三种均可使用户(节点)重建二层网络的状态。选择一个交易批次的最终状态变化,能够有效地压缩链上存储的数据(一个批次内的多笔交易后,某些状态变化可能会相互抵消),从而减少Rollups链上存储成本。
ZK-EVM
如同前文所述,ZK Rollups面临的一个很大的挑战就是EVM兼容性。由于以太坊本身良好的生态,为了实现更好的开发者体验和可组合性,很多ZK Rollups项目(如zkSync v2.0,Polygon Hermez,Scroll等)都在寻求更好的EVM兼容。通过一定程度上牺牲效率,增加灵活性,实现迁移现有以太坊生态的代码,支持现有以太坊生态的工具(开发者工具&代码库「Hardhat, Brownie」,钱包「Metamask」,分析工具「Nansen, Dune」等)。
我们一般把zkEVM分成三种层面的EVM兼容性:共识层,字节码层和语言层:
目前来说,StarkNet和zkSync是语言层面兼容,而Polygon和Scroll是字节码层面的兼容。在以太坊的路线图里,以太坊将整合一个共识级别的zkEVM。
Source:https://immutablex.medium.com/ground-up-guide-zkevm-evm-compatibility-rollups-787b6e88108e
3.4.6.5 优缺点
3.4.6.6 应用
StarkWare
概述:
StarkWare成立于2018年, 总部位于以色列。公司两位联合创始人Eli Ben-Sasson和Alessandro Chiesa也是ZCash创始人。其主要目标是进一步推广以色列理工学院研发的zk-STARKs突破性区块链隐私解决方案。
目前公司有两个二层扩容产品分别是StarkEx和StarkNet。
StarkEx是为特定应用提供Volition的解决方案,比如dYdX、ImmutableX、DeversiFi 和 Sorare。Volition允许用户对每种资产选择对应的数据可用性模式:Rollup(链上数据)或 Validium(链下数据)。这是一个相对封闭的生态,支持ERC20,ERC721和ERC1155。
StarkNet是一个开放的ZK Rollups。任何人都可以部署自己的智能合约,并且和其他智能合约交互。
此外,StarkWare计划将StarkEx平台建立在StarkNet上,打造一个Layer 3的新概念,方便整个生态的相互操作。
时间线:
技术特点:
生态发展:
StarkEx上,目前有四个托管协议:dYdX、ImmutableX、DeversiFi 和 Sorare。
StarkNet目前是以DApp白名单的方式上线主网alpha。目前的应用不多,已上线的有ArgentX钱包,计划上线的有JediSwap, Zigzag Exchange等DeFi项目,Orbiter Finance等跨链桥项目,以及AAVE, zkLend 等借贷项目。
Source:https://mobile.twitter.com/ZK_Daily/status/1527597292634914816
zkSync
概述:
zkSync是基于零知识证明技术的Layer2扩容方案,由Matter Labs公司于2018年开始开发。Matter Labs首先实现了STARK证明,然后转了RedShift,一个SNARK和STARK的结合,最后决定使用PlonK算法。zkSync 2.0带来了zkEVM和zkPorter,在更好地兼容EVM的同时,将状态数据放链下,极大地提升了交易速度。
时间线:
技术特点:
生态发展:
Zksync目前2.0主网已上线baby alpha版本。在1.0版本中,上线的项目有:1KXprotocol,这是一个将自动做市商(AMM)和去中心化交易平台(DEX)结合、低滑点的 DeFi聚合平台。还有Argent钱包,Zigzag去中心化交易所,跨链桥Orbiter,Mystiko Network(该协议目前仍处于测试网阶段,可以被集成到跨链桥、L1和L2、钱包和Dapp,以保证用户隐私)。随着即将到来的zkSync2.0主网,正式上线的项目会越来越来多。
Source: https://twitter.com/ZK_Daily/status/1537461972920197120/photo/1
Polygon
概述:
Polygon(前Matic Network)是一个以太坊扩容解决方案聚合器。核心组件是Polygon SDK,便于开发者快速构建或连接L2。目前Polygon有3个ZK Rollup相关的产品:Miden,Hermez和Zero,都在开发和测试阶段,预计2022年底或者2023年上线。
时间线:
技术特点:
1.Polygon Hermez
2.Polygon Miden
3.Polygon Zero
生态发展:
目前Polygon旗下的三个ZK Rollups方案都在开发和测试阶段,生态尚未成型。
Scroll
概述:
Scroll是由Ye Zhang在2021年3月提出的zk-rollup解决方案。Scroll主要想做两件事,构建通用的ZK-EVM和去中心化的证明者网络。
时间线:
技术特点:
Source:https://scroll.mirror.xyz/nDAbJbSIJdQIWqp9kn8J0MVS4s6pYBwHmK7keidQs-k
生态发展:
Scroll目前还处于早期,生态尚未形成。
3.4.6.7 应用比较
对于ZK Rollups而言,扩容效果,EVM兼容性,安全性和生态是我们所认为的重点。目前来说,我们很难对不同ZK Rollups协议评价好坏,更多的是协议方面对不同使用场景和自身意愿做出的不同解决方案。
目前,ZK Rollups扩容的主要瓶颈在于零知识证明的生成速度。随着零知识证明算法的飞速发展(SNARK->STARK->PlonK->HALO2等),零知识证明的生成和验证效率会不断提高。一些新的技术突破(多项式承诺,递归证明,硬件加速等),也使得零知识证明系统进一步优化。我们相信在不久的未来,零知识证明生成速度的瓶颈将会得到改善。
由于EVM本身并没有专门为生成零知识证明而设计,其中的一些操作的证明(如哈希函数Keccak-256,存储证明等)会有很大的额外损耗。我们知道,为了尽可能做到EVM兼容而更好地使用和迁移现有应用和工具,我们就得接受EVM本身的ZK不友好性,但这会导致较低的证明生成效率。这就是Scroll在做的事情,为EVM每个操作码设计电路,容忍一些ZK不友好操作,尽可能做到EVM兼容。
StarkWare和zkSync选择了另一条路,打造对零知识证明更友好的虚拟机,来加速证明生成从而扩大交易吞吐量。但随之而来的,是对EVM兼容性不高,项目迁移成本高,生态比较难起来。
所以说,这实际上是ZK友好和EVM兼容的权衡利弊。随着以太坊本身往ZK友好靠拢,上述两种方案也在往中间靠拢。
就Rollups本身的设计而言,Relayer的去中心化也是一个问题。如果我们把打包和生成证明分开,那就是Sequencer和Prover两个角色,但都需要进行去中心化。
zkSync和StarkNet目前还没有做到去中心化。他们的Sequencer和Prover都由官方团队运营,打包交易和生产证明都是团队负责,也没有搭建好去中心化的矿工节点,社区还无法参与。除了中心化本身来带的单点故障和信任问题,还有一个问题是,所有的算力都控制在团队自己手里,意味着团队要租用机器来持续承担这部分的成本。把Sequencer和Prover交给社区,并设置一定的经济激励,会是一个更好的做法。Polygon Hermez和Scroll均有把Sequencer和Prover去中心化的想法,但目前仍处于概念证明(PoC,Proof of Concept)阶段。
3.4.7 OP Rollups vs. ZK Rollups
Adapted from https://vitalik.ca/general/2021/01/05/rollup.html
3.5 Validium
3.5.1 概要
Validium的机制和ZK Rollups非常相似,唯一的区别就是数据可用性:在ZK Rollups里,数据是放在链上的合约中,而在Validium中,数据是交给链下的数据可用性委员会(Data Availability Committee,DAC)。
目前StarkWare的StarkEx和zkSync的zkPorter都会提供Validium的解决方案(但后面均转向了Volition)。
3.5.2 技术原理
Validium核心思路就是将链下状态的承诺(State root)放在主网上,通过主网验证的零知识证明确保状态的正确性,并通过链下的数据委员会,确保链下状态的可用性。
数据可用性
StarkEx的DAC由8个有名望的组织组成,包含ConsenSys、Infura、Nethermind、Iqlusion和Cephalopod等。所有DAC成员需要对收到的链外数据(已加密)进行计算,并对新的状态签名,以确保他们收到了数据。而链上的合约只会接受带有DAC成员签名的交易批次。
StarkEx的安全性和一个POA(Proof of Authority)的网络非常类似。如果没有链上数据的可用性,Validium的Operator有拒绝用户移动资产的能力。那么用户要是想移动资产,就需要给Operator一部分资金。如果遇到紧急情况(如Sequencer拒绝提交交易批次),DAC成员可以将数据重新上传至链上,从而允许用户从链上合约内取钱。
zkPorter账户的数据可用性将由zkSync代币持有者(称为守护者,Guardians)保障,他们将通过签署区块来跟踪zkPorter端的状态,以确认zkPorter帐户的数据可用性。监护人使用zkSync代币参与权益证明 (PoS),因此任何数据可用性故障都将导致他们的资产被烧毁,这为数据可用性提供了加密经济保证。值得注意的是,守护者参与的PoS只是为了支持数据可用,也就是说,他们只能冻结用户资产,而不能改变用户资产。因此zkPorter的安全性,会高于侧链的PoS。
Validium vs. ZK Rollups
3.6 Volition
3.6.1 概要
Volition是Starkware在2020年6月提出的一个链上与链下数据混合的扩容解决方案,允许用户动态地选择他们的数据存储位置。如果数据在链上,就是ZK Rollup,可为用户提供更高的安全性,但交易成本会更高;如果数据在链下,就是Validium,用户会有更便宜的费用但更低的安全性。Volition将选择权交给用户,提供了更好的灵活性。
Volition数据可用性的选择权可以是基于账户的,基于资产的,或基于单笔交易的。基于单笔交易可以带来更多的灵活性,但实现起来会更复杂。
目前StarkEx,zkSync和Polygon Hermez都计划或推出了各自的Volition解决方案。其中StarkEx的Volition解决方案是基于单个资产的选择,zkSync的zkPorter是基于账户的选择,而Polgon Hermez暂未详细展开说明。
3.6.2 技术原理
Volition可以理解为ZK Rollup和Validium的结合体,给用户提供不同安全性和交易费率的选择。
Source:https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb
4.总结展望
如何解决区块链的不可能三角(可拓展性,安全性和去中心化)这一问题,一直是区块链领域一大难题。随着区块链使用量的攀升,区块链本身能承载的交易量和用户交易成本成为了一个迫在眉睫的问题。以太坊每秒能处理的交易在12~15笔左右,而Visa每秒能处理2,000+交易。要想区块链能更好地承载经济和日常活动,区块链就必须在保证一定安全性的同时想办法扩容。
本文从发展时间线、技术原理、优缺点和应用四个方面详细介绍了当前主流的链下扩容方案,并有以下观察与想法:
一方面,链上扩容方案近期迎来重大里程碑——北京时间2022年9月15日14:44,以太坊The Merge正式被激活,标志着以太坊区块链完成了由工作量证明(PoW)向权益证明(PoS)的过渡。PoS新时代的正式开启,消除了过去以太坊对大量挖矿算力的需求,朝着链上扩容方案更近一步。然而,以太坊在合并之后,还远远未达到Vitalik Buterin所设想的最终形态,分片的链上扩容方案也还要等待多年。
另一方面,回顾链下扩容的方案的演变历程,经历了State Channels, Sidechains, Plasma,到如今的Rollups(ZK Rollups & Optimistic Rollups) ,未来的扩容方案可能有更多的形式,并不一定局限于Rollups。
随着NFT和游戏市场的快速增长,即使在加密货币的熊市中,以太坊也需要准备好应对未来新的激增需求。其他陆续出现的新的L1虽然有着更高的TPS,但目前仍然难以达到以太坊所拥有的安全水平。未来Web3的大规模采用,即使是每秒10万笔交易,也无法满足全球需求,所以结合链上扩容和链下扩容将是以太坊成功的关键。随着未来更多扩容方案的出现,会为更多web3爆款应用的诞生创造条件;我们相信不远的将来,会迎来区块链的大规模商业应用阶段。