十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

深入浅出zkEVM:Scroll如何用零知识证明验证EVM执行

深入浅出zkEVM:Scroll如何用零知识证明验证EVM执行 深入浅出zkEVMScroll如何用零知识证明验证EVM执行【免费下载链接】scroll-documentationThis is the frontend for the Scroll documentation项目地址: https://gitcode.com/gh_mirrors/sc/scroll-documentation在以太坊生态迈向大规模应用的今天zkEVM零知识以太坊虚拟机已成为最受关注的技术方向之一。简单来说zkEVM 是一个能证明 EVM 执行正确性的系统——它在链下执行交易再用零知识证明向链上证明这笔交易确实按 EVM 规范正确执行了。作为通用 ZK Rollup 的代表Scroll 正是借助 zkEVM 实现了以太坊级兼容 高效验证的扩容方案。本文将从零开始带你搞懂 zkEVM 的核心原理以及 Scroll 如何用零知识证明验证 EVM 执行。什么是 zkEVM先理解 EVM 的状态转换要想理解 zkEVM得先回到它的起点——EVM以太坊虚拟机。EVM 本质上是一个状态转换函数给定初始世界状态S和一笔交易T它会输出一个新的世界状态S即f(S, T) S。世界状态用默克尔-帕特里夏树MPT保存所有账户、合约字节码和持久化存储执行过程交易被拆解成一连串最小的机器指令——操作码opcode如ADD、MSTORE等逐条执行执行踪迹execution trace把一次交易触发的所有操作码按顺序记录下来就是所谓的执行踪迹它堪称交易的行为日记。上面这张图展示了从世界状态t到世界状态t1的完整转换EVM 读取交易、按字节码执行、修改栈和内存最终生成新的状态根Root。这正是所有以太坊客户端比如 Geth每天都在做的事情。为什么需要 zkEVM从重新执行到验证证明传统二层方案如 Optimistic Rollup靠欺诈证明威慑作恶者但存在挑战期长、资金占用高的痛点。而ZK Rollup的思路完全不同链下执行交易在二层L2链下执行并生成区块生成证明用零知识证明技术生成执行有效性证明链上验证把简洁证明发布到以太坊一层L1由链上合约快速验证。验证一批交易的证明远比重新执行这一批交易便宜得多——这正是 ZK Rollup 能大幅提升吞吐量的关键。但难点在于EVM 最初设计时并没有考虑零知识证明要把上万个操作码的每一步都搬进电路里难度极高。核心原理Scroll 如何用零知识证明验证 EVM 执行Scroll 的 zkEVM 思路可以概括为把执行踪迹当作见证witness向证明系统证明它的每一步都正确。具体要证明两件事1. 执行踪迹本身是正确的每个操作码都严格符合以太坊黄皮书规范。例如ADD必须从栈中弹出两个值、压入它们的和对栈、内存、合约存储的一切读写都准确无误被执行的字节码确实是由这笔交易正确触发的。2. 状态转换是完整闭合的执行踪迹必须从初始状态S出发最终抵达状态S中间不能有跳跃或缺失。如上图所示zkEVM 接收 EVM 的输入数据绿色虚线和规范紫色虚线基于执行踪迹生成一份简洁的证明蓝色虚线从而证明f(S, T) S成立——而无需重新执行整条交易。执行踪迹为什么能当见证想象一位老师改卷子传统方式是逐题重算重新执行而 zkEVM 的做法是让考生交上草稿纸执行踪迹老师只需检查草稿纸上的每一步推理是否合规就能断定最终答案正确。执行踪迹正是这份草稿纸。Scroll 的完整实现从交易执行到证明上链了解了单笔交易的证明原理再看 Scroll 的整体架构就清晰多了。Scroll 的 Rollup 流程分为三个阶段第一阶段交易执行用户把交易提交到 L1 跨链桥合约或 L2 排序器排序器内的同步服务Sync Service拉取 L1 消息与内存池Mempool中的 L2 交易一起交给执行器Executor打包成新的 L2 区块。第二阶段批量打包与数据提交Rollup 节点把多个区块组装成 chunk再把多个 chunk 汇总成 batch通过Commit 交易把交易数据提交到 L1 的 Rollup 合约保证数据可用性。第三阶段证明生成与最终确认协调者Coordinator把 chunk 的证明任务分发给随机选中的 zkEVM 证明者把 batch 的证明任务分发给聚合证明者拿到 batch 证明后中继器Relayer提交Finalize 交易L1 合约用 PLONK 验证器校验证明通过后写入新的状态根和提款根。至此该批次交易在以太坊上获得最终确认。想深入了解这个流程的代码级细节可以查看项目中的 rollup.mdx 文档。零知识证明验证的四个核心要素把 Scroll 的 zkEVM 方案拆解开来你会发现它始终围绕四个要素展开执行踪迹Witness状态转换的逐步证据电路约束Constraint每个操作码行为都被编码成必须满足的数学约束公共输入Public Input验证者和证明者共同认可的输入如dataHash、前后状态根简洁证明Proof最终上链的、体积极小且可快速验证的证明。其中公共输入的计算也很有讲究例如 batch 的dataHash是 chunk 哈希的哈希最终与链 ID、前后状态根、提款根一起组成publicInputHash参与 L1 上的 PLONK 验证。如何上手学习 Scroll 的 zkEVM如果你想亲自研究 Scroll 的 zkEVM 实现推荐从以下入口开始入门概念intro-to-zkevm.md——了解 ZK Rollup 与 zkEVM 的定位原理详解zkevm-overview.mdx——深入 EVM 执行与证明目标证明系统proof-generation.mdx——了解证明生成的工程细节。写在最后zkEVM 的价值在于它让开发者无需学习新语言、无需改造合约就能在享受以太坊安全性的同时获得更高的吞吐量。Scroll 通过将 EVM 执行踪迹化 电路化用零知识证明完成了对 EVM 执行的终极验证——既保留了开发者熟悉的 EVM 环境又把验证成本降到了最低。对于新手而言理解 zkEVM 不必纠结于复杂的密码学公式抓住执行踪迹是见证、零知识证明验证每一步执行这条主线就已经掌握了它的精髓。未来随着证明生成速度的持续提升zkEVM 有望成为以太坊扩容的主流答案。 小贴士阅读官方文档时可以配合 Scroll 的 zktrie.mdx 一起学习理解状态树如何与证明系统协同工作会让你的认知更加完整。【免费下载链接】scroll-documentationThis is the frontend for the Scroll documentation项目地址: https://gitcode.com/gh_mirrors/sc/scroll-documentation创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表