zk rollup是layer2项目中的明星,难度也不是一般的大,基本思路是利用zk技术,把layer2的执行结果,和proof一起提交给layer1,然后layer1验证上链。
在layer2中,需要虚拟机vm来执行打包的交易,这种基于zk技术的虚拟机,叫做zkVM,如果该虚拟机兼容以太坊智能合约,叫做zkEVM。
EVM
先理解下evm合约的执行过程:把合约编译成字节码,然后字节码通过EVM执行。

什么是zkEVM
zkEVM就是通过zk技术,支持solidity合约执行的虚拟机。
zkEVM按照vitalik的分类,一共有四种:
* https://vitalik.ca/general/2022/08/04/zkevm.html
- type 1,完全以太坊等效, 是直接可以在以太坊链上运行的EVM,最难实现。PSE(前身是appliedzkp)和taiko正在做
- type2,完全EVM等效,但是并不是以太坊等效,也就是可以运行EVM的合约,但数据结构和状态树可能不同,可以运行在一条和eth不同的链上。目前scroll和polygon正在做
- type2.5,几乎EVM等效,仅仅gas费的消耗不一样
- type3,几乎EVM等效,但有一些功能性的差别。type3是一个过渡类型,目前scroll和polygon事实上是type3,但目标是type2或者type2.5,即除了gas消耗更低外,完全EVM等效。
- type4,高级语言兼容的 ZK-EVM,也就是能够编译solidity智能合约,但是底层和EVM没啥关系。主流项目是Starkware 和 zkSync。

vitalik的四种分类,是从产品的角度来看,从实现的角度来看,zkEVM的实现方式一般有两种手段:
- 语言级别兼容EVM: 就相当于type4,仅从语言层面支持solidity,但底层实现和EVM没啥关系。这种思路的产品有Starkware 的 StarkNet 和 zkSync2.0。这种思路的特点是底层的虚拟机指令集和EVM不同,有一些现有开发工具不能直接使用,但是对 ZK 友好,能更有效生成零知识证明。
- 字节码级别: 相当于type2,或者type2.5。这种思路是先把上层语言编译为和EVM一样的字节码,然后为每个字节码用zk电路实现其逻辑。主要产品是Polygon ZK-EVM 和 Scroll。这样的特点是实现了一个以太坊完全兼容的零知识 (ZK) 扩展解决方案:所有现有的智能合约、开发人员工具和钱包都可以无缝运行,当然也更复杂
zk证明算法
目前有两种主流的zkp算法:
- ZK-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)。
- ZK-STARK(Zero-Knowledge Scalable Transparent Argument of Knowledge)。
其中的ZK-SNARK有trusted setup过程,也就是需要提前通过一些秘密信息来准备一批参数,如果这些秘密信息被泄露,就会破坏系统的安全性,因此这些信息又叫做有害废料(toxic waste),存在安全隐患。
而对ZK-STARK而言,其设计目标之一是消除对 trusted setup的需求。使用了一些先进的数学技术,如多项式插值和低度伪随机函数。这些技术使得构建 STARK 参数的过程更加透明、去中心化,并且不依赖于有害废料,这使得 STARK 在可验证性和可扩展性方面具有优势,并为系统的部署和使用提供更高的安全性和可信度。
zkp和zkEVM是什么关系呢:
- zkEVM是产品,支持智能合约的运行
- zkp算法是技术,zkEVM采用其中一种zkp算法实现
zkEVM相关项目
Applied ZKP
以太坊基金会的zk项目,目标是type1。
开源地址:https://github.com/privacy-scaling-explorations/zkevm-specs
Polygon zkEVM
polygon zkEVM是Polygon 通过收购并合并一个叫做 Hermez 的 ZKR 项目而形成的。运行方式是通过电路实现EVM的opcode。
开源地址:https://github.com/orgs/0xPolygonHermez/repositories
目前是type3,目标是type2~2.5。
Scroll
Scroll也是开源的:https://github.com/scroll-tech
运行方式和Polygon类似,也是通过电路实现EVM的opcode。
目前是type3,目标是type2~2.5。
Taiko
Taiko的目标也是type1。
开源地址:https://github.com/taikoxyz
zkSync
zkSync属于type4。
开源地址:https://github.com/matter-labs/zksync
zkSync 是由 Matter Labs 开发的整套zkrollup协议的总称。
zkSync Era是运行zkVM的链。
zkSync的思路,是使用自己的LLVM compiler,把合约代码,比如solidity代码,编译成自己需要的字节码(而不是evm的opcode),然后传递给zkVM执行。
Starkware
StarkWare是一个以色列的技术公司,专注于构建基于zkSTARK(零知识可验证的可扩展性零知识证明)的可扩展解决方案。
StarkNet是StarkWare运行的区块链。
SNVM是运行在StartNet上的合约虚拟机。SNVM虚拟机利用 zkSTARK技术实现智能合约执行。
Cairo是用于编写运行在StarkNet上智能合约语言。
原本Starknet和zkEVM没啥关系,单纯的是zkVM,但Nethermind’s Warp项目提供一种编译器,能把solidity编译为Cairo,也就是把starkware的starknet变相的变成了type4。
各家产品对比

越往右对EVM兼容越好,实现难度越大。
Ref
发表回复