9 月 1 日凌晨,以太坊扩容网络 Arbitrum 宣布主网公测版本正式上线,与此同时 Optimism 则早已经向部分白名单应用开放,这标志着以太坊 L2 扩容方案的一支——Optimistic Rollup 正式登上了舞台。 我们再将目光转向 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 的作用,我们还需要一些前置知识。 我们先从以太坊讲起,从本质上来讲,以太坊是一个基于交易的状态机。 从以太坊的创世纪状态(Genesis State)开始,通过一个区块又一个区块的交易,转变成最终状态,也即以太坊当前的状态,状态中包含了所有的账户地址和其映射的账户状态。 source:https://ethfans.org/posts/how-does-ethereum-work-anyway 其中具体负责处理交易的就是 EVM,即 The Ethereum Virtual Machine (以太坊虚拟机)。EVM 作为一个堆栈机运行,程序员用高级语言例如 Solidity 来编写代码,随后代码被编译成 EVM 可以理解的 EVM 字节码,作为各种 EVM 指令执行标准的堆栈操作,最终产生一个新的状态。 现在的问题来了,我们知道 ZK Rollup 方案需要对二层上的交易生成零知识证明,再传回一层进行验证,而要生成零知识证明,需要交易的处理过程符合 zk 电路证明的规范。而在 EVM 设计之初,显然没考虑过要支持零知识证明(毕竟那是 6,7 年前,零知识证明没进入大多数人的视野),这就是 zkEVM 的意义:一种运行在 ZK Rollup 网络上,兼容 EVM 同时又对零知识证明友好的虚拟机。 两种实现策略对于 zkEVM,目前主要有两种实现策略:
|