作者:ViaBTCCapital
近期有几个?ZK-Rollup项目相继宣布支持?ZK-EVM的主网或测试网的上线计划,而在2022年8月初,以太坊创始人?Vitalik发表了一篇博文对比了不同类型的?ZK-EVM。ZK-EVM,这个ZK-Rollup的圣杯,又一次引起市场的关注,它在未来可能会是以太坊扩容的利器。
以太坊扩容是一个老生常谈的话题,也是众多用户期望的事情。不少人可能会有一个认识误区,即计划在9月底升级的以太坊合并会把共识机制从?PoW转为?PoS将能够改善以太坊性能。但实际上,合并没有改变区块大小,出块时间也仅仅是从平均13秒变为12秒,所以届时以太坊性能提升预计有限。因而,以太坊短期内扩容的希望还在二层网络。在?Rollup两种主流方向?OptimisicRollup和?ZK-Rollup里,相当一部分人更期待后者,因为?ZK-Rollup不仅同样可以通过将打包多笔链下交易来降低网络手续费,更重要的是它能够通过零知识证明计算出一个有效性证明并提交到以太坊网络来继承以太坊的安全性,无需像?OptimisticRollup那样设置一个挑战期。
只能支付的ZK-Rollup
但ZK-Rollup早期为人诟病的地方是不能兼容?EVM,不能支持智能合约功能,例如?Gitcoin捐赠主要支付途径的?zkSync1.0仅能支持转账等基本功能。目前市场上的?ZK应用如?dYdX,是专门定制的应用无法通用,开发难度大,改动麻烦。同时,由于不同?ZK应用有各种专用电路,无法相互调用,可组合性差。因此市场急需能够支持以太坊智能合约的ZK-Rollup,而其中关键门槛就是能够支持零知识证明的虚拟机。幸运的是,近期有几个?ZK-Rollup项目相继宣布支持?ZK-EVM的主网或测试网的上线计划。本文将介绍?EVM、ZK-EVM以及主要的?ZK-EVM项目和它们的区别。
什么是?EVM?
EVM指的是以太坊虚拟机,它相当于执行引擎,是以太坊智能合约的运行时环境。开发者通过高级编程语言如?Solidity编写业务逻辑,然后编译器把代码编译成低级编程语言字节码并执行相应指令修改系统状态。EVM是基于堆栈结构的虚拟机,在执行opcode的时候需要和stack、memory、storage交互。
对于以太坊、各种扩容协议和竞争公链而言,EVM几乎成为以太坊生态的代名词,代表以太坊生态的开发者、应用和工具。如果某个公链不支持EVM,那么它需要重新培育自己生态内的开发者,而开发者也需要重新开发应用和工具。有人曾对比OptimisicRollup的两大巨头Optimism和Arbitrum,指出其中一个协议仅99%兼容EVM而另一个协议可以100%兼容EVM,就算1%的区别也会产生以太坊生态竞争的劣势。由此可见,兼容EVM直接关乎对以太坊生态的兼容性,只有兼容EVM,开发者才可以无缝迁移现有的以太坊合约,以太坊生态的各种工具才能顺利接入。
即将到来的?ZK-EVM
尽管EVM在以太坊生态发挥着关键作用,但ZK-EVM的开发相当复杂。ZK-EVM是指能够支持生成零知识证明并兼容EVM,以太坊智能合约可以无需修改而直接部署运行,同时程序的运行可以通过零知识证明其计算的有效性。EVM在设计之初并没有考虑到ZK,这也因为当时ZK尚未取到突破性进展还没有被主流采用,直到2016年才第一次有零知识证明算法zk-SNARK被Zcash采用。EVM里有一些操作对零知识不友好,即很难生成零知识证明,或生成证明的效率低,或生成的证明太大。
很多人知道ZK开发门槛很高,不仅涉及密码学、数学也涉及到硬件知识,而ZK-EVM开发更属于难上加难的级别,它既要能够兼容EVM,又要对零知识友好。幸运的是,在过去的几年时间里,ZK领域取得了越来越多的重大突破。ZK-EVM赛道几位选手包括Starkware、zkSync2.0、Polygon和Scroll等都在加紧研发ZK-EVM,其中后面三个项目在近期陆续宣布了测试网上线的消息。
7月19日,Scroll发布了pre-alpha测试网,用户可以体验一些演示程序例如Uniswapfork版本以及Metamask钱包。7月20日,MatterLabs宣布兼容EVM的zkSync2.0将在11月左右上线主网并公布路线图。同样在7月20日,Polygon宣布其ZK-EVM测试网也即将上线。
各家?ZK-EVM对比
由于ZK-EVM并没有统一的设计规格或者标准,所以每个项目方基于不同角度在兼容EVM和支持ZK之间权衡设计出各自方案,目前基本分为两种思路:
1.编程语言层面支持,自定义EVM操作码,把ZK友好的操作抽出来重新设计新的、架构不同的虚拟机,通过编译器将Soilidity编译成新的虚拟机操作码
2.字节码层面支持,支持原生EVM操作码
第一种思路的项目包括有Starkware的StarkNet和zkSync2.0。Starkware的ZK-Rollup通用解决方案StarkNet可以运行任意的以太坊dApp。开发者可以通过编译器将Solidity编译成StarkNet的智能合约语言Cairo,再部署到其ZK友好的VM。类似Starkware,zkSync2.0通过开发编译器前端Yul和Zinc来实现ZK-EVM功能。Yul是一种中间Solidity表示,可以编译为不同后端的字节码。Zinc是用于智能合约和通用零知识证明电路的基于Rust的语言。它们都是基于开源框架LLVM,能够实现最高效的ZK-EVM字节码。
这一类项目在语言层面兼容Solidity,开发者可以把用Solidity写的智能合约通过转移的方式来部署运行,但是底层VM架构并非是EVM,严格来说是一种zkVM。而且由于底层的虚拟机指令集的不同,有一些现有开发工具不能直接使用,但是对ZK友好,能更有效生成零知识证明。
而第二种思路的项目包括有PolygonZK-EVM和Scroll。PolygonZK-EVM叫做uVM,zkCircuit优化的VM具有定制的操作码以优化EVM操作,EVM字节码先被编译成“微操作码”再在uVM执行。PolygonZK-EVM计划支持全部EVM操作码,是一个与以太坊完全兼容的零知识(ZK)扩展解决方案:所有现有的智能合约、开发人员工具和钱包都可以无缝运行。Scroll也和Polygon的类似,会为每个字节码设计电路,包括验证EVM执行的每一个步骤,包括加载bytecode,执行opcode,更新storage等。
而在Vitalik的博文里,他将ZK-EVM分为几种类型。其中,类型1是直接在以太坊上面直接开发ZK-EVM,这个开发过于复杂而且目前效率太低,以太坊基金正在研究中。类型2、类型2.5和类型3是EVM等效的ZK-EVM,Scroll和PolygonHermez目前处于类型3这个阶段,朝着类型2.5乃至类型2努力。类型4是高级语言兼容的ZK-EVM,包括Starkware和zkSync。这些类型并无好坏之分,而且ZK-EVM也没有统一的标准。正如Vitalik所说,“从理论上讲,以太坊不需要为L1使用单一的ZK-EVM实现进行标准化;不同的客户可以使用不同的证明,因此我们继续从代码冗余中受益。”
总结
各家的ZK-EVM方案设计并无绝对的好坏,因为目前大家代码尚未开源也无法比较效率。以太坊作为最大的智能合约平台,拥有强大的生态系统和网络效应,ZK-EVM是ZK-Rollup的圣杯,只有通过ZK-EVM,ZK-Rollup才能依托以太坊的生态和网络效应,在继承以太坊安全性、降低手续费的同时更容易获得充满活力的开发者生态、经过时间考验的代码库和工具。2021年初,Vitalik曾在其博客称,短期内,OptimisicRollup可能会在通用EVM计算方面胜出,而ZK-Rollup可能会在简单的支付、交易和其他特定于应用程序的用例中胜出,但在随着ZK-SNARK技术的改进,中长期ZK-Rollup将在所有用例中胜出。随着各个ZK-EVM项目的测试网/主网陆续上线,相信在不久的将来,以太坊二层扩容将会精彩纷呈。
参考资料:
ZK-EVMoverview-p1,
https://drive.google.com/file/d/1dhZ5GtSK4sHCNcklGzNHfR-lSzplpD8J/view
https://vitalik.ca/general/2022/08/04/zkevm.html
https://starkware.co/starknet/
https://blog.matter-labs.io/zksync-2-0-hello-ethereum-ca48588de179
https://polygon.technology/solutions/polygon-ZK-EVM/
https://blog.hermez.io/introducing-hermez-ZK-EVM/
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。