| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> Sin7Y 团队全面分析:现阶段 zkEVM 设计方案对比 -> 正文阅读 |
|
[区块链]Sin7Y 团队全面分析:现阶段 zkEVM 设计方案对比 |
自从以太坊 ZK-Rollups 技术大爆发以来,各种 ZKR Layer2 方案百花齐放,有 Order-list 的去中心化交易所 Loopring,有 AMM 的去中心化交易所 ZKSwap,有支持隐私的 zk.menoy 等等。这些 ZK-Rollups 方案丰富了以太坊 Layer2 生态,安全性由 Layer1 来保证,可以称之为“最”安全的以太坊扩展方案。 zkEVM 的基本流程:
本文要说的重点 zkEVM,按照 zk 证明的对象,大体分为两类:
zkEVM 现状
zkEVM 方案概览
EVM 基本模型?在开始介绍各方案的 zkEVM 之前,有必要讲讲 EVM 的基本模型,主要是操作和状态的关系,如下图: EVM 的opcode在执行中,需要和 Stack、Memory、Storage 进行交互,还需要一些 Context 来进行上下文环境的记录,如 Gas/Program Counter 等。其中:Stack 只用于栈式访问,Memory 可以随机访问,Storage 也可以随机访问。这些 Opcode 的定义可参见?EVM opcode 网站。 AppliedZKP zkEVMAppliedZKP 将 Proof 分为两种:
这两个 Proof 前者检查状态,后者检查操作,还需要 Bus Mapping 将两个 Proof 连接起来,这个 Bus Mapping不使用 Merkle 树,而是使用 Plookup k-v Mapping。 zkEVM 架构如下: EVM proof 则使用 Slot 的方式,将 Opcode,Opcode 的操作值,Context 分开,如下图,一个 Circuit 由多个 Slot 构成,q_op 是Selector,o_n 是 Opcode 的值,c_n 是 Context,v_n 是操作的值。 Matter Labs zkEVMMatter Labs 的 zkEVM 设计方案又是另外一种,它将 Solidity 和vyper 语言编写的合约代码,编译成 Yul,再通过 LLVM 将 Yul 代码翻译成 zkEVM 支持的字节码。 图片来自'zkEVM' - Alex Gluchowski at ETHGlobal 前段时间 Matter Labs 开源了其 Yul 编译器,可以将中间码 YUL 编译为自定义语法的字节码,而字节码可以运行在 zkEVM 中,源码见此处。 图片来自'zkEVM' - Alex Gluchowski at ETHGlobal ?Matter Labs 的电路实现,是使用 TinyRAM 来实现普通 Opcode,如 ADD,PUSH 等;对 Gas 消耗巨大的 Opcode,比如 SHA256/keccak,特殊实现该电路;最后使用递归聚合技术,将所有的 Proof 聚合成一个 Proof。 Hermez zkEVM?Hermez 的 zkEVM 方案同样令人耳目一新,他们设计了 uVM 架构,类似 Intel X86 架构,分 ROM/RAM 等模块,通过主状态机(Main State Machine)来同步模块之间的状态。uVM 架构使用 Register 而不是 Stack,这样完成同样的工作,基于 Register 的 VM 所使用的指令数比基于堆栈的 VM 所使用的指令数少,可以提高执行效率。再者,uVM 使用了大量的密码学工具,来实现 zk 完备。 图片来自Hermez zkEVM介绍 Hermez 最创新的设计是将 EVM 指令集翻译为中间指令(Micro Opcode),中间指令可以在 uVM 中执行。并且使用了大量的 Plookup 算法来提升证明及验证效率。 图片来自Hermez zkEVM介绍 图片来自Hermez zkEVM介绍 Sin7Y zkEVM我们的 zkEVM 借鉴了上面三个的设计,将状态验证和执行验证分开,分为 State Proof 和 EVM Proof。 其中: state proof:
EVM Proof: 使用 Slot 的方式,暂定用 Custom gate 的方式,将 EVM 的 Opcode 实现: 一个 Slot 实现了所有的 Opcode,能够表达任意的 Opcode。在合约中,会有多个 Opcode,这时可以使用 Selector 来选择激活哪个 Opcode。最终的合约电路将会包含多行 Slot,全面支持 EVM Opcode。 当然,在实际的方案设计和工程实现过程中,仍然面临许多待确定和解决的问题,如:
... 诸如以上的问题,如果我们寻找到了答案,会在后续的文章中详细展示出我们的解决方案,请持续关注我们的官推以及其他官方账号。也欢迎各位读者参与研究讨论。 引用 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:35:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |