在以太坊Layer 2扩展网络Arbitrum和Optimism网络都宣布其主网的公开测试版正式启动后,Layer 2的整体数据增长都极其明显,这也标志着以太坊Layer 2扩展解决方案之一Optimistic Rollup已经正式启动。没错,这是一个属于Layer 2的季节。
当像Arbitrum和Optimism这样的Optimistic Rollup成为市场焦点时,另一个曾被路印协议CTO Steve Guo认证为最终完全可用的Layer 2网络zkEVM也取得了一些关键性的进展。现如今,我们看到越来越多地zkEVM已成为扩展以太坊的关键。本文就将会带你深入了解zkEVM的基本原理和发展现状。
作者:DeGate Team
来源:Medium
编译:陈一晚风
概要
1、zkSync宣布推迟8月31日发布其2.0版本。基于zkEVM的zkSync 2.0有望成为第一个兼容 EVM的zk Rollup;
2、8月13日,Polygon宣布以2.5亿美元收购以太坊Layer 2扩展解决方案Hermez,其核心技术是其zkEVM解决方案;
3、以太坊基金会在一份关于研发进展的定期更新声明中表示,在过去几个月中以太坊基金会资助筹建zkEVM团队,希望能将EVM的所有操作码直接通过ZK电路实现。
正如我们所知,在比较Optimistic Rollup和ZK Rollup的两种扩容解决方案时,V神认为 Optimistic Rollups可能会在短期内赢得通用EVM计算。但从长远来看,随着ZK-SNARK技术的改进,ZK rollup才可以在所有的应用场景中“获胜”。而所谓“ZK-SNARK技术的改进”主要是指zkEVM的成功。
zkEVM的作用
在开始探究zkEVM的作用前,让我们先来重新认识一下以太坊。从本质上来说,以太坊就是一个基于交易的状态机。在计算机科学中,状态机是通过读取一系列输入,从旧状态转换到新状态的机器。
从创世状态开始,以太坊通过一个又一个的交易转换到以太坊的当前状态。该状态包含所有帐户地址及其映射的帐户状态。
其中,EVM或以太坊虚拟机负责处理交易。EVM作为堆栈机运行,程序员在其中使用Solidity等高级语言编写代码,然后将其编译为EVM能够理解的EVM字节码。EVM以各种EVM操作码的形式执行标准堆栈操作,最终产生一个新的状态。
现在问题来了。我们知道zk Rollup解决方案需要为Layer 2上的交易生成零知识证明,并将它们传递回Layer 1进行验证。为了生成零知识证明,交易的处理需要符合zk电路证明规范。而在EVM设计之初,设计者并没有考虑支持零知识证明。因此我们需要 zkEVM。从技术上讲,zkEVM 的含义是:运行在zk Rollup网络上的虚拟机,兼容EVM并且零知识证明友好。
两种实施策略
对于zkEVM来说,目前主要有两种实现策略。
1、直接支持现有的EVM操作码集,与Solidity操作码集完全兼容。使用此解决方案的人包括Hermez和以太坊基金会zkEVM。
2、通过设计一个零知识证明友好的新虚拟机并适应EVM开发工具来保持Solidity兼容性。该方案主要被zkSync使用。
对于第一种策略,由于它完全支持现有的EVM操作码集,并且使用与EVM相同的编译器,现有的生态系统和开发工具完全兼容,也更好地继承了以太坊的安全模型。而第二种策略,它不受原始EVM操作码集的约束,因此可以更灵活地将代码编译为对零知识证明更友好的操作码集。它还免去了与所有原始EVM操作码集兼容所需的繁重工作。
总的来说,第一种策略更兼容、更安全,但工作量更大;第二种策略更灵活、工作量更少,但需要额外的努力来适应。
主要解决方案对比
Hermez zkEVM
Hermez使用第一种策略,将整个EVM操作码集转换为微操作码。
众所周知,有一些可变的EVM操作码,例如CALL、EXP、CREATE 等,它们对zk电路证明本质上是不友好的,而这些操作码的逻辑可以使用微操作码以一种更友好的方式来表达。微操作码在uVM中执行,uVM使用大量加密工具实现zk完成,并使用Plookup算法提高证明和验证效率。
Hermez zkEVM的另一个亮点是它同时使用了两个证明系统,专门生成一个STARK证明,然后使用PLONK或Groth16生成一个STARK证明的证明并在Layer 1上进行验证,就像一个证明的证据。原因是STARK的证明量大,验证链上的成本高,而Groth16或PLONK的证明量小,验证速度快。两者的这种组合各有优势,很容易被认为是一种组合使用非对称和对称加密算法的场景。
AppliedZKP zkEVM
与Hermez一样,AppliedZKP zkEVM也使用第一种策略。AppliedZKP使用Bus Mapping映射思想来分离存储和计算。基于Bus Mapping映射提取的正确存储数据,State证明证明了数据的一致性,EVM证明证明了计算逻辑的正确性。
具体流程如下:
1. EVM通过Bus Mapping映射读取所需的相关状态。状态由存储、内存和堆栈组成;
2. EVM执行操作码;
3. EVM通过Bus Mapping映射写回新状态;
4.State证明负责Bus Mapping读写数据的一致性和正确性,EVM证明负责EVM操作码执行的正确性。
zkSync EVM
与Hermez和AppliedZKP不同,zkSync选择了第二种策略。zkSync的zkEVM不是EVM的复制品,而是新设计的,可以运行99%的Solidity合约,并确保它在各种条件下(包括回滚和异常)正常工作。同时,zkEVM可用于在电路中高效生成零知识证明。
zkSync EVM使用TinyRAM来实现通用的操作码集,而消耗大量gas的操作码,例如SHA256和keccak,将特别实现其电路,最后使用递归聚合技术将所有证明聚合为一个以提高效率。
zkSync还为zkEVM开发了两个编译器前端:Yul和Zinc。Yul是一种微型Solidity表示,可以为不同的后端编译成字节码;Zinc是一种基于Rust的语言,用于智能合约和通用零知识证明电路。这为开发人员提供了更多选择。
另外,zkSync在构建编译器时,选择了LLVM这个生产工业级产品最先进的编译器框架,以确保编译器足够完整,并具有所有经典优化。
总结
从上述这些扩容项目中,我们看到在团队的不断努力下,zkEVM技术正在走向成熟,并将在大约六个月内实现与EVM兼容的zk Rollup扩展解决方案。
如今,区块链技术正在进入一个前所未有的充满争议的时代。从公链之争到以太坊扩容方案之战,甚至到一个具体扩展解决方案,不同的项目都在相互竞争、追赶和超越,这其中蕴含着对现实世界的巨大游戏,很幸运,我们处于区块链技术技术最具活力的时代。