零知识证明、零知识虚拟机、零知识以太坊虚拟机及其未来

  • msfew.eth
  • 发布于 2022-05-24 11:47
  • 阅读 195

本文深入探讨了零知识证明(zk)、zk-SNARK、zk-STARK、zkVM和zkEVM等技术及其在区块链中的应用。文章分析了SNARK和STARK的优劣势,zkVM的不同类型及其适用场景,以及EVM兼容性的多种实现方式。此外,还讨论了zkEVM的未来发展方向,并提出了通用zkVM的概念,认为其能够支持多种编程语言,从而扩展Web3的开发生态。

zk, zkVM, zkEVM 及其未来

msfew

TL; DR

  • 零知识证明可以保证计算的完整性、正确性和隐私性,在区块链的扩展和隐私方面有很多用例。

  • zk-SNARK 和 zk-STARK 各有优势,两者的结合更有潜力。

  • zkVM 赋予应用程序零知识证明的能力,zkVM 可以通过主流、EVM 或新建指令集进行分类。

  • EVM 兼容性包括 EVM 兼容性、等效性和规范级别兼容性。

  • zkEVM 是一个 EVM 兼容且对零知识证明友好的环境。它可以分为基于原生和基于编译器的解决方案。

  • 基于原生的 zkEVM 是以太坊和区块链的未来。

  • 通用的 zkVM 支持 Solidity 语言是 Web3 的未来。

0. 零知识证明

一个容易理解的零知识证明定义:

你在小学。老师是验证者,你,学生,是证明者。你如何证明你知道二次方程的解法公式?那需要一场数学考试。

老师会给你 10 个与二次方程相关的随机问题,如果你掌握了它们,你就可以全部完成。在这个过程中,你不需要记住或写下确切的公式,但老师可以简单地验证你对二次方程的理解。

事实上,这就是 Tartaglia 和 Cardano(是的,就是这个名字)在争夺谁是 x 3 + bx = c 类型的三次方程解法公式的发现者时所做的事情。他们都不想告诉对方他们的公式是什么,但是通过做随机的问题集,很容易验证,而在这个过程中没有透露知识,他们拥有这些知识。

零知识证明有什么用?它的用途是整个过程节省了计算能力,压缩了区块链上的空间,同时还保留了隐私,符合区块链的无需信任和密码学的性质。

1. SNARK 和 STARK

区块链领域中的术语“zk”通常不是真正的零知识证明,而通常是有效性证明。这些“误用”出现在本文的某些部分,以避免对相关术语产生混淆。

在当前的区块链世界中,zk 可以说是扩展(没有 zk 的有效性证明)和隐私(真正的 zk)方面最前沿和最优的解决方案。zk 广泛应用于 Tornado.cash、ZCash、zkSync、zk.money、Filecoin 和 Mina 等项目中。

当前的技术解决方案分为两大类:SNARK 和 STARK。STARK 中的 S 代表可扩展(scalable),这意味着被证明的语句具有重复的结构,而 SNARK 支持经过预处理以实现简洁证明的任意电路。 SNARK 的技术实践更为 dominant,而 STARK 主要由 StarkWare 大规模地应用于生产中。以下是它们之间的比较:

就 meme 而言,STARK 也优于 SNARK (😊, Star Wars, Star Trek)。

如果 SNARK 是以太坊 2.0 的未来,那么 STARK 将是以太坊 3.0 的未来。总而言之,STARK 的优势

  • 更低的 gas (可扩展)

  • 更大的批处理大小 (可扩展 * 2)

  • 更快的证明 (可扩展 * 3)

  • 无需信任的设置(生成的参数仅对当前应用程序有效,如果发生更改,则需要重新设置)

  • 后量子安全

但是 STARK 生成的证明要大得多,而且相当大。由于像 WASM 这样的限制,这可能需要在构建时进行额外的操作(尽管此示例使用了 SNARK)。Mir 在之前给出了一个 基于 AIR 的 STARK实践,作为 Plonky2 的一部分(Plonky2 和 Starky 之间的关系很复杂……)。我个人认为,可以通过各种方法优化大尺寸,但是算法本身的时间复杂度很难进一步压缩。

这些零知识证明技术可以结合起来构建更强大的应用程序。例如,Polygon Hermez 使用 SNARK 来验证 STARK 的正确性,从而在最终确定证明时降低 gas 费用。

总而言之,SNARK 和 STARK 都是优秀的零知识证明技术,各有优势,它们的结合具有更大的潜力。

2. zkVM

前面提到的 Tornado.cashzk.money 都是类似的零知识证明应用程序,只支持传输操作,而不支持通用计算。类比一下,这些应用程序只具有比特币的功能,远不及以太坊的图灵完备性和 DApp 生态系统(比特币上的智能合约并没有使其发展良好)。

zkVM 是一种虚拟机,它通过零知识证明来保证安全和可验证的值得信赖。zkVM 只是你输入旧状态和程序,它以可信的方式返回新状态的机器。它允许所有应用程序都拥有零知识证明的超能力。

Miden 在 ETH Amsterdam 的演示 在一张图表中很好地概述了 zkVM 的真正含义:

zkVM 的优点:

  • 易于使用:开发人员可以使用 zkVM 以可信的方式运行程序,而无需学习密码学或使用 zk 电路进行开发(并不意味着没有障碍)

  • 通用性:zkVM 可以为任何程序或计算生成证明。

  • 简单性:相对较少的约束可以描述整个 VM(无需重复生成整个 VM 的电路)。

  • 递归:免费的递归功能。与通用性一样,VM 的验证可以由 VM 执行。这很有趣,例如,你可以将 zkVM 放入 zkVM 中,类似于 StarkWare 所说的 L3 的概念

zkVM 的缺点:

  • 计算架构的特殊性:并非所有零知识证明系统都可以用于 zkVM。

  • 性能问题:需要优化电路,并且可以针对特定的计算进行优化。

zkVM 主要有三种类型,它们的指令集分别为:主流(WASM、RISC-V)、EVM(EVM 字节码)和 ZK 优化(为零知识证明优化过的新指令集,如 Cairo 和 zkSync 的指令集)。以下是基于 Miden 在 ETH Amsterdam 上的演示对这些类型的比较:

零知识证明开发生态系统所做的大部分工作主要是允许开发人员使用 Circom 库(以及 snarkyjs)或其他新创建的语言(Leo 或 Cairo,它们有 奇怪的限制)来进行 zk DApp 开发,但这并不像在以太坊上使用 Solidity 那样简单易学。

此外,还有许多项目,如 zkSync、Scroll 或 Polygon 旗下的几个项目,都在尝试制作 zkEVM 或其他 zkVM。

3. EVM

EVM 是以太坊虚拟机,也可以理解为运行智能合约的执行环境。

几年来,各种区块链一直在尝试与EVN兼容,以访问以太坊开发生态系统。对于这个概念,已经推导出了 EVM 兼容性、等效性以及其他一些定义

  • EVM 兼容性:Solidity 和其他语言级别的兼容性。

  • EVM 等效性:在 EVM 字节码级别的兼容性。

  • EVM 规范级别兼容性:通常被称为真正的 zkEVM。在大多数情况下,它甚至是向后兼容的 优化超集,提供账户抽象(即,每个账户都是一个智能合约)以及 Layer1 EVM 不提供的其他功能。

4. zkEVM

让我们来看看 zkEVM。根据定义,zkEVM 是一种与 EVM 兼容且对零知识证明友好的虚拟机,它可以保证程序、操作以及输入和输出的正确性。

为了对通用计算进行 zkEVM,需要解决两个主要难题:

a) 电路复杂性

不同的合约需要生成不同的电路,而这些电路是“复杂的”。

这依赖于各种优化,例如 Aleo(但它不是直接的 ZK……只是举一个优化的例子)通过分布式集群并发计算证明,或者通过各种硬件优化来加速它。

b) 设计难度

zkEVM 不仅是对 EVM 的重构,也是对 使用零知识证明技术的以太坊的整个状态转换的重构

在设计 EVM 时,并没有预料到以后会做 zkEVM,这使得它的实现非常困难。结果是有两条路线。这两条路线都在图中。

或者,就 VM 架构而言,它看起来像这样(非常感谢 Scroll Tech 的原始摘要!)。Opcode 指的是 EVM Opcode。StarkWare 部分是使用 Warp 将 Solidity 转换为 Cairo 合约,或者直接用 Cairo 编写合约,以获得良好的开发体验和更好的一套工具。

在开发者和用户层面,我认为这些解决方案基本上没有区别,但就基础设施而言,EVM 越靠右,兼容性越好,对 Geth 等基础设施的无缝访问越好,但开发速度也越慢。

5. zkEVM 和 zkVM

我认为 zkEVM 的存在是一种翻新和修补以太坊生态系统并增加其繁荣的方式,而 zkVM 的存在不一定是增强以太坊,但也具有更大的潜力。

StarkNet 的 Cairo VM 可能不是我认为的完美的 zkVM,但它可以做比 EVM 或 zkEVM 更多的事情,而不仅仅是在 EIP 级别扩展功能。机器学习模型可以在 Cairo VM 上 运行,甚至有一个机器学习建模平台正在 StarkNet 上 构建

与 zkEVM 相比,zkVM 更容易构建(无需担心 EVM 的技术债务),更灵活(无需担心 EVM 的更新),并且更容易优化(电路和证明器的硬件和软件优化比构建 zkEVM 容易得多且成本更低)。

当然,zkVM 最小但致命的缺点之一是,如果 zkVM 不支持 EVM 兼容性(在 Solidity 语言级别),那么 zkVM 很难拥有像 EVM 那样完整和成熟的 Web3 开发生态系统。

zkVM 可能是更大的趋势,它允许 EVM 的垂直优化成为 EVM 生态系统的横向扩展,超越 EVM 的限制。

6. zkVM 的未来

如果有一个通用的 zkVM,它允许所有编程语言的智能合约,而不仅仅是 Solidity,不仅仅是 Cairo,还包括 Rust、C++、Go,以零知识证明运行会怎么样?(Stellar 尝试过,但失败了。

正如 @kelvinfichter 所说:如果 zkMIPS 存在,为什么要 zkEVM?正如 @KyleSamani 所说:EVM 是一个 bug,而不是一个特性。如果 zkVM 存在,为什么要 zkEVM?

WinterfallDistaffMiden VM 这样的 zkVM 对开发者不太友好。Nervos 有 RISC-V VM,但 Nervos 没有使用零知识证明技术。

最佳解决方案是构建一个 WASM 或 RISC-V zkVM,最好支持 Rust、Go、C++,甚至 Solidity(zkSync 可以提供帮助!)。如果存在这样一个通用的 zkVM,那么它将成为 zkEVM 的杀手。

Web3 开发者的数量约占所有开发者的 0.07%,这意味着 Solidity 开发者的数量实际上甚至小于 0.07%。Cairo 和 Leo 开发者的数量甚至更少。这样一个完美的 zkVM 几乎针对 100% 的开发者,并且几乎任何语言的任何开发者都可以获得完美的零知识运行时环境。

如果 Web3 和 Crypto 统治世界,我不认为接管 100% 的所有开发者将是 EVM 生态系统,而是所有开发者都将慢慢地转变为 Web3 和 Crypto 开发者。这就是通用 zkVM 的魅力。

原生 zkEVM 是区块链的未来。

通用 zkVM 是 Web3 的未来。

相关链接

16 世纪文艺复兴时期的威尼斯数学对决\ \ 16 世纪文艺复兴时期的威尼斯数学对决\ \ 两位文艺复兴时期的数学家的故事,他们的嫉妒、阴谋和争论导致了一项发现。\ \ brewminate.com

Twitter 嵌入

Twitter 嵌入

Twitter 嵌入

Twitter 嵌入

ZK7: Miden VM: 面向区块链的 STARK 友好型 VM - Bobbin Threadbare – Polygon - YouTube

零知识照片图像

零知识

1.24 万订阅者

ZK7: Miden VM: 面向区块链的 STARK 友好型 VM - Bobbin Threadbare – Polygon

零知识

如果播放没有立即开始,请尝试重启设备。

更多视频

分享

包含播放列表

检索分享信息时发生错误。请稍后重试。

在以下网址观看

0:00

0:00 / 30:45 •

在 YouTube 上观看

medium.com\ \ medium.com

Twitter 嵌入

Twitter 嵌入

Twitter 嵌入

Twitter 嵌入

Giza\ \ Giza\ \ 通过自主代理简化区块链的复杂性。\ \ gizatech.xyz

www.reddit.com\ \ www.reddit.com

Twitter 嵌入

Twitter 嵌入

GitHub - facebook/winterfell: 任意计算的 STARK 证明器和验证器\ \ 任意计算的 STARK 证明器和验证器 - facebook/winterfell\ \ github.com

GitHub - GuildOfWeavers/distaff: 用 Rust 编写的零知识虚拟机\ \ 用 Rust 编写的零知识虚拟机。通过在 GitHu 上创建一个帐户来为 GuildOfWeavers/distaff 开发做出贡献…\ \ github.com

GitHub - 0xMiden/miden-vm: 基于 STARK 的虚拟机\ \ 基于 STARK 的虚拟机。通过在 GitHub 上创建一个帐户来为 0xMiden/miden-vm 开发做出贡献。\ \ github.com

docs.nervos.org\ \ docs.nervos.org

  • 原文链接: mirror.xyz/msfew.eth/Yl6...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
msfew.eth
msfew.eth
江湖只有他的大名,没有他的介绍。