# Dojo:我们为什么要做可验证化链上游戏

By [Gametaverse 中文頻道](https://paragraph.com/@gametaverse) · 2024-03-19

---

大型MMORPG游戏可以运行在链上吗？
===================

我们都渴望一个没有腐败、恶意和轻蔑的自主世界；一个持久、永恒和自主的世界。

我们怎样才能实现这一点？就像在区块链不可能三角中，这些努力总需要某种程度的妥协。

![](https://storage.googleapis.com/papyrus_images/472b4272b58b7e555dc9610cd761618161e410cddaba686377d48a615f7ea192.png)

自主世界（AWs）面临着同样的不可能三角问题。AWs需要能够扩展到数百万并发玩家，这是一个难以解决的问题。

Rollups通过将三难问题部分转化为二难问题来解决它，这得益于继承了结算层的安全性——只要有第一层（L1）原生资产和无需许可的退出机制。

使用乐观rollup，你需要在可扩展性和安全性之间做出选择，这就是为什么一些rollup方法通过使用替代数据可用性（alt DA）或plasma DA来实现可扩展性时会在安全性上妥协。然而，使用ZK Rollup，你可以在最小信任假设下证明状态的完整性，旨在解决所有三个挑战：可扩展性、安全性和去中心化。ZK是最终解决方案。

什么是可验证化游戏（Provable Games）？
==========================

链上游戏承诺给我们自由表达和对我们信息的主权。它们之所以具有这些属性，是因为它们运行在通过共识验证的区块链上。使用zk证明的可验证化游戏（Provable Games），允许在没有大型共识方案的情况下验证游戏状态和计算。用Cairo、Noir等语言编写或运行RISC-Zero的这些游戏，可以在类似浏览器的独立zkVM上独立运行，可验证的输出确保了真实的执行。这扩大了我们在链上游戏行业的可能性。

一个具有代表性的例子是像大金刚（Donkey Kong，类似于马里奥兄弟的游戏）这样的游戏。目前，要想在排行榜上认证你的高分，你必须在认证的机器上玩游戏以防止作弊，同时记录你的游戏过程。然而，如果大金刚是一个可验证化游戏，玩家就可以在隔离环境中竞争。取得高分只需向游戏提交一个证明进行验证。这种方法允许玩家在家的舒适环境中确立自己作为大金刚之王的地位，无需录制游戏过程！

在独立的zkVM中运行完整游戏目前还面临挑战。为了解决这一问题，Dojo生态系统正在努力简化过程，以减少复杂性。像Tonk这样的团队在可验证化游戏领域取得了进展，他们的一个显著成就是在zkVM上运行了《毁灭战士》（Doom）。随着证明成本的降低和新的证明者，如Stwo的出现，设计可验证化游戏和应用的潜力在不断扩大。

我们不必在一个孤立的zkVM中运行我们的可验证化游戏。相反，我们可以在带有最少参与者的mini-StarkNet网络上运行我们的游戏，仍然能够保证安全性。

值得注意的是，这种方法并不是非此即彼的。例如，你可以在一个EVM上运行一个链上游戏，然后在其上层叠加一个基于Cairo的游戏，增强核心游戏的同时扩展其功能。

为什么要做可验证化游戏？
============

想象一下，如果《RuneScape》（一个MMORPG开放世界游戏）的世界突然关闭了，永久地抹去了每个人的游戏数据。那会有一些非常愤怒的玩家。这种情况迟早会发生，当开发者决定关闭服务器的时候。我们能做得更好吗？我们能创造一个像《RuneScape》那样丰富、多样并且强烈的世界，而不让这种情况发生吗？

这个挑战正是整个链上游戏场景目前正在努力解决的问题：创建一个永久存在、永恒不变和自主的世界。许多团队正在探索各种方法，这正是所需要的创新和实验的类型。

许多创新正被投入到链上游戏中，但我们的焦点在于使用Cairo和Starknet VM探索可验证化游戏技术树。这篇文章旨在将一些可验证化游戏概念翻译成一个实际的例子，灵感来自于传奇游戏《RuneScape》。

![](https://storage.googleapis.com/papyrus_images/4ca908f3beac69b70bc25759a50eaa42d3d5cec2d264e12f7834e6e51820426c.png)

（**_在传奇的Skystrife chad Kooshoba在以太坊伊斯坦布尔大会上的演讲后受到启发而写下这篇文章_**）

可验证化的“哥布林”
==========

让我们构建一个有哥布林（goblins）存在的世界，并以RuneScape为例，我们将专注于游戏的初始区域，卢姆布里奇及其周边环境来探索：

*   卢姆布里奇城堡
    
*   茂密的森林
    
*   哥布林
    
*   库存物品
    

对于可验证化的哥布林，我们需要：

*   模拟哥布林和生物的动态移动，为游戏世界带来生机。
    
*   当玩家捡起物品时，实时更新库存。
    
*   全球追踪并保存玩家的进度，以保持一致的游戏体验。
    
*   设计机制防止利用，确保游戏的完整性。
    
*   支持数百万并发玩家的可扩展性。
    

Web2 游戏的扩展方式
------------

传统游戏开发依赖于中央服务器来进行核心功能，如进度管理、NPC行为、玩家状态管理、物品控制和规则执行。为了扩展，会增加更多服务器，并将游戏状态分割（分片），允许不同玩家群体的游戏区域有不同的实例。虽然这是一个有效的扩展解决方案，但这种中心化意味着开发者拥有最终控制权，包括关闭服务器的能力。这就是为什么链上游戏产业被创造出来 - 以便能够拥有一个无需信任的RuneScape...

![](https://storage.googleapis.com/papyrus_images/885dc940cdfe45a648a52f8b054ffad46f68ef031006fdfb42c49359d538955b.png)

传统区块链方式
-------

在尝试使用传统区块链方法复制中央服务器的功能时，虽然理论上是可行的，但由于几个限制，实际上变得不切实际并且几乎不可能扩展到几千个并发用户以上：

交易的验证

交易或玩家行为必须由网络中的多个节点验证和处理。虽然这种方法通过复制处理过程并使用共识来使系统更难被破坏从而确保安全性，但它也在交易处理速度上引入了一个重大瓶颈——即TPS。当然，这可以通过使用单一的中心序列器（就像几乎所有的第二层技术那样）来规避，但这需要更多的信任假设。

每秒交易数

区块链VM上的TPS限制影响游戏处理玩家行动的能力。随着玩家数量及其行为超过区块链的TPS容量，会形成积压，导致费用激增和玩家体验恶化。这实际上限制了单个区块链序列器能够管理的并发玩家数量。为了克服这些限制，以太坊专注于以rollup为中心的路线图，将执行移至rollup层。

在rollup上运行游戏世界可以显著提高可扩展性，但如果没有zk证明，我们仍然依赖于大型共识机制或广泛可能不稳定的信任假设，这引入了风险。因此，尽管zk被认为是扩展的终极解决方案，但它尚未完全实现。

![](https://storage.googleapis.com/papyrus_images/22c3e9e9a00ad7c7fd42bb384deed0395f5b3d4990b0cb99dadf757b48852c27.png)

**_（相较于OP层，ZK层的信任假设。ZK假设在低参与度下仍然保持强大，允许存在mini zk rollups）_**

一种可验证化的方式 - 使用递归证明和多层架构
-----------------------

任何区块链的目标是让用户对他们的行为拥有绝对的信任。这一原则在行业中常被遗忘；如果我们的目标不是创建无需信任的系统，那我们努力的意义何在？我们不妨依赖中心服务器，它们在其功能方面表现卓越。

在我们的RuneScape世界中，我们将专注于使用STARKs开创的递归扩展。Tarrence就这个话题写了一篇深入的文章，强调了递归证明在保持第二层、第三层的最小信任假设方面的重要性。

在我们的世界中，我们可以利用递归证明来扩展和分片世界，同时确保任何人击败的哥布林确实是哥布林。

一个简单的图示：

![](https://storage.googleapis.com/papyrus_images/a7b2db27f1b31fb6294cf945119e5bd98f8eb349bbf7d8b00758fce516c775cb.png)

架构分析
----

L1 以太坊

我们在这里确定最终状态，所以任何人如果选择的话，都能重构L2。这是每一个真正的rollup所做的。

L2 Starknet

我们在这里确定L3的状态，所以任何人如果选择的话，都能重构L3。这是我们维持整个世界状态的地方。

L3 Realms World 或其他L3

这是一个支持玩家全局状态的高性能执行层。我们在这里保存Lumbridge分片的最终状态。这允许在需要时快速创建新的分片，恢复玩家的余额。

短暂的Lumbridge分片

“短暂”意味着临时的，强调高效和安全管理每个玩家游戏状态的重要性——这对所有玩家来说是最重要的关注点。通过采用链分片，将每个分片限制在最多30个玩家——这是一个理论上的数字，可能更高，但作为一个可管理的示例——我们反映了传统服务器的结构，但有一个关键的增强：使用zk证明来确保状态变更的完整性。这允许我们水平扩展到成千上万的碎片，而不牺牲玩家的任何性能。

将这种方法应用于RuneScape

就像传统游戏服务器中的水平扩展概念一样，我们在这里采用了类似的策略。通过将游戏世界分成许多更小的碎片，我们使系统能够有效地扩展并容纳数百万并发用户。

传统游戏服务器与这种方法之间的关键区别是，玩家对自己的游戏状态拥有完全的控制，确保了更大的自主权和安全性。每一点状态都可以重构！

一个例子
----

当玩家到达Lumbridge时，他们被分配到一个有容量的短暂链，允许他们与多达29名其他玩家进行互动，同时通过快速和低成本的交易确保高性能。现在我们深入探讨：

森林，有诸如木材之类的资源

有了这个短暂链，可以跟踪玩家移动到森林的情况，执行一定级别的移动物理学，我们利用这个分片提供的廉价计算能力来实现这一点。然后他们可以继续砍木头，将其添加到他们的余额并推进他们的玩家进度。

哥布林和其他低级怪物

哥布林可以通过序列器上的内置游戏时钟有效地模拟。当游戏时钟滴答作响时，序列器推进状态和它们的位置，直到有用户来并将它们杀死。如果我们选择，我们可以在这上面使用相当多的分片带宽，因为我们限制了玩家数量，我们可以最大化NPC的移动。

各种散落或由怪物掉落的物品

物品可以被捡起并存储在玩家的余额中。当玩家结束他们的会话时，这些物品将保存到全局状态中。这些值不是短暂的，而是保存到L3中，供下一次会话中使用。

结束游戏

在游戏会话结束时，玩家的状态通过回转到L3来保留在一个全局状态中，为他们的下一个区域或会话设置舞台。然后在StarkNet L2上进行验证，随后在L1上进行验证，有效地建立了一个可证明公平的RuneScape。

Q&A
===

我们正在构建的整个堆栈是开源的 - 加入dojo discord或直接为核心做出贡献。

问题1：那么在这些层之间的桥接怎么办？这对玩家来说不会是一场噩梦吗？

是的，目前桥接确实存在问题。然而，已经有一个清晰的解决方案正在Starknet生态系统中使用，并将很快在其他第二层上可用。这些被称为存储证明。是的，我正在嵌入我的推文。第二部分将讨论此事。

问题2：为什么选择递归证明和短暂链而不是其他方法？

澄清一下，这是Dojo、Cartridge和Realms生态系统采用的方法，以扩展我们想象中的世界。而这不是唯一的方法，探索各种方法是有益的。我认识的一些最聪明的人也在解决这个领域中最具挑战性的问题，他们的工作绝对值得一看。

Lattice - OP Plasma与Redstone结合，实现非常便宜的交易。

Playmint - 独特的乐观引擎，用于快速游戏玩法。

PoP - 专门的EVM分片。

Argus - 定制的EVM游戏分片。

Curio - 修改过的EVM服务器方法。

创建一个能够支持数百万并发玩家的自由开放的RuneScape绝非易事。然而，链上游戏行业的集体智慧和创造力是强大的力量。因此，预期在未来12-24个月内出现像这样的游戏是合理的。是时候返回RuneScape了，或者更恰当地说，是时候欢迎RealmScape的黎明了。

本文由 @lordofafew 原创

由 @hicaptainz 翻译和编辑

关注我，web3游戏不迷路。

原文链接：[https://loaf.coffee/posts/provable-goblins](https://loaf.coffee/posts/provable-goblins)

---

*Originally published on [Gametaverse 中文頻道](https://paragraph.com/@gametaverse/dojo)*
