万字硬核解读:ZK 为什么重要?

作者:Glaze & Fundamental Labs 研究团队

如果你喜欢这篇研报,欢迎点赞收藏,分享给感兴趣的朋友。这对我们有很大帮助。

TL;DR

ZK 的前景是美好的,它可以让一些过去不可能的事情变成现实。近年来,ZK 领域发生了很多突破性的进展,例如更强的性能、可升级性和不需要信任初始化。这些改进都将 ZK 推向了应用阶段。因此,如果我们要看到一个新的 ZK 证明系统,我们可以从以下维度进行评判:

  • 一笔交易和十笔交易的证明时间
  • 一笔交易和十笔交易的验证时间
  • 一笔交易和十笔交易打包后的证明大小
  • 可信初始化
  • 参考字符串长度
  • CRS 支持
  • SRS 支持
  • 递归证明支持
  • 能否抵抗量子计算机
  • 安全性基于任何密码学假设

ZKEVM 是 ZKRU 的下一个里程碑,ZKEVM 有三个阶段:

  • 共识级
  • 字节码级
  • 语言级

ZKRU 刚刚进入应用阶段,生态并不完善。开发者们还没有发掘出 ZK 的所有潜力。人们仍不断从这些前沿理论中得到启发,以下是值得关注的方向:

  • 充分利用高 TPS 和低手续费的应用程序
  • Layer2 之间的通信协议/应用程序
  • 聚合流动性
  • 开发工具/框架
  • 基于云的开发工具
  • 具有独特功能的跨 Layer2 Layer1 应用程序
  • 不同的 ZKVM
  • ZK 桥
  • 在其他链上应用 ZK
  • 拥有递归功能的 Layer2
  • ZK 在 DAO 和社区治理中的应用
  • 商业化 ZK 算法
  • 芯片和云计算

ZK 的应用聚焦在两个方面:Rollup 和隐私。Rollup 比隐私有更好的前景。隐私在某种程度上和区块链的开放精神相违背。另外,隐私可能有合规问题。在 Web2 时代,我们没有看到隐私应用程序达到龙头的位置。所有应用的隐私保护水平在不断提高,但龙头应用往往不是主打隐私的引用,而是易用性最强的应用。隐私是有代价的,大多数情况下牺牲了用户最关心的易用性。

当我们看 ZK 隐私项目时,以下几点较为重要:

  • ZK 只是技术,我们要专注产品力和团队
  • ZK 是个复杂的技术,会拖慢开发进度
  • ZK 有利于 DAO 治理和身份认证
  • ZK 是机构上链的必备技术

直觉

一句话介绍 ZK(Zero Knowledge Proof):证明者(Prover)说服验证者(Verifier)相信某些声明是真的,但除了声明是真的之外,验证者没有获得其他信息。

ZK 是为匿名而设计的。试想我们可以证明我们的身份证号码是有效的,但是验证者并不能获得我们的身份证号码。这在信息过度索取的今天,具有重大意义。

让我们来看一个更加生动的例子。小明和小红在玩数独。小红想向小明证明她找到了数独的答案,但同时又不透露这个答案,因为小明还没解出这个数独。你将如何设计这个证明?

我们把数独写到卡片上。每张卡片上有一个数字。将他们按照答案排列好,正面朝下。小明可以随机选择一列,一行或者一块。小红将拿出小明所选择的那些卡片,随机打乱后,将这些卡牌翻过来,正面朝上。如果这些卡牌是不重复的 1-9,那么小明知道小红解出了数独的某一部分,但也或许是运气。重复以上步骤,如果每次都是正确的。那么就几乎不可能是小红运气好,而是小红真的知道答案。虽然小明得知小红解出了数独,但是小明仍旧不知道数独的答案。

如果你还是有点疑惑,欢迎观看这个视频。UCLA 的计算机教授将以 5 种难度形式,解释什么是 ZK。

常见零知识证明流派

在介绍零知识证明流派之前,大家要注意我们常说的 ZK-SNARK 不是一种算法,而是一种流派。ZK-STARK 是一种具体零知识算法的名字。

我们最常见的可能是 ZK-SNARK。SNARK 的缩写是 succinct non-interactive arguments of knowledge。SNARK 最特殊的点在于他的 N,非交互性。

  • 简洁性(Succinct):验证所需要的计算资源远远小于重新跑一遍需要证明的程序。
  • 非交互性(Non-interactive):证明者和验证者不需要每一轮都沟通。他们只需要在一开始完成可信初始化(Trust Setup)。其他验证者也可以在可信初始化之后加入验证。
  • Argument:如果证明者有着无比强大的算力,那么他可以生成假证明。如果这种情况发生,主流的公私钥加密模式也不再安全。
  • 知识(Knowledge):证明者需要知道一些其他人不知道的秘密,才能生成证明。

ZK-SNARK 最大的问题在于它需要可信初始化(Truest Setup)。可信初始化会生成参考字符串(Reference String)。如果 RS 被泄露,那么任何人都可以生成虚假证明。此外,如何设计多人参与的可信初始化也很具有挑战性。RS 还只能被用于指定的程序。对于其他的程序,我们需要另外的可信初始化。因此 ZK-SNARK 不可能用于通用计算。另外一点,RS 不能升级。如果我们升级了程序,可信初始化要重新运行。

为了解决这一系列的问题,科学家们找到了两个方向:

  • Transparent Setup:可信初始化生成公共参考字符串(Common Reference String)。CRS 是公开的,不需要保密。Fractal,Halo,ZK-STARK,SuperSonic 都是采取了这一条路线。这一条路线的问题是生成的证明占用太多的存储,来到了 kB 的量级。对于区块链来说,存储是非常昂贵的。
  • Universal Setup:可信初始化生成了结构化参考字符串(Structure Reference String),但它需要保密。SRS 让可信初始化可以用于不同的程序,这让通用计算的证明可能实现。Marlink,SuperSonic-RSA 和 Plonk 都采用了这条路线。

业界广泛采用以下几种算法:

  • Groth16:Zcash 一开始使用了这种算法。它是零知识证明中的跑分对照组,因为它具有证明快,生成的证明小的特点。它的缺点是需要可信初始化,并且一次可信初始化只能针对一个程序。它拥有最完善的工具链。
  • Sonic:支持 Universal Setup. SRS 的大小和程序大小成线性关系。生成的证明是固定大小,但是验证需要消耗很多的计算资源。Sonic 让通用计算的零知识证明变为可能。
  • Fractal:支持递归(Recursion)。生成的证明占用较多空间。
  • Halo: 支持递归,但并不满足简洁性(Succinct)因为证明时间是非线性的。Halo2 是目前主流使用的证明系统。
  • SuperSonic:第一个实际的,可以应用的 Transparent ZK-SNARK。
  • Marlin:程序可以升级。性能处于 Sonic 和 Groth16 之间。
  • Plonk:程序可以升级;参与者按照顺序加入可信初始化。这让进行有很多人参与的可信初始化不那么复杂;Plonk 使用 Kate commitments 而不是多项式承诺(ZK-SNARK 的第一步是将计算问题转化为多项式问题)。许多现代化的零知识证明系统都构建与 Plonk 之上。Plonk 有着非常优秀的工具链。

如果你想挑几个算法仔细研究,Groth16,Halo,Plonk 是最好的选择。

CRS 是 Transparent Setup 路线中生成的公共参考字符串。SRS 是 Universal Setup 路线中生成的结构参考字符串。证明的大小将决定要占用 Layer1 多少的存储空间。证明和验证的时间决定了计算资源的消耗。

Source: Comparing General Purpose zk-SNARKs
Source: Comparing General Purpose zk-SNARKs

下图是零知识证明算法的 Benchmark,基于这个实验

Source: Comparing General Purpose zk-SNARKs
Source: Comparing General Purpose zk-SNARKs

以下有更多的 Benchmark 和算法对比:

总结以下,当我们看到一个新的 ZK 算法时候,以下指标是我们需要在意的:

  • 一笔交易和十笔交易的证明时间
  • 一笔交易和十笔交易的验证时间
  • 一笔交易和十笔交易打包后的证明大小
  • 可信初始化
  • 参考字符串长度
  • CRS 支持
  • SRS 支持
  • 递归证明支持
  • 能否抵抗量子计算机
  • 安全性基于任何密码学假设

ZK 在最近几年走出实验室,逐渐步入应用。ZK 两个主要应用方向是 Rollup 和隐私ZK 对于隐私产品的变革是显而易见的,得益于 ZK 可以让验证者不获得任何额外信息。Rollup 依赖于 ZK 的两大特性:简洁(Succinct)和递归(Recursion)。简明的特性有助于验证者节省大量的计算资源。验证者不需要重新运行整个程序。递归特性有助于节省存储空间。通过递归,区块链可以保持一个固定的大小。这也有利于去中心化,因为这样的区块链节点在什么样的硬件上都可以跑起来。

ZK 应用开发流程

独立开发一个 ZK 应用非常复杂,开发需要掌握以下技能:

  • 算法,底层算数,优化技能。开发者需要这些技巧来解决一些有限域算术、多项式承诺和椭圆曲线问题。
  • ZK 证明系统,如 ZK-SNARKs、Plonkish 和如何可信初始化。开发人员需要选择适当的 ZK 证明系统,并对其进行定制。
  • 电路编程技能。开发者需要讲常用密码学算法编写成电路,如 Merkle Tree 和 Hash。
  • 应用和密码学协议开发。

有效的开发工具可以加速开发过程,也可以降低复杂性。例如,像 Circom 这样的工具可以解决底层代数和证明系统。开发人员可以忽略代数和 ZK 证明系统,专注于电路编程和应用开发。

⚙️ Rollup 机制

Rollup 的想法很简单。由于链上计算较为昂贵,因此 Rollup 希望安全地将计算移动到链下,并只在链上存储计算结果。

哈希树的状态根存储在 Rollup 合约中。Rollup 智能合约从 Layer2 提交的信息中更新状态根。

Source: An Incomplete Guide to Rollups (vitalik.ca)
Source: An Incomplete Guide to Rollups (vitalik.ca)
Source: An Incomplete Guide to Rollups (vitalik.ca)
Source: An Incomplete Guide to Rollups (vitalik.ca)

ZK Rollup(ZKRU) 使用零知识证明来确保从 Layer2 提交的新状态根是正确的。验证者只需要验证这个证明就可以确认新状态根的正确性。验证者并不需要一个个重新执行 Layer2 提交的交易。这大大节省了验证者的工作量,提升了 TPS。这节省计算量的部分体现了零知识证明的简洁特性。依赖于零知识证明的简洁性,完备性,合理性,ZKRU 得以安全地提升 TPS。(完备性和合理性是证明系统的必备特性。完备性 Completeness:如果证明是有效的,验证方一定会相信证明方的断言。真的假不了;合理性 Soundness:虚假断言不可能生成有效的证明。假的真不了。)

ZKRU 整体来说优于 Optimistic Rollup(OPRU)。OPRU 的 TPS 略差,并且需要更长的提款周期,因为它依赖于欺诈证明(Fraud Proof)。那么等 ZKRU 全面铺开以后,不就是 ZKRU 碾压 OPRU 了吗?并且 OPRU 目前的生态并不算过于领先。OPRU 并没有坐以待毙,他们尝试将 ZK 融入自家的解决方案来提升 TPS,解决原生提款周期过长的问题。例如,他们将 ZK 应用于状态变化,这样就可以缩短欺诈证明所需要的时间了。

🧑 角色

在 Rollup 的体系中,一共有三个角色:

  • 用户:用户在 Layer2 提交交易。他们从 Layer1 充值资产至 Layer2
  • Rollup 节点:Rollup 节点负责维护 Layer2 网络的正常运行。它们需要生成证明,执行交易,打包交易,参与欺诈证明
  • Layer1: Layer1 保证了 Layere2 的安全性,并负责共识的达成。大部分 Layer1 目前都是以太坊。
Source: Understanding rollup economics from first principles
Source: Understanding rollup economics from first principles

〽️ 经济模型

经济模型中最重要的就是成本和收入。对于 Layer2 来说,支出基本上是以下几个:

  • 生成证明的计算成本
  • 切换状态的计算成本
  • Layer1 交易手续费
  • Layer1 数据存储成本

其中 Layer1 数据存储成本最为昂贵。这张图展示了数据的传递。首先用户递交交易给 Rollup 节点。Rollup 打包多笔交易并生成证明,存储在 Layer1 中。

Source: Understanding rollup economics from first principles
Source: Understanding rollup economics from first principles

这张图展示了 Rollup 在 Layer1 上的支出已经它们的收入:

Source: L2Fees.info in 3/28/2022
Source: L2Fees.info in 3/28/2022

Layer2 最常见的收入是手续费和 MEV。手续费基于网络的情况,MEV 则取决于用户的交易。Layer2 也会发行属于自己的代币,并且奖励给 Rollup 节点。

常见 ZKRU

这张图展示了常见 Layer2 以及他们的市场占比。目前 Arbitrum 占据市场半壁江山。

Source: https://l2beat.com/ on 3/28/2022
Source: https://l2beat.com/ on 3/28/2022

下图展示了不同 Layer2 使用的不同技术:

  • 状态验证(State Validation)
    • 欺诈证明(Fraud Proofs):允许白名单执行者监控链上交易,并指出错误状态。
    • 零知识证明(ZK proofs (ST)):使用 ZK-STARKs 来证明状态的正确性。
    • SN:ZK-SNARKs
    • 仅在退出验证(Exits Only):退出网络时,状态会被验证。中间状态并不会被验证。
    • 互动证明(INT):需要多笔交易来解决纠纷。
    • 一轮(1R):只需要一轮证明来解决状态纠纷。
  • 数据可用性(Data availability)
    • 链上(On chain):构建证明需要的所有数据都在链上。
    • 外部数据委员会(External DAC): 构建证明需要的所有数据都不在链上。数据委员会负责保护和提供数据。
    • 外部(External): 构建证明需要的所有数据都不在链上。
  • 升级(Upgradability)
    • (Yes): 可以随时升级,不需要任何公告。
    • 21 天延迟或无延迟(21 day or no delay): 有 21 天的延迟,除非安全委员会多签通过了立即升级。
  • 故障序列(Sequencer Failure)
    • L1 交易(Transact using L1):用户可以在 L1 提交一笔交易来强制 L2 打包自己的交易。
    • 强制交易/L1 退出(Force trade/ exit to L1):用户可以在 L1 提交请求来强制 L2 打包自己的提款请求,但这意味着用户需要找在系统之外找到交易对手方。
    • 强制 L1 退出(Force exit to L1):用户可以在 L1 提交请求来强制 L2 打包自己的提款请求。
    • 构建区块(Propose blocks(ZK)):用户需要自行运行节点来构建区块。这个区块包含了用户想要打包的交易。这要求用户自行计算 ZK 证明。这对算力有很大要求。
    • L1 退出(Exit to L1):用户只能在 L1 提交提款请求。
  • 验证失败(Validation Failure)
    • 逃生舱(Escape hatch(MP)):用户可以在无需信任的情况下拿回押金。用户需要提交资金的哈系树证明。押金将会以上一次状态中的平均价格退出。
    • 构建区块(Propose blocks):用户需要自行运行节点来构建区块。
Source: https://l2beat.com/ on 3/28/2022
Source: https://l2beat.com/ on 3/28/2022
Source: https://l2beat.com/ on 3/28/2022
Source: https://l2beat.com/ on 3/28/2022

Ethhub 列出了 ZKRU 的几个主要优缺点:

  • 优点

    • 降低用户手续费
    • 优于 OPRU 的性能, 手续费,提款周期
    • 区块可以并行运算,有利于去中心化
    • 更高的 TPS
    • 更短的提款周期,优于欺诈证明

    缺点

    • 计算证明需要大量的资源
    • ZKRU 的可信初始化较为中心化
    • 量子计算可能会损害安全性
    • 安全假设包含不可验证的信任

    目前大部部分 ZKRU 只支持支付和有限的功能。zkSync 是 Gitcoin 的支付层。ZKRU 大多使用自定义虚拟机,并不兼容 EVM。例如,StarkEx + Cairo 和 zkSync 1.0 + Zinc。

    ZKEVM 是 ZKRU 的下一个里程碑。ZKEVM 可以划分为三个等级:

    • 共识级:ZKEVM 和主网上的 EVM 等价。生成的状态根是通用的。以太坊在未来计划实现主网上的 ZKEVM。
    • 字节码级:ZK 证明系统在这个阶段非常重要,需要对 EVM 友好。字节码级的 ZKEVM 生成的状态根与 EVM 的状态跟格式不一样,因为 ZKEVM 采用不一样的密码学算法。EVM 使用的那些对于 ZK 证明系统不友好。Scroll 和 Hermez 采用这个解决方案。
    • 语言级:在这个级别,并没有真正的 ZKEVM。一个转译器将 Solidity 编写的智能合约或者字节码转译成自定义虚拟机可以执行的格式。zkSync 和 Starkware 都是采用这个解决方案。这个方案的缺陷是,并不能兼容 EVM 的所有功能。

    以太坊基金会的 Justine Drake 计划在 2022 年底看到可用的字节码级 ZKEVM,但会有以下限制:

    • 与主网相比,较小的 Gas Limit。
    • 中心化节点由于生成证明需要大量的算力。用户将在 2023 年使用他们的 GPU 生成证明。2024 年,ASIC 将投入使用。节点运营者将从 CPU 到 GPU,FPGA,最后到 ASIC。
    • 由于 ZKEVM 的工程复杂度,ZKEVM 会存在 Bug。

    为了进一步降低手续费,一些 ZKRU 正在实现 Volition,将数据存储的地方从以太坊到链下。

    市场上目前有 16 个 ZKRU,其中 7 个发行了代币,总市值 150 亿美金,占加密货币总市值的 0.67%。

    Polygon

    Polygon 目前在实现 4 个 ZK 产品:

    • Miden:实验性质的 ZKRU 通用计算平台,TPS 1k+ ,15 min 提款,5 秒产出 1 个块,隐私交易。
    • Nightfall:Nightfall 是一个 ORU,集成了 ZK 来实现隐私交易。一笔交易需要 9k Gas,110 TPS,为安永会计师事务所设计。
    • Hermez:EVM 兼容的 ZKRU,2k TPS。目前网络已经上线,几乎没有交易量(数据来自区块浏览器)。
    • Zero:通用 ZKRU 计算平台,支持递归。只需要 0.17s 就可以生成证明。证明大小 45 kB。一个账户只占用 5 bits。

    zkSync

    zkSync 由 Matter Labs 创立于 2019/12 基于 Plonk 开发。目前 zkSync 支持支付功能以及有限的智能合约功能。智能合约需要用 Zinc 进行开发。

    zkSync 2.0 测试网在 2022/2 上线,兼容 EVM。Matter Labs 将大部分 OPCODE 电路化实现在不修改证明系统的前提下,实现 EVM 兼容。目前 zkSync 2.0 并不支持 ADDMOD,SMOD,MULMOD,EXP,CREATE2 和 KECCAK256。在这种解决方案下,Solidity 成为了一等公民。

    zkSync 2.0 的 Gas Price 是根据以太坊主网 Gas Price 和 ZK 证明成本动态变化的。受以太坊主网 Gas Price 影响的原因是 zkSync 会将数据打包存储到以太坊主网。

    为了进一步降低手续费,提高 TPS,zkSync 计划发布 ZKPorter。用户可以选择将他们的账户数据存储在 ZKPorter 上来降低手续费。如果一个账户数据存储在 ZKPorter 上,则它所有的交易都将由 ZKPorter 确保数据可用性,交易不再能提交到以太坊主网上。

    以下是关于 zkSync TVL 和资金种类的图表。大部分 zkSync 上的资金都是稳定币。

Source: Dune on 3/28/2022
Source: Dune on 3/28/2022
Source: Dune on 3/28/2022
Source: Dune on 3/28/2022

Starkware

Starkware 在 2018/5 由 Zcash 核心团队成员创立。

Starkware 有两个产品:StarkEx,StarkNet。

StarkEx 是一款 SaaS 产品,为项目方提供 ZKRU 解决方案。目前客户包含 dYdX,DeverseFi,Immutable,Sorare。dYdX 每周有 4k 活跃用户。

Source: Layer 2 Public Dashboard · Metabase (dydx.exchange)
Source: Layer 2 Public Dashboard · Metabase (dydx.exchange)
Source: Layer 2 Public Dashboard · Metabase (dydx.exchange)
Source: Layer 2 Public Dashboard · Metabase (dydx.exchange)

StarkNet 是更加开放的 ZKRU 相比于 StarkEx,任何人都在可以在上面部署合约。StarkNet 目前不兼容 EVM。StarkNet 使用 Cairo 来编写智能合约。

Starkware 也在推进 ZKEVM。他们用了和 zkSync 不一样的解决方案。他们使用 Warp 来将 Solidity 编写的智能合约转译成 Cairo。这个解决方案并不如 zkSync 的解决方案,对 Solidity 的兼容性较差。

StarkNet Alpha 兼容 ZKEVM 在 2021/11 上线。目前每日交易数量为 1033(数据来自区块浏览器)。

Loopring

Loopring 是一个基于 ZKRU 的交易所,提供低手续费的交易体验,可以达到 2k TPS。

Loopring 在 2018 发行了代币 $LRC。目前市值为 13 亿美金。Loopring 总共有 65k

用户,每天用户增长数为 167,每日交易量为 10896(数据来自区块浏览器)。

dYdX 是 Loopring 强力的竞争对手。在未来,当 ZKEVM 正式投入应用,会涌现出一大批 DEX,因为 Solidity 的开发速度比开发 Layer2 快很多。新的项目 Fork 也很快。整个交易所的竞争将非常激烈。

ZKRU 中的机会

在过去,我们经常听到一些高 TPS,低手续费的链标榜自己为以太坊杀手。随着时间的推移,大部分以太坊杀手杀死了自己。剩下的链都找到了自己的发展方向,如 DeFi,GameFi。这些链也有了自己的特色应用和完整的生态。

现在开发一条高 TPS,低手续费的链不难,难就难在生态和特色应用。因此我们不能只关注纸面性能数据,而要注重用户,生态和特色应用。

Layer2 具有的特点是高 TPS,低手续费,完整的生态。虽然不少 Layer2 ZKEVM 主网还没上线,但是已经和很多项目达成了合作。

Moonbeam 目前的状态就很像一条 Layer2。它背靠 Polkadot,和大 DeFi 项目有合作,有完整的 DeFi 生态和跨链桥,但是缺少特色应用。下图是 Moonbeam 的 TVL 图。

Source: Defillama on 3/29/2022
Source: Defillama on 3/29/2022

因此完整的生态对于 Layer2 是不够的,Layer2 还需要发掘出它的特色。

特色应用

能够充分利用 Layer2 长处的特色应用将是 Layer2 之间竞争的关键。目前我们发现的是类似 dYdX 的交易所可以充分利用低手续费,高 TPS 。另一个有潜力的应用便是链游,他们的需求与交易所类似,也是低手续费,高 TPS。

跨 Layer2 应用

Layer2 们共享同一个 Layer1,因此构建跨 Layer2 应用将安全的多。我们期待看见开发者利用这个特性,实现一些具有创新的应用。这些应用将不能被复制到跨链生态中,因为只有 Layer2 才共享同一个 Layer1。例如 Starkware 提出了聚合跨链流动性的构想,所有流动性存储在 Layer1,但是可以在 Layer2 中进行使用。

开发组件

开发 ZK 应用是复杂的,开发者需要了解代数,证明系统,电路编写和协议开发。因此他们需要一些合适的开发工具来加速开发,做适当的抽象,省去一些底层的开发。

除此之外,定制化 Layer2 也将在未来有绝佳的市场。这类型的开发框架可能类似 Cosmos SDK 和 Polkadot 的 Substrate。

当一个应用变得热门,它不可避免的需要占据更多的计算资源。为了降低手续费,它可以选择做一条自己的链,迁移到 Layer2 和自己定制一条 Layer2.

Axie Infinity 便面临着一样的问题。在那个时候,Layer2 还不成熟,定制 Layer2 的成熟方法也根本不存在。因此 Axie Infinity 只能自己开发一条链,来自定义手续费。这带来了几个问题:

  1. 不能和以太坊共用生态
  2. 无法享受以太坊的流量
  3. 跨链桥安全性

在不远的未来,迁移到 Layer2 或许是一个不错的选择,但是在 Layer2 开发终将面临一样的问题。应用并没有完全的自主性,还是会面临一些限制,所以最有前景的选择是定制化做一条 Layer2。如果那时候跨 Layer2 非常的成熟,Layer2 和以太坊的交互也很方便,定制化的 Layer2 的使用体验将无比丝滑。

与以太坊结合

Layer2 如何与 Layer1 结合也是一个有意思的方向。只有 Layer2 和 Layer1 良好结合,用户才更容易从 Layer1 迁移到 Layer2。这包含了更好的资产桥和通讯协议。

不同的 VM

ZKEVM 是 ZKRU 的下一个里程碑。ZKEVM 分为三个级别:

  • 语言级别:在这个级别,其实并不存在 ZKEVM 。我们有一个 ZK 友好的自定义 VM 和一个转译器。转译器将 Solidity 编写的智能合约翻译成这个自定义 VM 可以执行的形式。zkSync 和 Starkware 都采用这个形式。这个形式的好处是开发速度快,但是无法兼容 EVM 的所有功能。
  • 字节码级别:在这个级别我们有一个完全兼容的 ZKEVM 。我们的证明系统对于 EVM 非常友好。缺点是这一级别生成的状态根和主网 EVM 的状态根根式不一样。Scroll 和 Hermez 正在实现这一级别的 ZKEVM ,预计在年底可以推出。
  • 共识级别:共识级别的 ZKEVM 运行在主网上,这一级别的 ZKEVM 和 EVM 别无二样。

除了 ZKEVM ,我们可能也会看到其他虚拟机,例如 ZKWASM 等。

Layer2 在其他链

zkLink 在 Solana 推出了 Groth16。ZKRU 在其他链上或许也有机会。ZKRU 可以赋予项目更大的自由,以及隐私性。对于企业来说,他们有必要保护客户的隐私。因此 Layer2 也是让这些企业上链的一个机会。

ZK 桥

目前大家都在努力实现一个无需信任的跨链桥,但所有的桥都需要相信第三方。虽然这些桥都要求参与者抵押资产,但我们很难具体计算作恶的成本和收益。ZK 可以应用在跨链桥中,用来生成交易证明。这样我们就不需要相信预言机所传递的信息,只需要对证明进行验证就好。目前 ZK 跨链桥的问题在于如何生成区块的证明,而且扩展性堪忧。不同的链需要开发不同的电路来生成对应的区块证明。

ZK 商业算法

商业算法广泛出现在专业领域,例如线性求解器,GPT-3等。如果 ZK 始终维持着高入门门槛,开源便不能帮助其降低开发和维护成本,因为没有人有能力来为其做贡献。在这种情况下,便会出现 ZK 商业算法。目前大部分 ZK 从业者拥有 Ph.D. 学位。

定制化芯片

随着更多的用户流入 Layer2,Layer2 将捕获更多的价值。矿工们也将进行军备竞赛,购买性能更强大的矿机。在以太坊的路线图中,未来将集成 ZKEVM 。Filecoin 目前也投入了 ZK,矿工需要是生成证明。这也就是说矿工必须需要一枚可以快速生成零知识证明的芯片。

纵览以太坊和比特币矿机,一开始矿工们使用触手可得的 CPU 和 GPU 进行挖矿。在这个阶段,软件开发者需要为算法适配硬件加速。在这之后 FPGA 出现了。FPGA 具有更好的能耗比,更强的性能,并且是可编程的。用户可根据算法的不同,对 FPGA 进行编程,来适应算法。ASIC 最后出现,因为它的设计,量产需要更长的时间。ASIC 具有最好的能耗比,最强的性能,但是缺点是生产周期长,并且不具备可编程性。

未来是属于 ASIC 还是 FPGA 将取决于这些 Layer2 会不会频繁切换证明系统。每年都有更好的证明系统被开发出来。如果 Layer2 频繁进行切换证明系统,只能适用于单一计算任务的 ASIC 将被迫不断推出新产品,但同时 Layer2 切换证明系统也会带来很多工程化上的问题,例如重新适配 ZKEVM。

递归

递归可以使区块链有更小的体积。更小的体积意味着节点可以运行在低端设备中。这非常有利于去中心化。简洁的特性使区块链可以无副作用的提升 TPS。因此递归和简洁将可以打破区块链的不可能三角:安全性,去中心化和 TPS。

隐私

ZK 已经被用于很多隐私项目中。例如,Tornado Cash,Zcash,Dark Forest。保护隐私分为三个阶段:

  1. 交易隐私:用户可以隐藏他们的交易。
  2. 通用计算隐私:目前以太坊上的所有计算过程都是公开的。任何人都可以看到输入,输出,和状态转换。通用计算隐私将隐藏这些计算过程。
  3. 函数隐私:有时调用函数的名称会泄露信息。例如,mint() 往往意味着铸造代币。函数隐私将隐藏函数的调用记录。

目前隐私赛道的总市值约为 100 亿美元,约占整个加密货币市场的 0.45%。每日交易量约为 10 亿美元。

Tornado Cash

Tornado Cash 是一个基于智能合约的隐私交易工具。它可以用来匿名转账,现在支持以太坊, BSC,Polygon,Optimism,Arbitrum,Gnosis 和 Avalanche。

存款,获得凭证,提款。用户就可以完成一笔隐私转账。在新版 Nova 中,用户可以选择任意的提取金额。ZK 用于生成提款凭证。

下图展示了 Tornado Cash 的 TVL 和用户增长。

Source: Dune on 3/28/2022
Source: Dune on 3/28/2022
Source: Dune on 3/28/2022
Source: Dune on 3/28/2022

下图展示了 $TORN 的价格。$TORN 是 Tornado Cash 的治理凭证以及提供流动性的奖励。

Source: Trading View 3/28/2022
Source: Trading View 3/28/2022

Zcash

Zcash 是一个使用 ZK-SNARK 来实现隐私交易的区块链。与基于智能合约的 Tornado Cash 不同,Zcash 使用了一条链来实现隐私。

下图展示了 Zcash 链上每日交易量。

Source: Zcash Transactions Chart on 3/28/2022
Source: Zcash Transactions Chart on 3/28/2022

下图是 $Zcash 的价格走势。

Source: Trading View 3/28/2022
Source: Trading View 3/28/2022

Zecrey

Zecrey 是一个支持以太坊、Polygon、BSC、Near 和 Avalanche 的隐私支付应用。它处于保护隐私的第一层,交易隐私。Zecrey 提供一个浏览器钱包,用户可以用它匿名转账,交易代币。这些匿名性都由 Zecrey Layer2 保证。因此用户需要先将钱存到 Zecrey Layer2 中才可以使用这些匿名功能。 Zecrey Layer2 是 ZKRU 基于 Plonk。Zecrey 还支持资产跨链。目前 Zecrey 每日交易量大约为 10 笔(数据来自区块浏览器)。

Source: Zecrey
Source: Zecrey

Suterusu

Suterusu 是一个支持以太坊、BSC、Fantom 和 Polygon 的隐私支付应用。它使用 Layer2 来保护用户的交易隐私。它还有一个跨链桥,可以在以太坊和 BSC 之间转移 $SUTER。未来它计划推出 NFT 匿名转账以及匿名拍卖。Suterus 采用 ZK-ConSnark,这种算法不需要信任设置。

Suterusu 共有 15k 用户以及 24k 笔转入。目前用户增速非常缓慢。Suterusu 的市值大约 1000 万美金。

Source: Suterusu
Source: Suterusu

Dark Forest

Dark Forest 是一款多人网络游戏。玩家需要占领更多的星球,获得更多的资源。玩家可以向其他星球输送能量来占领它们。星球的位置是保密的。玩家需要利用哈希碰撞自己找到这些星球。ZK 被用来证明与位置有关的操作:

  • 行星初始化
  • 行星资源的转移

在 Dark Forest v0.6 第一轮中,有 1700 名玩家参加。其中 700 人得到了进入下一轮的机会。在第一轮中,玩家们一共提交了 200 万笔交易,花费了大约 1.5 万亿 Gas。假设它是在以太坊上,Gas Price 是 80,那么这些玩家的手续费总共是 120 ETH。

Stealth Airdrop

Stealth Airdrop 允许用户匿名地领取空投。用户首先使用他们满足空投领取条件的钱包来生成零知识证明,接着他们可以用其他钱包和这份证明来获得空投代币。

Stealth Airdrop 代表了 ZK 在治理方面的运用。在现实世界的治理中,我们也广泛应用匿名这个特性。例如在投票中,如果你发现有影响力的人物都投了赞成票,你也会受其影响,更有可能投出赞成票。因此匿名投票可以帮助用户独立投票。

在 2021 年,以太坊基金会对于 ZK 的资助主要集中在 ZKEVM 和治理方面。以太坊基金会主要资助了两个项目,其中一个就致力于解决投票贿赂问题。

A16Z 也实现了类似的东西 a16z/zkp-merkle-airdrop-contract

zkProof of Buffiness

这个项目在 ETHDanver 上发布。用户可以生成 ZK 证明来展示他们拥有一个 Buffiness,而不透露他们的个人身份信息。这是 ZK 在身份认证相关的应用。

Source: zkPoB
Source: zkPoB

总结

  1. 隐私市场较小。隐私项目很早就出现了。Zcash 始于2016 年。然而,整个隐私市场只占加密货币市场的 0.45%。起步晚的 Layer2 也远超隐私市场。

  2. 将会受益于更高的隐私标准。在不牺牲易用性的情况下,用户会追求更好的隐私保护。特别是在手机行业,谷歌和苹果正在推动更严格的隐私标准。欧盟也提出保护消费者隐私的法规。像 Let's Encrypt 这样提供 SSL 证书的基础设施公司更严格的意思标准中受益。在未来,当 ZK 因为更好的隐私保护而会被这些巨头公司采用时,ZK 基础设施将有巨大的机会。

  3. ZK 是金融机构入驻的必备条件。一些机构在尝试上链,他们有责任保护好客户的隐私。因此 ZK 在这个场景下将成为区块链的标配,来提供隐私功能。

  4. 有利于 DAO 治理和身份。匿名在民主治理有着重要应用。ZK 可以实现匿名投票,让投票者独立思考,不被他人的决定所干扰。身份验证也可以从 ZK 中受益。用户可以在不显示其实际地址的情况下展示其资产。

  5. 忽略 ZK,专注于产品的易用性。ZK 可以更好地保护隐私,但一个产品并不全是 ZK。ZK 是一种技术,我们更需要强调产品的易用性。通常,更好的隐私保护并不意味着易用性,但易用性是最关键的。因此,要更加关注易用性、市场和团队。

    另一个有趣的项目

    ZKRepel

    ZKRepel 在 GR13 中成功母子 5000 万美金。ZKRepel 是要给在线 Playground,开发者可以快速体验如何编写电路,并生成证明。ZKRepel 比较像早期的 Remix

    大环境上,我们看到了从本地开发到云开发的范式转变。在这之中有一些著名的产品,如CodesandboxCodepenCodespaces。有了这些产品,开发人员可以在任何地方任何时间使用他们的开发环境。开发者也可以快速建立新的开发环境。Github 提出面对日益复杂的软件开发,开发环境作为基础设施是必不可少的。Github 内部开发环境已经迁移到了自家的 Codespaces。

    目前没有关于 ZK 开发者数据的明确统计。从 Github 上的数据来看,ZK 开发者比 Solidity 开发者少了 500 多倍。

Source: ZKRepel
Source: ZKRepel

更多的 ZK 项目

Source: How to fund your ZK Project?
Source: How to fund your ZK Project?

以下项目专门自主或者投资 ZK 项目。

  • ZKTech Gitcoin Grants: 第一轮中为 19 个项目中匹配了 10 万美元。
  • 0xPARC Grants:支持以太坊和其他去中心化平台在应用层面的创新。
  • zkDAO:由 zkSync 和 BitDAO 支持的新推出的 2 亿美元基金,以支持 zkSync 生态。2 亿美元中的 7.5% 将用于Grants。
  • Polygon ZK基金
  • Aztec Grants:目前的重点是跨链桥、工具和分析。
  • Harmony ZK 基金:专注于 ZK 和隐私研究的 1000 万美元基金。
  • ZK Validator::专注于 ZK 的基金。过往投资有 Aztec, Penumbra, Ironfish, Anoma, zkSync, Aleo, Diversfi。
  • Aleo 推出的 ZPrice
  • Nil Foundation:致力于数据库和密码学方面的项目。

总结

ZK 的前景是美好的,它可以让一些过去不可能的事情变成现实。近年来,ZK 领域发生了很多突破性的进展,例如更强的性能、可升级性和不需要信任初始化。这些改进都将 ZK 推向了应用阶段。因此,如果我们要看到一个新的 ZK 证明系统,我们可以从以下维度进行评判:

  • 一笔交易和十笔交易的证明时间
  • 一笔交易和十笔交易的验证时间
  • 一笔交易和十笔交易打包后的证明大小
  • 可信初始化
  • 参考字符串长度
  • CRS 支持
  • SRS 支持
  • 递归证明支持
  • 能否抵抗量子计算机
  • 安全性基于任何密码学假设

ZKEVM 是 ZKRU 的下一个里程碑,ZKEVM 有三个阶段:

  • 共识级
  • 字节码级
  • 语言级

ZKRU 刚刚进入应用阶段,生态并不完善。开发者们还没有发掘出 ZK 的所有潜力。人们仍不断从这些前沿理论中得到启发,以下是值得关注的方向:

  • 充分利用高 TPS 和低手续费的应用程序
  • Layer2 之间的通信协议/应用程序
  • 聚合流动性
  • 开发工具/框架
  • 基于云的开发工具
  • 具有独特功能的跨 Layer2 Layer1 应用程序
  • 不同的 ZKVM
  • ZK 桥
  • 在其他链上应用 ZK
  • 拥有递归功能的 Layer2
  • ZK 在 DAO 和社区治理中的应用
  • 商业化 ZK 算法
  • 芯片和云计算

ZK 的应用聚焦在两个方面:Rollup 和隐私。Rollup 比隐私有更好的前景。隐私在某种程度上和区块链的开放精神相违背。另外,隐私可能有合规问题。在 Web2 时代,我们没有看到隐私应用程序达到龙头的位置。所有应用的隐私保护水平在不断提高,但龙头应用往往不是主打隐私的引用,而是易用性最强的应用。隐私是有代价的,大多数情况下牺牲了用户最关心的易用性。

当我们看 ZK 隐私项目时,以下几点较为重要:

  • ZK 只是技术,我们要专注产品力和团队
  • ZK 是个复杂的技术,会拖慢开发进度
  • ZK 有利于 DAO 治理和身份认证
  • ZK 是机构上链的必备技术

了解更多

如果你想要了解更多 ZK,可以阅读这个教程https://github.com/ventali/awesome-zk。期待一下这份教程

我在 Fundamental Labs 担任 Tech Associate。欢迎关注,我的 Newsletter。你可以在这找到 FL

Reference

Subscribe to CryptoValley Live
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.