返回 Expert 笔记
Expert Day 235

zkEVM Type 1-4 详细分类

Vitalik 2022 的 zkEVM Types 分类法、每个 Type 的取舍、各代表项目

2026-12-22
Phase 4 - ZK电路开发实战 (Day 223-243)
ZKzkEVMVitalikType1Type4

日期: 2026-12-22 方向: ZK工程 / 电路开发 阶段: Phase 4 - ZK电路开发实战 (Day 223-243) 标签: #ZK #zkEVM #Vitalik #Type1 #Type4


今日目标

类型内容
学习Vitalik 2022 的 zkEVM Types 分类法、每个 Type 的取舍、各代表项目
实操写「zkEVM 选型指南」给团队/项目方做选择参考
产出zkevm_guide.md

背景:Vitalik 2022 的分类

2022-08-04,Vitalik 在 《The different types of ZK-EVMs》 中提出 4 类分类,作为 zkEVM 设计取舍的标准坐标轴。

核心轴:EVM 兼容度 vs Prover 性能。越接近 EVM 越慢;越偏离 EVM(用 ZK-friendly 替代)越快。

EVM-equivalent ────────────────────────────► Performant
   Type 1 → Type 2 → Type 2.5 → Type 3 → Type 4
   (slowest)                              (fastest)

Type 1:Fully Ethereum-equivalent

定义:完全 ZK-prove Ethereum 协议本身,不改任何东西。

  • 用 ZK 证明 keccak256(每 hash ~140k 约束)
  • 用 ZK 证明 trie operations(state tree 用 keccak Merkle Patricia)
  • 完整支持所有 precompile(包括奇怪的 modexp、ecrecover)

优势:

  • 直接在 ZK 中跑 mainnet block,无任何修改
  • L1 client 验证 ZK proof 即可,未来可作为 EF "Verkle + zkEVM" 主链方案

劣势:

  • Prover 极慢:单 block prove 数小时
  • 极贵:~$10/block prove cost (估算)

代表项目:

  • Taiko (Type 1 ambitions) - 主网上线,目标 Type 1
  • EF zkEVM team - 研究项目,未上线
  • Kakarot - Cairo 实现,跑在 StarkNet 上

真实数据:

  • Taiko Alpha-3:单 block prove 大约 ~30 min(GPU 集群)
  • 估算 mainnet 单 block prove 成本:$1-5

Type 2:EVM-equivalent (但状态 trie 内部不同)

定义:从开发者视角看就是 EVM,但内部实现略有不同:

  • state tree 可能用 Poseidon-MPT 替代 keccak-MPT(更 ZK-friendly)
  • 但 EVM bytecode 完全相同,opcode 行为相同

优势:

  • 现有合约 0 修改部署(合约地址、bytecode、log 都一致)
  • Prover 比 Type 1 快 5-10×(state tree 用 ZK-friendly hash)

劣势:

  • L1 客户端不能直接验证(state root 用了不同 hash)
  • 需要额外 keccak 在 ZK 内(针对 EVM 内的 keccak opcode)

代表项目:

  • Scroll - 目前最忠实 Type 2
  • Linea - 偏 Type 2.5(部分 opcode 处理略变)

性能估算:

  • Scroll:~5-10 min/batch(数百 tx)
  • prove cost:~$0.1-0.5/tx

Type 2.5:EVM-equivalent except for gas costs

定义:Type 2 的优化版本——某些 opcode 提高 gas(让 prover 友好)。

  • 例:keccak 提价让用户少调用,整体减少 prover 工作量
  • 行为仍然「正确」(执行结果一样),但 gas 计费不同

优势:

  • 比 Type 2 快 ~30%
  • 仍兼容大部分合约(除非合约 hardcode 了 gas 数字)

劣势:

  • 合约可能因 gas 变化失效(如固定 gas limit 的 internal call)
  • 需要 educate 开发者「这个 opcode 在 zkEVM 上更贵」

代表项目:

  • Linea - 部分 Type 2.5 倾向

Type 3:Almost EVM-equivalent

定义:少数 opcode/precompile 不同:

  • 不支持 selfdestruct
  • 某些 precompile(modexp, ec curves)改写或不支持
  • block.number 等 host 函数语义略调整

优势:

  • 比 Type 2 快 ~2×
  • 大部分合约(>95%)能直接跑

劣势:

  • 5% 左右合约需要修改(删 selfdestruct、避开特殊 precompile)
  • DEV 工具(Hardhat fork mainnet)可能行为不一致

代表项目:

  • Polygon zkEVM - 当前是 Type 3,目标 Type 2
  • Scroll 早期 - 部分 Type 3 特性(已逐步对齐 Type 2)

真实兼容性问题:

  • Aave V2 在 Polygon zkEVM 部署时,因 modexp precompile 行为不同需要 patch
  • WETH9 因 selfdestruct 缺失行为不同(不影响主流 use case)

Type 4:High-level-language equivalent

定义:从 Solidity / Vyper 源码编译到自定义 ZK-friendly bytecode:

  • 不是 EVM bytecode,是项目自定义 VM
  • LLVM-based 编译器(如 zksolc),从 Yul/Solidity → 中间 IR → 自定义指令集

优势:

  • 最快 prover(5-10× faster than Type 2)
  • 可以做 ZK-native 优化(如 ZK-friendly hash、自定义 storage layout)
  • 通常 native AA / paymaster 等增强

劣势:

  • 合约 bytecode 不同 → contract address 通过 CREATE2 计算结果不同
  • 不是真正的「EVM 等价」:subtle 行为差异(gas、bytecode hash、CREATE 地址)
  • 工具链(Etherscan、Tenderly)需要专门适配

代表项目:

  • zkSync Era - 经典 Type 4,zksolc + EraVM
  • StarkNet - Cairo(不是 EVM 兼容,但有 Solidity → Cairo 转换器 Warp)
  • Aleo Leo - 完全不同的 ZK-native 语言

真实兼容性问题:

  • 2023 年 Uniswap 在 zkSync Era 部署时发现:CREATE2 计算的 pool 地址与主网不同(因为 init code hash 不同),需要重新部署 quoter 合约
  • 一些用 inline assembly 的合约(Yearn、Curve 部分版本)在 zkSync 编译失败

完整对比表

维度Type 1Type 2Type 2.5Type 3Type 4
EVM 字节码兼容~
EVM 状态树兼容✗ (Poseidon MPT)
Solidity 兼容~✓ (源码层)
CREATE2 地址兼容
selfdestruct
所有 precompile部分部分
gas costs equivalent
L1 client 可验证
Prover 速度5-10×7-12×10-20×30-50×
代表Taiko, EFScrollLineaPolygon zkEVMzkSync, StarkNet

选型指南 / Selection Guide

你是 DApp 开发者,要部署到哪个?

合约简单(ERC20, Uniswap fork) → 任何 Type 都可以
合约复杂、有 inline asm 或 selfdestruct → Type 1/2/2.5
要直接 mainnet 0 修改部署 → Type 1/2 (Scroll, Linea)
要最便宜的 fees → Type 4 (zkSync Era),但要重新审计
要最忠实 mainnet → Type 1 (Taiko)

你是 Rollup 项目方?

要赢市场(fast + cheap)→ Type 4
要赢开发者心智 → Type 2 (Scroll)
要做最未来 → Type 1(赌 EF 长期方向)
要做企业级私有 chain → Type 2.5(CDK fork)

演进趋势 / Evolution

2022-2023: 大家都从 Type 4 / 3 入场(Polygon, zkSync)
2024:      Scroll 用 Type 2 后,行业开始向 Type 2 收敛
2025+:     Type 1 chain 开始上线(Taiko),zkEVM 成 EF 主链方向

Vitalik 自己 2024 表态:长期看 Ethereum L1 自己会变成 Type 1 zkEVM("zk EL"),目前 EF 在做 SP1/RISC0 zkVM 来 prove geth/reth 客户端。


工程实战经验

Type 4 项目「踩坑」清单

  1. CREATE2 init code hash 不同 — 跨链工具(Quoter, UniswapPositionsManager)地址不一致
  2. bytecode hash 不同 — 一些合约要校验 hash 的逻辑要 patch
  3. gas estimation 行为不同 — Hardhat / Foundry 模拟可能不准
  4. delegatecall 限制 — zkSync Era 早期不支持任意 delegatecall
  5. block.timestamp 精度 — 某些 chain 给 ms 精度

Type 2 项目踩坑清单

  1. state tree hash 不同 — Etherscan / The Graph 可能 indexing 慢
  2. 某些 precompile 缺失 — bn128 add/mul 通常 OK,但 modexp 大数运算可能慢

关键速查

Type 1: full Eth-equiv     | slowest, future
Type 2: bytecode-equiv     | Scroll, near-mainnet
Type 2.5: gas adjusted     | Linea
Type 3: mostly-equiv       | Polygon zkEVM
Type 4: source-equiv       | zkSync Era, fastest

面试题

  1. Q: zkEVM Type 1 和 Type 4 的核心 trade-off 是什么? A: Type 1 完全 EVM 等价(包括 state tree 用 keccak),客户端可直接 verify、合约 100% 兼容;但 prover 极慢(数小时)。Type 4 从源码编译到自定义 bytecode,prover 快 30-50×、可以做 ZK 优化、UX 改善(native AA),代价是 bytecode/地址不一致、审计需要重做。

  2. Q: 为什么 Vitalik 长期看好 Type 1? A: 终局是 Ethereum L1 自己变 zkEVM,让任何 light client 都能用 ZK 验证整条链。这要求 Ethereum 协议 1:1 ZK 化(Type 1)。中短期 Type 2/3/4 是 L2 务实选择,但 L1 自己只能走 Type 1。

  3. Q: 你做一个 DEX,要上 zk-Rollup,会选 Type 几? A: 看几个因素:(a) 现有合约成熟度 — 有就选 Type 2 (Scroll);(b) UX 要求 — gasless 重要选 Type 4 (zkSync, native AA);(c) 团队带宽 — 不想重写就选 Type 2/2.5。多链部署可以两边都上。

  4. Q: 如果选了 Type 4 (zkSync Era),你会优先验证哪些兼容性问题? A: (1) CREATE2 地址(影响 Uniswap pools 等);(2) inline assembly 编译;(3) gas estimation 准确度;(4) selfdestruct 是否被使用;(5) 第三方协议(Permit2, Multicall3)是否已部署。


明日预告

Day 236 — Aztec 与隐私 L2。Privacy-first zk-Rollup 架构,Noir + UltraPlonk + 完整的 private state model。