主页 > token.im > 三分钟看懂zkEVM:以太坊扩容计划中的明珠

三分钟看懂zkEVM:以太坊扩容计划中的明珠

token.im 2023-05-05 07:28:38

9月1日凌晨,以太坊扩容网络Arbitrum宣布主网公测版正式上线。 同时,Optimism已经对部分白名单应用开放。 在舞台上。

让我们把目光转向另一个L2扩容方案ZK Rollup:

zkSync 于 8 月 31 日宣布将推迟其 2.0 版本的推出。 基于zkEVM,zkSync 2.0有望成为第一个兼容EVM的ZK Rollup;

8月13日,Polygon宣布以2.5亿美元收购以太坊二层扩容解决方案Hermez。 Hermez 的核心技术是其 zkEVM 解决方案;

同样在8月13日,以太坊基金会在一篇定期发布其支持团队的研发进展的文章中表示,在过去的几个月里,它已经资助组建了一个团队来开发zkEVM。

我们知道,Vitalik在对比两种扩容方案时表示,短期内Optimistic Rollups在一般EVM计算上很可能胜出,但从中长期来看,随着ZK-SNARK技术的提升,ZK Rollups将胜出所有场景。 所谓“ZK-SNARK技术的改进”,主要是指zkEVM的成功。

可见,zkEVM 已经成为以太坊扩容计划皇冠上的明珠。 作者希望通过本文,让读者了解zkEVM的基本原理和发展现状。

zkEVM的作用

以太坊账户原理_以太坊转到自己的账户_以太坊联盟和以太坊的关系

要弄清楚 zkEVM 的作用,我们需要一些先验知识。

让我们从以太坊开始以太坊账户原理,它本质上是一个基于交易的状态机。

从以太坊的创世状态开始,经过一个又一个区块的交易,会转化为最终状态,也就是以太坊的当前状态,包括所有账户地址及其映射的账户状态。

方案

来源:

其中,EVM专门负责处理交易,即以太坊虚拟机(Ethereum Virtual Machine)。 EVM 作为堆栈机器运行。 程序员使用Solidity等高级语言编写代码,然后将代码编译成EVM可以理解的EVM字节码,像各种EVM指令一样进行标准的栈操作,最后生成新的状态。

以太坊账户原理_以太坊转到自己的账户_以太坊联盟和以太坊的关系

现在问题来了。 我们知道,ZK Rollup 方案需要在第二层为交易生成零知识证明,然后传回第一层进行验证。 要生成零知识证明,交易的处理需要符合 zk 电路证明的规范。 在EVM设计之初,显然没有考虑支持零知识证明(毕竟是6、7年前的事了,零知识证明并没有进入大多数人的视野)。 在网络上,兼容 EVM 且对零知识证明友好的虚拟机。

两种实施策略

对于zkEVM以太坊账户原理,目前主要有两种实现策略:

对于第一种策略,由于它完全支持EVM现有的指令集,使用了与EVM相同的编译器,自然而然地完全兼容现有的生态系统和开发工具,同时更好地继承了以太坊的安全模型。

至于第二种策略,由于不受原有EVM指令集的约束,代码可以更灵活的编译成对零知识证明更友好的指令集,同时也摆脱了所有需要的兼容性原始 EVM 指令集。 艰巨而繁重的工作。

总的来说,第一种策略兼容性较好,安全性较高,但工作量较大; 第二种策略更灵活,工作量更小,但需要额外努力适应。

以太坊联盟和以太坊的关系_以太坊转到自己的账户_以太坊账户原理

与Hermez zkEVM的主要方案对比

Hermez 使用第一种策略,将所有 EVM 指令集翻译成中间指令(微操作码)。

众所周知,EVM有一些变长指令,比如CALL、EXP、CREATE等,这些指令本身对zk电路证明是不友好的,而这些指令的逻辑可以通过使用中间指令来表达得更友好。 中间指令在uVM中执行,使用大量密码学工具实现zk完备,并使用Plookup算法提高证明和验证效率。

方案

Hermez zkEVM 实现的另一个亮点是它同时使用了两套证明系统。 具体来说,它生成一个STARK证明,然后使用PLONK或者Groth16为STARK证明生成一个证明,并在一层进行验证。 一个过程就像一个证明。 原因是STARK虽然优秀,但是证明规模大,链上验证的开销也大,而Groth16或者PLONK的证明规模更小,验证速度更快。 这种将两者结合起来,取长补短的方法,很容易让人联想到非对称加密算法和对称加密算法结合使用的场景。

应用 ZKP zkEVM

以太坊联盟和以太坊的关系_以太坊账户原理_以太坊转到自己的账户

AppliedZKP zkEVM 和Hermez一样采用第一种策略。

AppliedZKP采用数据总线(Bus Mapping)的思想,将存储和计算分离。 基于Bus Mapping提取的正确存储数据,通过State证明证明数据的一致性,通过EVM证明证明计算逻辑的正确性。

方案

具体过程如下:

zk同步EVM

与 Hermez 和 AppliedZKP 不同,zkSync 选择了第二种策略。 zkSync 的 zkEVM 不是 EVM 的复制品,而是一种全新的设计,能够运行 99% 的 Solidity 合约,并确保它们在各种情况下都能正常工作,包括回滚和异常。 同时,zkEVM 可用于高效生成电路中的零知识证明。

以太坊联盟和以太坊的关系_以太坊账户原理_以太坊转到自己的账户

zkSync EVM使用TinyRAM实现普通指令集,而SHA256/keccak等消耗Gas较多的指令则专门实现其电路,最后使用递归聚合技术将所有证明聚合为一个以提高效率。

方案

来源:

zkSync 还为 zkEVM 开发了两个编译器前端:Yul 和 Zinc。 Yul 是一种中间的 Solidity 表示,可以为不同的后端编译成字节码; Zinc 是一种基于 Rust 的语言,专为智能合约和通用零知识证明电路而开发。 这给了开发者更多的选择。

同时,zkSync在构建自己的编译器时,选择了LLVM这一目前最先进的工业级产品编译器框架,确保编译器足够完善,经典的优化都有。

写到最后

在众多优秀团队的不断努力下,zkEVM技术逐渐成熟。 预计将在半年左右实施。 届时,兼容EVM的ZK Rollup扩容方案必将大放异彩。

今天的区块链技术正在进入一个前所未有的争议时代。 从公链的竞争,到以太坊扩容方案的比拼,甚至具体到某个具体的扩容方案,都有不同的项目方在互相追赶。 笔者有幸身处区块链技术最为生机勃勃的时代。