dojo-deploy
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDojo 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-feeThis 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 migrateVerify:
bash
undefined启动Katana:
bash
katana --dev --dev.no-fee此命令启动的Katana包含以下特性:
- RPC服务器地址为
http://localhost:5050 - 10个预充值账户
- 即时区块挖矿
- 禁用Gas费用
构建并部署:
bash
sozo build && sozo migrate验证:
bash
undefinedPreview deployment
Preview deployment
sozo inspect
sozo inspect
Execute a system
Execute a system
sozo execute dojo_starter-actions spawn
undefinedsozo execute dojo_starter-actions spawn
undefined2. Testnet Deployment (Sepolia)
2. 测试网部署(Sepolia)
Configure profile:
toml
undefined配置配置文件:
toml
undefineddojo_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 sepolia3. Mainnet Deployment
3. 主网部署
Configure profile:
toml
undefined配置配置文件:
toml
undefineddojo_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 mainnetKatana Configuration
Katana 配置
Quick Start (Development)
快速开始(开发环境)
bash
katana --dev --dev.no-feebash
katana --dev --dev.no-feeMining Modes
挖矿模式
Instant (default):
bash
katana --dev --dev.no-feeMines block immediately on transaction.
Interval:
bash
katana --block-time 10000Mines block every 10 seconds.
即时模式(默认):
bash
katana --dev --dev.no-fee交易发生后立即挖矿生成区块。
间隔模式:
bash
katana --block-time 10000每10秒挖矿生成一个区块。
Persistent Storage
持久化存储
bash
katana --db-dir ./katana-dbbash
katana --db-dir ./katana-dbNetwork Forking
网络分叉
Fork Starknet mainnet:
bash
katana --fork.provider https://api.cartridge.gg/x/starknet/mainnetFork 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 1000000Sozo Commands
Sozo 命令
Build
构建
bash
sozo buildbash
sozo buildInspect (Preview Deployment)
检查(预览部署)
bash
undefinedbash
undefinedSee what will be deployed/changed
See what will be deployed/changed
sozo inspect
undefinedsozo inspect
undefinedMigrate (Deploy)
迁移(部署)
bash
undefinedbash
undefinedDeploy 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
undefinedsozo migrate --profile sepolia
undefinedExecute System
执行系统
bash
undefinedbash
undefinedCall 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
undefinedsozo execute dojo_starter-actions move 1
undefinedDeployment Checklist
部署检查清单
Pre-Deployment
部署前
- All tests passing ()
sozo test - Code reviewed (skill)
dojo-review - Configuration set (skill)
dojo-config - 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 (skill)
dojo-indexer - Client connected (skill)
dojo-client - World permissions verified (skill)
dojo-world
- 部署已验证(执行系统、查询模型)
- 已配置Torii索引器(技能)
dojo-indexer - 客户端已连接(技能)
dojo-client - 已验证世界权限(技能)
dojo-world
Development Workflow
开发工作流
Terminal 1: Start Katana
bash
katana --dev --dev.no-feeTerminal 2: Build and deploy
bash
sozo build && sozo migrateTerminal 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.controllersSample Deploy Script
示例部署脚本
This skill includes , a template script for automated local development.
Copy it into your project's directory and customize it for your needs.
deploy_local.shscripts/Setup:
- Copy the script to your project:
cp deploy_local.sh your-project/scripts/ - Adjust configuration variables (profile name, URLs) as needed
- Make executable:
chmod +x scripts/deploy_local.sh
Run:
bash
undefined此技能包含,一个用于自动化本地开发的模板脚本。将其复制到项目的目录,并根据需求自定义。
deploy_local.shscripts/设置步骤:
- 将脚本复制到你的项目:
cp deploy_local.sh your-project/scripts/ - 根据需要调整配置变量(配置文件名称、URL等)
- 设置可执行权限:
chmod +x scripts/deploy_local.sh
运行:
bash
undefinedDefault 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部署
Authentication
认证
bash
slot auth loginbash
slot auth loginKatana on Slot
Slot上的Katana
Optimistic mode (simplest):
bash
slot deployments create <PROJECT_NAME> katana --optimisticWith configuration file:
bash
slot deployments create <PROJECT_NAME> katana --config katana.tomlSee 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 with your world address and RPC endpoint, then deploy:
torii.tomlbash
slot deployments create <PROJECT_NAME> torii --config torii.toml --version <DOJO_VERSION>See the skill for full Torii configuration details.
dojo-indexer创建包含世界地址和RPC端点的,然后部署:
torii.tomlbash
slot deployments create <PROJECT_NAME> torii --config torii.toml --version <DOJO_VERSION>有关Torii的完整配置详情,请查看技能。
dojo-indexerUseful Commands
常用命令
bash
undefinedbash
undefinedStream 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
undefinedslot deployments delete <PROJECT_NAME> katana
slot deployments delete <PROJECT_NAME> torii
undefinedManifest File
清单文件
After deployment, contains:
manifest_<profile>.json- 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 before migrating
sozo build - Check Scarb.toml for correct Dojo version
- Clear and rebuild
target/
- 迁移前运行
sozo build - 检查Scarb.toml中的Dojo版本是否正确
- 清空目录后重新构建
target/
"Insufficient funds"
"资金不足"
- Fund account with ETH/STRK for gas
- Use Sepolia faucet: https://faucet.starknet.io
- 为账户充值ETH/STRK用于支付Gas费用
- 使用Sepolia水龙头:https://faucet.starknet.io
"Profile not found"
"配置文件未找到"
- Ensure exists
dojo_<profile>.toml - Check spelling matches the flag
--profile
- 确保文件存在
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(测试网)
- RPC:
https://api.cartridge.gg/x/starknet/sepolia - Faucet: https://faucet.starknet.io
- Explorer: https://sepolia.voyager.online
- RPC:
https://api.cartridge.gg/x/starknet/sepolia - 水龙头:https://faucet.starknet.io
- 浏览器:https://sepolia.voyager.online
Mainnet
主网
- RPC:
https://api.cartridge.gg/x/starknet/mainnet - Explorer: https://voyager.online
- RPC:
https://api.cartridge.gg/x/starknet/mainnet - 浏览器:https://voyager.online
Next Steps
后续步骤
After deployment:
- Use skill to set up Torii
dojo-indexer - Use skill to connect frontend
dojo-client - Use skill to configure permissions
dojo-world - Use skill for updates
dojo-migrate
部署完成后:
- 使用技能设置Torii
dojo-indexer - 使用技能连接前端
dojo-client - 使用技能配置权限
dojo-world - 使用技能进行更新
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:管理世界权限