作者:Glaze & Fundamental Labs 研究团队
如果你喜欢这篇研报,欢迎点赞收藏,分享给感兴趣的朋友。这对我们有很大帮助。
ZK 的前景是美好的,它可以让一些过去不可能的事情变成现实。近年来,ZK 领域发生了很多突破性的进展,例如更强的性能、可升级性和不需要信任初始化。这些改进都将 ZK 推向了应用阶段。因此,如果我们要看到一个新的 ZK 证明系统,我们可以从以下维度进行评判:
ZKEVM 是 ZKRU 的下一个里程碑,ZKEVM 有三个阶段:
ZKRU 刚刚进入应用阶段,生态并不完善。开发者们还没有发掘出 ZK 的所有潜力。人们仍不断从这些前沿理论中得到启发,以下是值得关注的方向:
ZK 的应用聚焦在两个方面:Rollup 和隐私。Rollup 比隐私有更好的前景。隐私在某种程度上和区块链的开放精神相违背。另外,隐私可能有合规问题。在 Web2 时代,我们没有看到隐私应用程序达到龙头的位置。所有应用的隐私保护水平在不断提高,但龙头应用往往不是主打隐私的引用,而是易用性最强的应用。隐私是有代价的,大多数情况下牺牲了用户最关心的易用性。
当我们看 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,非交互性。
ZK-SNARK 最大的问题在于它需要可信初始化(Truest Setup)。可信初始化会生成参考字符串(Reference String)。如果 RS 被泄露,那么任何人都可以生成虚假证明。此外,如何设计多人参与的可信初始化也很具有挑战性。RS 还只能被用于指定的程序。对于其他的程序,我们需要另外的可信初始化。因此 ZK-SNARK 不可能用于通用计算。另外一点,RS 不能升级。如果我们升级了程序,可信初始化要重新运行。
为了解决这一系列的问题,科学家们找到了两个方向:
业界广泛采用以下几种算法:
如果你想挑几个算法仔细研究,Groth16,Halo,Plonk 是最好的选择。
CRS 是 Transparent Setup 路线中生成的公共参考字符串。SRS 是 Universal Setup 路线中生成的结构参考字符串。证明的大小将决定要占用 Layer1 多少的存储空间。证明和验证的时间决定了计算资源的消耗。
下图是零知识证明算法的 Benchmark,基于这个实验。
以下有更多的 Benchmark 和算法对比:
总结以下,当我们看到一个新的 ZK 算法时候,以下指标是我们需要在意的:
ZK 在最近几年走出实验室,逐渐步入应用。ZK 两个主要应用方向是 Rollup 和隐私。ZK 对于隐私产品的变革是显而易见的,得益于 ZK 可以让验证者不获得任何额外信息。Rollup 依赖于 ZK 的两大特性:简洁(Succinct)和递归(Recursion)。简明的特性有助于验证者节省大量的计算资源。验证者不需要重新运行整个程序。递归特性有助于节省存储空间。通过递归,区块链可以保持一个固定的大小。这也有利于去中心化,因为这样的区块链节点在什么样的硬件上都可以跑起来。
独立开发一个 ZK 应用非常复杂,开发需要掌握以下技能:
有效的开发工具可以加速开发过程,也可以降低复杂性。例如,像 Circom 这样的工具可以解决底层代数和证明系统。开发人员可以忽略代数和 ZK 证明系统,专注于电路编程和应用开发。
Rollup 的想法很简单。由于链上计算较为昂贵,因此 Rollup 希望安全地将计算移动到链下,并只在链上存储计算结果。
哈希树的状态根存储在 Rollup 合约中。Rollup 智能合约从 Layer2 提交的信息中更新状态根。
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 数据存储成本最为昂贵。这张图展示了数据的传递。首先用户递交交易给 Rollup 节点。Rollup 打包多笔交易并生成证明,存储在 Layer1 中。
这张图展示了 Rollup 在 Layer1 上的支出已经它们的收入:
Layer2 最常见的收入是手续费和 MEV。手续费基于网络的情况,MEV 则取决于用户的交易。Layer2 也会发行属于自己的代币,并且奖励给 Rollup 节点。
这张图展示了常见 Layer2 以及他们的市场占比。目前 Arbitrum 占据市场半壁江山。
下图展示了不同 Layer2 使用的不同技术:
Ethhub 列出了 ZKRU 的几个主要优缺点:
优点
缺点
目前大部部分 ZKRU 只支持支付和有限的功能。zkSync 是 Gitcoin 的支付层。ZKRU 大多使用自定义虚拟机,并不兼容 EVM。例如,StarkEx + Cairo 和 zkSync 1.0 + Zinc。
ZKEVM 是 ZKRU 的下一个里程碑。ZKEVM 可以划分为三个等级:
以太坊基金会的 Justine Drake 计划在 2022 年底看到可用的字节码级 ZKEVM,但会有以下限制:
为了进一步降低手续费,一些 ZKRU 正在实现 Volition,将数据存储的地方从以太坊到链下。
市场上目前有 16 个 ZKRU,其中 7 个发行了代币,总市值 150 亿美金,占加密货币总市值的 0.67%。
Polygon 目前在实现 4 个 ZK 产品:
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 上的资金都是稳定币。
Starkware 在 2018/5 由 Zcash 核心团队成员创立。
Starkware 有两个产品:StarkEx,StarkNet。
StarkEx 是一款 SaaS 产品,为项目方提供 ZKRU 解决方案。目前客户包含 dYdX,DeverseFi,Immutable,Sorare。dYdX 每周有 4k 活跃用户。
StarkNet 是更加开放的 ZKRU 相比于 StarkEx,任何人都在可以在上面部署合约。StarkNet 目前不兼容 EVM。StarkNet 使用 Cairo 来编写智能合约。
Starkware 也在推进 ZKEVM。他们用了和 zkSync 不一样的解决方案。他们使用 Warp 来将 Solidity 编写的智能合约转译成 Cairo。这个解决方案并不如 zkSync 的解决方案,对 Solidity 的兼容性较差。
StarkNet Alpha 兼容 ZKEVM 在 2021/11 上线。目前每日交易数量为 1033(数据来自区块浏览器)。
Loopring 是一个基于 ZKRU 的交易所,提供低手续费的交易体验,可以达到 2k TPS。
Loopring 在 2018 发行了代币 $LRC。目前市值为 13 亿美金。Loopring 总共有 65k
用户,每天用户增长数为 167,每日交易量为 10896(数据来自区块浏览器)。
dYdX 是 Loopring 强力的竞争对手。在未来,当 ZKEVM 正式投入应用,会涌现出一大批 DEX,因为 Solidity 的开发速度比开发 Layer2 快很多。新的项目 Fork 也很快。整个交易所的竞争将非常激烈。
在过去,我们经常听到一些高 TPS,低手续费的链标榜自己为以太坊杀手。随着时间的推移,大部分以太坊杀手杀死了自己。剩下的链都找到了自己的发展方向,如 DeFi,GameFi。这些链也有了自己的特色应用和完整的生态。
现在开发一条高 TPS,低手续费的链不难,难就难在生态和特色应用。因此我们不能只关注纸面性能数据,而要注重用户,生态和特色应用。
Layer2 具有的特点是高 TPS,低手续费,完整的生态。虽然不少 Layer2 ZKEVM 主网还没上线,但是已经和很多项目达成了合作。
Moonbeam 目前的状态就很像一条 Layer2。它背靠 Polkadot,和大 DeFi 项目有合作,有完整的 DeFi 生态和跨链桥,但是缺少特色应用。下图是 Moonbeam 的 TVL 图。
因此完整的生态对于 Layer2 是不够的,Layer2 还需要发掘出它的特色。
能够充分利用 Layer2 长处的特色应用将是 Layer2 之间竞争的关键。目前我们发现的是类似 dYdX 的交易所可以充分利用低手续费,高 TPS 。另一个有潜力的应用便是链游,他们的需求与交易所类似,也是低手续费,高 TPS。
Layer2 们共享同一个 Layer1,因此构建跨 Layer2 应用将安全的多。我们期待看见开发者利用这个特性,实现一些具有创新的应用。这些应用将不能被复制到跨链生态中,因为只有 Layer2 才共享同一个 Layer1。例如 Starkware 提出了聚合跨链流动性的构想,所有流动性存储在 Layer1,但是可以在 Layer2 中进行使用。
开发 ZK 应用是复杂的,开发者需要了解代数,证明系统,电路编写和协议开发。因此他们需要一些合适的开发工具来加速开发,做适当的抽象,省去一些底层的开发。
除此之外,定制化 Layer2 也将在未来有绝佳的市场。这类型的开发框架可能类似 Cosmos SDK 和 Polkadot 的 Substrate。
当一个应用变得热门,它不可避免的需要占据更多的计算资源。为了降低手续费,它可以选择做一条自己的链,迁移到 Layer2 和自己定制一条 Layer2.
Axie Infinity 便面临着一样的问题。在那个时候,Layer2 还不成熟,定制 Layer2 的成熟方法也根本不存在。因此 Axie Infinity 只能自己开发一条链,来自定义手续费。这带来了几个问题:
在不远的未来,迁移到 Layer2 或许是一个不错的选择,但是在 Layer2 开发终将面临一样的问题。应用并没有完全的自主性,还是会面临一些限制,所以最有前景的选择是定制化做一条 Layer2。如果那时候跨 Layer2 非常的成熟,Layer2 和以太坊的交互也很方便,定制化的 Layer2 的使用体验将无比丝滑。
Layer2 如何与 Layer1 结合也是一个有意思的方向。只有 Layer2 和 Layer1 良好结合,用户才更容易从 Layer1 迁移到 Layer2。这包含了更好的资产桥和通讯协议。
ZKEVM 是 ZKRU 的下一个里程碑。ZKEVM 分为三个级别:
除了 ZKEVM ,我们可能也会看到其他虚拟机,例如 ZKWASM 等。
zkLink 在 Solana 推出了 Groth16。ZKRU 在其他链上或许也有机会。ZKRU 可以赋予项目更大的自由,以及隐私性。对于企业来说,他们有必要保护客户的隐私。因此 Layer2 也是让这些企业上链的一个机会。
目前大家都在努力实现一个无需信任的跨链桥,但所有的桥都需要相信第三方。虽然这些桥都要求参与者抵押资产,但我们很难具体计算作恶的成本和收益。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。保护隐私分为三个阶段:
mint()
往往意味着铸造代币。函数隐私将隐藏函数的调用记录。目前隐私赛道的总市值约为 100 亿美元,约占整个加密货币市场的 0.45%。每日交易量约为 10 亿美元。
Tornado Cash 是一个基于智能合约的隐私交易工具。它可以用来匿名转账,现在支持以太坊, BSC,Polygon,Optimism,Arbitrum,Gnosis 和 Avalanche。
存款,获得凭证,提款。用户就可以完成一笔隐私转账。在新版 Nova 中,用户可以选择任意的提取金额。ZK 用于生成提款凭证。
下图展示了 Tornado Cash 的 TVL 和用户增长。
下图展示了 $TORN 的价格。$TORN 是 Tornado Cash 的治理凭证以及提供流动性的奖励。
Zcash 是一个使用 ZK-SNARK 来实现隐私交易的区块链。与基于智能合约的 Tornado Cash 不同,Zcash 使用了一条链来实现隐私。
下图展示了 Zcash 链上每日交易量。
下图是 $Zcash 的价格走势。
Zecrey 是一个支持以太坊、Polygon、BSC、Near 和 Avalanche 的隐私支付应用。它处于保护隐私的第一层,交易隐私。Zecrey 提供一个浏览器钱包,用户可以用它匿名转账,交易代币。这些匿名性都由 Zecrey Layer2 保证。因此用户需要先将钱存到 Zecrey Layer2 中才可以使用这些匿名功能。 Zecrey Layer2 是 ZKRU 基于 Plonk。Zecrey 还支持资产跨链。目前 Zecrey 每日交易量大约为 10 笔(数据来自区块浏览器)。
Suterusu 是一个支持以太坊、BSC、Fantom 和 Polygon 的隐私支付应用。它使用 Layer2 来保护用户的交易隐私。它还有一个跨链桥,可以在以太坊和 BSC 之间转移 $SUTER。未来它计划推出 NFT 匿名转账以及匿名拍卖。Suterus 采用 ZK-ConSnark,这种算法不需要信任设置。
Suterusu 共有 15k 用户以及 24k 笔转入。目前用户增速非常缓慢。Suterusu 的市值大约 1000 万美金。
Dark Forest 是一款多人网络游戏。玩家需要占领更多的星球,获得更多的资源。玩家可以向其他星球输送能量来占领它们。星球的位置是保密的。玩家需要利用哈希碰撞自己找到这些星球。ZK 被用来证明与位置有关的操作:
在 Dark Forest v0.6 第一轮中,有 1700 名玩家参加。其中 700 人得到了进入下一轮的机会。在第一轮中,玩家们一共提交了 200 万笔交易,花费了大约 1.5 万亿 Gas。假设它是在以太坊上,Gas Price 是 80,那么这些玩家的手续费总共是 120 ETH。
Stealth Airdrop 允许用户匿名地领取空投。用户首先使用他们满足空投领取条件的钱包来生成零知识证明,接着他们可以用其他钱包和这份证明来获得空投代币。
Stealth Airdrop 代表了 ZK 在治理方面的运用。在现实世界的治理中,我们也广泛应用匿名这个特性。例如在投票中,如果你发现有影响力的人物都投了赞成票,你也会受其影响,更有可能投出赞成票。因此匿名投票可以帮助用户独立投票。
在 2021 年,以太坊基金会对于 ZK 的资助主要集中在 ZKEVM 和治理方面。以太坊基金会主要资助了两个项目,其中一个就致力于解决投票贿赂问题。
A16Z 也实现了类似的东西 a16z/zkp-merkle-airdrop-contract。
这个项目在 ETHDanver 上发布。用户可以生成 ZK 证明来展示他们拥有一个 Buffiness,而不透露他们的个人身份信息。这是 ZK 在身份认证相关的应用。
隐私市场较小。隐私项目很早就出现了。Zcash 始于2016 年。然而,整个隐私市场只占加密货币市场的 0.45%。起步晚的 Layer2 也远超隐私市场。
将会受益于更高的隐私标准。在不牺牲易用性的情况下,用户会追求更好的隐私保护。特别是在手机行业,谷歌和苹果正在推动更严格的隐私标准。欧盟也提出保护消费者隐私的法规。像 Let's Encrypt 这样提供 SSL 证书的基础设施公司更严格的意思标准中受益。在未来,当 ZK 因为更好的隐私保护而会被这些巨头公司采用时,ZK 基础设施将有巨大的机会。
ZK 是金融机构入驻的必备条件。一些机构在尝试上链,他们有责任保护好客户的隐私。因此 ZK 在这个场景下将成为区块链的标配,来提供隐私功能。
有利于 DAO 治理和身份。匿名在民主治理有着重要应用。ZK 可以实现匿名投票,让投票者独立思考,不被他人的决定所干扰。身份验证也可以从 ZK 中受益。用户可以在不显示其实际地址的情况下展示其资产。
忽略 ZK,专注于产品的易用性。ZK 可以更好地保护隐私,但一个产品并不全是 ZK。ZK 是一种技术,我们更需要强调产品的易用性。通常,更好的隐私保护并不意味着易用性,但易用性是最关键的。因此,要更加关注易用性、市场和团队。
ZKRepel 在 GR13 中成功母子 5000 万美金。ZKRepel 是要给在线 Playground,开发者可以快速体验如何编写电路,并生成证明。ZKRepel 比较像早期的 Remix。
大环境上,我们看到了从本地开发到云开发的范式转变。在这之中有一些著名的产品,如Codesandbox,Codepen,Codespaces。有了这些产品,开发人员可以在任何地方任何时间使用他们的开发环境。开发者也可以快速建立新的开发环境。Github 提出面对日益复杂的软件开发,开发环境作为基础设施是必不可少的。Github 内部开发环境已经迁移到了自家的 Codespaces。
目前没有关于 ZK 开发者数据的明确统计。从 Github 上的数据来看,ZK 开发者比 Solidity 开发者少了 500 多倍。
以下项目专门自主或者投资 ZK 项目。
ZK 的前景是美好的,它可以让一些过去不可能的事情变成现实。近年来,ZK 领域发生了很多突破性的进展,例如更强的性能、可升级性和不需要信任初始化。这些改进都将 ZK 推向了应用阶段。因此,如果我们要看到一个新的 ZK 证明系统,我们可以从以下维度进行评判:
ZKEVM 是 ZKRU 的下一个里程碑,ZKEVM 有三个阶段:
ZKRU 刚刚进入应用阶段,生态并不完善。开发者们还没有发掘出 ZK 的所有潜力。人们仍不断从这些前沿理论中得到启发,以下是值得关注的方向:
ZK 的应用聚焦在两个方面:Rollup 和隐私。Rollup 比隐私有更好的前景。隐私在某种程度上和区块链的开放精神相违背。另外,隐私可能有合规问题。在 Web2 时代,我们没有看到隐私应用程序达到龙头的位置。所有应用的隐私保护水平在不断提高,但龙头应用往往不是主打隐私的引用,而是易用性最强的应用。隐私是有代价的,大多数情况下牺牲了用户最关心的易用性。
当我们看 ZK 隐私项目时,以下几点较为重要:
如果你想要了解更多 ZK,可以阅读这个教程和 https://github.com/ventali/awesome-zk。期待一下这份教程。
我在 Fundamental Labs 担任 Tech Associate。欢迎关注我,我的 Newsletter。你可以在这找到 FL。