去年Defi summer 的热潮后,以太坊上Defi 应用呈现爆炸性成长,造就高昂的交易手续费,为了有更快的交易速度及可负担的交易费用,人们对侧链、Layer2 的需求更加强烈。Rollups 是Layer2 的一种技术,在今年相当热门,几个耕耘已久的项目zkSync、Optimism、Arbitrum 等也开始广为人知。今天想来聊聊以太坊上Layer2 技术的演进。
State Channel
state channel 最一开始是建立在Bitcoin 上,最广为人知的就是lightning network。简单来说,就是两方在私下建立一条可以互相转帐的通道,转帐完毕后把通道关闭,接着将交易后的状态更新到链上。若交易一笔后即关闭通道,那交易成本就跟在链上一样,所以在实务上,通道一直开着(或是一段时间),交易数笔、数百笔后再上链更新状态,借此平均每笔的交易手续费就大幅降低。也因为只需通道双方验证交易内容,交易速度能大幅提升,让小额支付能够实现,就不需等10分钟(Bitcoin)后交易才会被打包,甚至要等6个区块的时间。而最早在以太上的state channel 是Raiden。
Plasma
Plasma 于2017年8月由V神跟Joseph Poon(Lightning Network的创始人之一)所提出,概念上是可以有链中链中链(就是Layer2 → Layer3 → … LayerN),借此可达到百万级甚至更高的交易量,不过概念太美好,没人知道怎么实作。
隔年1月 V 提出了 Plasma 的第一个版本 Plasma MVP,是以 UTXOs 模型的设计,接著3月提出了第二个版本 Plasma Cash,同年(2018)Plasma 的提案数呈现著爆炸性的成长(绝大部分都是基于 Plasma MVP 跟 Plasma Cash 做改进)(如下图),强大的社群力量,让大部分关键的问题在同年年底都找到了解答。也为之后的 Optimistic Rollup 打下了基础。
而较著名的开发团队,除了EF 出来的Plasma Group 外,还有OmiseGo 跟Matic(现在的Polygon)。
Plasma 看似一切美好,但因为资料的可取得性(data availability)的问题,使得在使用者体验上有点糟糕。
Plasma 的所有交易资料都在Plasma 链上,而Plasma 链的矿工(即operator)只需缴交Merkle root 到L1 的合约作公证就好。因此若operator 作恶,在Plasma 链上交易者,就需有能力证明operator 作恶。
在Plasma 设计中有”所有者”的概念(UTXOs 的设计中,收款者需要到拿送款者的转出证明,才能动用这笔款项,转出证明只有收款人会拥有),如果该所有者不关心自己的资产,就可能造成资产无效的结果(account-based 的设计,若你不理你的帐号,别人一样可以转帐到你的户头中)。因此每个交易者须有能力自行提出证明,无法委托第三方。
而要证明这件事,用户需要把Plasma 链上的交易都下载下来,才能证明operator 做了一件不合法的行为,也才能产生诈欺证明(fraud proof)到L1 上的合约来证明operator 作恶。而这个送出的诈欺证明,必需要被确保可以安全地送到L1 上的合约被执行,因此需要有一段挑战期,让使用者可以下载及验证资料(或是网路塞车造成诈欺证明无法被合约执行)。
题外话,Eth 2.0 light client利用了ECC (Error Correction Code)的原理,所以只需要部分资料就可以验证正确性。
Rollups
同年(2018) 9月,在支线专注隐私性的开发的 Barry Whitehat 提出了zk Rollup,随后 V神也在以太坊研究员论坛发了一篇文章,解释zk Rollup 是如何运作的,并以On-chain scaling to potentially ~500 tx/sec through mass tx validation 为标题,也因此开启了 Layer2 新的一页。隔年(2019)三月,Matter Labs 获得了 EF 的 grant 将 zk Rollup 产品化,也就是大家所知的 zkSync。
所谓的 rollups,一样是在 Layer2 上做交易,不同的是 L1 上会记录每一笔的交易纪录。什么!如果每一笔交易纪录都上链,跟一般 L1 交易有什么不同?简单来说,在合约里用了一颗树来记录每个帐号的状态,树的第几片叶子(index)代表一个帐号地址,因此帐号就从20 bytes 的地址变成了几个 bytes 的 index。以 ZK Rollups 来说,交易都是在 Layer2 被验证过的,所以签章资讯(65 bytes)也不用上链,Optimistic Rollups 会利用签章聚合的技术,数百个签章最终会被聚合成一个。因此,交易资料从原本100多 bytes 变成了10几个 bytes。因为交易纪录都 ”放上链“,资料可取得性也就不是问题了。
”放上链”指的是利用calldata 的方式放在链上,并非一般认知的写进合约里。非0值的calldata 每byte 需要耗费16 gas,而合约写进一个32bytes 的资料需要花20,000(新增) or 5,000(修改) gas,相当于每个byte 的成本为625 or 156 gas,约为calldata 的40 or 10倍。
同年(2019)六月 John Adler 在以太坊研究者论坛提出了Minimal Viable Merged Consensus,也就是大家熟知的 Optimistic Rollups 的原型,接著 Plasma Group 基于John Adler 的提案,提出了 OVM,从此 Layer2 上除了单纯的转帐外,还可以执行合约,也奠定了 Rollups 在 Layer2 的地位,开启 rollups 的新世代。
StarkWare 团队建立了可评估的数学模型,验证了 calldata 的成本从64 gas 降到 16 gas并不会对链的安全造成危害,提出了 EIP-2028(在 Istanbul 上线),也是推动 rollups 可行性的重要一环。
Validity Proof vs Fraud Proof
Optimistic Rollups 跟 ZK Rollups 最近有很多文章在介绍跟比较,这边就不赘述。这边想聊的是资料的有效性,ZK Rollups 保证了上链的资料都是正确的,资料必须被验证过是合法的(例如没有被双花)才会改变使用者的状态(例如 balance),跟现在各个主链的设计是一样的,称作有效性证明(Validity Proof),这种设计假设大家都是坏人,要通过验证才会相信你,确认资料是百分之百的正确听起来很理所当然,但是背后要维护资料的正确性,需要相当高的成本。
Optimistic Rollups 则是相反,假设大家都是好人,送上链的交易都接受,当发现有人作弊,再靠检举机制来更正状态,这称作诈欺证明(Fraud Proof)。这样的机制系统维护成本较低(L1 上不需要验证每一笔资料的正确性),但需要多一个爪耙子的角色来维护系统的安全,也就多一个系统潜在的风险。而要确保爪耙子有足过的时间反应,就不能让使用者即时地离开系统,这是 Optimistic Rollups 最被诟病的一点,提款要等七天(现在有第三方流动性提供者,使用者可以请第三方流动性提供者预付使用者的提款。使用者支付手续费来换取快速提款的服务,而流动性提供者则承担资产锁住七天的风险来赚取手续费。不过在 protocol 层以安全性为主要考量,还是需要较长的挑战期)。
ZK Rollups 的实作上,也有数个小时的提款期,不过那是基于成本考量,而非安全性。
此外对照于Plasma, rollups 的设计是account-based,交易也都公开在链上,每个人都可以参与监督及提出诈欺证明。
ZK Rollups vs Optimistic Rollups
ZK Rollups 从资料的有效性来看胜过Optimistic Rollups,离开系统时不需要额外的挑战期,能即时提款离开系统,不过付出的代价就是交易延迟上链。因为产生zkp 证明需要庞大的运算量,产生一次证明,大约需要10 ~ 20分钟,所以说在Layer2 上做一笔交易,10分钟后你的交易才是有L1 的安全性。
为了能尽早得知发出的交易是否完成,实作上会把完成的交易先丢上链,等zkp 证明产生后再上链验证其正确性,若验证成功,则交易视同有L1 的安全性。
但是在通用性上,Optimistic Rollups 没有复杂的zkp 电路的限制,对于合约的支援度上更好,而且zkp(SNAKRKs)在使用前需要一个盛大的启用典礼(trusted setup ceremony)。
zkSync
zkSync 1.0 在去年(2020) 六月上线,因为不能执行合约,使用的项目并不多。同年的年初,Matter Labs 已经默默在开发一种新语言Zinc,是可以在zkSync 上开发合约的语言。年底,与Defi项目Curve 合作,发表了在zkSync上可以跑基本版的Curve(两币交换)。今年(2021)三月,Matter Labs 发表了令人振奋的消息,zkSync 支援EVM!只需要部分修改现有的合约就可以部署到zkSync 上,测试网今年五月已经上线,主网预计8月上线。不过目前测试网上的交易量非常地少,相信在初期还是有相当多问题或是困难,以短期来看,Optimistic Rollups 阵营的速度跟支援度略胜一筹,不过个人相信长期会是ZK Rollups 的世代(私心认为lol),但最终还是由生态系的大小来决定赢家。
在ZK 这个阵线上有延伸出不同的设计,为了加快速度及减少上链成本,StarkWare 提出了Validium 的概念,资料不上链但使用zkp 确保资料的正确性,像是StarkWare 的Volition 跟Matter Labs 的zkPorter 都是同样概念的实作,不过不是本篇的重点,就不多解释。
ETH 2
V在2020年10月提出了 A Rollup Centric Ethereum,rollup也因此进到 Eth2 的规划中。Eth2 的设计中 shard chain 是资料层,而在 phase 2 后才有执行层(也就是才能执行合约),V 的提案 除了让 shard chain 当资料层外,也会内建 rollups 的逻辑。至于会採用哪种 rollups 目前没看到结论,不过 V 本人是倾向 ZK Rollups。如果成真,那未来数百个 rollups 之间的沟通,将会是另一个挑战 。
项目比较
ZK Rollups 有目前这几个较知名的项目: zkSync(Matter Labs)、 Hermez(Iden3)、 Loopring(Loopring)、 StarkNet(StarkWare)跟Aztec(Aztec)。
Optimistic Rollups 目前几个项目Optimism(Optimisim,前Plasma Group 成员)、 Arbitrum(Offchain Labs)、 Fuel(Fuel)。
这是目前几大rollups 的生态系(今年3月时的统计),比较值得一提的是,Uniswap 团队因为社群的投票,也将会在Arbitrum 上面部署,对于整个Arbitrum 的生态,相信有很大的影响。
本文链接地址:https://www.wwsww.cn/ytf/9258.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。