# StarkNet:如何利用ZKP来制作可验证化链上游戏

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

---

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

3月初，Starknet 基金会宣布成立游戏委员会以推进 Starknet 游戏生态系统的发展，并已拨款 5000 万枚 STRK （1.2亿美金）专用于资助游戏委员会建议的提案。是时候来了解如何在StarkNet上面制作链上游戏了（StarkNet生态更多的鼓励链上游戏而不是GameFi游戏）。

区块链游戏未能兑现其承诺。规模的限制和高成本已经使大多数链游仅限于游戏资产的代币化。但是，通过Starknet上的廉价和快速交易以及新的Dojo链上游戏引擎，不仅使得游戏内资产能够私人拥有，而且还能在链上使得游戏逻辑可验证化。

全球游戏市场截至2023年估值为2450亿美元，是全球娱乐产业中最大的细分市场之一。并且，区块链游戏凭借其允许无限互操作性的承诺，为游戏世界提供了一个比当前情景更加令人兴奋的开放空间。就像多人游戏为游戏生态系统增添了全新维度的可能性一样，链上游戏可以变得更加有趣和相关。

但是，这一承诺遭遇了区块链现实的挑战——交易昂贵且缓慢。这是游戏绝对不能有的两个问题。因此，创建成功的链上游戏几乎是不可能的。

但随着有效性rollup技术的成熟，链上游戏的承诺终于得以实现。

在这篇文章中，我们将探讨Starknet支持的高TPS如何实现链上游戏。我们还将看看Dojo——第一个由社区构建的可验证化游戏引擎——如何利用Starknet赋能建设者。最后，我们将探讨Dojo的未来及其为区块链游戏解锁的内容。

加密游戏
====

当我们谈论区块链游戏时，区块链赋能的两种最流行的理念是游戏内资产的所有权和互操作性。

游戏内资产的所有权意味着游戏资产属于用户拥有的钱包。换句话说，它们不属于游戏开发者或存储在中央服务器上的简单电子邮件账户，游戏开发者不能远程删除它们。在区块链游戏中，你创建或赚取的资产确实属于你。

一旦这些资产属于你——游戏就可以实现互操作性。有了互操作性，一个游戏中的角色和资产可以转移到另一个游戏或世界。如果你在一个游戏中投入了数百小时，但决定不再玩，你可以将这些辛苦赚来的资产带到你选择的新游戏中。

为了实现这两个概念，游戏必须建立在链上。这意味着所有游戏内资产、玩家采取的所有行动和任何其他状态变化都必须作为区块链上的一个交易进行（每个动作单独进行或定期推送的聚合交易）。在一个相对去中心化的区块链上，一次交易的成本可以从几美分到几百美元不等（在拥堵时），并且可能需要几分钟或更长时间。显然，这使得在此类平台上运营大规模游戏基础设施变得异常昂贵、缓慢且不切实际。

Starknet和廉价计算
=============

但是，随着有效性rollup机制如Starknet的出现，一切都在改变。

Starknet是StarkWare开发的一种Layer 2有效性rollup机制（通常称为ZK-Rollup机制），它使用称为STARKs的加密系统大幅降低计算和存储成本。

Starknet（以及Cairo，Starknet的智能合约语言）允许去中心化应用以最低成本处理高交易速率，同时仍然利用以太坊的安全性。这种廉价和快速的交易正是实现区块链游戏承诺所需的。现在游戏可以完全在链上、快速且负担得起。

但即使有能力在链上，要让区块链游戏繁荣发展，它们需要第二个关键构建块：一个可验证化的游戏引擎。

什么是游戏引擎
=======

游戏引擎是使您喜爱的游戏中的美丽场景、迅速的玩家移动和真实的角色行为成为可能的软件框架。游戏引擎通常包括库和支持程序，为开发者提供一个框架，使他们不必为每款游戏从头开始重新创建基本系统（如物理、图形和游戏机制）。游戏引擎还可以包括音频和视频处理、渲染3D效果和人工智能特性。

游戏引擎是构建游戏的舞台。

我们喜爱玩的大多数游戏都归功于世界上两个最受欢迎的游戏引擎：Unity和Unreal Engine。由Epic Games开发的Unreal Engine已经被用于如《堡垒之夜》、《街头霸王V》和《战争机器》系列等热门游戏。Unity，另一个游戏引擎行业的主要玩家，已经使《炉石传说》、《奥日与黑暗森林》和《宝可梦Go》等游戏变为现实。

由于Starknet实现了加密游戏的承诺，一大波项目已经开始在Starknet上构建游戏。但目前仍然缺失的是一个加密游戏引擎，它允许开发者在保持链上的同时，构建游戏而不必为基本的物理、逻辑和游戏机制编写定制代码。

Dojo - 第一个可验证化链上游戏引擎
====================

Dojo是一个加密游戏引擎。它是一个由社区构建的、可验证化的游戏引擎及工具链，用于构建链上游戏和自治世界。它将加密游戏的承诺变为现实。

在Starknet上使用Dojo的游戏数量正在迅速增长。一些最受欢迎的包括：

**Influence** —— 一个设置在遥远的小行星带中的宏大战略MMO，拥有玩家所有的开放经济体。用户可以购买NFT以探索和开发小行星。所有小行星位于同一个世界中，玩家可以相互交互。

**Realms** —— 一款策略游戏，拥有8000张具有特定名称、形状、大小和地理特征的土地地图，这些特征为土地所有者（用户）提供了链上效用，如资源生成和可替代的房屋原型，允许进行经济游戏。

**CafeCosmos** —— 一款基于土地的链上游戏，用户必须高效管理资源。这包括采集资源、农耕、养殖动物、制作家电和家具、交易资产等等。

Dojo组件
======

Dojo 生态系统包含以下组件：

*   **用 Cairo 语言编写的 ECS（实体组件系统）**
    
*   **Sozu 迁移规划器**
    
*   **Torii 网络与索引堆栈**
    
*   **Katana RPC 开发网络**
    

**ECS 系统**是游戏开发中用来提高代码可维护性的设计模式。ECS 系统允许游戏开发者给游戏对象（实体）添加独特功能（组件），使得整个场景作为一个整合系统工作。Dojo 的 ECS 框架，特别为基于区块链的游戏开发设计，提升了模块化、效率和灵活性，这对于管理区块链环境的独特挑战至关重要。这使得在区块链上创建复杂、动态的游戏成为可能，支持多样的游戏机制和互动，同时利用区块链技术的透明、去中心化的优势。由于 Dojo 使用 Cairo 编写，它最大化了需要证明的代码的效率。

**Sozo** 是专为建设和迁移规划特别编写的工具链。换句话说，Sozo 可用于在 Starknet 上部署开发的游戏。通过一个简单的 \`sozo migrate\` 命令，可以在链上部署一个游戏“世界”的实例。Sozo 仅作为命令行界面（CLI）工具可用。然而，一个图形用户界面（GUI）目前正在开发中。

**Torii** 是 Dojo 世界的一个综合性索引和网络层。由于 Torii 系统建立在 Dojo 之上，它旨在索引在链上部署的游戏世界中发生的任何事件。它系统地组织 Dojo 世界的状态，使得客户端查询数据方便高效。考虑到游戏中许多状态的变化——想象每次点击都是一个状态变化——高效的查询系统是 Dojo 堆栈上的一个有用特性。Torii 上的查询使用 GraphQL 进行。

**Katana** 是一个极快的本地 Starknet 节点，设计用来支持 Dojo 的本地开发。Katana 允许开发者在这个“开发网”上测试他们的应用程序，以实现快速的本地开发。开发者可以使用 Katana 网络测试游戏中发送的交易。Katana 提供方便的 RPC 方法，可以根据需要更改网络的配置（例如，改变区块时间或允许零费用交易等）。此外，Katana 支持 Starknet JSON-RPC 规范的 v0.3.0 版本（截至 2023 年 6 月的最新版本）。可以在 Katana 上使用本地 Starknet JSON 调用，如 starknet\_getTransactionReceipt, starknet\_getStorageAt 等。

Dojo 和加密游戏的未来
=============

Dojo 社区持续进行研究和开发，以推动加密游戏的发展。除了改善现有组件外，主要开发者还在致力于：

*   **针对游戏的 L3s**
    
*   **乐观rollup更新**
    
*   **客户端证明**
    
*   **跨链资产转移**
    

**针对游戏的 L3s** —— Dojo 正在研究在 Starknet 上开发游戏作为 L3s 的可行性。这意味着在 Starknet 上部署一个单独的链，该链定期证明其交易的执行并将证明提交给 Starknet（L2）。Starknet 将这个证明与网络上的其他交易聚合并提交给以太坊 L1，在那里验证这个证明。这个解决方案可以增加游戏的可扩展性，甚至可能增加数倍。（作为一个额外步骤，想象如果每次玩家尝试游戏中的一个级别，就在游戏层上构建一个一次性使用的新层。）

**乐观rollup更新** —— 我们经常静静地坐着，等待钱包中的“交易进行中…”文本变绿并显示为“已验证”吧？很多次。如果游戏中玩家的每个动作都作为单独的交易发送，玩家将浪费大量时间等待交易被接受。乐观rollup更新 —— Dojo 正在将其作为堆栈的额外功能之一加以完善 —— 通过在客户端（即浏览器本身）乐观地执行交易并允许玩家继续游戏，来解决这个问题。如果出于某种原因，交易的结果与在浏览器中运行的结果不同，游戏将会协调更改。

**客户端证明** —— 与在客户端运行的乐观更新一起，Dojo 正在探索客户端证明链上发送的交易部分的可能性。这将允许建立在 Dojo 之上的游戏有效地隐藏用户传递的一些输入，因为可以在客户端创建接收这些输入的零知识证明（ZK proof）。反过来，这个 ZK 证明可以发送到链上的排序器，执行交易的其余部分。

**利用存储证明** —— 存储证明是一种加密方法，用于存储区块链信息，使其可以跨链共享。类似于预言机，它们提供信息真实性的证明。但不同于预言机，它们不需要对第三方的信任来提供这种证明——使用存储证明，信任建立在存储上。存储证明还允许证明另一个链或建立在以太坊之上的层的状态的有效性。

Dojo 正在与 Herodotus 团队合作，在 Dojo 中实现存储证明，使得跨链资产转移变得不必要。可以用存储证明来证明来自不同链的资产的所有权，用户将能够在不同的链或层上的不同游戏中使用他们的资产。

---

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