原文:《zk-Sync v2.0 and the Future of zk-Rollups》
作者:@0xfishylosopher,Web3.com Ventures
翻译:SHL,PANews
简介
"zk-Rollups "可能是今年最热门的Web3流行用语。近期,随着zk-Sync的v2.0 "baby alpha "的主网上线,这种热度已经达到峰值[1]。但在所有流行语的背后,"zk-Rollups "到底指的是什么?zk-Sync的作用在哪?在本文,我将努力深入探讨zk-Rollups的工作原理和实际用例,并阐述zk-Sync v2.0的关键技术特征,探索这项被期待已久的技术,进一步地分析它对未来影响。
zk-Rollups的工作原理
为什么我们特别需要zk-Rollups?虽然以太坊很有用,但目前以太坊网络,从根本上看是一种无法规模化的经济。因为随着以太网络活动的增加,GAS价格会变的非常昂贵,尤其是在以太网络处理量突发激增的时候,这种效应就愈发明显。随着以太网络的不断发展,以太网络有限的可拓展性已成为它进一步发展的致命弱点。
"Rollups "的出现就是为了解决以太坊网络的拓展性问题。以太坊Rollups本质上是一种 "插件",为以太坊提供指数级别的可扩展性,从而修复它高Gas的现状。这个想法背后的逻辑很简单。想象一下,你需要从A点到B点携带5件物品。"常规 "的方式是携带物品1、物品2等,一个接一个地携带。但这显然效率缓慢且繁琐,"Rollups "本质上是将5件物品“打包”到一个袋子中,因此你可以一次就把它们都携带完成,而不是分开5次来携带。
在这个过程中,有两点是需要注意的:
1. 如何确保 "Rollups "能够 "容纳 "所有的东西?
2. 如何确保 "Rollups "不被欺骗?
zk-Rollups是利用 "零知识证明 "来解决这两个问题的领先rollup技术类型之一(另一种是 Optimistic Rollups)。为了解决这些问题,Zk-Rollups会将一定数量的交易捆绑在一起,在Layer2上进行计算,并将状态变更,且将"有效性证明 "提交给Layer1上的验证者,以表明计算是完整完成的。这个 "有效性证明 "是以 "零知识证明 "的形式出现的,这是一种告诉他人你知道什么而不告诉他人你怎么知道的数学方法。
简化的 ZK-Rollup 架构
Source:https://immutablex.medium.com/ground-up-guide-zkevm-evm-compatibility-rollups-787b6e88108e
零知识证明的一个简单例子是一个代码自动生成器(用于CS作业)。自动生成器是一个 "验证者",给你一堆随机生成的测试代码,而你是一个 "证明者",必须能够通过所有的测试代码来证明你有正确的代码。同时,你不会直接与自动交易器分享你的代码。你看,你刚刚就进行了一次 "零知识证明",你证明了你知道的东西,但你没有说你是怎么知道的。[2]
零知识证明案例,Source:Gradescope
上面的代码自动生成器是使用 "交互式零知识证明"的方式,自动生成器和代码提供者直接 "交互"。相比之下,大多数zk-Rollups使用的是数学上更复杂的非交互式证明(如zk-SNARK,即零知识简洁的非交互式知识证明)。与交互式证明相比,非交互式证明既节省时间又节省空间。虽然zk-SNARKs的技术细节超出了本文的范围,但测试代码通过的基本原理是相通的。
zk-Rollups的圣杯在于零知识以太坊虚拟机( zk-EVM ),它允许开发人员在不修改以太坊智能合约的情况下对DApps进行转移。但这是存在一定难度的,因为每个"问题"都需要不同的"测试代码",所以开发一个"证明算法"来解决所有可以想象的测试代码的“证明算法”,是零知识证明和zk-Rollups的技术瓶颈。
正如Vitalik所说的:总的来说,我认为在短期内optimistic rollup可能会在通用的EVM计算中胜出,而ZK Rollup可能会在简单的支付、交易和其他特定应用案例中胜出。但从中长期来看,随着ZK-SNARK技术的改进,ZK Rollup将在所有案例中胜出。[3]
因此,从历史上看,zk-Rollups 仅是针对特定应用用例的技术,其中“测试用例”定义明确且范围有限。 但是一些项目正在迅速向“山上的城堡”推进,一种通用的 EVM 兼容 zk-Rollup 算法。 [4]
zk-Sync 2.0
zk-Sync 2.0是目前在开发zk-EVM的众多项目之一(其他项目包括StarkNet、Polygon Hermez和Scroll)。zk-Sync 1.0要求用户重新构建其代码库的大部分内容,以便从EVM迁移到zk-Sync。与zk-Sync v1.0不同,在zk-Sync 2.0中,程序员可以在几乎没有变化的情况下部署其应用程序。
实际上,并非所有的zk-EVM都是等效的。它们在可组合性(与原始EVM合约的接近程度)和高性能(zk-Rollups的运行速度)之间存在着明显的权衡[6]。在这种权衡中,zk-Sync选择了高性能,从而牺牲了可组合性。
在Vitalik看来,目前主要有四种不同类型的zk-EVM,这四种类型如下图所示:
zk-EVMs的类型,改编自:https://vitalik.ca/general/2022/08/04/zkevm.html
正如Vitalik所述,在目前的状态下,zk-Sync 2.0是第4类zk-EVM。与EVM不同,zk-Sync 2.0能够使用自己的编译器编译,可以使用Solidity和高级语言编写智能合约。由于zk-Sync可以完全控制其编译器的设计,因此他们能够积极优化速度和吞吐量。但这样做的代价是,一些DApps和EVM调试工具链可能与zk-Sync 2.0不兼容。从本质上看,zk-Sync与Ethereum有相同的“汽车外壳”,但换了一个引擎[5]。
事实上,在zk-Sync开发者文档中,Matter Labs声称,虽然智能合约 "读取 "操作可以在不改变代码的情况下集成,但智能合约的 "写入 "操作需要 "附加代码",因为 "Layer1和Layer2之间存在根本差异" [6] 。实际上,这略有误导。与其说是由于Layer1和Layer2之间的 "根本差异",不如说是由于Matter Labs所追求的第4种Rollups。因为zk-Sync本质上是使用不同的编译器和字节码,基于第4种的Rollups意味着智能合约有不同的地址,但依赖于字节码分析的调试器基础设施可能无法在zk-Sync 2.0上运行[7]。
在未来,zk-Sync可能会加入更多对EVM字节码的本地支持,允许系统慢慢过渡到支持更广泛的 "边缘情况 ",也就是指第3类的Rollups。但是,对于zk-Sync的第3类和第4类的zk-Rollup来说,与Polygon Hermez和Scroll Labs的第2类的Rollups(基本上是以速度换取更广泛的兼容性)相比,必须有两个重要的前提条件才能成功。首先,只有一小部分不重要的项目与zk-Sync的自定义编译器不兼容。其次,与第2类zk-EVM相比,zk-Sync的执行速度需要有质的区别。
不幸的是,我个人认为这种情况不太可能发生。任何先进的开发生态系统都依赖于成熟 "框架 "的基础设施,包括便捷性、模块化、调试和测试工具。如果像Vitalik假设的那样,由于字节码的不同,大部分EVM原生调试工具将无法移植到zk-Sync,那么zk-Sync将不得不开发自己的测试和调试工具套件。与 Polygon Hermez 和 Scroll 等可组合性更强的第2类zk-EVM 相比,这是会增加额外的开销,最终可能会影响zk-Sync 作为 Layer2 解决方案的采纳进度。
zk-Rollups的未来
目前,zk-EVM竞争已经白热化,我们看到一个全功能的zk-EVM只是时间问题。但下一步是什么?一条路只有在路上有建筑物时才有用;zk-Rollups的长期力量来自使用该解决方案的项目。
目前,DeFi、GameFi和移动应用是zk-Rollups基础设施的主要受益者。DeFi和GameFi从根本上说都是规模经济,因为它们在有很多用户使用的环境中发展。移动钱包等移动应用,也为懒惰或买不起台式电脑的用户打开了闸门。因此,基于这些实现情况,使用zk-Rollups有很大的实际意义。
但这绝不是zk-Rollups使用的极限,这仅仅是开始,zk-Rollups之于以太坊的意义就如5G之于互联网。正如5G可以实现物联网应用和系统的新世界一样,zk-Rollups也可能打开通往 "物联网 "的闸门,让我们物理世界的数字设备如冰箱、手表、交通信号灯等,与以太坊上的智能合约集成。
反对"物联网"的最大观点之一是,它将允许大科技公司越权进入我们的日常生活。但有了 "物联网",我们可以享受物联网带来的便利,而不必担心我们的智能产品在集中数据库受到损害。我们可以同时拥有便利和隐私,而不是只能选择其一。这就是Zk-Rollups可以向我们承诺的世界。
参考资料:
[1]https://blog.matter-labs.io/baby-alpha-has-arrived-5b10798bc623
[2] Adapted fromhttps://pages.cs.wisc.edu/~mkowalcz/628.pdf
[3]https://vitalik.ca/general/2021/01/05/rollup.html
[4]https://www.coindesk.com/tech/2022/07/20/the-sudden-rise-of-evm-compatible-zk-rollups/
[5]https://cryptobriefing.com/the-race-scale-ethereum-zkevm-rollups/
[6]https://docs.zksync.io/dev/contracts/#porting-smart-contracts