# Dojo开发的基本逻辑

By [FunBlocks](https://paragraph.com/@funblocks) · 2023-04-05

---

原文链接：[https://twitter.com/tarrenceva/status/1642201057689473030](https://twitter.com/tarrenceva/status/1642201057689473030)

原文作者：@tarrenceva

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

在过去的几个月里，我们一直在埋头构建@dojostarknet，一个用于在Starknet上开发自主世界的引擎。

Dojo是一个框架，它简化了创建、管理和扩展不断增长的、完全链上的自主世界的过程。

首先，我们来介绍一些背景：

两年多以前，我们开始在Starknet上构建名为“Roll Your Own”自主世界：一个由@eth\_worm发起的@TheDopeWars开放宇宙项目（GitHub：[https://github.com/dopedao/RYO）](https://github.com/dopedao/RYO%EF%BC%89)

从那时起，自主世界的概念取得了显著的进展，很大程度上要归功于@latticexyz团队和MUD.dev框架。

同时，许多团队也在Starknet上开拓自主世界的概念：@cartridge\_gg, @topology\_gg, @LootRealms, @briqNFT, 和 @influenceth。到目前为止，他们大多独立进行开发，缺乏共享的标准和公共资源。

现在随着Cairo 1.0的推出，智能合约开发迎来了巨大的进步，Starknet生态系统正在经历重生。

作为重生的一部分，Starknet上的所有合约都需要用Cairo 1.0重写，这为协作、经验整合与构建一个强大的Starknet链上游戏开发工具套件提供了绝佳的机会。

⛩️Dojo在@sylvechv @lordOfAFew的提议下诞生⛩️

Dojo利用Cairo 1.0、一个实体-组件系统（entity-component system）和钻石模式（diamond pattern：一种编程设计模式，用于解决多重继承中的菱形问题），为自主世界提供了一个模块化、可扩展的基础。

在Dojo中，World Contract是世界的核心，维护着所有的状态，执行访问控制，并提供了一个接口，用于安装新的组件和系统，以扩展这个宇宙。利用Cairo 1.0语言插件，Dojo提供了一种简单而简洁的语法来定义世界的模块。

例如，一个描述World状态的一部分的组件（component），是一个简单的struct：

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

Systems是一些简单的函数，定义了World中的状态转换。这里有一个使用set命令来生成一个新玩家的例子。

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

commands api提供了一种简单而强大的方式来与World交互，使开发者能够轻松地写入和读取状态，并执行函数。

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

此外， Dojo提供或正在开发的内容包括：

*   实时状态索引+与mud栈的兼容
    
*   在starknet上的高吞吐量Layer 3🤫
    
*   通过客户端证明的隐私信息
    
*   链下状态通道（Offchain state channels）
    
*   类型绑定生成（Typed bindings generation ）
    

想了解更多？

Join us：dojoengine.org

Github：github.com/dojoengine/dojo

Discord：[https://discord.com/invite/vUN4Xq9Qv6](https://discord.com/invite/vUN4Xq9Qv6)

感谢@sylvechv @lordOfAFew @broody\_eth @JunichiSugiura @shrameetweets @eniwhere\_ @Cheelax\_和许多其他推动生态系统发展的优秀贡献者！

**关于我们：**

FunBlocks是一家聚焦区块链游戏最新发展动态的媒体，重点关注全链游戏（Fully On-Chain Game）领域的前沿进展。我们相信为玩家创造快乐才是区块链游戏发展的方向！

**推特**：[https://twitter.com/FunBlocksFun](https://twitter.com/FunBlocksFun)

**Mirror**：[https://mirror.xyz/0x949B1fE8B1860E51fa550131EB0F21729cA68A1A](https://mirror.xyz/0x949B1fE8B1860E51fa550131EB0F21729cA68A1A)

---

*Originally published on [FunBlocks](https://paragraph.com/@funblocks/dojo-2)*
