观点投书》区块链的第三大技术革新 — ZK零知识证明应用

这篇文章以非技术人员的角度, 介绍零知识证明的应用场景、工作原理、发展现状和未来趋势,以期让无技术背景的读者了解零知识证明即将带来的重大变革。本文作者为新跃社科大学普惠金融节点 SUSS NiFT 研究员@Jesse_meta、Beosin研究员 @EatonAshton2、Least Authority安全研究员@kaplannie。
(前情提要:a16z:如何用一场魔术理解零知识证明(ZKP)? )
(背景补充:详解》为什麽以太坊需要「共识层ZK化」 )

本文目录

不管资讯是储存在网际网路上还是线下档案室,无论是出於主观故意还是客观意外,资讯泄露事件在今天已经屡见不鲜,无需多言。只要资讯是中心化储存,就会有受到单点攻击的危险。只要验证过程需要可信赖的第三方,就会存在道德风险且效率低下。资讯安全的解决至关重要,迫在眉睫。而零知识证明技术让使用者在保护自身隐私的前提下,更高效、更安全地完成验证。

如果说比特币是区块链带给现实世界的第一大发明,提供价值储存的新方式,以太坊的智慧合约是第二大里程碑事件,解锁创新的潜力,那麽零知识证明的应用是区块链发展史上第三大第三大技术革新,带来隐私和扩容。这既是 Web3 生态的重要一环,也是有潜力推动社会变革的重要基础技术。

1. 什麽是零知识证明

零知识证明(ZKP)是在 1985 年由 Shafi Goldwasser、Silvio Micali、Chales Rackoff 合着的论文《The knowledge complexity of interactive proof systems》首次提出的数学协议,除了某一要证明的事实之外,不会透露任何其他资讯。验证者无法获得生成证明的秘密资讯。举一个例子帮助大家理解:我要证明我知道某个人的电话号码,我只需要能够在众人面前拨通那人的电话就可以证明这一事实,不需要透露那人的真实号码。零知识证明提供了一种有效的近乎无风险的资料分享方式。利用零知识证明,我们可以保留对资料的所有权,极大地提高隐私保护,有望使资料泄露事件成为过去式。

零知识证明具有三个特性:

零知识证明存在极小的概率产生合理性误差,即一个作弊的证明者可能使验证者相信一个错误的宣告。零知识证明是概率性的证明,而不是确定性的证明,但我们可以通过一些技术将合理性误差降低到可以忽略不计。

2. 零知识证明的应用

零知识证明最重要的两个应用场景是隐私和可拓展。

2.1 隐私

零知识证明允许使用者在没有透露个人详细资讯的情况下,安全地分享必要的资讯来获得商品和服务,免受骇客攻击和个人身份资讯的泄露。随着数位和物理领域的逐渐融合,零知识证明的隐私保护功能对於 Web3 乃至 Web3 以外的资讯安全变得至关重要。如果没有零知识证明,使用者资讯就会存在受信任的第三方资料库,有受到骇客攻击的潜在危险。零知识证明在区块链中的第一应用案例是隐私币 Zcash,用来隐藏交易细节。

2.1.1 身份资讯保护和验证

在网上活动中,我们经常需要提供诸如姓名、出生日期、电子邮件、复杂的密码来证明我们是有合法使用许可权的使用者。因此,我们也常在网上留下了不愿透露的敏感资讯。如今接到直呼我们姓名的诈骗电话已经屡见不鲜,可见个人资讯泄露的情况十分严重。

我们可以利用区块链技术,赋予每个人一个包含个人资料的特殊加密数位识别符号。这个数位识别符号可以构建去中心化身份,且不可能在其所有者不知情的情况下被伪造或改变。去中心化身份可以由使用者来控制对个人身份的访问许可权,在不透露护照细节的情况下证明公民身份,简化了认证过程,还减少了使用者由於遗忘密码而失去访问许可权的事件发生。零知识证明由能证明使用者身份的公开资料和带有使用者资讯的隐私资料生成,可用於使用者访问服务时的身份验证。这既减少了繁琐的验证流程,提升了使用者体验,又避免使用者资讯的中心化储存。

此外,零知识证明还可以在构建私人信誉系统,允许服务机构在使用者不暴露身份的情况下验证其是否符合某些信誉标准。使用者可以从 Facebook、Twitter 和 Github 等平台在掩盖具体来源帐号的前提下,匿名输出声誉。

2.1.2 匿名支付

使用银行卡支付的交易细节通常对多方可见,包括支付提供商、银行和政府等相关方,这在一定程度上暴露了普通公民的隐私,使用者需要信任相关方不作恶。

加密货币可以使支付摆脱第三方,直接进行点对点交易。但目前主流公链上的交易公开可见,虽然使用者地址匿名,依然存在通过链上的关联地址和链下如交易所 kyc、Twitter 资讯等资料分析来找到现实世界身份。如果知道一个人的钱包地址,相当於可以随时检视个人的银行帐户余额,甚至可能对使用者身份、财产造成威胁。

而零知识证明可以从隐私币、隐私应用和隐私公链三个层次来提供匿名支付。隐私币 Zcash,隐藏了包括发送方、接收方地址、资产型别、数量和时间等交易细节。Tornado Cash 是以太坊上的去中心化应用,使用零知识证明混淆交易细节来提供隐私转帐(但也多被用於骇客洗钱)。Aleo 是旨在从协议层面为应用程式提供隐私功能的 L1 区块链。

延伸阅读:解读Tornado Cash混币器:监管者的眼中钉,却是最精妙的ZK零知识应用

2.1.3 诚实行为

零知识证明可以在保留隐私的前提下促进诚实行为。协议可以要求使用者提交零知识证明来证明其诚实行为。由於零知识证明的合理性 (错的对不了),使用者必须根据协议要求做出诚实的行为才可以提交有效的证明。

MACI(Minimal Anti-Collusion Infrastructure,最小反串谋基础设施)就是一个促进诚实的应用场景,防止在链上投票或其他形式的决策过程中发生串谋。该系统利用金钥对和零知识证明技术来实现这一目标。在 MACI 中,使用者将他们的公钥注册到一个智慧合约中,并通过加密的讯息将他们的投票传送到合约中。MACI 的防串谋特性允许投票者改变他们的公钥,以防止其他人了解他们的投票选择。协调者在投票期结束时用零知识证明来证明他们已经正确处理了所有讯息,且最终的投票结果是所有有效票数的总和。这保证了投票的完整性和公正性。

2.1.4 个人资讯核查

当我们想要获取贷款时,可以从公司拿一个数位收入证明来申请贷款。这个证明的合法性容易在密码学上得到检查。银行可以用零知识证明来验证我们的收入是否达到了规定的最低限度,但得不到敏感的具体资讯。

2.1.5 结合机器学习挖掘私有资料潜能

在训练机器学习模型时,通常需要大量的资料。通过使用零知识证明,资料拥有者可以证明他们的资料满足模型训练的要求,而无需实际公开这些资料。这有利於让私有资料发挥作用,并且实现货币化。

此外,零知识证明可以允许模型建立者证明他们的模型满足某些效能指标,但无需公开模型的细节,以防止他人复制或篡改他们的模型。

2.2 可扩容

随着区块链使用者的增多,区块链上需要进行大量的计算,造成了交易拥堵。有些区块链会走分片的扩容路线,但这需要对区块链的基础层进行大量的复杂的修改,可能会威胁到区块链的安全性。另外一个较为可行的方案是走 ZK-Rollup 路线,利用可验证计算,将计算外包给另外一条链上的实体来执行,然後将零知识证明和可验证结果一起提交到主链上以供验证真实性。零知识证明保证交易的真实性,主链只需将结果更新到状态,不需要储存细节或重放计算,也不需要等待其他人来讨论交易的真实与否,极大地提高效率和扩容能力。开发者可藉助零知识证明,设计可以执行在如手机这样的普通硬体上的轻节点 dapps,更有利於 Web3 走向大众。

零知识证明的扩容既可运用在在一层网路上,如 Mina Protocol,也可以运用二层网路 ZK – rollups。

延伸阅读:科普 | ZK零知识证明是什麽?V神认为十年後与区块链一样重要

3. 零知识证明如何工作

Dmitry Laverenov (2019)把零知识证明结构分为互动式和非互动式。

3.1 互动式零知识证明

互动式零知识证明的基本形式由三个步骤构成:证据、挑战者和回应

这个过程可以重复多次,直到证明者在不知道秘密资讯却猜出正确答案的概率变得足够低。举一个简化的数学例子,如果证明者在不知道秘密资讯却能猜出正确答案的概率为 1/2,重复互动十次,证明者每次都命中的概率仅有万分之 9.7,想让验证者错误地认可虚假证明的可能性极低。

3.2 非互动式零知识证明

互动式零知识证明具有局限性,一方面是需要证明者和验证者同时存在并进行重复验证,另一方面是每计算一个新的证明都需要证明者和验证者传递一组资讯,证明不可在独立的验证中重复使用。

为了解决互动式零知识证明的局限性,Manuel Blum, Paul Feldman, 和 Silvio Micali 提出了非互动式零知识证明,由证明者和验证者共享金钥,且仅需进行一轮验证来使得零知识证明更加有效。证明者将秘密资讯通过特殊演算法来计算生成一个零知识证明,传送给验证者。验证者使用另外一种演算法检查证明者是否知道秘密资讯。该零知识证明一旦生成,任何有共享金钥和验证演算法的人都可以进行验证。

非互动式零知识证明是零知识证明技术的一大突破,促进了今天使用零知识证明系统的发展。主要方法有 ZK-SNARK 和 ZK-STARK。

延伸阅读:L2|全面分析主流ZK项目:StarkNet、zkSync Era、Scroll..构建Web3未来

4. 零知识证明的主要技术路径

Alchemy(2022)将零知识证明的技术路径分为 ZK-SNARK、ZK-STARK 和 递回 ZK-SNARK。

4.1 ZK-SNARK

ZK-SNARKs 是一个零知识的简洁的非互动式的证明。

公链要确保在网路上执行交易的正确性,需要通过让其他电脑(节点)重新执行每笔交易来实现。但这种方法会使每个节点重新执行每笔交易,会减慢网路的速度,限制扩容性。节点还必须储存交易资料,导致区块链的规模呈指数级增长。

对於这些限制,ZK-SNARK 就发挥了作用。它可以证明在链外进行的计算的正确性,而不需要节点重放计算的每一步。这也消除了节点对储存多余交易资料的需求,提高网路的吞吐量。

使用 SNARK 验证链外计算将计算编码为一个数学表示式来构成有效性证明。验证者检查证明的正确性。若证明通过了所有检查,那麽底层计算就被认为是有效的。有效性证明的大小要比它所验证的计算小很多倍,因此我们称 SNARKs 是简洁的原因。

大多数使用 ZK-SNARK 的 ZK Rollup 遵循以下步骤。

1. L2 的使用者签署交易後提交给验证者。

2. 验证者利用密码学将多个交易压缩生成相应的有效性证明(SNARK)。

3. L1 链上的智慧合约对有效性证明进行验证,决定了这批交易是否释出到主链上。

值得一提的是 ZK-SNARK 需要进行可信设定。在这阶段,金钥生成器会获取一个程式和一个秘密引数来生成两个可用的公钥,分别用於建立证明和验证证明。这两个公钥只需通过一个可信的设定仪式生成一次公共引数,就可供希望参与零知识协议的各方多次使用。使用者需要相信可信设定仪式的参与者不作恶,且没有办法评估参与者的诚实性。知道秘密引数便可生成假证明,欺骗验证者,因此存在潜在安全隐患。目前有研究员在探索 ZK-SNARK 无需信任假设的方案。

优势

1. 安全性

ZK rollup 被认为比 OP rollup 更安全的扩容方案,因为 ZK-SNARK 使用了先进的加密安全机制,很难欺骗验证者和进行恶意行为。

2. 高吞吐量

ZK-SNARK 减少了以太坊底层的计算量,缓解了主网堵塞情况,链下计算分担交易费用,带来更快的交易速度。

3. 小证明尺寸

SNARK 证明的小尺寸使它们容易在主链上得到验证,这意味着验证链下交易的 Gas Fee 较低,减少了使用者的成本。

局限

1. 相对中心化

大多数时候都依赖於一个可信的设定。这和区块链去信任的初衷相违背。

用 ZK-SNARK 生成有效性证明是一个计算密集型的过程,证明者必须投资於专门的硬体。这些硬体价格昂贵,只有少数人负担得起,因此 ZK-SNARK 的证明过程是高度集中的。

2.ZK-SNARK 使用椭圆曲线密码学(ECC)来加密用於产生有效性证明的资讯,目前相对安全,但量子计算的进步可能会打破其安全模型。

使用 ZK SNARK 的专案

Polygon Hermez

Polygon 在 2021 年 以 2.5 亿美元并购 Hermez,成为首个两个区块链网路全面并购的案例。Hermez 给 Polygon 快速增长的使用者群带来的 ZK 技术和工具,使 Polygon 获得开发 zkEVM 的支援。Hermez 1.0 是支付平台,把一批交易在链外执行,允许使用者便捷地把 ERC-20 代币从一个 Hermez 帐户转移到另一个 Hermez 帐户,每秒交易可达 2000 次。

Hermez 2.0 作为一个零知识的 zkEVM 以透明方式执行以太坊交易,包括具有零知识验证的智慧合约。其可与以太坊完全相容,无需对智慧合约程式码进行太多改动,方便开发者将 L1 的专案部署到 Polygon Hermez 上。Hermez 1.0 使用 SNARK-proofs,2.0 中同时使用 SNARK-proofs 和 STARK-proofs。在 2.0,使用 STARK-proof 证明链外交易的有效性。但 STARK-proof 在主链上验证的成本很高,因此引入 SNARK-proof 来验证 STARK 。

延伸阅读:分析Polygon四大ZK解决方案:有何特点及优势?

zkSync

Matter Labs 於 2020 年推出的 zkSync 1.0 不支援智慧合约,主要用於交易或转帐。支援智慧合约的 ZkSync 2.0 已於 2023 年 3 月份公开上线主网。

ZkSync 把以太坊上的智慧合约原始码 Solidity 编译为 Yul 来实现 EVM 的相容性。Yul 是可以编译成不同 EVM 的位元组码的中间语言。使用 LLVM 编译器框架可以将 Yul 程式码重新编译为为 zkSync 的 zkEVM 设计的自定义、电路相容的位元组码集。通过这种方法,免除通过更高级别的程式码对 EVM 执行中的所有步骤进行 zk 证明,从而在保持高效能的同时更容易使证明过程去中心化。未来还可以通过构建新的编译器前端来新增对 Rust、Javascript 或其他语言的支援,增加 zkEVM 架构的灵活性和更多的开发者。

Aztec

Aztec 是第一个混合型 zkRollup,在一个环境中同时实现公共和私有智慧合约的执行。这是一个零知识的执行环境,而非 zkEVM。通过将公共和私有执行合并到单个混合汇总中来实现机密性,例如公开 AMM 的隐私交易、公开游戏中的私密对话、公开 DAO 的隐私投票等等。

4.2 ZK-STARK

ZK-STARK 不需要可信的设定。ZK-STARK 是 for Zero-Knowledge Scalable Transparent Argument of Knowledge 的缩写。相比 ZK-SNARK, ZK- STARK 有更好的可拓展性和和透明性。

优势

1. 去信任

ZK-STARK 公开可验证随机来取代可信设定,减少对参与人的依赖,提高协议安全性。

2. 更强的扩容能力

即使底层计算的复杂性呈指数级增长,ZK-STARK 依然保持了较低的证明和验证时间,而非像 ZK-SNARK 线性增长。

3. 更高的安全保证

ZK-STARK 使用抗碰撞hash值进行加密,而不是 ZK-SNARK 中使用的椭圆曲线方案,可抗量子计算的攻击。

局限

1. 更大的证明尺寸

ZK-STARK 证明尺寸更大,使得在主网验证的成更更高。

2. 较低的采用率

ZK-SNARK 是零知识证明是区块链中的第一个实际应用,因此大多数 ZK rollup 采用 ZK-SNARK, 具有更成熟的开发者系统和工具。尽管 ZK-STARK 也有以太坊基金会的支援,但是相比之下采用率不足,基础工具还有待完善。

哪些专案使用 ZK-STARK?

Polygon Miden

Polygon Miden,一个基於 Ethereum L2 的扩充套件解决方案,利用 zk-STARK 技术将大量 L2 交易整合到单一的以太坊交易中,从而提升了处理能力并降低了交易成本。在不进行分片的情况下,Polygon Miden 可以在 5 秒内产生一个区块,并且其 TPS 可以达到 1000 以上。而在进行分片後,其 TPS 可高达 10,000。使用者只需要 15 分钟,就能将资金从 Polygon Miden 提现到 Ethereum。Polygon Miden 的核心功能是一个基於 STARK 的图灵完备虚拟机器 ——Miden VM,它使得合约的形式化验证变得更为简便。

StarkEx 和 StarkNet

StarkEx 是一个需要许可的、为特定应用程式订制的扩充套件解决方案的框架。专案可以使用 StarkEx 来进行低成本的链下计算,生成证明执行正确性的 STARK 证明。这样的证明包含 12,000–500,000 笔交易。最後将证明发送到链上的 STARK 验证器,验证正确後接受状态更新。在 StarkEx 上部署的应用程式包括永续期权 dYdX、NFT L2 Immutable、体育数位卡牌交易市场 Sorare 和多链 DeFi 聚合器 rhino.fi。

StarkNet 是一个无需许可的 L2,任何人员都可以在其中部署以 Cairo 语言开发的智慧合约。部署在 StarkNet 上的合约之间可以进行互动来构建新的可组合协议。与应用程式负责提交交易的 StarkEx 不同,StarkNet 的排序器批量交易并发送它们进行处理和证明。StarkNet 更适合需要与其他协议同步互动或超出 StarkEx 应用范围的协议。随着 StarkNet 开发的进展,基於 StarkEx 的应用将能够移植到 StarkNet,享受可组合性。

延伸阅读:L2|全面分析主流ZK项目:StarkNet、zkSync Era、Scroll..构建Web3未来

ZK-SNARK 和 ZK-STARK 对比

4.3 递回 ZK-SNARK

普通 ZK rollup 只能处理一个交易区块,这限制了他们可以处理的交易数量。递回 ZK-SNARK 可以验证一个以上的交易区块,把不同的 L2 区块生成的 SNARK 合并为一个单一的有效性证明,提交给 L1 链。一旦 L1 链上合约接受了提交的证明,所有这些交易都会变得有效,极大地增加了可以用零知识证明最终完成的交易数量。

Plonky2 是 Polygon Zero 的一种使用递回 ZK-SNARK 来增加交易的新证明机制。递回 SNARK 通过将几个证明聚集到一个递回证明中,来扩容证明生成过程。Plonky2 使用同样的技术来减少生成新区块证明的时间。Plonky2 将成千上万的交易并行生成证明,再递回地将它们聚合成一个区块证明,因此生成速度很快。而普通的证明机制试图一次性生成整个区块证明,效率更低。此外,Plonky2 还可以在消费级装置上生成证明,解决了 SNARK 证明常伴随的的硬体集中化问题。

5. Zero Knowledge Rollup VS Optimistic Rollup

ZK-SNARK 和 ZK-STARK 已经成为区块链扩容专案的核心基础设施,特别是 Zero Knowledge Rollup 方案中。Zero-Knowledge Rollup 就是指是指使用零知识证明技术将所有的计算转移到链下处理来减轻网路堵塞的一种以太坊的二层扩容解决方案。Zero Knowledge Rollup 的主要优点是可以大幅提高以太坊的交易吞吐量,同时保持较低的交易费用,且交易一旦打包进 rollup,就能立即确定。

目前以太坊的 L2 扩容方案除了 Zero Knowledge Rollup, 还有 Optimistic Rollup。在 Optimistic Rollup 执行的交易被预设为有效并立即执行。只有当发现欺诈性交易时(有人提交欺诈证明),该交易才会被撤销。所以安全性是低於 Zero Knowledge Rollup 的。为了防止欺诈交易,Optimistic Rollup 设有一段挑战期,如果交易需要在挑战期过後才能最终确定。这可能导致使用者在取回他们的资金时需要等待一段时间。

最初设计 EVM 的时候没有考虑到使用零知识证明技术。以太坊创办人 Vitalik 认为短期内 Zero Knowledge Rollup 存在技术上的复杂性,但最终在扩容战争中会战胜 Optimistic Rollup。以下是 Zero Knowledge Rollup 和 Optimistic Rollup 的对比。

来源:SUSS NiFT, ChatGPT

6. 零知识证明技术的未来前景如何?

零知识证明技术领域处於独特的地位:近年来,经过大量努力致力於推进该领域的研究,许多成果在密码学和安全通讯领域都是相当新的。因此,许多有趣的问题还有待学术界和开发者社群解答。与此同时,零知识证明技术被用於各类专案,展现了零知识技术的挑战并拓展了其要求。

零知识证明技术值得关注的领域之一是零知识证明技术的後量子安全性的讨论。可公开验证的 SNARK(简洁的非互动式知识论证)是零知识技术领域的关键组成部分。然而,大多数广泛使用的可公开验证的 SNARK 方案并不被认为是量子安全的。例如 Groth16、Sonic、Marlin、SuperSonic 和 Spartan。这些方案所依赖的数学问题可在量子电脑的帮助下会被有效解决,这大大损害了它们在後量子世界中的安全性。

我们发现学术界正在积极寻找量子安全的零知识证明,该证明可用於各种没有预处理阶段的语句。目前最先进的量子安全零知识证明的例子包括 Ligero、Aurora、Fractal、Lattice Bulletproofs 和 LPK22 等方案。Ligero、Aurora 和 Fractal 基於hash函式,而 Lattice Bulletproofs 和 LKP22 基於点阵函式。这两个函式都被认为是量子安全的。推广这些方案并提高其效率已成为趋势。

我们对零知识技术未来的另一个期望是它抵抗攻击的能力和实现相关的程式码成熟度。监於编写的程式码量的增加,将会有更多安全且经过审查的库和最佳实践用於各种零知识证明技术。当然,未来也会有更多将等待被发现和沟通的常见错误。我们期望该领域成熟并被高度采用,努力标准化协议并确保不同实现之间的互操作性, 一个名为 ZKProof 的专案已经开始这样做了。

零知识技术社群中将继续存在的另一个趋势是在高效演算法和可能的特殊硬体上进行更多工作。近年来,我们已经看到证明大小的减小以及证明者和验证者变得更加高效。演算法、特殊硬体和计算优化的进步可能会带来更快、更具扩容性的实现。

虽然现有演算法的效率有利於未来零知识证明技术的使用者,但我们也期望看到零知识证明的功能不断扩大。过去,我们在实现预处理 ZK-SNARK 时遇到过很多例项。现在我们发现越来越多的可升级 ZK-SNARK 例项。此外,一些零知识证明技术的使用更多是因为其简洁性,而不是其零知识能力。

最後,零知识证明技术的另一个趋势是机器学习与零知识证明的交叉(ZKML)。这个想法需要在多方环境中训练大型语言模型,并使用零知识技术来验证计算。这对於当前人工智慧非常有用。该领域有兴起专案的可能。

延伸阅读:DeFi也行!零知识+AI机器学习「ZKML」的优势和挑战

结束语

本文由区块链安全联盟成员共同撰写,通过本文的介绍,我们可以了解到零知识证明在区块链领域的广泛应用,技术路径,发展趋势与所面临的挑战。 相信随着硬体技术与密码学的发展,零知识证明将在未来取得更多突破,为数位世界提供更快速,更安全的应用服务。

📍相关报导📍

Immutable zkEVM测试网上线!12款游戏开发中

zkSync提出「链上法院」,能解决Layer2潜在的中心化风险吗?

狂!zkSync空投猎人自建DEX、发币刷量,拥有超21800个女巫钱包

Leave a Reply

Your email address will not be published. Required fields are marked *