来源:链闻 ChainNews 作者:链闻研究总监潘致雄
Rollup 解决了 Plasma 等前辈在开发过程中发现的「数据可用性」问题,ZK Rollup 和 Optimistic Rollup 方案成为了当前以太坊扩容改进的主力军。读懂 ZK Rollup 和 Optimistic Rollup,从这篇开始。
以太坊在诞生后遭遇的最多质疑就是性能问题,在二层网络解决方案 Plasma 几乎全面溃败后,前沿研究领域又将眼光放在了 Rollup 技术上。
当前以太坊链上交易的吞吐量(TPS)约每秒可执行不到 30 笔交易,虽然接近比特币的几倍,但离大规模应用还有较远的距离。相比之下,Visa 或支付宝的交易处理能力的峰值至少每秒上万笔。
加密货币经常被提及的一个用户场景是「跨国汇款或支付」,采用链上发行的稳定币 USDT、USDC 或 PAX 作为交易媒介,以目前以太坊每秒 20 多笔交易的性能,离满足全球的需求还有很大差距。
另一个比较热门的用户场景是去中心化金融(DeFi),3 月 12 日「黑色星期四」期间,以太坊网络在链上清算和交易的首次大规模压力测试中,虽说勉强可用,但交易成本提高了数百倍。只有交易成本降到比传统方式更低之后,区块链才更有实用价值。
为了提升交易性能,以太坊设立了多个研究方向,第二层网络(Layer 2)解决方案 Plasma 曾是其中最重要的一个。但在过去 2 年多的发展中,研究人员逐渐发现 Plasma 以及改进版本 Plasma Cash 存在不少的问题,比如要求用户定期上线以及数据可用性问题,制约了 Plasma 的发展。
在 Plasma 诞生的一年后,名为 Rollup 的技术浮出水面。基于此概念,还诞生了多个分支,最主流的是 ZK Rollup 和 Optimistic Rollup 两个方案。
Rollup 技术解决了之前 Plasma 暴露出的问题,提供了和以太坊 Layer 1(也就是以太坊自己)相同的数据可用性和安全性,而且还能极大提高网络的吞吐能力,同时降低单笔交易成本。正因如此,虽然很多人在广义上称 Rollup 为 Layer 2 的技术,但事实上却介于 Layer 1 和 Layer 2 之间。
Rollup 是什么?
Rollup 的核心理念其实很简单,就是将原本散布在区块中的大量交易数据,打包成一笔「浓缩」的交易,发布到链上。为确保其中每笔交易的有效性,各种 Rollup 方案设计了不同的机制以确保整个过程的安全性与 Layer 1 保持一致。ZK Rollup 以零知识证明 zk-SNARKs 的密码学技术确保安全性,而 Optimistic Rollup 则继承了 Plasma 的惩罚机制,以确保节点如果作恶将付出很大的代价。
当然,Rollup 的各种方案都存在不同的取舍。比如,ZK Rollup 的缺点是支持通用型智能合约更难,而且「浓缩」数据(创建 ZK 证明)的过程耗时较长;而 Optimistic Rollup 的整体安全性略差一些。不过,各个开发团队具体的实现方案,都针对性优化了上述的这些权衡,部分问题已有显著改善。
Rollup 技术将有助于提升链上应用的竞争力,特别是对于高频交易的场景,有望降低转账或交易费用。不过由于本身机制的设计,相比直接的链上交易来说,Rollup 类交易可能在链上的结算速度会慢一些。出于这个原因,Rollup 的具体应用场景可以包括:
普通转账或支付提升匿名性的转账或支付去中心化交易所去中心化身份系统去中心化社交媒体
Rollup 概念出现还不到两年,各个 Rollup 实现方案已经陆续上线了测试网,如 Matter Labs 和 Fuel Labs 的方案,而应用层的产品也在开发之中,最先上线主网的是由路印 Loopring 开发的去中心化交易所,其他也宣布将采用 Rollup 的项目包括 Synthetix、Dharma、AZTEC 等。
接下来,我们更深入了解学习一下。
Plasma 失败了吗?
关于区块链扩容的讨论起源于比特币网络,针对比特币成为「全球支付工具」的愿景,社区、开发者和矿工最终讨论出的一个方案是,将高频的交易迁移到比特币之外的一个虚拟层中进行,或可以称为「Layer 2」,而不是依赖于比特币自身(Layer 1),不过,最终的结算还是需要依赖 Layer 1 进行。
这就是比特币「闪电网络」的由来。而 Plasma 曾是以太坊 Layer 2 解决方案中最受瞩目的一个,不仅因为这是由 Joseph Poon 和以太坊创始人 Vitalik Buterin 共同发布的白皮书,而且还有不少项目宣布过,将基于 Plasma 技术展开研发。
Plasma 通过将高频的交易迁移到以太坊网络之外的侧链之上,定期将批量交易的哈希值发布到以太坊主网,然后设置一些防恶意攻击机制,确保资金安全性。最终的目的是为以太坊扩容,提升交易吞吐量,减少交易成本。Plasma Group、Matic、LeapDAO 和 OmiseGo 等团队都曾经是 Plasma 技术最主要的研发团队,有些项目也获得过以太坊基金会和 Consensys 等机构的资助。
但毕竟这是个试验性的项目,在项目的研发过程中,很多现实问题被暴露了出来,其中最重要的两个挑战是:
数据可用性:因为仅将批量交易的整体哈希值发布到 Layer 1 上,而不是每一笔交易均发布到底层公链,所以具体的交易数据不存在 Layer 1 上,用户需要自己存储具体的交易数据。用户体验差:为了避免恶意攻击,Plasma 在设计挑战期的机制的时候,用户需要定期上线网络,否则可能错过而遭受不必要的损失。
虽说 Plasma 也推出过更新版的标准 Plasma Cash,但这些问题也依旧存在,最终导致了Plasma Group和LeapDAO两个研发团队在今年初决定,放弃 Plasma 技术,并转向另一个新技术的研发:Rollup。
而 Matic 依旧坚持在 Plasma 技术的开发中,他们计划在 5 月 15 日至 5 月底期间启动主网的上线流程,并逐步进行去中心化,扩展到超过 100 个节点。究竟 Matic 有没有处理好上述的这些问题,值得更多时间的观察。
无论如何,研究以太坊扩容技术的开发社区,已经将更多精力切换到研究 Rollup 了。
为什么 Rollup 有机会?
在 Plasma 诞生的一年后,一位匿名人士 Barry Whitehat 在 Github 中提出了「Rollup」的概念,试图以「SNARK」对以太坊进行扩容。
SNARK 是零知识证明的一类密码学技术,全称是「简洁化的非交互式零知识证明」(zero-knowledge succinct non-interactive argument of knowledge)。
关于零知识证明的更多信息,可以参阅:一文说透密码学历史、工作原理、零知识证明及潜在影响
Rollup 一词本身的含义为「卷曲」或「卷起」,或者可以引申为「汇总」或「聚合」。在数据库的标准计算机语言 SQL 中,语法中的「Rollup」可以帮助 Group by 语句,将搜索出的一系列结果以聚合的数据显示,或许这是他以 Rollup 命名该技术的由来。
在 Barry Whitehat 提出 Rollup 概念时,它是这样被定义的:
「Rollup 通过将交易聚合,仅需要在链上进行一次交易,就可以验证多笔其他交易。」
而打包交易和验证交易的方式是通过 zk-SNARK 技术实现的,这样就能大幅度减少交易成本,确保安全性,也可以解决 Plasma 之前遇到的问题。
有人会将 Rollup 归类为 Layer 2 技术,但 Vitalik Buterin 却不这么认为。
在 Rollup 概念被提出后,Vitalik Buterin 于同月在以太坊研究论坛中发表文章介绍该技术,他是这么解释的:「我们可以将在以太坊上的资产转账交易的规模进一步增加,而且不需要使用 Layer 2 技术中引入的『活性假设』(liveness assumption,如状态通道和 Plasma),只需要使用 ZK-SNARKs 为大量的交易进行验证。」
有意思的是,「Rollup」这个名字一开始没受到重视。2019 年的 1 月,Matter Labs 推出了名为「Plasma Ignis」的技术,因为在此之前 Layer 2 的主流技术是 Plasma,所以他们以「零知识证明版本的 Plasma」作为研究方向。但从技术角度来说,这其实不能算是 Plasma 的一类,更像是 Rollup。后来该团队全面放弃了 Plasma Ignis 这个名字,转而采用 ZK Rollup 作为技术的方向,后续也推出了他们自己基于 ZK Rollup 的技术实现方案 ZK Sync,还进行了更多的深度定制和优化。
Matter Labs 联合创始人 Alex Gluchowski 在 2019 年 1 月份发的推特。
由于早期 ZK Rollup 的概念中,主要的缺点是生成 SNAKR 证明过程较长,而且也未能支持通用型的智能合约,所以 Fuel Labs 联合创始人、以太坊二层扩容方案的长期研究者 John Adler 在 2019 年 6 月提出了另一个方案,称为 Optimistic Rollup。该方案吸收了 ZK Rollup 对于数据可用性的优势,以及 Plasma 的惩罚机制,由于去除了零知识证明,所以可以更方便地支持通用型的智能合约。
Optimistic 意思是「乐观的」,所以在该方案中,不是通过 SNARK 处理后再将数据聚合到链上,而是默认「乐观」相信节点会将最新且准确的数据发布到链上,否则其他人在验证后,如果发现有问题可以发起挑战,成功后节点会受到惩罚。
所以整体来看,Rollup 的技术相比较 Plasma,最关键的是解决了数据可用性的问题,所有交易数据都是在以太坊链上的,安全性也能和以太坊主链相同级别。
那既然同样都是把交易发布在链上,为什么 Rollup 比普通的转账的吞吐量更高,成本更低呢?
因为在构建 Rollup 类交易的时候,大量的普通转账行为可以通过某些技巧进行压缩,最终在通过零知识证明 SNARK 处理后,虽然 SNARK 生成过程较长且资源消耗(Gas)较大,但分摊到每一笔交易中就微不足道了。在 Vitalik Buterin 的初始提案中有具体的数据可以参考,虽然后续有各种不同的实现和差别。
在他的方案中,单笔交易的构成类似于:
相比普通链上交易所需要的 2.1 万的 Gas 费用来说,以上这种单笔交易由于缩减了体积(比如,以太坊地址是 20 bytes,以上这个仅需 3 bytes),所以总共仅需 892 Gas。
但是由于 SNARK 证明的计算资源消耗较多,约 600k Gas,以及运行合约所需约 50k Gas,所以这也就意味着,必须要批量处理很多交易,才可以分摊这几百 k 的间接成本。
以太坊单个区块 Gas 上限以 8M 计算的话,如果以纯 ETH 交易来说,吞吐量约为:
8M / 21k / 15 秒 ≈ 25 tps
而该方案中的吞吐量约为:
(8M - 600k - 50k)/ 892 / 15 秒 ≈ 550 tps
这就是 Rollup 既能保证 Layer 1 数据的可获得性,也能大幅减少数据需求并减少单笔交易的成本的主要原因。
除了上述提到的 Rollup 方案研发团队之外,不少应用层的项目也看到了 Rollup 的优势,宣布将研究或集成 Rollup 技术。从目前公开的项目来看,选择 Optimistic Rollup 的项目更多一些,包括去中心化交易所、DeFi 协议、匿名服务等,很可能是因为项目方考虑到 Optimistic Rollup 的优势为支持通用智能合约,以及不会像 ZK Rollup 需要花费很多时间生成 SNARK 证明,毕竟在没有优化方案之前,可能会影响应用的使用体验。
宣布采用 ZK Rollup 方案的项目目前并不多,但是路印 Loopring 的去中心化交易所是当前 Rollup 项目中开发进度最快的一个,早在 2 月底就已经上线以太坊主网,开始了公开测试。虽然后来也遇到了前端页面的非致命漏洞,但是他们的经验会为后续很多其他即将采用 ZK Rollup 的项目提供参考和指导意义。
到底可以减少多少链上的交易成本呢?路印给出了重要的实战数据,在他们采用的方案中,批量处理 4096 笔交易时,单笔交易只需要 375 Gas。也就是在正常的 Gas 费用下,每次交易成本为 0.09 分人民币(注意单位),换句话说,100 万笔交易的成本大约为 900 元。
但曾经研发 Plasma 技术的团队 LeapDAO 却认为 Rollup 技术不是万灵药。在他们进行了具体的数据分析后,为大家提供了很多值得参考的数据。根据他们的估算,整体而言 Rollup 可以为以太坊网络提升略超过 10 倍的吞吐量,因为相比 Plasma 还是牺牲了很多成本的。
除了两个最流行的 Rollup 衍生版本外,还有一些以太坊二层扩容方案也采用了 Rollup 这个名字,比较常见的两个是 SKALE Labs 提出的 BLS-Rollup 和 Offchain Labs 的 Arbitrum Rollup。
不过 Optimistic Rollup 的提出者 John Adler 认为,BLS-Rollup 不算是通常意义上的 Rollup,更像是一种批处理技术。而 Arbitrum Rollup 在 2018 年发布论文和 2019 年发布白皮书时都未提及 Rollup,他们在今年初上线测试网时才称之为 Arbitrum Rollup。
ZK Rollup 进展
ZK Rollup 技术研发中最重要的公司是 Matter Labs 和 iden3,两者均已推出测试网。但他们产品的定位略有差异,Matter Labs 更像是通用型解决方案,而 iden3 是专用型解决方案。
Matter Labs 推出的是一套完整的通用型解决方案,叫做 ZK Sync。该方案考虑到了 ZK Rollup 存在的一些缺点,提出了相应的机制优化,比如之前提及的,生成 SNARK 证明耗时较长,以及较难支持通用智能合约。Matter Lab 联合创始人兼首席执行官 Alex Gluchowski 表示,「在伊斯坦布尔升级之后,ZK Sync 将处于非常有利的位置,可轻松地达到每秒数千的交易量」。
为了实现通用智能合约这一需求,Matter Labs 还推出了零知识证明智能编程语言及框架 Zinc,在今年 2 月推出了首个版本 v0.1 Alpha。Matter Labs 表示,Zinc 是用于创建安全的零知识证明线路以及基于其运行程序的智能编程语言和执行环境,Zinc 遵循 Rust 原理,并基于简化的 Rust 语法,精通 Rust、C++、Solidity 等语言的开发者可在一天内快速上手。
而 iden3 研究 ZK Rollup 的初衷则是为了他们原本项目考虑的。iden3 这个名字,可以想象成是 identity(身份)的 3.0,感受一下,是不是类似于「Web3」?所以 iden3 团队专注的是为数字世界提供一种开源的身份管理系统,利用零知识证明 zk-SNARK 提升隐私特性,而 Rollup 则可以增加身份认证系统和应用层在链上交互行为中交易吞吐量。
而从应用层来说,路印 Loopring 和 AZTEC 分别解决了用户链上交易和隐私的需求。路印 Loopring 的去中心化交易所是当前 Rollup 项目中开发进度最快的一个,早在 2 月底就已经上线以太坊主网,开始了公开测试。
AZTEC 是一个隐私技术解决方案,在今年 2 月就上线了以太坊主网,但是他们还在考虑采用 Rollup 技术,以显著降低以太坊网络中隐私交易的成本。他们原本在隐私技术中就采用了零知识证明 ZK,扩容方案选择的是 ZK Rollup,所以他们给新的这套方案取名为 ZK ZK Rollup,或 ZK² Rollup。第一个 ZK 是利用 SNARK 技术中的「简洁性」(succinctness)提升网络的可扩展性,将多笔交易合并为一笔以减少交易成本,第二个 ZK 是利用 SNARK 作为隐私技术,将合并前的每一笔普通交易升级为隐私交易。
Optimistic Rollup 进展
Optimistic Rollup 技术中最重要的公司是 Fuel Labs、Optimism(前 Plasma Group)和 NutBerry,他们研发的是通用型的 Optimistic Rollup 解决方案。相比 ZK Rollup,由于去除了复杂的零知识证明这类复杂的密码学技术,所以支持通用的智能合约会更容易一些。
Optimistic Rollup 虽然比 Plasma 增加了数据可用性的优点,但也直接吸纳了之前 Plasma 的成果,除了都用同一套博弈和惩罚机制之外,Optimism 团队表示,这两个方案可以共享很多基础设施和代码。另外,他们认为对于一个成熟的 Layer 2 生态系统,Rollup、Plasma 和状态通道应该是可以在同一个客户端(智能钱包)内一起工作的。
其实在 Plasma Group 对外公开放弃 Plasma 技术之前的 2019 年年底,就组建了一家新公司 Optimism,专注于实施 Optimistic Rollup,该公司目前已经从加密风险基金Paradigm和设计公司 IDEO 旗下的IDEO CoLab Ventures筹集了 350 万美元种子轮融资。新募集的资金主要用于实施 Optimistic Rollup 解决方案和基于该解决方案构建应用程序。尽管这是一家商业公司,但该研究小组表示,希望继续为开源项目做贡献,并与公众分享自己的研究成果。
为了支持以太坊的智能合约,Optimism 已经发布了虚拟机 Optimistic Virtual Machine(OVM)的 Alpha 版本。OVM 是嵌入在以太坊虚拟机(EVM)中的副本,允许开发者使用 Optimistic Rollup 时,可使用和 EVM 相同的开发者工具集和智能合约语言。
刚开始,Optimistic Rollup 被称为「最小可行合并共识」(Minimal Viable Merged Consensus),在 John Adler 于去年 6 月提出了这个概念后,就成立了 Fuel Labs,以实行他们的扩容方案。
Fuel Labs 将开发一条无需信任的以太坊侧链 Fuel,专门针对以太坊链上的支付进行设计,在伊斯坦布尔升级之前,保守估计能将以太坊 ERC-20 代币交易成本降低至原来的五分之一。
今年 1 月,Fuel Labs 基于 Optimistic Rollup 的以太坊侧链 Fuel 的公开测试网上线,代码也已开源。值得注意的是,他们测试网的合约就已经支持所有的 ERC-20 代币了,毕竟 ERC-20 本就是一种智能合约。后来在 3 月,他们宣布推出一门新的以太坊底层语言 Yul+,作为对 Yul 的实验性升级,为 Yul(以太坊虚拟机的一种低级中间语言)添加了各种 QoL 功能。Yul 是由 Solidity 开发者编写的一门旨在进一步优化编译目标的低级中间语言,简单且具有实用的低级语法,让开发人员比 Solidity 更接近原始以太坊虚拟机(EVM),同时具有优化 gas 费使用效率的潜力。
NutBerry 相比上述两个影响力更小一些,但他们的目标是开发一个基于 Optimistic Rollup 的 Layer 2 解决方案,且支持具有状态(stateful)的智能合约。该项目最早被发布在以太坊研究论坛,其中描述了该项目将分为四个里程碑:支持 ERC-20 标准、支持 ERC-721 标准、支持无状态智能合约、支持具有状态的智能合约(也就是可以储存数据的智能合约)。NutBerry 已于今年 2 月发布了第二个测试网,已支持 ERC-712(Ethereum typed structured data hashing and signing)。
Optimistic Rollup 的应用层产品相对较多一些,可能是因为支持智能合约更简单,所以对于这些 DeFi、DEX 或隐私服务这些需要智能合约处理逻辑的应用来说,更方便一些。
这些应用将会在后续的一两个季度内逐步上线,不用多久就能体验到了。
其他 Rollup
虽然其他几个 Rollup 解决方案和上述的这些项目不太一样,但是他们都以 Rollup 命名,所以本文也做相关的整理和收集:
BLS-Rollup,可以参考 SKALE Labs 的介绍:https://ethresear.ch/t/the-optimal-snark-less-on-chain-scaling-solution/4790Arbitrum Rollup,可以参考 Offchain Labs 的介绍:https://medium.com/offchainlabs/how-arbitrum-rollup-works-39788e1ed73f另外还有一个基于账户的匿名 Rollup 项目:https://ethresear.ch/t/account-based-anonymous-rollup/6657
未来
为了以太坊链上应用生态的发展,扩容是一个持续且重要的话题,毕竟,离以太坊 2.0 最终形态至少还有 2-3 年的时间。在此之前,DApp、DeFi、游戏等各种链上应用生态是无法规模化的,计算资源将成为重要的瓶颈,任何一个强势的 DApp 都可能迅速将链上的计算资源占满。以 3 月 12 日为例,Maker 协议因以太坊价格暴跌而发起的抵押品拍卖清算流程,就是因为整体网络拥堵而产生了巨额损失。
曾经最重要的扩容方案 Plasma,在实现过程中遭遇一些问题之后,开发者社区将更多精力转移至 Rollup,因为它解决了前辈在开发过程中发现的「数据可用性」问题。虽然有一些取舍,但还是比以太坊 Layer 1 效率高上几十数百倍。而衍生出两个最重要的分支 ZK Rollup 和 Optimistic Rollup ,分别选择了不同的挑战以确保安全性:是研究困难的零知识证明密码学技术,还是寻找出一套安全且照顾用户体验的博弈机制。
不过,那些上百倍的提升目前还是理论值,或许是实验室环境下的最优情况,在此之前还有很多的研发工作和配套的优化。只有这些方案被实现,并且被应用集成且大规模采用之后,才能知道真实的性能,或是否有其他的弱点和问题。
毕竟实践才能出真知。Rollup 不是第一个扩容方案,也不会是最后一个。虽然我们都知道目标在哪里,但是实现的路径依旧是曲折的。