参考文章:

https://vitalik.eth.limo/general/2022/08/04/zkevm.html

What is a zkEVM?

编译:Tokenview

零知识以太坊虚拟机(ZK-EVM)是一种生成零知识证明来验证程序正确性的虚拟机。ZK-EVM 旨在以支持零知识技术的方式执行智能合约。

ZK-EVM 是零知识汇总(zero-knowledge (ZK) rollups)的一部分,这是以太坊2 层扩展解决方案,通过将计算和状态存储转移到链外来提高吞吐量。ZK-rollup 向以太坊提交交易数据以及验证链外交易批次有效性的零知识证明。

早期的 ZK-rollup 缺乏执行智能合约的能力,并且受限于简单的代币交换和支付。但是,随着与 EVM(以太坊虚拟机) 兼容的零知识虚拟机的引入,ZK-rollup 开始支持以太坊 dApp。

什么是 ZK-EVM?

ZK-EVM 是一个支持零知识证明计算的 EVM 兼容的虚拟机。与普通虚拟机不同,ZK-EVM 可以证明程序执行的正确性,包括操作中使用的输入和输出的有效性。 我们将进一步分解此定义以使其更易于理解:

EVM 兼容性

EVM是执行部署在以太坊网络上的智能合约的运行时环境。EVM 充当“世界计算机”,为运行在以太坊区块链上的去中心化应用程序 (dApps) 提供动力。

如果虚拟机能够运行为在EVM环境中运行而创建的程序,那么它就是“与EVM兼容的”。如果虚拟机可以运行为在 EVM 环境中运行而创建的程序,则它是“与 EVM 兼容的”。这样的虚拟机可以执行用 Solidity 或以太坊开发中使用的其他高级语言编写的智能合约。ZK-EVM 之所以与 EVM 兼容,是因为它们无需对底层逻辑进行大量修改即可执行以太坊智能合约

支持零知识技术

EVM 在设计之时,并未考虑到要支持零知识证明,这使得构建 EVM 兼容的零知识友好虚拟机变得困难。不过伴随研究方面的进展,使得可以将 EVM 的计算包裹到零知识证明中。不同的 ZK-EVM 项目采用不同的方法将 EVM 执行与零知识证明计算相结合。

V神:分析当前4种不同类型ZK-EVM的优缺点

近日,以太坊创始人Vitalik Buterin发文解释了“不同类型的ZK-EVM和类似ZK-EVM的项目,以及它们之间的权衡”。V神总结称,‘就我个人而言,我希望随着时间的推移,通过ZK-EVM的改进和以太坊本身的改进相结合,使其ZK-SNARK更加友好,一切都将成为Type1。在这样的未来,我们将有多个ZK-EVM实现,它们既可以用于ZK汇总,也可以用于验证以太坊链本身。 从理论上讲,以太坊不需要为Layer1使用单一的ZK-EVM实现进行标准化;不同的客户可以使用不同的证明,因此我们继续从代码冗余中受益。但是,要实现这样的未来,还需要相当长的时间。与此同时,我们将在扩展以太坊和基于以太坊的ZK-rollup的不同路径中看到许多创新。’下文是V神关于EVM等效性的不同类型以及优缺点介绍。

类型1(完全等效于以太坊)

类型1 ZK EVM力求完全和毫不妥协地与以太坊等效。它们不改变以太坊系统的任何部分,来更容易生成证明。它们不会取代哈希、状态树、交易树、预编译或任何其他共识逻辑,无论它有多么外围。

优点:完美兼容性

我们的目标是能够像现在一样验证以太坊区块,或者至少验证执行层(因此,不包括信标链共识逻辑,但包括所有交易执行以及智能合约和账户逻辑)。

类型1 ZK-EVM 是我们最终需要的,使以太坊第 1 层本身更具可扩展性。从长远来看,在 类型2或类型3的 ZK-EVM 中测试出的对以太坊的修改可能会引入到以太坊本身,但这种重新架构也有其自身的复杂性。

类型1 ZK-EVM 也是汇总的理想选择,因为它们允许汇总重复使用大量基础设施。例如,以太坊执行客户端可以按原样使用来生成和处理汇总块(或者至少,它们可以在实现提款后使用,并且可以重新使用该功能来支持将 ETH 存入汇总中)。

缺点: 验证时间

以太坊最初并不是围绕ZK友好性设计的,因此以太坊协议的许多部分需要大量计算才能进行 ZK 证明。类型 1 旨在精确复制以太坊,因此它无法缓解这些低效率。目前,以太坊区块的证明需要很多小时才能产生。目前,以这种情况可以通过巧妙的工程来大规模并行化验证器,或者从长远来看,可以通过ZK-SNARK ASIC来缓解。

类型2 (完全等效于EVM)

类型2  ZK-EVM 力求完全等效于EVM,但不完全等同于以太坊。也就是说,它们“从内部”看起来完全像以太坊,但它们在外部有一些不同,特别是在数据结构上,如块结构和状态树。

其目标是与现有应用程序完全兼容,但对以太坊进行一些小的修改,以使开发更容易,并更快地生成证明。

优点:在虚拟机级实现完美等效

类型2 ZK-EVM对保存以太状态等内容的数据结构进行更改。幸运的是,这些结构是EVM本身不能直接访问的,因此在以太坊上运行的应用程序几乎总是在类型2 ZK-EVM汇总上工作。您将无法按原样使用以太坊执行客户端,但您可以通过一些修改来使用它们,并且您仍然可以使用EVM调试工具和大多数其他开发人员基础设施。

但也有少数例外。对于验证历史以太坊区块的Merkle证明以验证关于历史交易、收据或状态的声明的应用程序,出现了一种不兼容性(例如,桥梁有时会这样做)。用不同的哈希函数取代Keccak的ZK-EVM将打破这些证明。然而,我通常建议不要以这种方式构建应用程序,因为未来的以太更改(例如。Verkle Trees)甚至在以太本身上也会破坏这样的应用。对以太坊本身来说,一个更好的替代方案是添加未来可靠的历史访问预编译。

缺点:改进了验证时间,但仍然很慢

类型2 ZK-EVM提供比类型1更快的验证时间,主要是通过移除依赖于不必要的复杂和zk不友好加密的以太坊堆栈的部分。特别是,它们可能会改变以太坊的Keccak和基于RLP的Merkle Patricia树,可能还会改变区块和接收结构。类型2 ZK-EVM可能会使用不同的哈希函数,例如,Poseidon。另一个自然的修改是修改状态树以存储代码散列和keccak,从而不再需要验证散列来处理EXTCODEHASH和EXTCODECOPY操作码。

这些修改显著提高了验证时间,但它们不能解决所有问题。由于EVM固有的低效性和对zk的不友好性,证明EVM原样的过程仍然很缓慢。一个简单的例子是内存:因为MLOAD可以读取任何32字节,包括“未对齐”的块(其中开始和结束不是32的倍数),MLOAD不能简单地解释为读取一个块;相反,它可能需要读取两个连续的块,并执行位操作来合并结果。

类型2.5 (与EVM等效,不包括Gas费用)

显著改善最坏情况验证时间的一种方法是大幅增加EVM中特定操作的Gas费成本,这是zk验证非常困难的。这可能涉及预编译、KECCAK操作码,还可能涉及调用合约或访问内存、存储或恢复的特定模式。

不断变化的Gas费用成本可能会降低开发人员工具的兼容性,并破坏了一些应用程序,但通常认为它的风险低于“更深层次的”EVM更改。开发人员应该注意,在交易中需要的Gas费用不要超过一个区块的容量,不要使用硬编码的Gas费用数量进行调用(这已经是很长时间以来对开发人员的标准建议)。

类型3 (几乎等效于EVM)

类型3 zk EVM几乎与EVM等效,但在精确等效性方面做出了一些牺牲,以进一步缩短验证器时间并使 EVM 更易于开发。

优点:更容易构建,验证时间更快

类型3 ZK-EVM可能会删除一些在ZK-EVM实现中特别难实现的功能。在这里,预编译通常位于列表的顶部;此外,类型3 zkVM在处理合约代码、内存或堆栈方面有时也有细微的差异。

缺点:更多的不兼容

类型3  ZK-EVM的目标是与大多数应用程序兼容,并且只需要对其余部分进行最少的重写。也就是说,会有一些应用程序需要重写,因为它们使用了类型3  ZK-EVM删除的预编译,或者因为对边缘情况的微妙依赖(而这些边缘情况是由EVM以不同的方式处理的)。

类型4 (高级语言等效)

类型 4 系统通过获取以高级语言(例如Solidity、Vyper或两者都编译到的中间语言)编写的智能合约源代码并将其编译为明确设计为 ZK-SNARK 友好的某种语言来工作.

优点:验证时间非常快

如果不对每个EVM执行步骤的所有不同部分进行zk 证明,而是直接从高级代码开始,就可以避免很多开销。

在这篇文章中,我只用一句话来描述这个优势(与下面列出的与兼容性相关的缺点相比),但这不应该被解释为价值判断!直接从高级语言编译确实可以大大降低成本,并通过使其更容易被验证来帮助去中心化。

缺点:更多的不兼容

一个用Vyper或Solidity编写的“正常”应用程序可以被编译下来,它会“正常工作”,但有一些重要的方面,很多应用程序不是“正常工作”的:

1 合约在类型4 系统中的地址可能与它们在EVM中的地址不同,因为CREATE2合约地址取决于确切的字节码。这破坏了依赖于尚未部署的“反事实合约”、ERC-4337钱包、EIP-2470和许多其他应用程序。

2 手写的EVM字节码更难使用。为了提高效率,许多应用程序在某些部分使用手写EVM字节码。类型4 系统可能不支持它,尽管有一些方法可以实现有限的EVM字节码支持来满足这些用例,而不需要成为一个完整的Type3ZK-EVM。

3 许多调试基础设施不能被继承,因为这些基础设施运行在EVM字节码上。也就是说,通过从“传统”高级或中级语言(例如 LLVM)更多地访问调试基础架构,可以缓解这一缺点。

开发人员应该注意这些问题。

零知识EVM:什么是ZK-EVM? ZK-EVM的类型及其优缺点相关推荐

  1. 零知识扑克牌游戏开发教程【ZK Poker】

    零知识证明是实现去中心化的一个重要工具.当平台透明存储数据时 我们应当如何保证隐私?当为了扩容而引入链下交易时,我们如何在 链上进行验证?零知识证明在解决这些问题时可以发挥重要的作用. 这个教程的目的 ...

  2. 介绍 EVM 等效性

    介绍 EVM 等效性 上个月,我们宣布了Optimistic 以太坊历史上最重要的升级.最近,我们将Optimistic Kovan迁移到真正的一键式部署,并增加了稳定性,主网在不到三周的时间内就会跟 ...

  3. 【译】The Faults and Shortcomings of the EVM

    所以,先介绍一下. 我共同创立了Qtum ,这是一个基本上采用了以太坊虚拟机(EVM)的项目,并把它放到了不是以太坊的区块链(以及其他一些东西)上. 在我这样做的过程中,我被迫反对自己的意愿去学习比我 ...

  4. 以太坊源码学习 -- EVM

    以太坊源码学习 – EVM 学习文档链接:here 一.虚拟机外 主要功能: 执行前将Transaction类型转化成Message,创建虚拟机(EVM)对象,计算一些Gas消耗,以及执行交易完毕后创 ...

  5. 对于以太坊虚拟机 (EVM)及其相关知识的讲解

    以太坊虚拟机(EVM) EVM是智能合约的运行环境 作为区块验证协议的一部分,参与网络的每个节点都会运行EVM,审查节点会检查验证正在验证的区块中列出的交易,并运行EVM中交易触发的代码 EVM是沙盒 ...

  6. 误差向量幅度(EVM)

    转自:http://blog.sina.com.cn/s/blog_6c46cb860100otm3.html 误差向量幅度(EVM):误差向量(包括幅度和相位的矢量)是在一个给定时刻理想无误差基准信 ...

  7. 【密码学探秘】EVM链和并行执行交易

    概述 在web3.0世界中,交易的处理性能一直是公链面临的一大技术挑战,如何在不降低安全性和去中心化程度的前提下显著的提升区块链交易的TPS无疑成为众多公链技术专家追逐的目标.以Solana.Apto ...

  8. EVM 操作码(Opcode)与 字节码(Bytecode)

    以太坊虚拟机(EVM)是一种基于栈的.准图灵完备(quasi-Turing complete)的虚拟机.EVM是智能合约的执行时环境,它是完全孤立的沙盒:运行在EVM中的代码无法访问网络.文件系统或其 ...

  9. 以太坊EVM兼容区块链全表

    以太坊已经借助DeFi迅速成为去中心化应用的主流开发平台,利用以太坊 技术开发的分叉链或EVM兼容链也层出不穷.本文列出主流的以太坊EVM兼容链, 以便开发者使用MetaMask或Web3中间件时,可 ...

最新文章

  1. 瀑布式开发与敏捷开发的区别是什么
  2. 散列算法 SHA-1,SHA-2和SHA-256之间的区别
  3. 网站建设都需要哪些步骤?
  4. Revit API取得变量的内参名称
  5. python职场应用_大学粗略学习过Python,在进入职场后如何进一步学习Python
  6. 手机整屏显示数据php,完美解决手机网页大背景不能铺完整个屏幕的超级代码
  7. 4. OD-去除烦人的nag窗口(去除提醒用户购买正版的警告窗口)
  8. Discretized Streams (DStreams)离散化流
  9. 安卓开发笔记(二十二):读取本地(内置)html文件并实现和Javascript交互
  10. 16999元!华为Mate X 5G折叠屏手机正式发布:不愧是限量款
  11. day2_windows下zip安装wamp环境
  12. 【200个】电子病历系统(EMR)精华资料汇总【HC3i年终盘点】
  13. excel换行快捷键_excel换行快捷键 Excel表格中怎么换行 | 优词网
  14. java自定义封装一个方法_Java自定义套件封装教程
  15. 【Android】lint检查
  16. Eclipse中怎样将java项目转化为web项目?
  17. Class类的基本使用
  18. 怎么让热图显示基因名_OmicShare Tools - 基迪奥生物信息绘图云平台
  19. 杂项 《转化生命的友谊》转化生命的良友
  20. 【CODEVS】2833 奇怪的梦境

热门文章

  1. 谷歌浏览器历史版本下载
  2. 计算机组成 MBR原理
  3. 用友NC63界面新增按钮实现方法(转)
  4. mysql关联查询,建了索引也会全表查
  5. 时寒冰说:经济大棋局,我们怎么办 读书笔记
  6. 关于ZigBee,AaskingQuestion
  7. 我在妈妈眼里就是一丑小鸭
  8. Robotium自动化测试学习【一】(2021-02-19)
  9. Java图形化界面GUI:初接触
  10. 语法分析器【编译原理】