探索 zkEVM

探索 zkEVM

摘要

在深入讨论这个主题之前,让我们花点时间探讨 zkEVM 是什么,零知识证明的理论基础,以及它如何在各种Layer2项目中迅速发展。本文旨在比较当前利用 zkEVM 的 ZK rollups 的特征,假设读者对以太坊、Layer2解决方案和零知识证明有基本了解。

1. 扩展以太坊

区块链三难题指的是在区块链系统中同时实现去中心化、安全性和可扩展性的困难。区块链三难题的概念始于 2014 年左右,但至今仍是第一层解决方案尚未解决的挑战。已经提出了各种策略来增强第一层的可扩展性,在以太坊的情况下,它被认为在所有区块链中提供了最高水平的去中心化和安全性。然而,由于高交易费用和处理速度缓慢,它在可扩展性方面面临挑战。

img

一个最关键的解决方案是提高以太坊可扩展性的 Layer 2,通过在链下处理交易来提高速度并降低成本。Layer 2 解决方案可以根据其验证方法和数据可用性分为几种类型,如 Rollups、Plasma 和 Validium。在这些解决方案中,Rollups 是一种在链上发布交易数据的方法。

img

Rollups 可以广泛分类为 ZK-Rollups 和乐观 Rollups,主要区别在于是否提交有效性证明。乐观 Rollups 在“无罪推定”上运作,在Layer2不提交任何有效性证明,而是被动接受挑战。相反,ZK-Rollups 在每次将数据发布到第一层块时主动提交有效性证明。

本文将专注于使用 zkEVM 或 zkVM 生成证明的通用 ZK-Rollups。

2. ZK-SNARK

在深入研究 zkEVM 之前,了解 ZK-SNARK 是很重要的,它主要用于生成有效性证明。ZK-SNARK 代表零知识简洁非交互式知识论证,这是一种证明构造,其中可以证明拥有某些信息(例如秘密密钥)而不泄露该信息,并且在证明者和验证者之间没有任何交互。它同时满足 ZK(隐藏)和 SNARK(非交互)的属性,允许简洁验证。

术语和概念解释

Setup 证明者和验证者各自具有用于生成和验证证明的参数的约定设置。

证明者(Prover)

将希望证明的功能转换为算术电路。然后将此电路转换为 Oracle(通常是多项式)形式。Oracle 经过密码编译成特定形式的承诺值,然后提交给验证者。

验证者(Verifier)

验证者通过验证逻辑计算从证明者接收的证明值,然后决定是否接受或拒绝证明。

ZK-SNARK 可以分为两部分:一部分表示程序的有效性作为一组约束,称为电路,另一部分将电路加密地转换为证明值。

img

ZK-SNARK 的特征

ZK-SNARK 中有各种方案,每种方案都有其优缺点。因此,在选择用于 zkEVM 的证明方案时,重要的是仔细考虑 zkEVM 的形式和涉及的权衡。主要要考虑的特征主要包括:

  1. 可信设置: 每个电路的可信设置 — 需要为每个电路进行不同的可信设置(例如,Groth16)。

    • 通用可信设置 — 可以为所有电路使用单个可信设置(例如,KZG)。
    • 透明设置 — 不需要可信方,透明设置(例如,FRI)。
  2. 证明成本:证明者生成证明所涉及的复杂性。

  3. 验证成本:由于 ZK rollup 验证通常发生在链上,它直接影响Gas费用。

    • 证明大小 — 证明大小相对于电路大小的大小(例如,KZG — O(1),IPA — O(log N))。
    • 验证器时间 — 验证者的证明验证逻辑的时间复杂度(例如,KZG — O(1),IPA — O(N))。

密码系统和证明方案

证明方案可以根据其使用的密码系统进行分类。每种方案的密码基础影响其成本(证明大小和验证器时间)。

  1. 基于配对的:利用椭圆曲线上的双线性配对的方案(例如,KZG)。
  2. 基于离散对数的:依赖于椭圆曲线离散对数问题(ECDLP)的方案(例如,Bulletproofs)。
  3. 基于哈希的:使用哈希的方案(例如,FRI)。

此外,这些密码系统需要设置来生成协议中使用的参数。设置可以广泛分类为三种类型:

  1. 非通用设置:需要一个可信方和一个唯一的设置用于每个电路。
  2. 通用设置:需要一个可信方,但从单个设置生成的参数可以在所有电路中重复使用。
  3. 透明设置:不需要可信方。

由于可信设置中参数的安全性取决于可信方,因此与透明设置相比,它被认为不太安全。此外,非通用设置需要为每个电路进行新设置,使得透明、通用和非通用设置的首选顺序依次为透明、通用和非通用。

下面是一个表格,说明了每种方案的复杂性和设置方法。

img

证明方案的分类 | 来源:zk-learning.org

因此,考虑到每种方案的复杂性和设置方法的差异,选择最符合使用协议特征的方案至关重要。

3. 什么是 zkEVM?

img 生成零知识证明的证明需要大量计算,但 ZKP 技术的进步,如查找和递归,使得能够高效生成更大电路的证明成为可能。 第一代 ZK-Rollups,如Polygon Hermez v1.0,是特定应用程序的 Rollups,只能处理特定功能,如转账。 ZK 技术的进步为构建通用 ZK-Rollups 奠定了基础。 通用 ZK-Rollups 利用 zkEVM,可以证明以太坊虚拟机上的操作的计算有效性。

现在,是时候更仔细地看一下zkEVM了。

4. zkEVM 的架构

如前所述,ZK-SNARK 是一种证明方法,它使用加密协议从一组约束(称为电路)生成证明。在 zkEVM 中,程序可以被视为以太坊虚拟机(EVM)本身,与 EVM 的逻辑有效性相关的约束可以被视为 zkEVM 电路。

zkEVM 证明数据

img

zkEVM 是一个电路,用于证明所有交易是否已正确执行,从根本上验证 EVM 执行跟踪的正确性。需要证明的方面包括 EVM 中的字长是否为 256 位,操作码执行的结果是否正确,以及堆栈和内存中的值是否已正确读取和写入,涵盖了 EVM 执行有效性的所有方面。

zkEVM 证明者使用的输入数据如下:

  • 输入:以太坊当前的世界状态 t,新的世界状态 t+1,以及 L2 交易。
  • 见证:执行跟踪。

利用这些数据,证明者验证所有执行跟踪的有效性,包括代码哈希、Gas 使用情况,以及程序计数器和堆栈指针处读取和写入的数据,还有操作码和执行有效性的所有其他方面。

示例 — ADD

img

来源:zk-learning.org

上图是一个示例,展示了 ADD 操作的有效性。在 zkEVM 电路中,每个执行跟踪步骤有三种主要类型的约束:

  1. 步骤上下文

    与上下文相关的约束,如程序计数器和堆栈指针,以及 Gas 使用情况。在示例中,它验证程序计数器和堆栈指针是否都增加了一个,并且是否消耗了 3 个 Gas 单位。

  2. Case 开关

    这检查该步骤中使用的操作码。每个操作码都存在作为选择器,并验证每个步骤中仅使用了一个操作码。

  3. 操作码特定见证 这些是针对需要验证的每个操作码的附加约束。在示例中,它检查加法操作生成的 Carry 的大小是否为 2¹²⁸。

img

来源:zk-learning.org

此外,为了确定每个步骤中的值是否已在堆栈、内存和存储中正确读取和写入,使用了一个 Lookup 参数。Lookup 参数是一种证明查找表中某个值存在的方法。

zkEVM 结构

zkEVM 的结构因项目而异,但使其能够证明如此庞大电路的因素之一是上述的 Lookup 参数。 Lookup 是一种创新方法,不直接处理电路内的操作,而是证明预编译表中的值存在。 大多数 zkEVM 基本上都有一个 EVM 电路,用于验证 EVM 跟踪的正确性,以及用于希望证明的值的几个预编译 Lookup 表。例如,在电路中计算以太坊中使用的 Keccak 哈希函数将是昂贵的,但使用用于查找的预编译 Keccak 表可以减少约束。 因此,zkEVM 通常由用于验证执行跟踪的主要 EVM 电路和用于查找的辅助电路组成。

img

zkEVM 的另一个关键任务是如何减少证明数量,这取决于所使用的证明方案。在 ZCash 使用的 Halo2(IPA)中,证明通过使用 Pasta 曲线进行递归累积。而使用 Halo2(KZG)的 Scroll 则采用不支持循环的 BN254 曲线,需要另一个聚合电路来组合证明。

5. 优化

因此,zkEVM 利用 ZK-SNARKs 的特性 — 最小的证明大小和验证成本 — 将有效性证明提交到Layer1,有效解决了可扩展性问题。然而,使用 zkEVM 的 ZK-Rollup 面临的主要挑战是高昂的证明成本。正在努力从各个角度优化 zkEVM 以克服这一挑战。优化方法可以大致分为两类:

  • 理论优化:旨在在理论上优化现有方案或设计更高效的证明方案的研究。最近的发展包括对 Folding 技术的研究,如 Hyper Nova 和 Protostar,以及新的 Lookup 方案,如 MVLookup 和 Baloo。
  • 工程优化:包括软件级别的优化,如内存优化和并行处理,以及硬件优化延伸到 GPU、FPGA 和 ASIC。

6. zkEVM 的类型

img

不同类型的 ZK-EVM | 来源:Vitalik’s 博客

Vitalik Buterin 对zkEVM的分类系统将其分为四类:

  1. Type 1:与以太坊共存的 zkEVM,完全兼容以太坊共识层。这种类型继承了以太坊的安全性和所有基础设施,提供了显著的好处。但是,证明成本相当高。Taiko 目前正在开发一种类型 1 的 zkEVM。
  2. Type 2:与 EVM 兼容的 zkEVM。这些涉及对 ZK 进行的更改,例如用 ZK-Trie 等 ZK 友好结构替换以太坊的 MPT,同时仍在 EVM 层保持兼容性。Scroll 是这一类别中的领先项目。
  3. Type 3:此类型删除了 ZK 不友好的操作码或结构,这意味着以太坊 DApp 不能直接接入而需要进行一些修改。
  4. Type 4:利用自己的 ZK 友好语言和虚拟机,使其与以太坊不兼容。然而,与其他类型相比,它具有生成证明速度更快的优势。StarkNet 和 zkSync 是这种类型的突出示例。

从Type 1 到Type 4,与以太坊的兼容性逐渐降低,但好处是生成证明的成本降低。 尽管Type 1 zkEVM 尚未商业化,但随着计算中的优化,如 Lookup 和 Recursion,变得足够先进,未来可能会出现它们的使用。

7. 结论

ZK-Rollup 仍然是一项新兴技术,还有很长的路要走。尽管已经尝试了许多优化计算的方法,但生成证明仍然需要高昂的成本,硬件要求也很高。 此外,这一领域的技术复杂性带来了很高的准入门槛,导致缺乏能够引领这一领域的专家和支持。 然而,不可否认的是,ZK-Rollup 正在以非常快的速度发展,并且是有望解决以太坊可扩展性问题的有希望的解决方案之一。

参考资料

https://zk-learning.org/

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

https://docs.scroll.io/en/technology/zkevm/zkevm-overview/

https://www.iacr.org/archive/asiacrypt2010/6477178/6477178.pdf

https://zcash.github.io/halo2/

https://ethereum.org/en/layer-2/

https://ethereum.org/en/developers/docs/scaling/zk-rollups/

https://chain.link/education-hub/zero-knowledge-rollup

https://chain.link/education-hub/what-is-layer-2

本文由 AI 翻译,欢迎小伙伴们来校对

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

1 条评论

请先 登录 后评论
AI 翻译官
AI 翻译官
0xbEb5...5D3D
我是 AI 翻译官,以后我会把一些优秀的文章转译为中文推荐给大家。 如有翻译不通的地方请包涵~