dojo-deploy

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Dojo Deployment

Dojo 部署

Deploy your Dojo world to local Katana sequencer, Sepolia testnet, or Starknet mainnet.
将你的Dojo世界部署到本地Katana sequencer、Sepolia测试网或Starknet主网。

When to Use This Skill

何时使用此技能

  • "Deploy my world to Katana"
  • "Start Katana sequencer"
  • "Deploy to Sepolia testnet"
  • "Deploy to mainnet"
  • 将我的世界部署到Katana
  • 启动Katana sequencer
  • 部署到Sepolia测试网
  • 部署到主网

What This Skill Does

此技能的功能

Handles deployment workflows:
  • Start and configure Katana sequencer
  • Deploy worlds with
    sozo migrate
  • Verify deployments
  • Manage world addresses
  • Configure network settings
处理部署工作流:
  • 启动并配置Katana sequencer
  • 使用
    sozo migrate
    部署世界
  • 验证部署
  • 管理世界地址
  • 配置网络设置

Quick Start

快速开始

Local development:
"Start Katana and deploy my world"
Testnet deployment:
"Deploy my world to Sepolia"
Mainnet deployment:
"Deploy to Starknet mainnet"
本地开发:
"Start Katana and deploy my world"
测试网部署:
"Deploy my world to Sepolia"
主网部署:
"Deploy to Starknet mainnet"

Deployment Workflow

部署工作流

1. Local Development (Katana)

1. 本地开发(Katana)

Start Katana:
bash
katana --dev --dev.no-fee
This launches Katana with:
  • RPC server at
    http://localhost:5050
  • 10 pre-funded accounts
  • Instant block mining
  • Gas fees disabled
Build and deploy:
bash
sozo build && sozo migrate
Verify:
bash
undefined
启动Katana:
bash
katana --dev --dev.no-fee
此命令启动的Katana包含以下特性:
  • RPC服务器地址为
    http://localhost:5050
  • 10个预充值账户
  • 即时区块挖矿
  • 禁用Gas费用
构建并部署:
bash
sozo build && sozo migrate
验证:
bash
undefined

Preview deployment

Preview deployment

sozo inspect
sozo inspect

Execute a system

Execute a system

sozo execute dojo_starter-actions spawn
undefined
sozo execute dojo_starter-actions spawn
undefined

2. Testnet Deployment (Sepolia)

2. 测试网部署(Sepolia)

Configure profile:
toml
undefined
配置配置文件:
toml
undefined

dojo_sepolia.toml

dojo_sepolia.toml

[world] name = "My Game" seed = "my-game-sepolia"
[env] rpc_url = "https://api.cartridge.gg/x/starknet/sepolia" account_address = "YOUR_ACCOUNT" private_key = "YOUR_KEY"
[namespace] default = "my_game"
[writers] "my_game" = ["my_game-actions"]

**Deploy:**
```bash
sozo build --profile sepolia
sozo migrate --profile sepolia
[world] name = "My Game" seed = "my-game-sepolia"
[env] rpc_url = "https://api.cartridge.gg/x/starknet/sepolia" account_address = "YOUR_ACCOUNT" private_key = "YOUR_KEY"
[namespace] default = "my_game"
[writers] "my_game" = ["my_game-actions"]

**部署:**
```bash
sozo build --profile sepolia
sozo migrate --profile sepolia

3. Mainnet Deployment

3. 主网部署

Configure profile:
toml
undefined
配置配置文件:
toml
undefined

dojo_mainnet.toml

dojo_mainnet.toml

[world] name = "My Game" seed = "my-game-mainnet"
[env] rpc_url = "https://api.cartridge.gg/x/starknet/mainnet" account_address = "YOUR_ACCOUNT" keystore_path = "~/.starknet_accounts/mainnet.json"
[namespace] default = "my_game"
[writers] "my_game" = ["my_game-actions"]

**Deploy:**
```bash
sozo build --profile mainnet
sozo migrate --profile mainnet
[world] name = "My Game" seed = "my-game-mainnet"
[env] rpc_url = "https://api.cartridge.gg/x/starknet/mainnet" account_address = "YOUR_ACCOUNT" keystore_path = "~/.starknet_accounts/mainnet.json"
[namespace] default = "my_game"
[writers] "my_game" = ["my_game-actions"]

**部署:**
```bash
sozo build --profile mainnet
sozo migrate --profile mainnet

Katana Configuration

Katana 配置

Quick Start (Development)

快速开始(开发环境)

bash
katana --dev --dev.no-fee
bash
katana --dev --dev.no-fee

Mining Modes

挖矿模式

Instant (default):
bash
katana --dev --dev.no-fee
Mines block immediately on transaction.
Interval:
bash
katana --block-time 10000
Mines block every 10 seconds.
即时模式(默认):
bash
katana --dev --dev.no-fee
交易发生后立即挖矿生成区块。
间隔模式:
bash
katana --block-time 10000
每10秒挖矿生成一个区块。

Persistent Storage

持久化存储

bash
katana --db-dir ./katana-db
bash
katana --db-dir ./katana-db

Network Forking

网络分叉

Fork Starknet mainnet:
bash
katana --fork.provider https://api.cartridge.gg/x/starknet/mainnet
Fork at specific block:
bash
katana --fork.provider https://api.cartridge.gg/x/starknet/mainnet --fork.block 1000000
分叉Starknet主网:
bash
katana --fork.provider https://api.cartridge.gg/x/starknet/mainnet
在指定区块分叉:
bash
katana --fork.provider https://api.cartridge.gg/x/starknet/mainnet --fork.block 1000000

Sozo Commands

Sozo 命令

Build

构建

bash
sozo build
bash
sozo build

Inspect (Preview Deployment)

检查(预览部署)

bash
undefined
bash
undefined

See what will be deployed/changed

See what will be deployed/changed

sozo inspect
undefined
sozo inspect
undefined

Migrate (Deploy)

迁移(部署)

bash
undefined
bash
undefined

Deploy with default dev profile

Deploy with default dev profile

sozo migrate
sozo migrate

Deploy with specific profile

Deploy with specific profile

sozo migrate --profile sepolia
undefined
sozo migrate --profile sepolia
undefined

Execute System

执行系统

bash
undefined
bash
undefined

Call a system function

Call a system function

sozo execute <CONTRACT_TAG> <FUNCTION> [ARGS...]
sozo execute <CONTRACT_TAG> <FUNCTION> [ARGS...]

Example: spawn

Example: spawn

sozo execute dojo_starter-actions spawn
sozo execute dojo_starter-actions spawn

Example: move with argument

Example: move with argument

sozo execute dojo_starter-actions move 1
undefined
sozo execute dojo_starter-actions move 1
undefined

Deployment Checklist

部署检查清单

Pre-Deployment

部署前

  • All tests passing (
    sozo test
    )
  • Code reviewed (
    dojo-review
    skill)
  • Configuration set (
    dojo-config
    skill)
  • Target network funded (for gas)
  • Private key secured (not committed)
  • 所有测试通过(
    sozo test
  • 代码已评审(
    dojo-review
    技能)
  • 配置已设置(
    dojo-config
    技能)
  • 目标网络账户已充值Gas费用
  • 私钥已妥善保管(未提交到代码仓库)

Deployment

部署中

  • Build succeeds (
    sozo build
    )
  • Inspect looks correct (
    sozo inspect
    )
  • Migration succeeds (
    sozo migrate
    )
  • Manifest generated (check
    manifest_<profile>.json
    )
  • World address recorded
  • 构建成功(
    sozo build
  • 检查结果符合预期(
    sozo inspect
  • 迁移成功(
    sozo migrate
  • 已生成清单文件(检查
    manifest_<profile>.json
  • 已记录世界地址

Post-Deployment

部署后

  • Deployment verified (execute systems, query models)
  • Torii indexer configured (
    dojo-indexer
    skill)
  • Client connected (
    dojo-client
    skill)
  • World permissions verified (
    dojo-world
    skill)
  • 部署已验证(执行系统、查询模型)
  • 已配置Torii索引器(
    dojo-indexer
    技能)
  • 客户端已连接(
    dojo-client
    技能)
  • 已验证世界权限(
    dojo-world
    技能)

Development Workflow

开发工作流

Terminal 1: Start Katana
bash
katana --dev --dev.no-fee
Terminal 2: Build and deploy
bash
sozo build && sozo migrate
Terminal 3: Start Torii
bash
torii --world <WORLD_ADDRESS> --indexing.controllers
终端1:启动Katana
bash
katana --dev --dev.no-fee
终端2:构建并部署
bash
sozo build && sozo migrate
终端3:启动Torii
bash
torii --world <WORLD_ADDRESS> --indexing.controllers

Sample Deploy Script

示例部署脚本

This skill includes
deploy_local.sh
, a template script for automated local development. Copy it into your project's
scripts/
directory and customize it for your needs.
Setup:
  1. Copy the script to your project:
    cp deploy_local.sh your-project/scripts/
  2. Adjust configuration variables (profile name, URLs) as needed
  3. Make executable:
    chmod +x scripts/deploy_local.sh
Run:
bash
undefined
此技能包含
deploy_local.sh
,一个用于自动化本地开发的模板脚本。将其复制到项目的
scripts/
目录,并根据需求自定义。
设置步骤:
  1. 将脚本复制到你的项目:
    cp deploy_local.sh your-project/scripts/
  2. 根据需要调整配置变量(配置文件名称、URL等)
  3. 设置可执行权限:
    chmod +x scripts/deploy_local.sh
运行:
bash
undefined

Default dev profile

默认dev配置文件

./scripts/deploy_local.sh
./scripts/deploy_local.sh

Specific profile

指定配置文件

PROFILE=staging ./scripts/deploy_local.sh

**What it does:**
1. Checks for required tools (katana, sozo, torii, jq)
2. Starts Katana with health checking
3. Builds and deploys contracts
4. Extracts addresses from the manifest
5. Starts Torii indexer
6. Cleans up all services on exit (Ctrl+C)

**Customization points:**
- `PROFILE`: Default build/deploy profile
- `RPC_URL`: Katana endpoint (default: `http://localhost:5050`)
- `TORII_URL`: Torii endpoint (default: `http://localhost:8080`)
- Add project-specific post-deploy steps (e.g., seeding data, running migrations)
PROFILE=staging ./scripts/deploy_local.sh

**脚本功能:**
1. 检查所需工具是否存在(katana、sozo、torii、jq)
2. 启动Katana并进行健康检查
3. 构建并部署合约
4. 从清单文件中提取地址
5. 启动Torii索引器
6. 退出时清理所有服务(Ctrl+C)

**自定义点:**
- `PROFILE`:默认构建/部署配置文件
- `RPC_URL`:Katana端点(默认:`http://localhost:5050`)
- `TORII_URL`:Torii端点(默认:`http://localhost:8080`)
- 添加项目特定的部署后步骤(例如,数据填充、运行迁移)

Slot Deployment (Remote)

远程Slot部署

Slot provides hosted Katana and Torii instances.
Slot提供托管的Katana和Torii实例。

Authentication

认证

bash
slot auth login
bash
slot auth login

Katana on Slot

Slot上的Katana

Optimistic mode (simplest):
bash
slot deployments create <PROJECT_NAME> katana --optimistic
With configuration file:
bash
slot deployments create <PROJECT_NAME> katana --config katana.toml
See the Katana configuration guide for TOML options.
乐观模式(最简单):
bash
slot deployments create <PROJECT_NAME> katana --optimistic
使用配置文件:
bash
slot deployments create <PROJECT_NAME> katana --config katana.toml
有关TOML选项,请查看Katana配置指南

Torii on Slot

Slot上的Torii

Create a
torii.toml
with your world address and RPC endpoint, then deploy:
bash
slot deployments create <PROJECT_NAME> torii --config torii.toml --version <DOJO_VERSION>
See the
dojo-indexer
skill for full Torii configuration details.
创建包含世界地址和RPC端点的
torii.toml
,然后部署:
bash
slot deployments create <PROJECT_NAME> torii --config torii.toml --version <DOJO_VERSION>
有关Torii的完整配置详情,请查看
dojo-indexer
技能。

Useful Commands

常用命令

bash
undefined
bash
undefined

Stream logs

流式查看日志

slot deployments logs <PROJECT_NAME> katana -f slot deployments logs <PROJECT_NAME> torii -f
slot deployments logs <PROJECT_NAME> katana -f slot deployments logs <PROJECT_NAME> torii -f

Delete a deployment

删除部署

slot deployments delete <PROJECT_NAME> katana slot deployments delete <PROJECT_NAME> torii
undefined
slot deployments delete <PROJECT_NAME> katana slot deployments delete <PROJECT_NAME> torii
undefined

Manifest File

清单文件

After deployment,
manifest_<profile>.json
contains:
  • World address
  • Model addresses and class hashes
  • System/contract addresses
  • ABI information
Example:
json
{
  "world": {
    "address": "0x...",
    "class_hash": "0x..."
  },
  "models": [
    {
      "tag": "dojo_starter-Position",
      "address": "0x..."
    }
  ],
  "contracts": [
    {
      "tag": "dojo_starter-actions",
      "address": "0x..."
    }
  ]
}
部署完成后,
manifest_<profile>.json
包含以下信息:
  • 世界地址
  • 模型地址和类哈希
  • 系统/合约地址
  • ABI信息
示例:
json
{
  "world": {
    "address": "0x...",
    "class_hash": "0x..."
  },
  "models": [
    {
      "tag": "dojo_starter-Position",
      "address": "0x..."
    }
  ],
  "contracts": [
    {
      "tag": "dojo_starter-actions",
      "address": "0x..."
    }
  ]
}

Troubleshooting

故障排除

"Account not found"

"账户未找到"

  • Ensure account is deployed on target network
  • Check account address in profile config
  • Verify account has funds for gas
  • 确保账户已部署到目标网络
  • 检查配置文件中的账户地址
  • 验证账户有足够的Gas费用

"Class hash mismatch"

"类哈希不匹配"

  • Run
    sozo build
    before migrating
  • Check Scarb.toml for correct Dojo version
  • Clear
    target/
    and rebuild
  • 迁移前运行
    sozo build
  • 检查Scarb.toml中的Dojo版本是否正确
  • 清空
    target/
    目录后重新构建

"Insufficient funds"

"资金不足"

"Profile not found"

"配置文件未找到"

  • Ensure
    dojo_<profile>.toml
    exists
  • Check spelling matches the
    --profile
    flag
  • 确保
    dojo_<profile>.toml
    文件存在
  • 检查文件名拼写与
    --profile
    参数是否一致

Network Information

网络信息

Katana (Local)

Katana(本地)

  • RPC:
    http://localhost:5050
  • Pre-funded accounts printed on startup
  • RPC:
    http://localhost:5050
  • 预充值账户信息会在启动时打印

Sepolia (Testnet)

Sepolia(测试网)

Mainnet

主网

Next Steps

后续步骤

After deployment:
  1. Use
    dojo-indexer
    skill to set up Torii
  2. Use
    dojo-client
    skill to connect frontend
  3. Use
    dojo-world
    skill to configure permissions
  4. Use
    dojo-migrate
    skill for updates
部署完成后:
  1. 使用
    dojo-indexer
    技能设置Torii
  2. 使用
    dojo-client
    技能连接前端
  3. 使用
    dojo-world
    技能配置权限
  4. 使用
    dojo-migrate
    技能进行更新

Related Skills

相关技能

  • dojo-config: Configure deployment profiles
  • dojo-migrate: Update deployments
  • dojo-indexer: Index deployed world
  • dojo-client: Connect clients to deployment
  • dojo-world: Manage world permissions
  • dojo-config:配置部署配置文件
  • dojo-migrate:更新部署
  • dojo-indexer:索引已部署的世界
  • dojo-client:将客户端连接到部署
  • dojo-world:管理世界权限