mcpField
S
sui-move

sui-move

github.com/mystenlabs开发19377 次安装今天更新
代码仓库

关于 sui-move

面向 Sui Move 开发者的语言参考技能,按任务加载 Move 基础及事件、代币资料。内容聚焦资源安全、类型系统与对象模型,并提供常见规则和错误提示。

主要功能

  1. 01Move 类型、能力与资源安全参考
  2. 02事件与 Coin 操作指南
  3. 03按任务路由参考文件
  4. 04常见错误与安全规则提示

适用场景

  1. 01编写 Move 模块和结构体
  2. 02创建可替代代币并处理事件
  3. 03检查访问控制与对象销毁逻辑

MCP 相关

环境支持时,可查询 Sui 文档 MCP 服务以核实信息并补充参考文件未涵盖的细节。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mystenlabs/skills --skill sui-move

安装后在 Claude Code 中输入/sui-move确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

events-coins.md
move.md
evals/
code-evals.json
evals.json

详细介绍

Sui Move

**MCP 工具:**如果你的环境中可以使用 Sui 文档 MCP 服务(https://sui.mcp.kapa.ai),也请查询以获取最新答案。请使用它进行验证,并了解这些参考文件未涵盖的详情。

**来源限制:**本技能的所有信息仅来源于 docs.sui.io 和 move-book.com。扩展或更新本技能时,只能从这些来源获取内容。请勿使用第三方博客、教程或非官方文档。

Move 是 Sui 的智能合约语言,围绕资源安全和以对象为中心的数据模型设计。本技能涵盖核心 Move 语言:类型系统、能力、资源安全、事件和 Coin。

本技能会指向专门的参考文件。只加载与当前任务相关的文件。


参考文件(本技能)

move — Move 语言基础

路径: move.md **适用场景:**编写 Move 代码、使用能力、TxContext、时间/Clock、init 函数、One-Time Witness、internal::Permit<T>、type_name 弃用项、包、模块、结构体、资源安全、访问控制模式、管理员轮换、拒绝列表、安全审查或高级设计模式(能力分级、幻影事件、共享对象并发、接收器语法、错误属性、transfer::receive、字段隐私、宏)。 **涵盖内容:**四种能力及常见组合、TxContext 方法、Clock 对象、init 函数、OTW 模式、internal::Permit<T> 类型级授权、type_name 弃用项、包和升级、模块、结构体、资源安全和对象销毁、完整的 Greeting 示例、管理员轮换(两步转让)、受监管的 Coin 和拒绝列表、安全审查清单、高级设计模式(能力分级、幻影类型事件、事件反规范化、共享对象 & 与 &mut、接收器语法顺序、#[error] 常量、transfer::receive 隐私、字段隐私、宏陷阱)。

events-coins — 事件和 Coin

路径: events-coins.md **适用场景:**发出事件、在链下订阅事件、创建同质化代币,或使用 Coin 操作(铸造、销毁、拆分、合并)。 **涵盖内容:**事件发出、事件结构体要求、coin::create_currency、TreasuryCap、CoinMetadata、标准 Coin 操作。


相关技能(从单独的技能目录加载)

主题技能适用场景
对象模型、所有权、动态字段、集合、Display、转移模式object-model/设计数据模型、选择所有权类型、使用动态字段或集合、设置 Object Display
可编程交易块、命令、双花冲突ptbs/构建 PTB、组合交易、赞助交易、排查交易错误
前端 dApp 开发、dApp Kit、钱包连接frontend-apps/构建 React/Vue 前端、集成钱包、从浏览器查询链上状态
项目设置、Move.toml、依赖项、发布sui-move-project/创建 Move 项目、配置 Move.toml、解决构建错误、发布包
Move 2024 语法、方法语法、宏modern-move-syntax/使用 Move 2024 版本功能,例如方法语法、vector 字面量、option/loop 宏
可组合函数设计composable-move-functions/设计可组合到 PTB 中的函数、参数顺序、返回模式
单元测试惯例move-unit-testing/编写 Move 单元测试、测试模式、expected_failure、清理
命名惯例naming-conventions/命名错误、常量、能力、事件、getter、动态字段键

路由指南

任务加载
编写带有 abilities 的 Move 结构体move
使用 TxContext 或 Clock 对象move
编写 init 函数或 OTWmove
使用 type_name 函数move
使用 internal::Permit<T> 证明模块权限move
发布或升级包move
销毁没有 drop 的对象move
发出或订阅事件events-coins
创建同质化代币move + events-coins
设计对象数据模型object-model/ skill
选择共享对象还是自有对象object-model/ skill
使用动态字段或集合object-model/ skill
设置 Object Displayobject-model/ skill
构建 PTBptbs/ skill
实现赞助交易ptbs/ skill
构建前端frontend-apps/ skill
设置 Move.tomlsui-move-project/ skill
编写完整的智能合约move + events-coins + object-model/ + naming-conventions/ + modern-move-syntax/
代码审查move + events-coins + composable-move-functions/ + naming-conventions/ + modern-move-syntax/
安全审查 / 访问控制审计move + object-model/(模式)+ events-coins
高级设计模式 / 性能调优move

规则

  • 始终使用 object::new(ctx) 创建 UID。没有其他方法。
  • 当对象具有 store 且调用来自定义模块之外时,使用 public_transfer(而非 transfer)。
  • 事件结构体必须具有 copy 和 drop abilities。
  • 不要对数值类型使用 as 强制转换。使用 from/into 或 try_from/try_into。
  • 要销毁没有 drop 的对象,请解包结构体,并对 UID 调用 object::delete(id)。

常见错误

  • 混淆 transfer 和 public_transfer。 非公开变体只能在定义它的模块内使用。从其他模块调用会导致编译错误。
  • 忘记删除 UID。 销毁对象时,必须对 UID 字段调用 object::delete(id)。
  • 误以为 ctx.epoch_timestamp_ms() 的精度足够。 它返回 epoch 的开始时间。需要实时时间戳时,请使用 Clock 对象(0x6)。

评论

支持 Markdown