Zypher Research:Nova-重塑 ZK 游戏未来(一)
全链游戏/自治世界是Web3最重要的叙事之一。截至10月底,web3游戏每日活跃用户 (DAU) 高达 530 万,展现出巨大的市场潜力。与Web2.5应用不同,全链游戏/自治世界将游戏逻辑全部部署在区块链上,直接利用区块链作为游戏服务器,确保用户的每个操作都在链上真实发生,这带来了去中心化、可信任、组合性强等显著优势,但传统游戏在拥抱web3时仍然面临性能瓶颈、可扩展性和隐私等方面的重大挑战。Nova是一种折叠方案,有望重塑游戏现状,引领web3游戏走向新时代。
什么是Nova
Nova [1]是一种基于折叠方案的递归证明系统,专为R1CS 设计,能够高效实现增量可验证计算(IVC)。IVC是一种加密原语,指通过证明每一步结果的正确性,确保每一步都正确地执行了之前所有的结果,从而使某方能够展示给定计算机程序执行过程的完整性。
首先,什么是IC(Incremental Computation)?IC是指递归应用同一个函数 F来进行计算 ,即通过输入初始状态, 经过此迭代后得到状态,如图1.a所示。如果函数F还包含一个验证电路,那么就得到 IVC(Incrementally verifiable computation)。IVC允许Prover向Verifier证明 ,并在每一步都生成一个,这是一个简洁的证明,确保从开始到第 步的计算过程正确无误,如图1.b所示 。可以看出,这种方法可以将大型计算/语句拆分为较小的块,然后可更高效地执行重复相同的代码块。
Nova提出了一种极具创新的折叠方案,该方案将两个R1CS instance以及各自的witness-instance合并成一个。与基于Snark的IVC相比,Nova不需要在每个递归中验证先前的Snark证明,因此具有以下特点:
- 无需可信设置
- 无需FFT运算,也不需要配对友好的椭圆曲线
- 恒定的验证时间
- 仅针对R1CS instance,会将2个R1CS instance合并为1个R1CS instance
为什么是Nova
web3游戏前景广阔,但也面临诸多挑战。首先,对于实时快节奏游戏,操作指令的响应时间通常以毫秒为单位,然而大多数区块链尚未具备支持运行高性能游戏所需的能力。其次,随着交易量的增加,区块链可能会变得拥挤,导致延迟并影响体验。
为了解决这些问题,我们探索了一种名为Game Rollup的方法。Game Rollup通过Groth16证明系统,将游戏操作指令聚合到同一个电路中,然后生成一个proof并上传到链上进行验证。借助这一方式,玩家可以在与区块链交互之前执行更多操作,享受更长时间的游戏体验,避免每次操作都需要等待链上的确认。
具体而言,我们Rollup电路也可以表示成IVC形式:
其中F is the turn function of game。
以我们的2048游戏为例,这是一款经典益智滑动游戏的链上改编版。设计2048最大的挑战在于F函数的设计。因为在2048游戏中,每个回合有上下左右四个可能的指令输入,为了兼容这四种输入,F函数(电路)的设计需要相当精巧,因为它与一些通过智能合约在链上实现2048逻辑的有着本质不同,后者通常通过简单的if语句(例如if up {},else if down {}...)来处理指令。然而,电路中并不支持直接使用if-else结构,我们会在下一篇中具体谈谈。
Solana是一条高性能公链,能够提供较快的交易确认速度,但即便如此,在其上部署的2048游戏[2]的体验依然没有达到理想的流畅度。相比之下,我们基于Game Rollup的方法提供了更加顺畅的游戏体验,这也证明了Game Rollup在提高游戏性能方面的优势,然而这种方法仍然存在一些局限性,因为它只是IVC的一种最朴素的实现方式:
- The prover requires Ω ( i *∣ F ∣ ) memory
- The proof is not incrementally updatable
直到我们遇见并深度研究了Nova,恍然有一种“相见恨晚”的感觉,因为它突破了Game Rollup的局限性,有望解决Web3游戏中的性能瓶颈和可扩展性问题。下面是我们以2048游戏为例,对Game Rollup和Nova这两种实现方式做的性能基准测试:
总结
Nova不仅性能优越,而且内存效率高,这对于大型电路来说,这一点非常重要,因为groth16需要较大的 SRS并耗尽内存,Nova在低内存环境中仍然能够高效运行。目前,一些ZKVM也已经开始基于Nova构建,例如Nexus[3]。我们相信,Nova将为Web3游戏带来了前所未有的性能和可扩展性,成为推动Web3游戏发展的关键技术。Zypher已经和Nexus建立了紧密的战略合作伙伴关系,正在积极合作采用Nexus基于Nova系统的ZKVM来创建下一代链上去中心化应用基础设施。
参考:
[1] https://eprint.iacr.org/2021/370