1. 引言

  • zk(zero-knowledge)proof:可保证计算的完整性、正确性和隐私性,在区块链扩容和隐私领域大有可为。
  • zk-SNARK和zk-STARK各具优势,二者结合潜力无穷。
  • zkVM可为应用增加零知识证明,zkVM可以按mainstrem、EVM或新构建的指令集进行分类。
  • EVM兼容性包括EVM兼容性、等价性和规范级兼容性。
  • zkEVM是一个EVM兼容且零知识证明友好的环境。它可以分为基于Native的解决方案和基于编译器的解决方案。
  • Native zkEVM为以太坊和区块链的未来。
  • 支持Solidity语言的zkVM为Web3的未来。

2. 零知识证明

一个易于理解的零知识证明定义:
你在上小学。老师是Verifier,而你(学生),是Prover。你如何证明你知道解二次方程的公式?那需要数学考试。
老师会随机给你10道与二次方程有关的问题,如果你已经掌握了,你可以全部作答。在这个过程中,你不会记住或写下精确的公式,但老师可以简单地验证你对二次方程的理解。

事实上,这就是Tartaglia and Cardano 两人争论谁是形如 x 3 + b x = c x^3+bx=c x3+bx=c三阶方程解决方案的方面人。两人都不想告诉对方其各自的共识,但是通过随机问题集,在不泄露其各自knowledge的情况下很容易进行验证。

零知识证明的用途是什么?其用途是,整个过程节省了算力,压缩了区块链上的空间,同时也保留了隐私,符合区块链的不可信任和加密性质。

3. SNARK VS STARK

区块链领域的“zk”通常并不是真正的零知识证明,但是通常是有效性证明(validity proof)。

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

当前的技术方案主要分为2大类:

  • SNARK:全称为Succinct Non-Interactive Argument of Knowledge。
  • STARK:全称为Scalable Transparent Argument of Knowledge。

STARK中的“S”代表的是Scalable,意味着待证明的statement具有repeated structure。
而SNARK支持任意电路,可对电路进行预处理来实现succinct proof。
SNARK的技术实践更占主导地位,STARK在生产中主要被StarkWare大规模采用。以下是它们之间的比较:

就meme而言,STARK要优于SNARK(STARK有:权力的游戏、漫威宇宙、星球大战和星际迷航等)。

若说以太坊2.0的未来是SNARK,那么以太坊3.0的未来将是STARK。总的来说,STARK的优势主要有:

  • 更低的gas费(scalable)
  • 更大的batch size(scalable * 2)
  • 更快的证明速度(scalable * 3)
  • 无需trusted setup(所生成的参数仅对当前应用有效,若应用改变需要重新设置)
  • 抗量子安全性

但是,STARK生成的proof要更大一些。由于类似WASM的一些限制,在构建时可能需要额外的操作(但本例使用SNARK)。作为Plonky2的一部分,Mir之前在Starky中进行了一次AIR-based STARK 实践(Plonky2和Starky之间的关系很复杂……)。不过个人认为,可以通过各种方法优化STARK proof大尺寸的问题,但算法本身的时间复杂度很难进一步压缩。

这些零知识证明技术可结合使用来构建更强大的应用。如,Polygon Hermez使用SNARK来验证STARK的正确性,从而当该proof finally settled时可减少gas费。

总之,SNARK和STARK两者都是很赞的零知识证明技术,各有优势,结合潜力更大。

4. zkVM

之前提到的Tornado.cash 和 zk.money均为仅支持transfer操作的零知识证明应用,并不支持通用计算。类似地,这些应用程序只有比特币的功能,远不及以太坊(Ethereum)的图灵完整性和DApp生态系统(比特币上的智能合约并不适用)。

zkVM是一种虚拟机,通过零知识证明来保证安全和可验证的可信度。zkVM只是一台机器——输入旧的状态和程序,并以可信的方式返回新的状态。它允许所有应用程序都被赋予零知识证明的超级能力。

Miden在ETH Amsterdam的演讲 以一张图很好的解释了zkVM究竟是什么:

zkVM的优势有:

  • 易于使用:开发者可使用zkVM以trusted manner方式来运行程序,而不需学习密码学或开发zk circuits(但并不意味着没有门槛)。
  • 普适性:zkVM可为任意程序或计算生成proof。
  • 简单性:以相对少的约束数可描述整个VM(不需要重复生成整个VM circuit)。
  • 递归性:自由递归特性。与普适性一起,可由VM来验证VM。这很有趣,可将一个zkVM放入某zkVM中,类似StarkWare的L3概念。

zkVM的劣势有:

  • 计算架构的特殊性:并非所有零知识证明系统都可以用于zkVM。
  • 性能问题:需要优化电路,并且可以针对特定计算进行优化。

主要有3种类型的zkVM,括号内为其相应的指令集:

  • mainstream(WASM, RISC-V)
  • EVM(EVM bytecode)
  • ZK-Optimized(专为零知识证明优化的新型指令集,如Cairo的指令集和zkSync的指令集)

以下为这些zkVM类型的对比,源自 Miden在ETH Amsterdam的演讲 :

大多数的零知识证明开发生态都支持开发者使用Cirom库(和snarkyjs)或其它新创建的语言(Leo或Cairom,有一些奇怪的限制)来进行zk DApp开发,但是,这并不如在以太坊上使用Solidity来得直观易学。

此外,还有很多项目,如zkSync/Scroll,或Polygon旗下的多个项目,都试图在开发自己的zkEVM或zkVM。

5. EVM

EVM全称为Ethereum virtual machine,可认为是运行智能合约的执行环节。
多年来,不同的区块链都试图是EVM兼容的,以可访问以太坊的开发生态,为此,派生出了EVM兼容性、等价性、以及一些其它定义:

  • EVM Compatibility(EVM兼容性):Solidity等语言层面的兼容性。
  • EVM Equivalence(EVM等价性):EVM bytecode层面的兼容性。
  • EVM Specification-level Compatibility(EVM特定层面的兼容性):通常是指真正的zkEVM。大多数情况下,其后向兼容optimized supersets,可提供账号抽象(即每个账号是一个智能合约)以及其它Layer1 EVM未提供的特性。

6. zkEVM

zkEVM定义为:
EVM兼容的且零知识证明优化的虚拟机,可保证程序、操作、输入和输出的正确性。

为实现通用计算的zkEVM,主要有2大困难需解决:

  • a)电路复杂性:不同的合约需要生成不同的电路,这些电路是复杂的。这需要依赖不同的优化,如Aleo(但它并不是直接ZK,在此仅用作优化举例)通过分布式集群来并行计算证明,或通过不同的硬件优化来加速。
  • b)设计复杂性:zkEVM不仅是对EVM的重构,更是对采用零知识证明技术对整个以太坊状态变更的重构(为EVM的超集)。
    EVM设计时,并未考虑到后面要实现zkEVM,这就使得其很难实现。为此,导致了现在有2条路径,具体如下图所示:

    从VM架构的角度来看,有:

    其中:
    Opcode是指EVM Opcode。StarkWare中使用Warp来将Solidity合约转换为Cairo合约,或者直接使用Cairo来编写合约。
    上图中,从左到右,与Geth等的兼容性越强,但开发速度也越慢。

7. zkEVM and zkVM

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

StarkNet的Cairo VM可能不是完美的zkVM,但它不仅仅是对EIP层级的功能扩展,可想像性要多于EVM或zkEVM:

  • Cario VM内可运行机器学习。
  • 基于StarkNet正在搭建的机器学习平台

相比于zkEVM,zkVM:

  • 更易于构建(不需要考虑EVM的技术旧账)
  • 更灵活(无需担心EVM升级)
  • 更易于优化(相比于zkEVM,对电路和Prover的硬件、软件优化实现起来更容易且更便宜)

不过zkVM的一个小而致命的缺点在于,若zkVM不支持(Solidity语言层级的)EVM兼容性,则其很难像EVM那样拥有完善而成熟的Web3开发生态。

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

8. zkVM的未来

如果有一个通用的zkVM,它支持所有编程语言来编写智能合约,不仅仅是Solidity,不仅仅是Cairo,而是Rust,C++,Go,在零知识证明的情况下运行,会怎么样?(Stellar尝试过,但是失败了)

有zkVM了,为何还需要zkEVM?
现有的zkVM,如:

  • Winterfall(持续更新中)
  • Distaff(很久未更新了)
  • Miden VM(有分支在持续更新中)

Nervos具有RISC-V VM,但其并未使用零知识证明技术。

优化的解决方案为:构建WASM或RISC-V zkVM,可完美支持Rust/Go/C++,甚至Solidity(zkSync可帮助实现)。若存在这样的通用zkVM,那它将是zkEVM杀手。

Web3的开发者仅占所有开发者的约0.07%,这就意味着Solidity开发者的数量要低于0.07%,Cairo和Leo开发者的数量更少。而完美的zkVM目标几乎是100%的开发者,任何开发者可 以 任何语言来获得完美的零知识运行环境。

如果Web3和Crypto可统治世界,我不认为EVM生态系统会占据所有开发者的100%,而是所有开发者会慢慢地转变为Web3和Crypto开发者。这就是通用zkVM的优点。

Native zkEVM为区块链的未来。
通用zkVM为Web3的未来。

参考资料

[1] zk, zkVM, zkEVM and their Future
[2] Zero-Knowledge Proofs: STARKs vs SNARKs

zk、zkVM、zkEVM及其未来相关推荐

  1. zk 系四大 L2 协议大 PK:进度、异同和生态

    近期,随着 zkSync 2.0 的推出,zk 系扩容方案又迎来一波高潮.此外,在上个月波哥大 Devcon 之后,zkEVM 领域又出现了许多"新"的声音. 譬如,zkSync ...

  2. ZK与以太坊扩容的未来

    Arbitrum 最近发布了一篇精彩的文章 ,认为 Optimistic Rollups (OR) 代表了以太坊的未来,因为与 ZK Rollups (ZKR) 相比,它们提供了天然的可扩展性和成本优 ...

  3. 零知识EVM:什么是ZK-EVM? ZK-EVM的类型及其优缺点

    参考文章: https://vitalik.eth.limo/general/2022/08/04/zkevm.html What is a zkEVM? 编译:Tokenview 零知识以太坊虚拟机 ...

  4. 以太坊:过去、现在、未来

    一.以太坊的升级路线图 M2SVPS The Merge 在 The Merge 阶段,POW 共识机制将过度为 POS,信标链将合并在一起.为了便于理解,我们将以太坊结构简化为下图: 我们在这里先定 ...

  5. Vitalik详解5种类型的ZK-EVM

    最近有许多"ZK-EVM"项目发布了公告.Polygon开源了他们的ZK-EVM项目,ZKSync发布了他们的ZKSync 2.0 计划,相对较新的Scroll最近也宣布了他们的Z ...

  6. 干掉cms,zgc才是未来

    JAVA程序最爽的地方是它的GC机制,开发人员不需要关注内存申请和回收问题.同时,JAVA程序最头疼的地方也是它的GC机制,因为掌握JVM和GC调优是一件非常困难的事情.在ParallelOldGC. ...

  7. 干掉 ZooKeeper,阿里为什么不用 ZK 做服务发现?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/fIjYVb 站在未 ...

  8. 干掉 ZooKeeper?阿里为什么不用 ZK 做服务发现?

    -     前言    - 站在未来的路口,回望历史的迷途,常常会很有意思,因为我们会不经意地兴起疯狂的念头,例如如果当年某事提前发生了,而另外一件事又没有发生会怎样?一如当年的奥匈帝国皇位继承人斐迪 ...

  9. Apache ZooKeeper - ZK的基本特性与节点应用场景一览

    文章目录 概述 ZK产生的背景 安装 JDK依赖 下载 解压 修改配置文件 启动 / 停止 连接服务器 配置文件说明 ZK 核心概念 (文件系统数据结构+监听通知机制) 文件系统数据结构 6种Node ...

最新文章

  1. 1.3 用神经网络进行监督学习-深度学习-Stanford吴恩达教授
  2. 在用dw.GetSqlSelect()获得到的Sql语句出现PBSELECT( VERSION的解决办法
  3. Android之error: ‘const struct JNINativeInterface‘ has no member named ‘callVoidMethod‘
  4. linux c之用fwrite和fread实现文件的复制
  5. 嵌入式C开发中用到的位域结构体
  6. 进程之间的通信方式-共享内存
  7. java文件流下载excel_React获取Java后台文件流下载Excel文件
  8. 微软彻底拥抱 Python!
  9. 《伟大的小细节:互联网产品设计中的微创新思维》——3.2 时间/日期因素
  10. 2022内推 | 字节跳动校招 + 社招,包括NLP、CV和ASR和研究员等
  11. nginx location 斜杠_斜杠青年 菲斯塔车主实录
  12. oracle数据库赋权_(转)Oracle数据库如何授权收费(Database Licensing)
  13. matlab矩阵size,matlab中size函数用法
  14. 谈谈对java的理解
  15. 网站在线视频播放实现
  16. Python silk 库 支持微信语音
  17. 计算机网络笔试面试题目大全
  18. Spring整合Kafka
  19. 阿里云域名备案和域名解析流程详解
  20. 查缺补漏:集和与非平凡属性

热门文章

  1. 《TCP/IP详解》_卷一_ARP和RARP协议
  2. 新天龙官网服务器更新消息,《新天龙八部》12月10日全服更新维护公告
  3. JAVA初学:错误: 找不到或无法加载主类 test
  4. 达梦数据库登录提示网络通信异常_DM达梦数据库-错误号: 6001 错误消息: 网络通信异常,服务启功失败...
  5. 掉价最快的手机排行榜_要说掉价最快的手机,当属这部了,从3199将至999元!...
  6. 【计算商品总价~python+】
  7. nginx域名解析部分完整源码分析
  8. 【排序算法】归并排序算法原理
  9. sql server2008调试存储过程的完整步骤
  10. 响应式网站建设需要多少钱?