什么是区块链以及它们如何扩展当前的计算范式?
区块链(名词):一种协调机器,使来自世界各地的参与者能够沿着一组共同商定的规则进行协作,而无需任何第三方的协助。
计算机的设计目的是做三件事:存储数据、计算以及彼此之间和人类之间的通信。区块链增加了第四个维度:额外保证这三件事(存储、计算和通信)以商定的方式发生。这些保证使得陌生人之间的合作无需受信任的第三方来促进(去中心化)。
这些额外的保证可以是经济的(信任博弈论和激励/抑制)或加密的 (信任数学),但大多数应用程序利用两者的组合 –加密经济。这与当前主要基于声誉的系统的现状形成鲜明对比。
虽然 Web3 通常被描述为“读、写、拥有”,但我们认为,互联网第三次迭代的更好概念是“读、写、验证”,因为公共区块链的主要好处是保证计算和轻松验证这些保证得到兑现。如果我们构建可以购买、出售和控制的数字工件,那么所有权就可以成为有保证的计算的一个子集。然而,区块链的许多用例受益于有保证的计算,但不直接涉及所有权。例如,如果您在完全链上游戏中的生命值是 77/100 – 您是否拥有该生命值,或者它只是根据共同商定的规则在链上强制执行?我们会争论后者,但克里斯·迪克森可能不同意。
Web3 = 读、写、验证
ZK 和模块化——两个将加速发展的趋势
区块链提供了很多令人兴奋的东西,但去中心化模型也通过 P2P 消息传递和共识等附加功能增加了开销和效率低下。此外,大多数区块链仍然通过重新执行来验证正确的状态转换,这意味着网络上的每个节点都必须重新执行交易以验证提议的状态转换的正确性。这是一种浪费,与只有一个实体执行的集中式模型形成鲜明对比。虽然去中心化系统总是包含一些开销和复制,但目标应该是在效率方面逐渐接近中心化基准。
尽管底层基础设施在过去十年中得到了显着改善,但在区块链能够处理互联网级别的规模之前,还有很多工作要做。我们看到了沿着两个主轴(表现力和硬度)的权衡,并相信模块化可以在 ZK 扩展它的同时,沿着权衡前沿进行更快的实验:
-
表现力- 您可以对什么做出保证?包含可扩展性(成本、延迟、吞吐量等)、隐私(或信息流管理)、可编程性和可组合性。
-
硬度——这些保证有多困难?包含安全性、去中心化以及用户和代码安全。
模块化是指系统组件可以分离和重新组合的程度。 通过更快的反馈循环和更低的进入壁垒以及更少的资本需求(经济和人力)——模块化可以实现更快的实验和专业化。模块化与集成的问题不是二元的,而是一系列实验,以找出哪些部分适合解耦,哪些部分没有。
另一方面,零知识证明(ZKP)使一方(证明者)能够向另一方(验证者)证明他们知道某件事是真实的,而无需透露任何超出其有效性的附加信息。这可以通过避免重新执行(从全部执行以验证的模型转变为一次执行、全部验证的模型)来提高可扩展性和效率,并通过启用隐私(有限制)来提高表现力。ZKP 还通过用更强的加密经济保证取代较弱的加密经济保证来提高保证的硬度,这表现为将权衡边界向外推(参考上图)。
我们相信模块化和“万物ZK化”都是将继续加速的趋势。虽然两者都提供了有趣的视角来单独探索空间,但我们对两者的交叉特别感兴趣。我们感兴趣的两个关键问题是:
-
模块化堆栈的哪些部分已经纳入了 ZKP,哪些部分还有待探索?
-
ZKP 可以缓解哪些问题?
然而,在讨论这些问题之前,我们需要了解 2024 年模块化堆栈的最新情况。
2024 年模块化堆栈
具有四个组件(执行、数据发布、共识、结算)的模块化堆栈的常用图像作为简单的心理模型很有用,但考虑到模块化空间已经发展了多少,我们认为它不再是一个足够的表示。进一步的分拆导致了以前被认为是更大部分的一部分的新组件,同时还创建了新的依赖关系以及不同组件之间安全互操作性的需求(稍后将详细介绍)。考虑到该领域的发展速度,很难及时了解堆栈不同级别的所有创新。
探索 web3 堆栈的早期尝试包括Kyle Samani (Multicoin)的尝试- 最初于2018 年发布,于2019 年更新。它涵盖了从分散式最后一英里互联网访问(例如Helium)到最终用户密钥管理的一切。虽然它背后的原理可以重复利用,但有些部分,比如证明和验证,却完全缺失了。
考虑到这些,我们尝试创建 2024 年模块化堆栈的更新表示,扩展现有的四部分模块化堆栈。它是按组件而不是功能进行划分的,这意味着 P2P 网络等包含在共识中,而不是将其拆分为单独的组件 – 主要是因为很难围绕它构建协议。
模块化堆栈中的 ZK
现在我们有了模块化堆栈的更新视图,我们可以开始研究真正的问题,即 ZK 已经渗透堆栈的哪些部分以及可以通过引入 ZK 来解决哪些开放问题(避免重新执行或隐私 -特征)。在分别深入研究每个组成部分之前,下面是我们的发现的摘要。
1 – 用户操作抽象
当前的区块链用户需要浏览多个链、钱包和界面,这很麻烦,并且会阻碍更广泛的采用。用户操作抽象是一个总称,指的是任何试图抽象出这种复杂性并允许用户仅与一个界面(例如特定应用程序或钱包)交互的尝试,而所有复杂性都发生在后端。底层抽象的一些示例包括:
-
账户抽象(AA)使智能合约能够进行交易,而无需每次操作都需要用户签名(“可编程加密账户”)。它可用于定义谁可以签名(密钥管理)、签名什么(交易负载)、如何签名(签名算法)以及何时签名(交易批准条件)。这些功能结合在一起,可以实现使用社交登录与 dApp 交互、2FA、帐户恢复和自动化(自动签署交易)等功能。虽然讨论通常围绕以太坊(ERC-4337于 2023 年春季通过),但许多其他链已经具有内置的本机帐户抽象(Aptos、Sui、Near、ICP、Starknet和zkSync)。
-
链抽象允许用户在不同链上签署交易,同时仅与一个账户交互(一个接口,多个链)。多个团队正在致力于此,包括Near、ICP和dWallet。这些解决方案利用 MPC 和链签名,其中另一个网络的私钥被分成几个小部分,并在源链上签署跨链交易的验证者之间共享。当用户想要与另一条链交互时,需要足够数量的验证者对交易进行签名以满足阈值加密。这保留了安全性,因为私钥永远不会在任何地方完全共享。然而,它确实面临验证者串通的风险,这就是为什么底层链的加密经济安全性和验证者去中心化仍然高度相关的原因。
-
从高层次上看,意图可以将用户的需求与区块链可以执行的操作联系起来。这需要意图解决器——专门的链下代理,其任务是为用户的意图找到最佳的解决方案。已经有一些应用程序使用专门的意图,例如 DEX 聚合器(“最佳价格”)和桥接聚合器(“最便宜/最快桥接”)。一般意向结算网络(Anoma、Essential、Suave)旨在让用户更容易表达更复杂的意图,并让开发人员更轻松地构建以意图为中心的应用程序。然而,仍然存在许多悬而未决的问题,包括如何形式化该过程、以意图为中心的语言是什么样子、最优解决方案是否总是存在以及是否可以找到。
现有的 ZK 集成
-
使用 AA x ZK 进行身份验证:其中一个示例是 Sui 的zkLogin,它使用户能够使用熟悉的凭据(例如电子邮件地址)登录。它使用 ZKP 来防止第三方将 Sui 地址与其相应的 OAuth 标识符链接起来。
-
AA 钱包更高效的签名验证:验证 AA 合约中的交易可能比传统账户 (EOA) 发起的交易昂贵得多。Orbiter试图通过捆绑服务来解决这个问题,该服务利用 ZKP 来验证交易签名的正确性,并维护 AA 账户的随机数值和 Gas 余额(通过 Merkle 世界状态树)。借助证明聚合并在所有用户之间平均分摊链上验证成本,这可以显着节省成本。
ZKP 可以解决的开放问题
-
最佳执行或意图实现的证明:虽然意图和 AA 可以从用户那里抽象出复杂性,但它们也可以充当集中力量,并要求我们依靠专门的参与者(解决者)来找到最佳执行路径。ZKP 可以用来证明用户的最佳路径是从求解器采样的路径中选择出来的,而不是简单地信任求解器的善意。
-
意向结算的隐私:像Taiga这样的协议旨在实现完全屏蔽的意向结算,以保护用户的隐私——这是向区块链网络添加隐私(或至少是机密性)的更广泛举措的一部分。它使用 ZKP (Halo2) 隐藏有关状态转换的敏感信息(应用程序类型、涉及方等)。
-
AA 钱包的密码恢复:该提案背后的想法是让用户在丢失私钥时能够恢复钱包。通过在合约钱包上存储哈希值(密码、随机数),用户可以借助密码生成 ZKP,以验证这是他们的帐户并请求更改私钥。确认期(3 天或更长)可以防止未经授权的访问尝试。
2 – 测序
交易在添加到区块之前需要进行排序,这可以通过多种方式完成:按提议者的盈利能力排序(首先支付最高支付的交易),按照提交的顺序(先进先出),给出优先处理来自私人内存池的交易等。
另一个问题是谁可以订购交易。在模块化世界中,多个不同方可以执行此操作,包括汇总排序器(集中式或分散式)、L1 排序(基于汇总)和共享排序网络(多个汇总使用的排序器的去中心化网络)。所有这些都有不同的信任假设和扩展能力。在实践中,交易的实际排序并将它们捆绑到一个区块中也可以由专门的参与者(区块构建者)在协议之外完成。
现有的 ZK 集成
-
验证内存池的正确加密:Radius是一个共享排序网络,具有采用实用可验证延迟加密 ( PVDE ) 的加密内存池。用户生成一个ZKP,用于证明解决时间锁难题将导致有效交易的正确解密,即交易包含有效的签名和随机数,并且发送者有足够的余额支付交易费用。
ZKP 可以解决的开放问题
-
可验证的排序规则(VSR):使提议者/排序者遵守一组有关执行顺序的规则,并额外保证遵守这些规则。验证可以通过 ZKP 或欺诈证明进行,后者需要足够大的经济债券,如果提议者/排序者行为不当,经济债券就会被削减。
3 – 执行(缩放写入)
执行层包含状态更新的逻辑,也是智能合约执行的地方。除了返回计算的输出之外,zkVM 还可以证明状态转换是否正确完成。这使得其他网络参与者只需验证证明即可验证正确执行,而不必重新执行交易。
除了更快、更高效的验证之外,可证明执行的另一个好处是可以实现更复杂的计算,因为您不会遇到典型的 Gas 问题和链外计算的有限链上资源问题。这为全新的应用程序打开了大门,这些应用程序的计算强度更大,可以在区块链上运行并利用有保证的计算。
现有的 ZK 集成
-
zkEVM rollups:一种特殊类型的 zkVM,经过优化以与以太坊兼容并证明 EVM 执行环境。然而,以太坊兼容性越接近,性能方面的权衡就越大。2023 年推出了多个 zkEVM,包括Polygon zkEVM、zkSync Era、Scroll和Linea。Polygon 最近发布了他们的1 型 zkEVM 证明器,它能够以每个块 0.20-0.50 美元的价格证明主网以太坊块(即将进行优化以进一步降低成本)。RiscZero 还有一个解决方案,可以证明以太坊区块,但由于可用的基准测试有限,成本较高。
-
替代 zkVM:一些协议正在采取替代路径并针对性能/可证明性(Starknet、Zorp)或开发人员友好性进行优化,而不是尝试最大程度地与以太坊兼容。后者的例子包括 zkWASM 协议(Fluent、Delphinus Labs)和 zkMOVE(M2和zkmove)。
-
注重隐私的 zkVM:在这种情况下,ZKP 用于两件事:避免重新执行和实现隐私。虽然单独使用 ZKP 可以实现的隐私是有限的(仅限个人私有状态),但即将推出的协议为现有解决方案增加了很多表达性和可编程性。示例包括 Aleo 的snarkVM、Aztec 的AVM 和 Polygon 的MidenVM。
-
ZK-协处理器:启用链上数据的链下计算(但没有状态)。ZKP 用于证明正确的执行,比乐观协处理器提供更快的结算速度,但需要在成本上进行权衡。考虑到生成 ZKP 的成本和/或难度,我们看到了一些混合版本,例如Brevis coChain,它允许开发人员在 ZK 或乐观模式之间进行选择(在成本和保证硬度之间进行权衡)。
ZKP 可以解决的开放问题
-
重要的 zkVM:大多数基础层(L1)仍然使用重新执行来验证正确的状态转换。将 zkVM 纳入基础层可以避免这种情况,因为验证者可以验证证明。这将提高运营效率。大多数人的目光都集中在带有 zkEVM 的以太坊上,但许多其他生态系统也依赖于重新执行。
-
zkSVM:虽然 SVM 目前主要在 Solana L1 中使用,但像 Eclipse 这样的团队正在尝试利用 SVM 进行以太坊上的汇总。Eclipse 还计划使用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 集成
-
存储证明:无需使用受信任的第三方即可从区块链查询历史和当前数据。ZKP 用于压缩并证明检索到了正确的数据。在这个领域构建的项目示例包括Axiom、Brevis、Herodotus和Lagrange。
ZKP 可以解决的开放问题
-
隐私状态的高效查询:隐私项目通常使用 UTXO 模型的变体,它可以提供比帐户模型更好的隐私功能,但代价是牺牲开发人员的友好性。私有 UTXO 模型还可能导致同步问题——自 2022 年以来,Zcash在经历了屏蔽交易量的大幅增长后一直在努力解决这个问题。钱包必须先同步到链上,然后才能使用资金,因此这对网络的运作来说是一个相当根本的挑战。考虑到这个问题,Aztec 最近发布了一份关于纸币发现想法的 RFP,但尚未找到明确的解决方案。
5 – 证明
随着越来越多的应用程序纳入 ZKP,证明和验证正迅速成为模块化堆栈的重要组成部分。然而,如今,大多数证明基础设施仍然是经过许可和集中的,许多应用程序依赖于单个证明者。
虽然集中式解决方案不太复杂,但分散证明架构并将其拆分为模块化堆栈中的单独组件会带来多种好处。一个关键的好处在于活性保证的形式,这对于依赖频繁证明生成的应用程序至关重要。用户还受益于更高的审查阻力和由竞争和多个证明者之间分担工作量驱动的 更低的费用。
我们认为,通用证明者网络(许多应用程序,许多证明者)优于单应用程序证明者网络(一个应用程序,许多证明者),因为现有硬件的利用率更高,证明者的复杂性更低。更高的利用率也有利于用户降低费用,因为证明者不需要通过更高的费用来补偿冗余(仍然需要支付固定成本)。
Figment Capital很好地概述了证明供应链的当前状态,其中包括证明生成和证明聚合(本身就是证明生成,但仅将两个证明作为输入而不是执行跟踪)。
现有的 ZK 集成
-
带有 SNARK 包装器的 STARK:STARK 证明者速度很快,并且不需要可信设置,但缺点是它们会生成大量证明,而在以太坊 L1 上验证这些证明的成本过高。最后一步将 STARK 封装在 SNARK 中,使得在以太坊上进行验证的成本大大降低。不利的一面是,这增加了复杂性,并且这些“复合证明系统”的安全性尚未得到深入研究。现有实现的示例包括Polygon zkEVM、zkSync Era 中的 Boojum和RISC Zero。
-
通用去中心化证明网络:将更多应用程序集成到去中心化证明网络中,使证明者更高效(硬件利用率更高),对用户来说更便宜(不需要为硬件冗余付费)。该领域的项目包括Gevulot和Succinct。
ZKP 可以解决的开放问题
-
ZK欺诈证明:在乐观的解决方案中,任何人都可以挑战状态转换并在挑战期间创建欺诈证明。然而,验证欺诈证明仍然相当繁琐,因为它是通过重新执行来完成的。ZK 欺诈证明旨在通过创建受到挑战的状态转换证明来解决此问题,从而实现更有效的验证(无需重新执行)并可能更快的结算。至少Optimism(与 O1 Labs 和 RiscZero 合作)和AltLayer x RiscZero正在致力于此。
-
更高效的证明聚合:ZKP 的一个重要功能是您可以将多个证明聚合为一个证明,而不会显着增加验证成本。这使得能够分摊多个证明或应用程序的验证成本。证明聚合也是证明,但输入是两个证明而不是执行跟踪。该领域的项目示例包括NEBRA和Gevulot。
6 – 数据发布(可用性)
数据发布 (DP)确保数据在短时间内(1-2 周)可用且易于检索。这对于安全性(乐观汇总需要输入数据来通过在挑战期(1-2 周)内重新执行来验证正确执行)和活跃性(即使系统使用有效性证明,可能需要数据来证明资产所有权)至关重要。逃生舱口或强制交易)。用户(例如 zk-bridges 和 rollups)面临一次性付款,该付款涵盖了在被修剪之前的短时间内存储交易和状态的成本。数据发布网络并不是为长期数据存储而设计的(相反,请参阅下一节以了解可能的解决方案)。
Celestia是第一个推出主网的替代 DP 层(10 月 31 日),但很快就会有许多替代方案可供选择,因为Avail、 EigenDA和Near DA预计将在 2024 年期间推出。此外,以太坊的 EIP 4844升级也已扩展在以太坊上发布数据(除了为 blob 存储创建一个单独的费用市场),并为完整的 dank 分片奠定了基础。DP 还正在扩展到其他生态系统 – Nubit就是一个例子,它旨在在比特币上构建 Native DP。
许多 DP 解决方案还提供纯数据发布之外的服务,包括主权汇总的共享安全性(例如Celestia和Avail)或汇总之间更平滑的互操作性(例如 Avail 的Nexus)。还有一些项目(Domicon和Zero Gravity)既提供数据发布又提供长期状态存储,这是一个引人注目的提议。这也是在模块化堆栈中重新捆绑两个组件的示例,我们可能会看到更多的进展(进一步分拆和重新捆绑的实验)。
现有的 ZK 集成
-
证明纠删码的正确性:纠删码带来了一定程度的冗余,即使部分编码数据不可用,原始数据也可以恢复。这也是 DAS 的先决条件,其中轻节点仅对块的一小部分进行采样,以概率确保数据存在。如果恶意提议者对数据进行了错误编码,即使轻节点采样了足够的唯一块,原始数据也可能无法恢复。可以使用有效性证明(ZKP)或欺诈证明来证明正确的纠删码——后者会受到与挑战期相关的延迟的影响。除 Celestia 之外的所有其他解决方案都在致力于使用有效性证明。
-
ZK 轻客户端为数据桥提供支持:使用外部数据发布层的 Rollups 仍然需要与结算层通信数据已正确发布。这就是数据证明桥的用途。使用 ZKP 可以使以太坊上源链共识签名的验证更加高效。Avail ( VectorX ) 和 Celestia ( BlobstreamX ) 数据证明桥均由与 Succinct 一起构建的 ZK 轻客户端提供支持。
ZKP 可以解决的开放问题
-
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 的共识机制也越来越感兴趣,例如在 Aleo、Aptos 和 Sui 中以某些变体实现的 Narwhal-Bullshark。
共识是模块化堆栈的许多不同组件的重要组成部分,包括共享排序器、去中心化证明和基于区块链的数据发布网络(不是基于委员会的,如 EigenDA)。
现有的 ZK 集成
-
基于 ZK 的隐私网络中的质押:基于 PoS 的隐私网络提出了挑战,因为质押代币的持有者必须在隐私和参与共识(并获得质押奖励)之间做出选择。Penumbra 旨在通过消除质押奖励来解决这个问题,而是将非抵押和抵押股权视为单独的资产。这种方法使各个委托保持私密性,而与每个验证者绑定的总金额仍然是公开的。
-
私人治理:实现匿名投票长期以来一直是加密领域的一个挑战,名词私人投票等项目试图推动这一进程。这同样适用于治理,至少 Penumbra 正在对提案进行匿名投票。在这种情况下,ZKP 可用于证明一个人有权投票(例如通过代币所有权)并且满足某些投票标准(例如尚未投票)。
ZKP 可以解决的开放问题
-
私人领导人选举:以太坊目前在每个 epoch 开始时选举接下来的 32 个区块提议者,并且这次选举的结果是公开的。这会带来恶意方依次对每个提议者发起 DoS 攻击以试图禁用以太坊的风险。为了解决这个问题,Whisk提出了一项隐私保护协议的提案,用于在以太坊上选举区块提议者。验证者使用 ZKP 来证明洗牌和随机化是诚实执行的。还有其他方法可以实现类似的最终目标,a16z 的这篇博文中介绍了其中一些方法。
-
签名聚合:使用 ZKP 聚合签名可以显着减少签名验证的通信和计算开销(验证一个聚合证据而不是每个单独的签名)。这已经在 ZK 轻客户端中得到利用,但也有可能扩展到共识。
9 – 结算
和解类似于最高法院——验证状态转换的正确性并解决争端的最终真相来源。当一笔交易不可逆转时(或者在概率最终性的情况下——当其很难逆转时),该交易被认为是最终的。最终确定的时间取决于所使用的底层结算层,而这又取决于所使用的具体最终确定规则和区块时间。
缓慢的最终性在跨 Rollup 通信中尤其是一个问题,其中 Rollup 需要等待以太坊的确认才能批准交易(乐观 Rollups 需要 7 天,有效性 Rollups 需要 12 分钟和证明时间)。这导致用户体验不佳。有多种方法可以使用具有一定安全级别的预先确认来解决此问题。示例包括特定于生态系统的解决方案(Polygon AggLayer或zkSync HyperBridge)和通用解决方案(例如Near 的 Fast Finality Layer),该解决方案旨在通过利用 EigenLayer 的经济安全性来连接多个不同的汇总生态系统。还可以选择利用 EigenLayer 的本机汇总桥用于软确认以避免等待完全确定。
现有的 ZK 集成
-
通过有效性汇总加快结算速度:与乐观汇总相比 ,有效性汇总不需要挑战期,因为它们依赖 ZKP 来证明正确的状态转换,无论是否有人挑战(悲观汇总)。这使得基础层的结算速度更快(以太坊上的结算时间为 12 分钟,而以太坊上的结算时间为 7 天),并且避免了重新执行。
10 – 安全
安全性与保证的硬度有关,也是区块链价值主张的重要组成部分。然而,引导加密经济安全性是很困难的——增加了进入壁垒,并成为那些需要它的应用程序(各种中间件和替代 L1)的创新摩擦。
共享安全的想法是利用 PoS 网络现有的经济安全,并使其承受额外的削减风险(惩罚条件),而不是每个组件都试图引导自己的安全。早期已经有一些尝试在 PoW 网络中做同样的事情(合并挖矿),但是不一致的激励措施使矿工更容易串通并利用协议(由于工作发生在物理世界中,因此更难以惩罚不良行为,即使用计算能力)。PoS 安全性更灵活,可以被其他协议使用,因为它同时具有正向(质押收益)和负向(削减)激励。
围绕共享安全前提构建的协议包括:
-
EigenLayer 的目标是利用现有的以太坊安全性来保护广泛的应用程序。该白皮书于 2023 年初发布,EigenLayer 目前处于主网 alpha 阶段,完整的主网预计将于今年晚些时候推出。
-
Cosmos于 2023 年 5 月推出了链间安全(ICS),这使得 Cosmos Hub(Cosmos 上最大的链之一,由约24 亿美元质押的 ATOM支持)能够将其安全性出租给消费链。通过使用为 Cosmos Hub 提供支持的相同验证器集来验证消费者链上的块,它的目的是减少在 Cosmos 堆栈顶部启动新链的障碍。然而,目前只有两个消费者链处于活动状态(Neutron 和 Stride)。
-
Babylon也试图让 BTC 用于共享安全。为了解决与合并挖矿相关的问题(很难惩罚不良行为),它正在构建一个虚拟 PoS 层,用户可以将 BTC 锁定到比特币的质押合约中(无桥接)。由于比特币没有智能合约层,因此质押合约的削减规则而是以比特币脚本中编写的 UTXO 交易来表达。
-
其他网络上的重新抵押包括Near 上的Octopus和 Solana 上的 Picasso。Polkadot平行链还利用了共享安全的概念。
现有的 ZK 集成
-
ZK 和经济安全的混合:虽然基于 ZK 的安全保证可能更强,但对于某些应用程序来说,证明的成本仍然过高,并且生成证明需要很长时间。Brevis coChain就是一个例子,它是一种协处理器,从 ETH 重新质押者那里获得经济安全,并乐观地保证计算(通过 ZK 欺诈证明)。dApp 可以根据其在安全性和成本权衡方面的具体需求,选择纯 ZK 或 coChain 模式。
11 – 互操作性
安全高效的互操作性仍然是多链世界中的一个大问题,桥梁黑客攻击造成的 28 亿美元损失就是例证。在模块化系统中,互操作性变得更加重要——不仅是在其他链之间进行通信,而且模块化区块链还需要不同的组件来相互通信(例如 DA 和结算层)。因此,像集成区块链那样简单地运行完整节点或验证单个共识证明不再可行。这为方程式增加了更多的移动因素。
互操作性包括代币桥接以及跨区块链的更一般的消息传递。有几种不同的选择,它们都在安全性、延迟和成本方面做出了不同的权衡。对这三者进行优化非常困难,通常需要牺牲至少一项。此外,跨链的不同标准使得新链的实施变得更加困难。
虽然我们仍然缺乏对不同类型的轻客户端(或节点)的明确定义,但Dino(Fluent & Modular Media 联合创始人)的这篇文章给出了很好的介绍。如今,大多数轻客户端仅验证共识,但理想情况下,我们应该拥有可以验证执行和 DA 的轻客户端,以减少信任假设。这将允许接近全节点安全性,而不需要很高的硬件要求。
现有的 ZK 集成
-
ZK 轻客户端(共识验证):当前大多数轻客户端都可以验证其他链的共识 – 要么是完整的验证器集(如果足够小),要么是全部验证器的子集(例如以太坊的同步委员会)。ZKP 用于使验证更快、更便宜,因为源链上使用的签名方案可能不受目标链本机支持。虽然 ZK 轻客户端在桥接中的重要性预计会增加,但目前更广泛采用的摩擦包括证明和验证的成本以及每个新链实施 ZK 轻客户端的成本。该领域的协议示例包括Polyhedra、Avail 和 Celestia 的数据证明桥以及Electron Labs 的 zkIBC.
-
存储证明:如前所述,存储证明可以在不使用可信第三方的情况下从区块链查询历史和当前数据。这也与互操作性相关,因为它们可用于跨链通信。例如,用户可以证明他们在一条链上拥有代币,并将其用于另一条链上的治理(无需桥接)。还有尝试使用存储证明进行桥接,例如LambdaClass 开发的这种解决方案。
-
ZK Oracles:Oracles充当中介,将现实世界的数据连接到区块链。ZK 预言机通过证明数据的来源和完整性以及对该数据进行的任何计算,改进了当前基于声誉的预言机模型。
ZKP 可以解决的开放问题
-
完整的轻客户端:完整的轻客户端还验证正确的执行和 DA,而不是盲目地信任其他链的验证器集。这减少了信任假设并更接近完整节点,同时仍然保持较低的硬件要求(允许更多的人运行轻客户端)。然而,在大多数链上,尤其是以太坊上,验证除共识之外的任何其他内容仍然昂贵得令人望而却步。此外,轻客户端仅启用信息验证(问题的一半),即它们可以识别信息是假的,但仍然需要有额外的机制让它们对此采取措施。
-
聚合层:Polygon 的 AggLayer旨在通过利用聚合证明和统一的桥接合约,实现生态系统内 L2 之间的平滑互操作性。聚合证明可以实现更有效的验证和安全性 – 强制依赖链状态和捆绑包保持一致,并确保如果汇总状态依赖于另一个链的无效状态,则无法在以太坊上解决。zkSync 的 HyperChains和Avail Nexus也采取了类似的方法。
ZK什么时候吃掉了模块化堆栈?
假设我们可以达到这样一种状态:ZKP 的生成变得非常快(几乎以光速)并且非常便宜(几乎免费),那么最终的局面会是什么样子?换句话说——ZK什么时候吃掉了模块化堆栈?
从广义上讲,我们相信在这种情况下有两件事是正确的:
-
所有不必要的重新执行都被消除:通过转向 1/N 执行模型(而不是 N/N 重新执行),我们显着减少了网络的整体冗余,并能够更有效地使用底层硬件。虽然仍然存在一些开销,但这将有助于区块链在计算效率方面逐渐接近中心化系统。
-
大多数应用程序依赖于 ZK 支持的加密保证,而不是经济安全:当生成证明的成本和时间不再是相关考虑因素时,我们相信大多数应用程序将依赖 ZKP 来获得更强的保证。这还需要在可用性和开发人员友好性方面进行一些改进来构建 ZK 应用程序,但这些都是多个团队正在努力解决的问题。
第三个条件是隐私(或信息流管理),但它更复杂。ZKP 可用于一些具有客户端证明的隐私应用程序,这正是 Aleo、Aztec 或 Polygon Miden 等平台正在构建的目标,但为所有潜在用例实现大规模隐私也依赖于 MPC 和 FHE 的进展- 未来博客文章的潜在主题。
我们论文的风险
如果我们错了,未来既不是模块化也不是 ZK 化怎么办?我们论文的一些潜在风险包括:
模块化增加了复杂性
用户和开发者都面临着链数量不断增长的困扰。用户需要跨多个链(以及可能的多个钱包)管理资金。另一方面,考虑到空间仍在不断发展,应用程序开发人员的稳定性和可预测性较差,这使得决定构建哪条链变得更加困难。他们还需要考虑状态和流动性碎片化。现在尤其如此,因为我们仍在沿着哪些组件有意义解耦以及哪些组件将重新耦合的前沿进行试验。我们相信用户操作抽象以及安全高效的互操作解决方案是解决这个问题的关键部分。
ZK 的性能是否足够好?
无可回避的事实是,证明生成时间太长,而且证明和验证的成本在今天仍然太高。对于当今的许多应用程序来说,诸如可信执行环境/TEE(隐私)或乐观/加密经济安全解决方案(成本)之类的竞争解决方案仍然更有意义。
然而,关于 ZKP 的软件优化和硬件加速,我们正在做大量工作。证明聚合将通过将成本分摊到多个不同方(较低的/用户成本)来帮助进一步降低验证成本。还可以调整基础层以针对 ZKP 验证进行更加优化。ZKP 硬件加速面临的一项挑战是证明系统的快速开发。这使得创建专用硬件(ASIC)变得困难,因为如果/当底层证明系统的标准发展时,它们可能会很快过时。
Ingonyama尝试通过称为ZK 分数的可比指标为证明者性能创建一些基准。它 基于运行计算的成本 (OPEX) 并跟踪 MMOPS/WATT,其中 MMOPS 代表每秒模乘运算。如需进一步阅读该主题,我们推荐Cysic和Ingonyama的博客,以及Wei Dai的演讲。
ZKP 可以提供的有限隐私有用吗?
ZKP 只能用于实现个人状态的隐私,不能用于多方需要对加密数据进行计算的共享状态(例如私有 Uniswap)。FHE 和 MPC 也需要完全隐私,但在成为更广泛使用的可行选择之前,它们需要在成本和性能方面提高许多数量级。也就是说,ZKP 对于某些不需要私有共享状态的用例仍然有用,例如身份解决方案或支付。并非所有问题都需要使用同一个工具来解决。
概括
那么这会给我们带来什么影响呢?虽然我们每天都在进步,但仍有大量工作要做。最迫切需要解决的问题是价值和信息如何在不同的模块化组件之间安全地流动,而不牺牲速度或成本,以及将其全部从最终消费者中抽象出来,以便他们不需要关心之间的桥接不同的链、切换钱包等。
虽然我们目前仍处于实验阶段,但随着时间的推移,当我们找出每个用例的最佳权衡范围时,情况应该会稳定下来。这反过来将为标准(非正式或正式)的出现提供空间,并为这些链之上的构建者提供更多稳定性。
如今,由于生成 ZKP 的成本和复杂性,仍然有许多用例默认采用加密经济安全,有些用例需要两者的结合。然而,随着我们设计更高效的证明系统和专用硬件以降低证明和验证的成本和延迟,这一份额应该会随着时间的推移而减少。随着成本和速度的每一次指数级降低,新的用例都会被解锁。
虽然这篇文章特别关注 ZKP,但我们也越来越感兴趣现代密码学解决方案(ZKP、MPC、FHE 和 TEE)最终将如何一起发挥作用 – 我们已经看到了这一点。