ZK Rollups:不容忽视的难题

中级May 29, 2024
零知识证明有望打造一个更私密和可扩展的区块链生态系统,但许多关于零知识方面被误解或与普遍认知中的实施方式不同,文中解析ZKPs 主要有两个面向零知识和简洁性,当ZKPs 和ZK rollups 最终技术成熟时,肯定可以提供更好的解决方案来解决区块链三难问题。
ZK Rollups:不容忽视的难题

转发原文标题《[ZK series - 1] ZK Rollups: Elephant In the Room》

概括

  • 尽管零知识证明(ZKPs)对更私密和可扩展的区块链生态系统充满了希望,但许多关于ZK的方面被误解或与常见的认知不同实现。
  • ZKP 具有两个主要方面:“零知识”和“简洁性”。尽管并非不正确,但大多数ZK rollup仅利用了简洁性属性;交易数据和账户信息并未完全保持零知识或隐私。
  • ZK rollup 可能不是每种去中心化应用程序(DApp)开发的最佳选择。例如,生成ZKP可能成为快速终局的瓶颈,削弱Web3游戏的性能,而基于状态差异发布的数据可用性保证方法可能会影响DeFi借贷协议的服务。

图 1:ZK是一个不错的流行词

(来源:imgflip)

当前区块链行业的状态可以类比为零知识(ZK)时代。无论你看哪里,ZK都是显眼的……越来越少见到不将ZK纳入其名称的下一代区块链项目。从技术角度来看,毫无疑问,ZK是一项有前途的技术,能够为更可扩展和私密的区块链生态系统做出贡献。然而,由于ZK复杂的技术背景,许多零售和机构投资者经常仅基于“看起来很酷、新颖且可能解决区块链三难困境”的信念投资于ZK项目,而未完全理解ZK技术如何惠及每个项目。

在本次ZK系列中,我们将探讨ZK rollup的不便事实(缺点与劣势)以及有益的应用。首先,我们将解析ZK证明(ZKP)在区块链中的两个核心属性:“零知识”和“简洁性”;然后,我们将讨论目前服务中的大量ZK rollup实际上并未利用“零知识”这一方面。接下来,我们将审视在某些领域应用ZK rollup反而有害而非有利的情况,避免实施复杂性等众所周知的问题。最后,我们将重点介绍一些有效体现ZK原则并通过使用ZK技术展示实际利益的示范项目。

回顾:ZK Rollups 中的交易生命周期

Rollup是一种扩展解决方案,通过在链下执行成批交易并将最新的L2状态摘要数据存储在L1上,来解决L1的吞吐量限制。其中,ZK rollup因其通过提交链下计算的有效性证明来快速提取资金的能力而脱颖而出。在深入探讨ZK rollup的问题之前,我们先简要回顾其交易生命周期。

图 2:ZK Rollup中的交易生命周期

(来源:Presto 研究)

  1. 每个L2用户生成并向排序器(sequencer)提交他们的交易。
  2. 排序器汇总并排序多个交易,然后通过在链下执行它们来计算新的rollup状态。随后,排序器将这个新的rollup状态以“批次”的形式提交到链上的状态智能合约中,并将相应的L2交易数据压缩成数据块,以确保数据可用性。
  3. 该批次被发送给证明者(prover),证明者为该批次的执行创建一个有效性证明(或ZKP)。这个有效性证明连同额外的数据(例如之前的状态根)一起被发送到L1的验证者智能合约,以帮助验证者识别它正在验证的内容。
  4. 验证者合约检查证明有效后,更新rollup的状态,并认为已提交批次中的L2交易已经完成。

(需要注意的是,这一解释是对完整ZK rollup过程的简化版本,每种实现根据协议不同可能有所差异。如果我们分离角色,L2中可能有更多实体,例如汇总器、执行器和提议者。数据块的层级也可能不同,具体取决于其用途,如区块、数据块和批次。以上解释假设一个中心化排序器拥有强大权力,执行交易并生成统一的数据块格式作为批次。)

与Optimistic rollup不同,由于ZKP(如ZK-SNARKs或ZK-STARKs)的存在,ZK rollup可以通过验证一个简单的证明来验证成千上万交易的执行正确性,而无需重放所有交易。那么,什么是ZKP,它有哪些特性?

ZKP 的两个特性:零知识和简洁性

顾名思义,零知识证明(ZKP)本质上是一种证明。证明可以是任何能够充分支持证明者(prover)主张的东西。假设Bob(证明者)想让Alice(验证者)相信他对其笔记本电脑的权限。最简单的证明方式是——Bob直接告诉Alice密码,Alice在笔记本电脑上输入密码并验证Bob确实拥有权限。然而,这种验证过程对Alice和Bob来说都是不满意的。如果Bob设置了一个非常长且复杂的密码,对于Alice来说正确输入会非常具有挑战性(假设Alice不能复制粘贴)。更现实的是,Bob可能不愿意向Alice透露他的密码以证明其权限。

如果有一种验证过程,可以让Alice迅速验证电脑的权限,而Bob不必透露他的密码,该怎么办?例如,Bob可以在Alice面前使用触摸ID解锁笔记本电脑(如图3所示,注意这不是ZKP的完美示例)。在这种情况下,Alice和Bob都可以从ZKP的两个关键属性中受益:零知识属性和简洁性属性。

图3:零知识和简洁性的高级直观理解

(来源:imgflip)

零知识

“零知识”属性指的是证明者生成的证明不泄露任何关于秘密见证(即私人数据)的信息,验证者除了证明的有效性之外,对数据一无所知。在区块链中,这一属性可以用于保护用户的隐私。如果将零知识证明应用于每笔交易,用户可以证明其行为的合法性(例如证明用户有足够的资金进行交易),而无需向公众暴露其交易的细节(如转账、账户余额更新、智能合约部署和智能合约执行)。

简洁

另一个属性“简洁性”指的是ZK能够从大规模的主张中生成简短且易于验证的证明。换句话说,就是将庞大的东西压缩成紧凑的形式。在区块链中,这一点特别用于Rollup。通过ZKP,L2中的证明者可以通过向L1的验证者提交简洁的证明来证明交易的正确执行(TB级别的交易的有效性可以用10100 KB的证明来表示)。验证者可以通过验证简洁的证明,而不是重放所有交易,在短时间内(如10毫秒1秒)轻松确认执行的有效性。

ZK Rollup 很棒,但并不意味着隐私

前述的零知识证明(ZKP)特性在ZK rollup中得到了很好的利用。尽管验证者无法从证明者提供的ZKP中推断出原始交易数据,但验证简洁的证明允许他们有效验证证明者的主张(即新的L2状态)。尽管如此,声称当前版本的ZK rollup完全遵循零知识和简洁性特性是具有误导性的。如果仅关注证明者和验证者之间的互动,这可能是正确的,但ZK rollup中还存在其他组件,如排序器(sequencer)、证明者(prover)和rollup节点。对于这些组件,“零知识”原则是否也得到了保证?

在任何ZK rollup中,使用ZKP实现完全隐私的挑战在于,如果其他部分保持公开,而只有一些部分通过ZK实现私密性,这可能会导致隐私泄露。考虑ZK rollup中的交易生命周期——当交易从用户发送到排序器时,隐私是否得到了维护?对证明者而言又如何?或者,当L2批次提交到数据可用性(DA)层时,个人账户信息的隐私是否得到了保护?目前,这些情景下的隐私都没有得到完全保证。

图4:ZK rollup中的隐私泄露

(来源:Presto 研究)

在大多数主流的ZK rollup中,排序器或证明者(或其他拥有强大权力的中心化实体)对包括转账金额、账户余额更新、合约部署和合约执行在内的交易详情有清晰的可见性。一个简单的例子是,通过访问任何ZK rollup区块浏览器,您可以轻松观察到所有提到的细节。不仅如此,考虑一种情况,如果中心化排序器因某种原因停止服务,另一个rollup节点尝试恢复rollup状态,它将从DA层(通常是L1 Ethereum)收集公开发布的L2数据,并重建L2状态。在此过程中,任何能够重放存储在DA层中的L2交易的节点都可以恢复每个用户账户状态的信息。

因此,目前ZK rollup中的“零知识”是以一种片段化的形式实现的。尽管这不能被视为不正确,但显然它不同于普遍认为的“ZK意味着零知识等同于完全隐私”的概念。当前ZK rollup的创新在于利用“简洁性”特性,而不是“零知识”,通过链下执行交易,并生成简洁的证明,供验证者快速且可扩展地验证执行的有效性,而无需重新执行这些交易。

因此,一些ZK rollup,如Starknet,自称为“有效性Rollup”以避免混淆,而其他确保真正ZK隐私的,如Aztec,则称自己为ZK-ZK rollup。

思考 ZK Rollups 的实用性

如上所述,大多数ZK rollup并未完全实现ZK隐私。那么,我们的下一个目标应该是什么呢?通过在rollup的每个部分完全部署ZK来实现完整的交易隐私?事实上,这并不是一个简单的问题。除了需要进行重大技术进步以进一步完善技术之外,ZK在意识形态(例如,私密交易的非法使用)和实用性(例如,它实际上有用吗?)方面仍存在争议。鉴于讨论完全交易隐私的道德问题超出了本文的范围,让我们将注意力集中在区块链项目遇到的ZK rollup的两个实用性要点上。

要点1:生成ZKP可能成为快速终局的瓶颈

首先讨论ZK rollup本身的实用性。ZK rollup最具吸引力的卖点是由于其ZKP的“快速终局”而导致的资产提取延迟短。增强的TPS和低交易费用是一个额外的好处。最有效利用ZK rollup特性的领域是游戏,因为游戏中的存款和提款非常频繁,并且每秒生成的游戏内交易量很高。

但是ZK rollup真的可以被视为游戏的最佳堆栈吗?为此,我们需要更深入地思考ZK rollup中“快速终局”的概念。想象一下这样一种情况,一个用户正在享受基于ZK rollup的堆栈上运行的Web3游戏。用户将游戏内物品交易为游戏内货币,并尝试从游戏中提取该资产。

要提取资产,游戏内交易必须完成;这意味着交易必须包含在新的rollup状态承诺中,相应的ZKP应提交到L1,并等待证明在L1以确保交易不可逆转。如果所有这些过程都可以立即发生,那么是的,我们可以实现ZK rollup经常宣传的“即时交易确认”,让用户立即提取资产。

然而,现实远非如此。根据L2beat提供的不同ZK rollup的终局时间统计数据,zkSync Era大约需要2小时,Linea需要3小时,而Starknet平均约为8小时。这是因为从证明者生成ZKP需要时间,并且需要额外的时间将更多交易包含在单个批次(即单个证明)中,以降低交易费用。换句话说,生成和提交证明的速度是ZK rollup中实现快速终局的潜在瓶颈,这可能会影响Web3游戏中用户的体验。

图 5:ZKP 生成可能是 ZK rollups 快速确定性的潜在瓶颈

(来源:imgflip)

另一方面,像Ronin这样针对游戏优化的链(为Pixels和Axie Infinity等Web3游戏提供支持)确保了超快的终局时间,同时牺牲了去中心化和安全性。Ronin不是基于ZK或rollup的链:它是一个运行在PoA(权威证明)+ DPoS(委托权益证明)共识算法下的EVM区块链。它根据被委托的权益量选择22个验证者,然后这些验证者简单地以PoA的方式生成和验证区块(即仅在22个验证者之间进行投票过程)。因此,在Ronin上,交易被迅速地完成,因为交易几乎没有延迟被包含在区块中,并且被验证所需的时间很短。在Shillin硬分叉之后,平均每笔交易仅需要6秒完成。Ronin实现了所有这一切,而没有使用ZKP。

当然,Ronin也有缺点。由中心化验证者管理使其相对更容易受到51%攻击的威胁。此外,由于它不使用以太坊作为结算层,它无法继承以太坊的安全性。与使用跨链桥的安全风险也存在。但是从用户的角度来看:他们会关心这些吗?当前没有分散排序的ZK rollup也存在单点故障(SPOF)问题。以太坊为它们提供了保证,因为它降低了交易被撤销的可能性,但是如果中心化的排序器或证明者崩溃,ZK rollup也会停滞不前。再次注意,ZK rollup中的“ZK”仅用于验证执行正确性的有效性。如果有另一个项目提供与ZK rollup相同的功能但更快更便宜,那么ZK rollup可能不再被Web3游戏用户和开发者视为首选堆栈。

第二要点:发布状态差异是一把双刃剑

另一个要点是ZK rollup协议实现的实用性。其中,我们将重点放在状态差异发布上,这是确保ZK rollup中数据可用性的一种方式(参见Unlocking Dencun Upgrade: Unseen Truth of Scaling DA Layers,Jaehyun Ha,12Apr24)。

理解rollup中数据可用性的一种简单方法是想象一个业余登山者认证并记录他攀登珠穆朗玛峰的过程。最简单的方法是在视频中记录从大本营到峰顶的每一步攀登。尽管视频文件可能很大,但任何人都可以验证登山者登顶珠穆朗玛峰的过程,甚至可能重新播放视频。这个类比可以类比为确保数据可用性的原始交易数据发布方法。乐观的rollup遵循这种方法,以便让各个挑战者重新播放和验证正确执行,因为对于排序器的状态承诺没有什么可以信任的。在ZK rollup中,Polygon zkEVM和Scroll采用了这种方法,将原始的L2交易数据以压缩形式存储在L1上,以便在需要时任何人都可以重放L2交易来恢复rollup的状态。

回到业余登山者的例子,另一种验证方法可能是一位知名登山家与业余登山者一同攀登珠穆朗玛峰,以向世界证明攀登确实完成了。由于攀登已经由一个可信赖的人士认证,登山者就不再需要记录每一步的过程。只需在起点拍一张照片,峰顶再拍一张照片就足够了,其他人会认为登山者已经登顶。这个类比反映了确保数据可用性所使用的状态差异方法。在ZK rollup中,zkSync Era和StarkNet采用了这种方法,只在L1上存储L2交易执行前后的状态差异,以便在需要时任何人都可以从创世开始计算状态差异以恢复rollup的状态。

图6:原始交易发布 vs. 状态差异发布

(来源:Presto 研究)

这种状态差异方法在成本上无疑比原始交易数据发布方法更有利,因为它可以跳过存储中间交易,从而减少了L1上的存储成本。然而,尽管这通常不是一个问题,但这里存在一个潜在的缺点:这种方法不允许完全恢复L2交易历史记录,这对一些DApps可能是个问题。

让我们以DeFi借贷协议Compound为例,并假设它是建立在基于状态差异方法的ZK rollup堆栈之上。这些协议需要完整的交易历史记录,以便每秒计算供应和借贷利率。但是,如果一些ZK rollup排序器不可用,其他rollup节点尝试恢复最新状态会发生什么呢?它可能会恢复状态,但利率将不准确,因为它只能跟踪批次之间的快照,而不能跟踪每个中间交易。

结论

本文主要断言,如今大多数ZK rollup中都没有“ZK”,并且在利用ZKP和ZK rollups的DApps中,可能并不是最优选择的领域很多。ZK技术可能会感到无辜受到指责;因为它本身并没有什么本质上的问题——只是在利用其技术进步的过程中,它可能会在DApps中带来潜在的性能下降。然而,这并不意味着ZK技术对这个行业无用。当ZKP和ZK rollups最终具备技术成熟度时,它们肯定可以提供更好的解决方案来解决区块链三难问题。事实上,存在着保持ZK隐私以及有效利用ZKP和ZK rollups优势的各种类型的DApps。我们将在下一篇文章中进一步探讨这一点,敬请关注!

声明:

  1. 本文转载自[Prestolabs],转发原文标题《[ZK series - 1] ZK Rollups: Elephant In the Room》,著作权归属原作者[ZK series - 1],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

ZK Rollups:不容忽视的难题

中级May 29, 2024
零知识证明有望打造一个更私密和可扩展的区块链生态系统,但许多关于零知识方面被误解或与普遍认知中的实施方式不同,文中解析ZKPs 主要有两个面向零知识和简洁性,当ZKPs 和ZK rollups 最终技术成熟时,肯定可以提供更好的解决方案来解决区块链三难问题。
ZK Rollups:不容忽视的难题

转发原文标题《[ZK series - 1] ZK Rollups: Elephant In the Room》

概括

  • 尽管零知识证明(ZKPs)对更私密和可扩展的区块链生态系统充满了希望,但许多关于ZK的方面被误解或与常见的认知不同实现。
  • ZKP 具有两个主要方面:“零知识”和“简洁性”。尽管并非不正确,但大多数ZK rollup仅利用了简洁性属性;交易数据和账户信息并未完全保持零知识或隐私。
  • ZK rollup 可能不是每种去中心化应用程序(DApp)开发的最佳选择。例如,生成ZKP可能成为快速终局的瓶颈,削弱Web3游戏的性能,而基于状态差异发布的数据可用性保证方法可能会影响DeFi借贷协议的服务。

图 1:ZK是一个不错的流行词

(来源:imgflip)

当前区块链行业的状态可以类比为零知识(ZK)时代。无论你看哪里,ZK都是显眼的……越来越少见到不将ZK纳入其名称的下一代区块链项目。从技术角度来看,毫无疑问,ZK是一项有前途的技术,能够为更可扩展和私密的区块链生态系统做出贡献。然而,由于ZK复杂的技术背景,许多零售和机构投资者经常仅基于“看起来很酷、新颖且可能解决区块链三难困境”的信念投资于ZK项目,而未完全理解ZK技术如何惠及每个项目。

在本次ZK系列中,我们将探讨ZK rollup的不便事实(缺点与劣势)以及有益的应用。首先,我们将解析ZK证明(ZKP)在区块链中的两个核心属性:“零知识”和“简洁性”;然后,我们将讨论目前服务中的大量ZK rollup实际上并未利用“零知识”这一方面。接下来,我们将审视在某些领域应用ZK rollup反而有害而非有利的情况,避免实施复杂性等众所周知的问题。最后,我们将重点介绍一些有效体现ZK原则并通过使用ZK技术展示实际利益的示范项目。

回顾:ZK Rollups 中的交易生命周期

Rollup是一种扩展解决方案,通过在链下执行成批交易并将最新的L2状态摘要数据存储在L1上,来解决L1的吞吐量限制。其中,ZK rollup因其通过提交链下计算的有效性证明来快速提取资金的能力而脱颖而出。在深入探讨ZK rollup的问题之前,我们先简要回顾其交易生命周期。

图 2:ZK Rollup中的交易生命周期

(来源:Presto 研究)

  1. 每个L2用户生成并向排序器(sequencer)提交他们的交易。
  2. 排序器汇总并排序多个交易,然后通过在链下执行它们来计算新的rollup状态。随后,排序器将这个新的rollup状态以“批次”的形式提交到链上的状态智能合约中,并将相应的L2交易数据压缩成数据块,以确保数据可用性。
  3. 该批次被发送给证明者(prover),证明者为该批次的执行创建一个有效性证明(或ZKP)。这个有效性证明连同额外的数据(例如之前的状态根)一起被发送到L1的验证者智能合约,以帮助验证者识别它正在验证的内容。
  4. 验证者合约检查证明有效后,更新rollup的状态,并认为已提交批次中的L2交易已经完成。

(需要注意的是,这一解释是对完整ZK rollup过程的简化版本,每种实现根据协议不同可能有所差异。如果我们分离角色,L2中可能有更多实体,例如汇总器、执行器和提议者。数据块的层级也可能不同,具体取决于其用途,如区块、数据块和批次。以上解释假设一个中心化排序器拥有强大权力,执行交易并生成统一的数据块格式作为批次。)

与Optimistic rollup不同,由于ZKP(如ZK-SNARKs或ZK-STARKs)的存在,ZK rollup可以通过验证一个简单的证明来验证成千上万交易的执行正确性,而无需重放所有交易。那么,什么是ZKP,它有哪些特性?

ZKP 的两个特性:零知识和简洁性

顾名思义,零知识证明(ZKP)本质上是一种证明。证明可以是任何能够充分支持证明者(prover)主张的东西。假设Bob(证明者)想让Alice(验证者)相信他对其笔记本电脑的权限。最简单的证明方式是——Bob直接告诉Alice密码,Alice在笔记本电脑上输入密码并验证Bob确实拥有权限。然而,这种验证过程对Alice和Bob来说都是不满意的。如果Bob设置了一个非常长且复杂的密码,对于Alice来说正确输入会非常具有挑战性(假设Alice不能复制粘贴)。更现实的是,Bob可能不愿意向Alice透露他的密码以证明其权限。

如果有一种验证过程,可以让Alice迅速验证电脑的权限,而Bob不必透露他的密码,该怎么办?例如,Bob可以在Alice面前使用触摸ID解锁笔记本电脑(如图3所示,注意这不是ZKP的完美示例)。在这种情况下,Alice和Bob都可以从ZKP的两个关键属性中受益:零知识属性和简洁性属性。

图3:零知识和简洁性的高级直观理解

(来源:imgflip)

零知识

“零知识”属性指的是证明者生成的证明不泄露任何关于秘密见证(即私人数据)的信息,验证者除了证明的有效性之外,对数据一无所知。在区块链中,这一属性可以用于保护用户的隐私。如果将零知识证明应用于每笔交易,用户可以证明其行为的合法性(例如证明用户有足够的资金进行交易),而无需向公众暴露其交易的细节(如转账、账户余额更新、智能合约部署和智能合约执行)。

简洁

另一个属性“简洁性”指的是ZK能够从大规模的主张中生成简短且易于验证的证明。换句话说,就是将庞大的东西压缩成紧凑的形式。在区块链中,这一点特别用于Rollup。通过ZKP,L2中的证明者可以通过向L1的验证者提交简洁的证明来证明交易的正确执行(TB级别的交易的有效性可以用10100 KB的证明来表示)。验证者可以通过验证简洁的证明,而不是重放所有交易,在短时间内(如10毫秒1秒)轻松确认执行的有效性。

ZK Rollup 很棒,但并不意味着隐私

前述的零知识证明(ZKP)特性在ZK rollup中得到了很好的利用。尽管验证者无法从证明者提供的ZKP中推断出原始交易数据,但验证简洁的证明允许他们有效验证证明者的主张(即新的L2状态)。尽管如此,声称当前版本的ZK rollup完全遵循零知识和简洁性特性是具有误导性的。如果仅关注证明者和验证者之间的互动,这可能是正确的,但ZK rollup中还存在其他组件,如排序器(sequencer)、证明者(prover)和rollup节点。对于这些组件,“零知识”原则是否也得到了保证?

在任何ZK rollup中,使用ZKP实现完全隐私的挑战在于,如果其他部分保持公开,而只有一些部分通过ZK实现私密性,这可能会导致隐私泄露。考虑ZK rollup中的交易生命周期——当交易从用户发送到排序器时,隐私是否得到了维护?对证明者而言又如何?或者,当L2批次提交到数据可用性(DA)层时,个人账户信息的隐私是否得到了保护?目前,这些情景下的隐私都没有得到完全保证。

图4:ZK rollup中的隐私泄露

(来源:Presto 研究)

在大多数主流的ZK rollup中,排序器或证明者(或其他拥有强大权力的中心化实体)对包括转账金额、账户余额更新、合约部署和合约执行在内的交易详情有清晰的可见性。一个简单的例子是,通过访问任何ZK rollup区块浏览器,您可以轻松观察到所有提到的细节。不仅如此,考虑一种情况,如果中心化排序器因某种原因停止服务,另一个rollup节点尝试恢复rollup状态,它将从DA层(通常是L1 Ethereum)收集公开发布的L2数据,并重建L2状态。在此过程中,任何能够重放存储在DA层中的L2交易的节点都可以恢复每个用户账户状态的信息。

因此,目前ZK rollup中的“零知识”是以一种片段化的形式实现的。尽管这不能被视为不正确,但显然它不同于普遍认为的“ZK意味着零知识等同于完全隐私”的概念。当前ZK rollup的创新在于利用“简洁性”特性,而不是“零知识”,通过链下执行交易,并生成简洁的证明,供验证者快速且可扩展地验证执行的有效性,而无需重新执行这些交易。

因此,一些ZK rollup,如Starknet,自称为“有效性Rollup”以避免混淆,而其他确保真正ZK隐私的,如Aztec,则称自己为ZK-ZK rollup。

思考 ZK Rollups 的实用性

如上所述,大多数ZK rollup并未完全实现ZK隐私。那么,我们的下一个目标应该是什么呢?通过在rollup的每个部分完全部署ZK来实现完整的交易隐私?事实上,这并不是一个简单的问题。除了需要进行重大技术进步以进一步完善技术之外,ZK在意识形态(例如,私密交易的非法使用)和实用性(例如,它实际上有用吗?)方面仍存在争议。鉴于讨论完全交易隐私的道德问题超出了本文的范围,让我们将注意力集中在区块链项目遇到的ZK rollup的两个实用性要点上。

要点1:生成ZKP可能成为快速终局的瓶颈

首先讨论ZK rollup本身的实用性。ZK rollup最具吸引力的卖点是由于其ZKP的“快速终局”而导致的资产提取延迟短。增强的TPS和低交易费用是一个额外的好处。最有效利用ZK rollup特性的领域是游戏,因为游戏中的存款和提款非常频繁,并且每秒生成的游戏内交易量很高。

但是ZK rollup真的可以被视为游戏的最佳堆栈吗?为此,我们需要更深入地思考ZK rollup中“快速终局”的概念。想象一下这样一种情况,一个用户正在享受基于ZK rollup的堆栈上运行的Web3游戏。用户将游戏内物品交易为游戏内货币,并尝试从游戏中提取该资产。

要提取资产,游戏内交易必须完成;这意味着交易必须包含在新的rollup状态承诺中,相应的ZKP应提交到L1,并等待证明在L1以确保交易不可逆转。如果所有这些过程都可以立即发生,那么是的,我们可以实现ZK rollup经常宣传的“即时交易确认”,让用户立即提取资产。

然而,现实远非如此。根据L2beat提供的不同ZK rollup的终局时间统计数据,zkSync Era大约需要2小时,Linea需要3小时,而Starknet平均约为8小时。这是因为从证明者生成ZKP需要时间,并且需要额外的时间将更多交易包含在单个批次(即单个证明)中,以降低交易费用。换句话说,生成和提交证明的速度是ZK rollup中实现快速终局的潜在瓶颈,这可能会影响Web3游戏中用户的体验。

图 5:ZKP 生成可能是 ZK rollups 快速确定性的潜在瓶颈

(来源:imgflip)

另一方面,像Ronin这样针对游戏优化的链(为Pixels和Axie Infinity等Web3游戏提供支持)确保了超快的终局时间,同时牺牲了去中心化和安全性。Ronin不是基于ZK或rollup的链:它是一个运行在PoA(权威证明)+ DPoS(委托权益证明)共识算法下的EVM区块链。它根据被委托的权益量选择22个验证者,然后这些验证者简单地以PoA的方式生成和验证区块(即仅在22个验证者之间进行投票过程)。因此,在Ronin上,交易被迅速地完成,因为交易几乎没有延迟被包含在区块中,并且被验证所需的时间很短。在Shillin硬分叉之后,平均每笔交易仅需要6秒完成。Ronin实现了所有这一切,而没有使用ZKP。

当然,Ronin也有缺点。由中心化验证者管理使其相对更容易受到51%攻击的威胁。此外,由于它不使用以太坊作为结算层,它无法继承以太坊的安全性。与使用跨链桥的安全风险也存在。但是从用户的角度来看:他们会关心这些吗?当前没有分散排序的ZK rollup也存在单点故障(SPOF)问题。以太坊为它们提供了保证,因为它降低了交易被撤销的可能性,但是如果中心化的排序器或证明者崩溃,ZK rollup也会停滞不前。再次注意,ZK rollup中的“ZK”仅用于验证执行正确性的有效性。如果有另一个项目提供与ZK rollup相同的功能但更快更便宜,那么ZK rollup可能不再被Web3游戏用户和开发者视为首选堆栈。

第二要点:发布状态差异是一把双刃剑

另一个要点是ZK rollup协议实现的实用性。其中,我们将重点放在状态差异发布上,这是确保ZK rollup中数据可用性的一种方式(参见Unlocking Dencun Upgrade: Unseen Truth of Scaling DA Layers,Jaehyun Ha,12Apr24)。

理解rollup中数据可用性的一种简单方法是想象一个业余登山者认证并记录他攀登珠穆朗玛峰的过程。最简单的方法是在视频中记录从大本营到峰顶的每一步攀登。尽管视频文件可能很大,但任何人都可以验证登山者登顶珠穆朗玛峰的过程,甚至可能重新播放视频。这个类比可以类比为确保数据可用性的原始交易数据发布方法。乐观的rollup遵循这种方法,以便让各个挑战者重新播放和验证正确执行,因为对于排序器的状态承诺没有什么可以信任的。在ZK rollup中,Polygon zkEVM和Scroll采用了这种方法,将原始的L2交易数据以压缩形式存储在L1上,以便在需要时任何人都可以重放L2交易来恢复rollup的状态。

回到业余登山者的例子,另一种验证方法可能是一位知名登山家与业余登山者一同攀登珠穆朗玛峰,以向世界证明攀登确实完成了。由于攀登已经由一个可信赖的人士认证,登山者就不再需要记录每一步的过程。只需在起点拍一张照片,峰顶再拍一张照片就足够了,其他人会认为登山者已经登顶。这个类比反映了确保数据可用性所使用的状态差异方法。在ZK rollup中,zkSync Era和StarkNet采用了这种方法,只在L1上存储L2交易执行前后的状态差异,以便在需要时任何人都可以从创世开始计算状态差异以恢复rollup的状态。

图6:原始交易发布 vs. 状态差异发布

(来源:Presto 研究)

这种状态差异方法在成本上无疑比原始交易数据发布方法更有利,因为它可以跳过存储中间交易,从而减少了L1上的存储成本。然而,尽管这通常不是一个问题,但这里存在一个潜在的缺点:这种方法不允许完全恢复L2交易历史记录,这对一些DApps可能是个问题。

让我们以DeFi借贷协议Compound为例,并假设它是建立在基于状态差异方法的ZK rollup堆栈之上。这些协议需要完整的交易历史记录,以便每秒计算供应和借贷利率。但是,如果一些ZK rollup排序器不可用,其他rollup节点尝试恢复最新状态会发生什么呢?它可能会恢复状态,但利率将不准确,因为它只能跟踪批次之间的快照,而不能跟踪每个中间交易。

结论

本文主要断言,如今大多数ZK rollup中都没有“ZK”,并且在利用ZKP和ZK rollups的DApps中,可能并不是最优选择的领域很多。ZK技术可能会感到无辜受到指责;因为它本身并没有什么本质上的问题——只是在利用其技术进步的过程中,它可能会在DApps中带来潜在的性能下降。然而,这并不意味着ZK技术对这个行业无用。当ZKP和ZK rollups最终具备技术成熟度时,它们肯定可以提供更好的解决方案来解决区块链三难问题。事实上,存在着保持ZK隐私以及有效利用ZKP和ZK rollups优势的各种类型的DApps。我们将在下一篇文章中进一步探讨这一点,敬请关注!

声明:

  1. 本文转载自[Prestolabs],转发原文标题《[ZK series - 1] ZK Rollups: Elephant In the Room》,著作权归属原作者[ZK series - 1],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!
立即注册