作者:Hannes Huitula

翻译:白话区块链

万字技术雄文:ZK会干掉模块化堆栈吗?

1、区块链是什么以及它是如何扩展当前的计算范式的?

区块链(名词):一种协调机器,使来自世界各地的参与者能够在一组共同约定的规则下协作,而无需任何第三方来促成。

计算机被设计来做三件事:存储数据、计算,并与其他计算机和人类进行通信。区块链增加了第四维:对这三件事(存储、计算和通信)按照约定的方式发生的额外保证。这些保证使得陌生人之间可以合作,而无需一个可信赖的第三方来促成(去中心化)。

万字技术雄文:ZK会干掉模块化堆栈吗?

这些额外的保证可以是经济性的(基于信任博弈论和激励 / 惩罚机制)或者是密码学的(基于数学的信任),但大多数应用程序利用了两者的结合——密码经济学。这与目前主要基于声誉的系统形成了鲜明对比。

虽然 Web3 经常被描述为「读取、写入、拥有」,但我们认为对于互联网的第三次演变,更好的概念应该是「读取、写入、验证」,因为公共区块链的关键优势在于保证计算和轻松验证这些保证是否被遵守。拥有可以是保证计算的一个子集,如果我们建立的数字化产品可以被买卖和控制。然而,许多区块链的用例受益于保证计算,但并不直接涉及拥有权。例如,在完全在链上的游戏中,如果你的健康值是 77/100,你拥有这个健康值吗,还是仅仅按照共同约定的规则在链上可执行?

Web3 = Read, Write, Verify

2、ZK 和模块化——将加速的两个趋势

区块链提供了很多令人兴奋的内容,但去中心化模型也通过额外的功能(如 P2P 通信和共识)增加了开销和低效性。此外,大多数区块链仍通过重新执行来验证正确的状态转换,这意味着网络上的每个节点都必须重新执行交易以验证所提议的状态转换的正确性。这会造成浪费,与中心化模型形成了鲜明对比,后者只有一个实体执行。虽然去中心化系统总是包含一些开销和复制,但目标应该是在效率上趋近于一个中心化基准。

尽管基础设施在过去十年中有了显著改善,但在区块链可以处理互联网级别规模之前还有很多工作要做。我们看到沿着两个主要轴线存在权衡——表达能力和难度——并认为模块化能够使权衡前沿的快速实验加速,而零知识证明则扩展了这一前沿:

表达能力——你可以创造哪些保证?包括可扩展性(成本、延迟、吞吐量等)、隐私(或信息流管理)、可编程性和可组合性。

难度——这些保证有多难实现?包括安全性、去中心化和用户及代码安全性。

万字技术雄文:ZK会干掉模块化堆栈吗?

模块化是系统组件能够分离和重组的程度。通过更快的反馈循环和更低的进入门槛,需要更少的资本(经济和人力)——模块化能够加快实验和专业化的速度。模块化与集成化之间的问题不是二元的,而是一个实验的光谱,通过实验找出哪些部分应该解耦,哪些不应该。

另一方面,零知识证明(Zero Knowledge Proofs,ZKPs)使一方(证明者)能够向另一方(验证者)证明他们知道某事是真实的,而不透露除了其有效性之外的任何附加信息。这可以通过避免重新执行(从所有执行验证转变为一个执行,所有验证)来增加可扩展性和效率,同时通过启用隐私(受限制)来增加表达能力。ZKPs 通过用更强的保证替换较弱的密码经济学保证来提高保证的难度,这通过将权衡前沿推向外部来表示(参考上面的图表)。

万字技术雄文:ZK会干掉模块化堆栈吗?

我们相信模块化和「零知识证明在一切中的应用」都是会继续加速的趋势。虽然两者都提供了探索该领域的有趣视角,但我们特别关注两者的交叉点。我们感兴趣的两个关键问题是:

1)模块化堆栈的哪些部分已经融入了零知识证明,哪些尚待探索?

2)零知识证明能够解决哪些问题?

然而,在我们深入探讨这些问题之前,我们需要对 2024 年的模块化堆栈有一个更新的视角。

3、2024 年的模块化堆栈

通常用的四个组件(执行、数据发布、共识、结算)构成的模块化堆栈图像,对于简单的心智模型来说很有用,但我们觉得这已经不再是一个足够准确的代表,因为模块化领域的发展已经非常迅速。进一步的解构导致了新的组件,这些组件以前被认为是较大部分的一部分,同时也创造了新的依赖关系,需要在不同组件之间实现安全的互操作性(稍后我们会详细介绍)。鉴于这个领域的发展速度,要及时了解堆栈不同层面的所有创新可能会很困难。

早些时候对 web3 堆栈的探索尝试包括 Kyle Samani(Mult1C0in)在 2018 年首次发表并在 2019 年更新的内容。它涵盖了从去中心化的最后一英里互联网访问(比如 Helium)到终端用户密钥管理的一切。虽然其中的原则可能可以重复利用,但一些部分,比如证明和验证,却完全缺失了。

考虑到这些因素,2024 年我们尝试创建了一个模块化堆栈的更新表示,扩展了现有的四部分模块化堆栈。它按组件而非功能进行分割,这意味着点对点网络,例如,包含在共识中而不是将其拆分为单独的组件——主要是因为很难围绕它建立协议。

万字技术雄文:ZK会干掉模块化堆栈吗?

4、在模块化堆栈中的零知识证明(ZK)

现在我们对模块化堆栈有了更新的视角,我们可以开始关注真正的问题,即 ZK 已经渗透到堆栈的哪些部分,以及引入 ZK 可以解决哪些未解决的问题(无论是避免重新执行还是隐私功能)。在我们深入研究每个组件之前,以下是我们的研究结果概要。

万字技术雄文:ZK会干掉模块化堆栈吗?

1)用户操作抽象化

当前的区块链用户需要在多个链、钱包和接口之间导航,这是繁琐的,并且成为更广泛采用的摩擦。用户操作抽象化是一个总称,用于尝试将这种复杂性抽象化,让用户只需与一个接口互动(例如特定应用程序或钱包),所有复杂性都发生在后端。一些基础级别的抽象化示例包括:

账户抽象化(AA)使智能合约能够进行交易,而无需每个操作都要求用户签名(可编程加密账户)。它可以用于定义谁可以签名(密钥管理)、签署什么(交易负载)、如何签署(签名算法)以及何时签署(交易批准条件)。这些功能的组合使得像使用社交登录与 dApp 互动、双因素认证(2FA)、账户恢复和自动化(自动签署交易)等事情成为可能。尽管讨论通常集中在以太坊(2023 年春季通过的 ERC-4337),但许多其他链已经内置了本地账户抽象化(Aptos、Sui、Near、ICP、Starknet 和 zkSync)。

链抽象化允许用户在不同链上签署交易,同时只与一个账户互动(一个接口,多个链)。许多团队正在研究这个问题,包括 Near、ICP 和 dWallet。这些解决方案利用 MPC 和链签名,将其他网络的私钥分成几个小部分并在源链上的验证者之间共享,他们签署跨链交易。当用户想要与另一条链进行交互时,需要足够数量的验证者签署交易以满足阈值加密。这保留了安全性,因为私钥从未完全共享在任何地方。但它确实面临验证者勾结的风险,这就是为什么底层链的密码经济安全性和验证者去中心化仍然非常相关的原因。

意图,在高层次上,将用户的愿望和需求转化为可以由区块链执行的操作。这需要意图解决者——专门的链下代理,负责找到用户意图的最佳解决方案。已经有几个应用程序使用了专门的意图,例如 DEX 聚合器(“最佳价格”)和桥接聚合器(“最便宜 / 最快的桥接”)。通用意图结算网络(Anoma、Essential、Suave)旨在使用户更容易表达更复杂的意图,并使开发者能够构建以意图为中心的应用程序。然而,仍然有许多未解决的问题,包括如何形式化这个过程、意图中心语言会是什么样子、是否总是存在最佳解决方案以及如何找到它。

现有的 ZK 集成

AA x ZK 身份验证:一个例子是 Sui 的 zkLogin,它允许用户使用熟悉的凭据(如电子邮件地址)进行登录。它使用 ZKPs 来防止第三方将 Sui 地址与其对应的 OAuth 标识符进行关联。

AA 钱包的更高效签名验证:在 AA 合约中验证交易可能比传统账户(EOA)发起的交易显着更昂贵。Orbiter 尝试通过一个捆绑服务来解决这个问题,该服务利用 ZKPs 来验证交易签名的正确性,并维护 AA 账户的 nonce 值和 gas 余额(通过 Merkle 世界状态树)。通过证明聚合和将链上验证成本平均分配给所有用户,这可以实现显着的成本节约。

ZKPs 可能解决的开放性问题

最佳执行或意图履行的证明:虽然意图和 AA 可以将用户的复杂性抽象化,但它们也可能作为一种中心化的力量,并要求我们依赖专门的参与者(解决者)来找到最佳执行路径。与其仅仅信任解决者的善意,ZKPs 可能被用来证明在解决者取样的路径中选择了用户的最佳路径。

意图结算的隐私保护:像 Taiga 这样的协议旨在实现完全保护意图结算的功能,以保护用户的隐私——这是在向区块链网络添加隐私(或至少保密性)方面的更广泛移动的一部分。它使用 ZKPs(Halo2)来隐藏关于状态转换的敏感信息(应用类型、参与方等)。

AA 钱包的密码恢复:这个提案的想法是使用户在丢失私钥时能够恢复他们的钱包。通过在合约钱包上存储哈希(密码,nonce),用户可以借助他们的密码生成一个 ZKP 来验证这是他们的账户,并请求更改私钥。确认期(3 天或更长时间)用作防止未经授权的访问尝试的保障。

2)顺序化

在加入区块之前,交易需要被排序,这可以通过多种方式实现:按照提议者的盈利能力排序(最高支付的交易优先),按照提交的顺序排序(先进先出),给予来自私有内存池的交易优先级等等。

另一个问题是谁来排序交易。在模块化的世界中,有多个不同的参与方可以做到这一点,包括滚动打包器(中心化或去中心化)、L1 排序(基于滚动打包)、以及共享排序网络(多个滚动打包使用的去中心化排序网络)。所有这些都有不同的信任假设和扩展能力。在实践中,交易的实际排序和打包成区块也可以由专门的参与方(区块构建者)在协议之外完成。

现有的 ZK 集成

验证内存池正确加密:Radius 是一个具有实用可验证延迟加密(PVDE)的加密内存池的共享排序网络。用户生成一个 ZKP,用于证明解决时间锁谜题将导致对有效交易的正确解密,即交易包括有效的签名和 nonce,并且发送者有足够的余额支付交易费用。

ZKPs 可能解决的开放性问题

可验证的排序规则(VSR):将提议者 / 排序者置于一组关于执行顺序的规则之下,并附加额外的保证这些规则被遵循。验证可以通过 ZKPs 或欺诈证明进行,后者需要一个足够大的经济保证金,如果提议者 / 排序者行为不端则会被削减。

3)执行(扩展写入)

执行层包含了状态更新的逻辑,也是智能合约执行的地方。除了返回计算结果之外,zkVMs 还能够证明状态转换是否正确执行。这使得其他网络参与者可以通过仅验证证明来验证正确的执行,而无需重新执行交易。

除了更快更高效的验证之外,可证明执行的另一个好处是能够进行更复杂的计算,因为您不会遇到气体和有限链上资源的典型问题。这为在区块链上运行计算更为密集的全新应用开启了大门,并利用了可保证的计算。

现有的 ZK 集成

  • zkEVM 滚动打包:一种特殊类型的 zkVM,优化以与以太坊兼容并证明 EVM 执行环境。然而,与以太坊兼容性越高,性能的折衷就越大。2023 年推出了几种 zkEVM,包括 Polygon zkEVM、zkSync Era、Scroll 和 Linea。Polygon 最近宣布推出了他们的类型 1 zkEVM 证明者,可以以每个区块 $0.20-$0.50 的价格证明主网以太坊区块(即将推出的优化将进一步降低成本)。RiscZero 也有一种解决方案,可以证明以太坊区块,但成本较高,并且受限的基准测试。
  • 替代性 zkVMs:一些协议选择了另一条路径,优化了性能 / 可证性(Starknet、Zorp)或开发人员友好性,而不是试图最大程度地与以太坊兼容。后者的例子包括 zkWASM 协议(Fluent、Delphinus Labs)和 zkMOVE(M2 和 zkmove)。
  • 专注于隐私的 zkVMs:在这种情况下,ZKPs 用于两个目的:避免重新执行和实现隐私。虽然仅通过 ZKPs 可以实现的隐私受到限制(只有个人私有状态),但即将推出的协议为现有解决方案增加了很多表达能力和可编程性。例子包括 Aleo 的 snarkVM、Aztec 的 AVM 和 Polygon 的 MidenVM。
  • ZK 协处理器:允许在链外数据上进行链上计算(但没有状态)。ZKPs 用于证明正确执行,比乐观协处理器更快地结算,但成本存在折衷。考虑到生成 ZKPs 的成本和 / 或难度,我们看到一些混合版本,例如 Brevis coChain,允许开发人员在 ZK 或乐观模式之间进行选择(在成本和保证难度之间进行折衷)。

ZKPs 可能解决的开放性问题

纳入 zkVM:大多数基础层(L1s)仍然使用重新执行来验证正确的状态转换。将 zkVM 纳入基础层将避免这种情况,因为验证者可以验证证明。这将提高操作效率。大多数关注的焦点是以太坊,希望有一个纳入 zkEVM 的基础层,但许多其他生态系统也依赖重新执行。

zkSVM:虽然 SVM 今天主要在 Solana L1 中使用,但像 Eclipse 这样的团队正在尝试利用 SVM 进行在以太坊上结算的滚动。Eclipse 还计划在 SVM 中使用 Risc Zero 进行 ZK 欺诈证明,以应对 SVM 中状态转换的潜在挑战。然而,一个完整的 zkSVM 尚未被探索——可能是由于问题的复杂性以及 SVM 被优化用于除可证性之外的其他事物。

4)数据查询(读取扩展)

数据查询,或从区块链读取数据,是大多数应用的重要组成部分。尽管近年来的讨论和努力大多集中在扩展写入(执行)上,但由于两者之间的不平衡(特别是在去中心化环境中),扩展读取更为重要。读 / 写比例在不同区块链之间有所不同,但一个数据点是 Sig 的估计,Solana 上对节点的所有调用中有超过 96% 是读取调用(基于 2 年的经验数据)——读 / 写比例为 24:1。

扩展读取包括通过专用的验证者客户端(如 Solana 上的 Sig)提高性能(每秒更多的读取)以及实现更复杂的查询(将读取与计算结合),例如通过协处理器的帮助。

另一个角度是去中心化的数据查询方法。今天,大多数区块链中的数据查询请求都由信任的第三方(基于声誉)进行处理,例如 RPC 节点(Infura)和索引器(Dune)。更去中心化选项的例子包括 The Graph 和存储证明运营商(也是可验证的)。还有一些尝试创建去中心化 RPC 网络,例如 Infura DIN 或 Lava Network(除了去中心化 RPC,Lava 还计划后续提供额外的数据访问服务)。

现有的 ZK 集成

存储证明:允许从区块链查询历史数据和当前数据,而无需使用信任的第三方。ZKPs 用于压缩并证明正确的数据已被检索。在这个领域正在建设的项目示例包括 Axiom、Brevis、Herodotus 和 Lagrange。

ZKPs 可能解决的开放性问题

私有状态的高效查询:隐私项目通常使用 UTXO 模型的变体,这比账户模型具有更好的隐私特性,但代价是对开发人员友好度的牺牲。私有 UTXO 模型也可能导致同步问题——自 2022 年以来,Zcash 在经历了隐私交易量显著增加后就一直在努力解决这个问题。钱包必须在能够使用资金之前与链同步,因此这对网络运作来说是一个非常基本的挑战。为了预期这个问题,Aztec 最近发布了一个关于笔记发现想法的 RFP,但目前还没有找到明确的解决方案。

5)证明

随着越来越多的应用程序纳入 ZKPs,证明和验证迅速成为模块化堆栈的重要组成部分。然而,今天大多数证明基础设施仍然是有许可的和中心化的,许多应用程序依赖单个证明者。

虽然中心化解决方案较少复杂,但将证明架构去中心化并将其分割成模块化堆栈中的一个独立组件带来了几个好处。其中一个关键好处在于活跃性保证,这对于依赖频繁生成证明的应用程序至关重要。用户也从更高的抗审查性和由于竞争和将工作负载分享给多个证明者而导致的更低费用中受益。

我们认为通用型证明者网络(许多应用程序,许多证明者)优于单一应用程序证明者网络(一个应用程序,许多证明者),因为它更高效利用现有硬件并对证明者来说更少复杂。更高的利用率也使用户受益于较低的费用,因为证明者不需要通过较高的费用来补偿冗余(仍然需要覆盖固定成本)。

Figment Capital 对当前的证明供应链情况进行了很好的概述,其中包括证明生成和证明聚合(本质上是证明生成,但只是将两个证明作为输入而不是执行跟踪)。

万字技术雄文:ZK会干掉模块化堆栈吗?

现有的 ZK 集成

STARK 与 SNARK 包装:STARK 证明者速度快,不需要信任设置,但缺点是它们产生的大型证明在以太坊 L1 上验证的成本很高。将 STARK 包装在 SNARK 中作为最后一步可以显著降低在以太坊上验证的成本。不过,这样做增加了复杂性,并且这种“复合证明系统”的安全性尚未深入研究。现有实现的例子包括 Polygon zkEVM、zkSync Era 中的 Boojum 和 RISC Zero。

通用型去中心化证明网络:将更多应用程序集成到去中心化证明网络中,可以使证明者更高效利用硬件(更高的硬件利用率),也可以使用户更便宜(无需为硬件冗余付费)。该领域的项目包括 Gevulot 和 Succinct。

ZKPs 可能解决的开放性问题

ZK 欺诈证明:在乐观解决方案中,任何人都可以挑战状态转换并在挑战期间创建欺诈证明。然而,验证欺诈证明仍然相当繁琐,因为它是通过重新执行来完成的。ZK 欺诈证明旨在通过创建正在挑战的状态转换的证明来解决这个问题,从而实现更高效的验证(无需重新执行)和潜在的更快的结算。至少乐观主义(与 O1 Labs 和 RiscZero 合作)以及 AltLayer x RiscZero 正在处理这个问题。

更高效的证明聚合:ZKPs 的一个很棒的特性是您可以将多个证明聚合成一个单一的证明,而不会显著增加验证成本。这使得可以将验证成本分摊到多个证明或应用程序中。证明聚合也是一种证明,但输入是两个证明而不是执行跟踪。在这个领域的项目示例包括 NEBRA 和 Gevulot。

万字技术雄文:ZK会干掉模块化堆栈吗?

6)数据发布(可用性)

数据发布(DP)确保数据在短时间内(1-2 周)可用且容易检索。这对于安全性(乐观性 Rollups 在挑战期间通过重新执行需要输入数据来验证正确执行,持续 1-2 周)和活跃性(即使系统使用有效性证明,也可能需要数据来证明资产所有权以进行逃生通道或强制交易)至关重要。用户(如 zk- 桥梁和 Rollups)需要进行一次性付款,以覆盖存储交易和状态的成本,直到数据被删除为止。数据发布网络并不是为长期数据存储而设计的(请参阅下一节可能的解决方案)。

Celestia 是第一个替代 DP 层发布其主网的项目(10 月 31 日),但随着 Avail、EigenDA 和 Near DA 等项目预计在 2024 年推出,很快将会有许多替代方案可供选择。此外,以太坊的 EIP 4844 升级提高了以太坊上的数据发布效率(同时为 Blob 存储创建了单独的费用市场),并为完整的坦克分片铺平了道路。DP 也正在扩展到其他生态系统——一个例子是 Nubit,它旨在在比特币上构建本机的 DP。

万字技术雄文:ZK会干掉模块化堆栈吗?

许多 DP 解决方案还提供纯数据发布之外的服务,包括对主权 Rollups 的共享安全性(如 Celestia 和 Avail)或 Rollups 之间更平滑的互操作性(如 Avail 的 Nexus)。 还有一些项目(如 Dom1C0n 和 Zero Gravity)提供数据发布以及长期状态存储,这是一个引人注目的建议。 这也是在模块化堆栈中重新捆绑两个组件的一个例子,这是我们未来可能看到更多的情况(对进一步解绑和重新捆绑的实验)。

现有的 ZK 集成

验证纠删码的正确性:纠删码带来一定程度的冗余,以便即使部分编码数据不可用,原始数据也是可恢复的。这也是去中心化存储(DAS)的先决条件,其中轻节点只对区块的一小部分进行抽样,以概率性地确保数据存在。如果恶意的提议者错误地编码数据,即使轻节点抽样了足够数量的唯一块,原始数据也可能无法恢复。验证正确的纠删码可以使用有效性证明(ZKPs)或欺诈证明来完成,后者因与挑战期相关的延迟而受到影响。除了 Celestia 以外的所有其他解决方案都在使用有效性证明。

由 ZK 轻客户端提供数据桥梁:使用外部数据发布层的 Rollups 仍然需要向结算层通知数据已经正确发布。这就是数据认证桥梁的作用所在。使用 ZKPs 可以使在以太坊上对源链共识签名的验证更加高效。Avail(VectorX)和 Celestia(BlobstreamX)的数据认证桥梁都由与 Succinct 合作构建的 ZK 轻客户端提供支持。

Celestia 整合有效性证明以验证正确的纠删码:Celestia 目前在数据发布网络中是一个离群值,因为它使用欺诈证明来验证正确的纠删码。如果恶意的区块提议者错误地编码数据,任何其他完整节点都可以生成欺诈证明并对此提出质疑。虽然这种方法在实施上相对简单,但它也会引入延迟(只有在欺诈证明窗口之后区块才最终确定),并且需要轻节点信任一个诚实的完整节点来生成欺诈证明(无法自行验证)。然而,Celestia 正在探索将他们当前的 Reed-Solomon 编码与 ZKP 相结合以证明正确编码的方法,这将显著降低最终确定性。关于这个话题的最新讨论可以在这里找到,其中包括以前工作组的记录(除了将 ZKP 添加到 Celestia 基础层的更一般性尝试)。

ZK- 证明 DAS:一些探索已经在 ZK- 证明数据可用性方面进行,其中轻节点只需验证 Merkle 根和 ZKP,而无需通过下载小块数据来进行常规抽样。这将进一步降低对轻节点的要求,但似乎发展已经停滞不前。

7)长期(状态)存储

存储历史数据主要是为了同步目的和响应数据请求而重要。然而,并非每个完整节点都能够存储所有数据,大多数完整节点会裁剪旧数据以保持硬件需求的合理性。相反,我们依靠专业方(归档节点和索引器)来存储所有历史数据,并在用户请求时提供数据。

此外,还有分散式存储提供者,如 Filecoin 或 Arweave,提供价格合理的长期分散式存储解决方案。虽然大多数区块链没有正式的归档存储过程(仅依赖于某人存储),但分散式存储协议是存储历史数据和通过存储网络内置的激励机制增加一定冗余性(至少 X 个节点存储数据)的良好选择。

现有的 ZK 整合

存储证明:长期存储提供商需要定期生成 ZKP 来证明他们已经存储了他们声称的所有数据。一个例子是 Filecoin 的时空证明(PoSt),在这里,存储提供商每次成功回答 PoSt 挑战时都会获得区块奖励。

ZKP 可以解决的问题

证明数据来源和查看敏感数据的授权:对于两个不信任的方,他们想要交换敏感数据,ZKP 可以用来证明一方具有查看数据所需的凭据,而无需上传实际文件或透露密码和登录详细信息。

8)共识

考虑到区块链是分布式 P2P 系统,没有可信赖的第三方来决定全局真相。相反,网络中的节点通过一种称为共识的机制来达成对当前真相的一致认定(哪个区块是正确的)。基于 PoS 的共识方法可以分为基于 BFT 的(其中拜占庭容错的验证者群体决定最终状态)或基于链的(其中最终状态由回溯性地通过分叉选择规则决定)。虽然大多数现有的 PoS 共识实现都是基于 BFT 的,但 Cardano 是最长链实现的一个例子。还有越来越多的兴趣集中在基于 DAG 的共识机制,例如 Narwhal-Bullshark,在 Aleo、Aptos 和 Sui 等项目中以不同形式实现。

共识是模块化堆栈中许多不同组件的关键部分,包括共享顺序器、去中心化的证明和基于区块链的数据发布网络(不是基于委员会的,比如 EigenDA)。

现有的 ZK 整合

ZK 隐私网络中的质押:基于 PoS 的隐私网络带来了一个挑战,即持有质押 Token 的人必须在隐私和参与共识(以及获得质押奖励)之间做出选择。Penumbra 旨在通过消除质押奖励来解决这个问题,而是将未抵押和已抵押的质押视为不同的资产。这种方法可以保持个人委托的私密性,同时每个验证者抵押的总金额仍然是公开的。

私密治理:在加密货币领域,实现匿名投票长期以来一直是一个挑战,例如 Nouns Private Voting 项目试图推动这一进展。对于治理也是如此,至少 Penumbra 正在努力进行提案的匿名投票。在这种情况下,ZKP 可以用来证明某人有权进行投票(例如通过令牌所有权)以及某些投票标准是否得到满足(例如,尚未进行投票)。

私密领导者选举:以太坊目前在每个时期开始时选举下一个 32 个区块提议者,并且这次选举的结果是公开的。这带来了一个风险,即恶意方会依次对每个提议者发起 DoS 攻击,试图使以太坊失效。为了解决这个问题,Whisk 提出了一个隐私保护协议,用于在以太坊上选举区块提议者。验证者使用 ZKP 来证明洗牌和随机化是诚实进行的。还有其他方法也可以实现类似的目标,其中一些在 a16z 的这篇博客文章中有所涵盖。

签名聚合:使用 ZKP 来聚合签名可以显著减少签名验证的通信和计算开销(验证一个聚合证明而不是每个单独的签名)。这已经在 ZK 轻客户端中得到了利用,但也可能扩展到共识中。

9)结算

结算类似于最高法院 - 是验证状态转换正确性并解决争议的最终真相来源。一笔交易在不可逆转的点上被视为最终(或在概率最终性的情况下,被视为足够难以逆转的点)。最终性所需的时间取决于所使用的基础结算层,而基础结算层又取决于所使用的具体最终性规则和区块时间。

慢速最终性在跨 Rollup 通信中尤为成问题,因为 Rollup 需要等待以太坊的确认才能批准交易(对于乐观 Rollup,需要等待 7 天;对于有效性 Rollup,需要等待 12 分钟和验证时间)。这导致用户体验较差。目前有多个努力来解决这个问题,包括使用具有一定安全级别的预确认的生态系统特定解决方案(例如 Polygon AggLayer 或 zkSync HyperBridge)以及通用解决方案,如 Near 的 Fast Finality Layer,旨在通过利用 EigenLayer 的经济安全性连接多个不同的 Rollup 生态系统。还有一种选择是使用 EigenLayer 进行软确认的本地 Rollup 桥接,以避免等待完全最终性。

现有的 ZK 集成

通过有效性 Rollup 加快结算速度:与乐观 Rollup 不同,有效性 Rollup 不需要挑战期,因为它们依靠 ZKP 来证明正确的状态转换,无论是否有人提出挑战(悲观 Rollup)。这使得基础层上的结算速度更快(12 分钟与以太坊上的 7 天相比),并避免了重新执行。

10)安全性

安全性与保证的难度相关,是区块链的价值主张的关键部分。然而,引导加密经济安全性是困难的,它增加了进入门槛,并对那些需要它的应用程序(各种中间件和替代性 L1)构成了创新的摩擦。

共享安全性的理念是利用现有的 PoS 网络的经济安全性,并将其置于额外的减持风险(惩罚条件)之下,而不是每个组件都试图引导自己的安全性。在 PoW 网络中曾经尝试过类似的做法(合并挖矿),但不一致的激励机制使得矿工更容易串通一致并操纵协议(难以惩罚不良行为,因为工作发生在物理世界中,即使用计算能力进行挖矿)。PoS 安全性更具灵活性,可被其他协议使用,因为它既具有积极的(质押收益)又具有负面的(减持)激励机制。

围绕共享安全性构建的协议包括:

EigenLayer 旨在利用现有的以太坊安全性来保护各种应用程序。白皮书于 2023 年初发布,EigenLayer 目前处于主网测试阶段,全面主网预计将于今年晚些时候推出。

Cosmos 于 2023 年 5 月推出了其 Interchain Security (ICS),可使 Cosmos Hub(Cosmos 上最大的链之一,由约 24 亿美元的质押 ATOM 支持)将其安全性租借给消费链。通过使用驱动 Cosmos Hub 的相同验证器集合来验证消费链上的区块,它旨在降低在 Cosmos 堆栈之上推出新链的障碍。然而,目前只有两个消费链是活跃的(Neutron 和 Stride)。

Babylon 也在尝试使比特币用于共享安全性。为了解决与合并挖矿相关的问题(难以惩罚不良行为),它正在构建一个虚拟的 PoS 层,在该层中用户可以将比特币锁定在比特币上的质押合约中(无需桥接)。由于比特币没有智能合约层,质押合约的减持规则以比特币脚本中的 UTXO 交易形式表达。

其他网络上的重新质押包括 Near 上的 Octopus 和 Solana 上的 Picasso。Polkadot 的平行链也利用了共享安全性的概念。

现有的 ZK 集成

ZK 与经济安全的混合:尽管基于 ZK 的安全保证可能更强大,但对于某些应用程序来说,证明仍然是成本过高的,生成证明的时间也太长。一个例子是 Brevis coChain,它是一个协处理器,从 ETH 重新抵押者那里获得经济安全性,并且乐观地保证计算(通过 ZK 欺诈证明)。dApp 可以根据其对安全性和成本权衡的特定需求,在纯 ZK 模式和 coChain 模式之间进行选择。

11)互操作性

在多链世界中,安全高效的互操作性仍然是一个重大问题,这可以从桥接黑客攻击中损失的 28 亿美元得到证明。在模块化系统中,互操作性变得更加重要 - 不仅需要在其他链之间进行通信,而且模块化区块链还需要不同的组件之间进行通信(例如 DA 和结算层)。因此,简单地运行完整节点或验证单个共识证明,就像集成的区块链那样,已经不可行了。这给方程式中增加了更多的变量。

互操作性包括 Token 桥接和区块链之间更一般的消息传递。目前存在几种不同的选择,它们在安全性、延迟和成本方面都做出了不同的权衡。要同时优化这三个方面非常困难,通常需要至少牺牲其中一个。此外,不同链上的不同标准使得在新链上实施变得更加困难。

万字技术雄文:ZK会干掉模块化堆栈吗?

虽然我们仍然缺乏对不同类型轻客户端(或节点)的清晰定义,但 Fluent 和 Modular Media 联合创始人 Dino 在这篇文章中进行了很好的介绍。大多数轻客户端今天只验证共识,但理想情况下,我们应该有可以验证执行和 DA 的轻客户端,以减少信任假设。这将使得可以接近完整节点的安全性,而不需要高硬件要求。

万字技术雄文:ZK会干掉模块化堆栈吗?

现有的 ZK 整合

ZK 轻客户端(共识验证):大多数当前的轻客户端可以验证其他链的共识 - 无论是完整的验证器集(如果足够小)还是总验证器的子集(例如以太坊的同步委员会)。 ZKPs 被用来加速和降低验证成本,因为原始链上使用的签名方案可能在目标链上不被原生支持。虽然预计 ZK 轻客户端在桥接中的重要性将增加,但当前推广遇到的摩擦包括证明和验证成本,以及为每条新链实现 ZK 轻客户端。在这个领域的协议示例包括 Polyhedra、Avail 和 Celestia 的数据确认桥以及 Electron Labs 的 zkIBC。

存储证明:如前所述,存储证明使得可以查询区块链上的历史和当前数据,而无需使用可信第三方。这对于互操作性也很重要,因为它们可以用于跨链通信。例如,用户可以证明他们在一条链上拥有 Token,并将其用于另一条链上的治理(无需桥接)。还有一些尝试将存储证明用于桥接的解决方案,比如 LambdaClass 开发的这种解决方案。

ZK Oracle:Oracle 充当中间人,并将现实世界的数据桥接到区块链上。 ZK Oracle 通过能够证明数据的来源和完整性,以及对数据进行的任何计算,改进了当前基于声誉的 Oracle 模型。

零知识证明(ZKP)可以解决的开放问题

A、完整轻客户端:与盲目信任其他链的验证器集不同 - 完整轻客户端还会验证正确的执行和 DA。这减少了信任假设,并接近完整节点,同时保持硬件要求低(允许更多人运行轻客户端)。然而,在大多数链上验证除共识以外的任何内容仍然成本过高,特别是在以太坊上。此外,轻客户端仅能够验证信息(问题的一半),即它们可以识别信息是否错误,但仍需要额外的机制让它们采取行动。

B、聚合层:Polygon 的 AggLayer 旨在通过利用聚合证明和统一的桥接合约,在生态系统内实现 L2 之间的平滑互操作性。聚合证明既能实现更高效的验证,又能提供更高的安全性 - 强制执行依赖链状态和捆绑包一致,并确保如果一个 rollup 状态依赖于另一个链的无效状态,则不能在以太坊上解决该状态。zkSync 的 HyperChains 和 Avail 的 Nexus 采取了类似的方法。

5、当零知识证明(ZKP)吞噬了模块化栈时会出现什么情况?

假设我们能够达到一种状态,其中生成 ZKP 变得非常快速(几乎接近光速)且成本极低(几乎免费),那么最终的结果会是什么样子?换句话说,当 ZKP 吞噬了模块化栈时会出现什么情况?

总体而言,我们认为在这种情况下会有两个真实存在的情况:

消除所有不必要的重新执行:通过转向 1/N 的执行模型(而不是带有重新执行的 N/N 模型),我们显著减少了网络的总体冗余,并实现了对底层硬件更高效的利用。尽管仍然存在一些开销,但这将帮助区块链在计算效率方面渐进地接近中心化系统。

大多数应用程序依赖于启用 ZKP 的加密保证而不是经济安全性:当生成证明的成本和时间不再成为相关因素时,我们认为大多数应用程序将依赖于 ZKP 以获得更强的保证。这还需要改进可用性和开发者友好性,以构建 ZKP 应用程序,但这些都是多个团队正在解决的问题。

第三个条件涉及隐私(或信息流管理),但这更加复杂。使用客户端证明,ZKP 可以用于一些隐私应用,这就是像 Aleo、Aztec 或 Polygon Miden 等平台正在构建的内容,但实现广泛的隐私保护以适用于所有潜在用例还取决于 MPC 和 FHE 的进展 - 这是一个未来博客文章的潜在主题。

6、我们论点的风险

如果我们错了,未来既不是模块化也不是零知识化呢?我们论点的一些潜在风险包括:

模块化增加了复杂性

用户和开发者都受到链数量不断增加的影响。用户需要在多个链之间管理资金(可能还需要多个钱包)。另一方面,应用开发者在空间仍在不断演进的情况下,面临着更少的稳定性和可预测性,这使得他们更难决定在哪个链上构建应用。他们还需要考虑状态和流动性的碎片化。尤其现在,因为我们仍在探索哪些组件适合解耦,哪些将会重新耦合,所以这一点尤为真实。我们相信用户操作的抽象化以及安全高效的互操作性解决方案是解决这个问题的关键部分。

万字技术雄文:ZK会干掉模块化堆栈吗?

ZK 是否会足够高效?

无论如何,证明生成都太耗时,而且今天的证明和验证成本仍然过高。对于许多应用程序来说,竞争性解决方案,如可信执行环境 /TEEs(隐私)或乐观 / 加密经济安全解决方案(成本),如今仍更有意义。

然而,关于 ZKP 的软件优化和硬件加速方面的工作已经在进行中。证明聚合将通过将成本分摊给多个不同的参与方(较低的成本 / 用户)来进一步降低验证成本。还有可能调整基础层以更优化地验证 ZKP。关于 ZKP 的硬件加速的一个挑战是证明系统的快速发展。这使得创建专门硬件(ASICs)变得困难,因为如果 / 当基础证明系统的标准发生变化时,它们可能很快就会过时。

Ingonyama 尝试通过称为 ZK 评分的可比指标来创建一些证明者性能基准。它基于运行计算的成本(OPEX),并跟踪 MMOPS/WATT,其中 MMOPS 代表每秒模块化乘法操作。有关该主题的更多阅读建议参考 Cysic 和 Ingonyama 的博客,以及 Wei Dai 的这篇演讲。

有限的 ZKP 提供的隐私是否有用?

ZKP 只能用于实现个人状态的隐私,而不是多方需要在加密数据上进行计算的共享状态(例如私人 Uniswap)。完全的隐私还需要 FHE 和 MPC,但在成本和性能方面需要有很大的提升,才能成为更广泛使用的可行选项。也就是说,ZKP 对于某些不需要私有共享状态的用例仍然有用,例如身份解决方案或支付。并非所有问题都需要用同一种工具解决。

7、总结

那么,这给我们留下了什么?虽然我们每天都在取得进步,但还有许多工作要做。最迫切需要解决的问题是如何在不牺牲速度或成本的情况下,安全地在不同的模块化组件之间传递价值和信息,以及如何将所有这些抽象化,使最终用户无需担心在不同链之间桥接、切换钱包等问题。

虽然我们目前仍处于实验阶段,但随着时间的推移,情况应该会稳定下来,因为我们会找出对每个用例来说最佳权衡的位置在哪里。这反过来将为标准(非正式或正式)的出现提供空间,并为在这些链之上构建的人提供更多稳定性。

今天仍然有许多用例默认使用加密经济安全,这是由于生成 ZKP 的成本和复杂性,还有一些需要两者结合使用的。然而,随着我们设计更有效的证明系统和专门的硬件来降低证明和验证的成本和延迟,这一份额应该会随着时间的推移而减少。随着成本和速度的每次指数级降低,新的用例将被解锁。

虽然这篇文章专注于 ZKP,但我们也越来越关注现代密码学解决方案(ZKP、MPC、FHE 和 TEE)如何共同发挥作用,这是我们已经开始看到的。