zkEVM(零知识 以太坊 虚拟机)是一种虚拟机,它执行与 以太坊 虚拟机 (EVM) 兼容的智能合约,并利用零知识技术生成这些执行过程的加密证明。它被设计为 以太坊 的扩展解决方案,旨在通过利用 以太坊 主网,在保持高度安全性的同时提高交易吞吐量并降低成本。通过打包大量交易、在链下执行,然后向主区块链发布简洁的有效性证明,zkEVM 允许在不需要每个网络节点重新执行计算的情况下验证计算。 [1] [2]
zkEVM 开发的主要动力是解决 以太坊 (Ethereum) 网络的扩展性瓶颈。在 以太坊 (Ethereum) 的标准模型中,每个验证者节点都必须重新执行区块内的每笔交易以验证其有效性,这一过程被称为“N-of-N 执行”。这种冗余计算限制了网络的容量,也是高需求期间 Gas 费用居高不下的原因之一。[3]
zkEVM 提出了一种“1-of-N”模型,其中一个被称为“证明者 (prover)”的专门实体执行一批交易,并生成一个简洁的密码学证明(零知识证明,即 ZK-proof)来确认执行的正确性。网络验证者随后只需验证这个计算成本极低的证明,而无需重新运行整个区块。这种范式转变极大地减轻了网络的计算负荷,从而实现了更高的吞吐量和更实惠的费用。[4]
虽然早期的 ZK-Rollups 提供了扩展性优势,但它们往往以牺牲 EVM 兼容性为代价,将其用途限制在特定应用中,并要求开发人员学习新的语言或工具。zkEVM 是一项重大的演进,因为它们旨在与 EVM 兼容或等效,允许开发人员以极少甚至无需修改代码的方式,将现有的 以太坊 (Ethereum) 智能合约和 去中心化应用程序 (dApps) 部署到更具扩展性的层级上。这种方法允许项目利用 以太坊 (Ethereum) 广泛的开发者、工具和基础设施生态系统。[1] [5]
该技术主要应用于两个场景:作为运行在 以太坊 (Ethereum) 之上的 二层网络 (Layer 2) Rollups,以及一个更具雄心的提案,即直接将 zkEVM 集成到 以太坊 (Ethereum) 的一层网络 (Layer 1) 协议中,以扩展主网本身。[6]
zkEVM 架构从根本上由三个核心组件组成,这些组件促进了链下计算与链上验证。 [2]
zk-SNARK 或 zk-STARK。该证明在密码学上证明了状态转换(从初始状态到新状态)是有效的,并且所有计算都是根据 EVM 规则正确执行的。证明的生成过程不会泄露底层交易数据本身。 [5] [2]在 zkEVM 系统中,证明者以“无状态”方式执行区块,这意味着它不需要维护整个区块链状态的完整副本。相反,正在处理的交易所需的状态数据作为输入提供,通常被称为“见证数据 (witness)”。该输入伴随着默克尔证明 (Merkle proofs),用于根据父区块的已知状态根验证其完整性。 [4]
需要注意的是,在扩容的语境下,“zk”(零知识)一词在某种程度上可能存在误导。虽然该技术可用于隐私保护,但 zkEVM 主要利用了 SNARKs 等零知识证明系统的“简洁性”(证明很小)和“完整性”(证明在计算上是可靠的)特性。它们证明了计算被正确执行,而不一定隐藏交易细节,因为隐私保护会增加额外的复杂性和证明者成本。 [6] k)
以太坊联合创始人 Vitalik Buterin 提出了一个 zkEVM 分类系统,根据它们与 以太坊 的兼容程度将其分为不同类型。该系统揭示了一个核心权衡:兼容性越高(编号越小的类型)越容易使用现有基础设施,但证明速度较慢且成本较高;而兼容性较低(编号越大的类型)虽然打破了 以太坊 标准,但能实现更快的证明时间。 [2]
Type 1 zkEVM 旨在与 以太坊 完全且毫不妥协地等效。它们不对 以太坊 系统做任何更改,包括哈希函数(如 Keccak)、状态树或其他共识逻辑。
从开发者的角度来看,Type 2 zkEVM 是完全等效的,但它们对底层的 以太坊 架构进行了微调(例如使用不同的状态树结构),以加速证明生成。
这是 Type 2 的一种变体,它增加了在 ZK 电路中特别难以证明的特定操作的 Gas 成本。这种修改改善了最坏情况下的证明时间,但可能会破坏依赖精确 Gas 成本计算的开发者工具和智能合约。 [2]
Type 3 zkEVM 牺牲了完美的 EVM 兼容性,以进一步简化开发并提高证明器性能。它们可能会省略在 ZK 电路中特别难以实现的特性,例如某些预编译合约。
Type 4 系统不追求在 EVM 字节码层面的直接兼容。相反,它们将使用 Solidity 或 Vyper 等高级语言编写的智能合约源代码直接编译为 ZK 友好的语言或指令集。
CALL)以及使用 Keccak 等对 ZK 不友好的哈希函数,在为其执行过程创建证明时带来了巨大的技术挑战和开销。 [2]将 zkEVM 集成到 以太坊 生态系统中(无论是作为 第 2 层 还是 第 1 层)都会引入新的安全考量和潜在的攻击向量。以太坊基金会 的研究已经确定了许多值得关注的领域。[6]
首要关注点是单点故障风险。如果生态系统仅依赖一两个执行层 (EL) 客户端进行证明,或依赖单一的底层 zkVM 实现,那么该主导软件中的漏洞可能会导致整个网络停摆或受损。一种提议的缓解措施是“多重证明策略”,即只有在收到来自多个不同 zkEVM 系统的证明后,区块才被视为有效。[6]
使 EL 客户端变得“可证明”的过程存在重大风险。EL 客户端是为具有缓存和系统调用等功能的复杂 CPU 设计的,而这些功能在 zkVM 的受限环境中是不存在的。这些环境之间的不匹配是一个高层面的担忧。此外,在修改客户端时可能会引入漏洞,而且针对 zkVM 使用的 RV32IM 等利基指令集架构 (ISA) 的编译器,其经过实战检验的程度不如主流编译器。用于加速 Keccak 哈希等 ZK 不友好操作的自定义“zkVM 预编译”也增加了复杂性并引入了自身的攻击面。[6]
zkEVM 最关键的组件是定义虚拟机规则的算术电路以及底层的加密协议。其中任何一个环节出现漏洞都可能是灾难性的,可能允许恶意证明者为无效的状态转换创建看似有效的证明,从而导致资金被盗。此类缺陷可能源于原始研究论文、规范中的歧义或实现过程中的错误。其他实现风险包括错误的“见证 (witness)”生成、程序格式之间的转译漏洞,或偏离协议已证明安全保证的不安全“优化”。[6]
为了应对这些风险,生态系统依赖于多种策略,包括形式化验证(使用数学证明代码的正确性)、针对标准化测试套件(如 以太坊 执行规范测试)进行广泛测试、独立安全审计、激励白帽黑客的漏洞赏金计划,以及多重证明策略等架构设计。[6]
为了加强安全性,以太坊基金会 发起了 zkEVM 形式化验证项目,这是一项全生态范围的努力,旨在将形式化验证方法应用于整个 zkEVM 堆栈,目标是创建“无漏洞的 zkEVM”。该项目预计将持续到 2026 年底,旨在开发工具、标准和流程,以确保 zkEVM 的正确性和安全性。[8]
该倡议分为三个主要关注领域或“轨道”:[8]
该项目通过一项资助计划运作,为应对这些挑战的各个团队提供资金。受支持的工作包括:ArkLib 的开发,这是一个在 Lean 证明助手中的形式化密码学证明库;cLean,一种用于在 Lean 中编写电路的领域特定语言 (DSL);以及 LLZK,一种用于零知识语言的统一中间表示。这些努力突显了一种社区驱动、开放且方法多样化的方式,旨在保障下一代 以太坊 扩展方案的安全。 [8]
虽然早期的 zk-Rollups(如 dYdX 和 Loopring)展示了 ZK 技术在扩展方面的威力,但它们缺乏通用的 EVM 兼容性。zkEVM 的开发代表了将 ZK 证明与 EVM 可编程性相结合的一项重大努力。[1]
首批公共 zkEVM 主网于 2023 年 3 月上线,标志着 以太坊 扩展的一个重要里程碑。
在整个 2024 年,Polygon zkEVM 主网 Beta 版进行了多次升级,包括 “Etrog”、“Elderberry” 和 “Eggfruit” 更新,引入了 cdk-erigon 排序器等功能。然而,在一次战略转型中,Polygon Labs 于 2026 年 1 月宣布计划弃用 Polygon zkEVM 主网 Beta 版。该项目的技术和经验正被整合到其他生态系统产品中,例如 Polygon 链开发套件 (CDK),它允许开发人员启动自己的 ZK 驱动链。[7]
以太坊基金会 正在研究将 Type 1 zkEVM 直接集成到 以太坊 基础层中。其目标是实现“实时证明”(RTP),即在 12 秒的插槽时间内为完整的 以太坊 区块生成 ZK 证明。这将使整个网络从 ZK 扩展中受益,而无需用户迁移到单独的 Layer 2。该项目的指导原则是“完全、不妥协的 EVM 等效性”。[3]
“我们的目标是完全、不妥协的 EVM 等效性。” [3]
截至 2026 年初,该计划涉及对 OpenVM 和 RISC0 等 zkVM 实现进行持续的基准测试,并致力于让 Reth 和 Geth 等 以太坊 客户端为潜在的基于证明的验证集成做好准备。[3]
2026年6月18日。13:21 UTC
编辑摘要:
Expanded summary to clarify zkEVM functionality