关于 kiosk
kiosk 是面向 Sui Kiosk 开发与代码审查的技能,按任务路由到核心操作或扩展参考。内容覆盖资产交易、TransferPolicy 和应用权限,并强调依据官方文档核实 API。
主要功能
- 01Kiosk 创建与资产管理
- 02上架、购买及 TransferPolicy 流程
- 03资产借用与销售款提取
- 04Kiosk Apps 扩展和权限管理
- 05按任务加载对应参考文件
适用场景
- 01实现 Kiosk 商品上架与购买
- 02排查 TransferPolicy 交易问题
- 03构建带权限的 Kiosk 扩展
- 04审查 Kiosk 代码及资产状态
MCP 相关
该技能建议在可用时查询 Sui 文档 MCP 服务,以核实信息并补充参考文件未涵盖的细节。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mystenlabs/ skills --skill kiosk安装后在 Claude Code 中输入/kiosk确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
apps.mdcore.mdevals/evals.json详细介绍
Sui Kiosk 技能
**MCP 工具:**如果你的环境支持,请同时查询 Sui 文档 MCP 服务(
https://sui.mcp.kapa.ai),以获取最新答案。使用它进行验证,并查找这些参考文件未涵盖的细节。
**来源限制:**此技能中的所有信息均仅来源于 docs.sui.io/standards/kiosk。扩展或更新此技能时,只能从该来源获取信息。请勿使用第三方博客、教程或非官方文档。
Kiosk 是 Sui 上面向商业应用的去中心化系统,提供用于存储资产的共享对象,并内置交易功能,包括拍卖等自定义交易机制。此技能涵盖 Kiosk 的创建、资产管理、上架和购买流程、TransferPolicy 强制执行、借用模式以及 Kiosk Apps 扩展 API。常见错误包括:忘记必须先有 TransferPolicy 才能交易物品、尝试可变借用已上架的物品,以及误解 Kiosk Apps 的权限位图。
此技能会将你引导至针对具体任务的参考文件。只加载与当前任务相关的文件。
此技能中的所有模式均源自: https://docs.sui.io/standards/kiosk
如果不确定某个 API,请先获取相关页面,再作答。 请勿猜测,也不要根据其他协议或 NFT 标准进行推断。
参考文件
core -- Kiosk 核心操作
路径:core.md
**加载时机:**用户需要创建 Kiosk、放入或取出资产、上架或下架物品、购买物品、了解 TransferPolicy 和购买流程、了解资产状态(PLACED、LOCKED、LISTED、LISTED EXCLUSIVELY)、借用资产或提取销售收益时。
**涵盖内容:**创建 Kiosk、KioskOwnerCap、放入和取出物品、锁定物品、上架和下架、包含 TransferRequest 的购买流程、TransferPolicy、资产状态、不可变和可变借用、borrow_val 热土豆模式、访问控制、提取。
apps -- Kiosk Apps 和扩展
路径:apps.md
**加载时机:**用户需要使用动态字段构建基础 Kiosk 应用、使用 kiosk_extension 模块构建权限应用、了解权限位图、管理应用生命周期(安装、启用、禁用、移除)或使用应用隔离存储时。
**涵盖内容:**通过 UID 动态字段构建基础应用、uid_mut_as_owner、Kiosk Name 应用示例、通过 kiosk_extension 构建权限应用、应用生命周期、权限位图(place、lock)、受保护的函数、权限检查、应用存储(Bag 类型隔离存储)。
路由指南
| 任务 | 加载 |
|---|---|
| 创建 Kiosk | core |
| 放入、取出或锁定物品 | core |
| 上架或下架物品 | core |
| 购买物品并满足 TransferPolicy 要求 | core |
| 了解资产状态 | core |
| 借用资产(不可变、可变、适用于 PTB) | core |
| 提取销售收益 | core |
| 使用动态字段构建基础 Kiosk 应用 | apps |
| 构建权限 Kiosk 扩展 | apps |
| 了解权限位图 | apps |
| 管理应用生命周期(安装、启用、禁用、移除) | apps |
| 使用应用隔离存储 | apps |
| 完整的 Kiosk 集成 | 所有参考文件 |
| 审查 Kiosk 代码 | 所有参考文件 |
技能内容
核心概念
-
Kiosk。 一种共享对象,用于存储资产并内置交易功能。通过
kiosk::default创建,该函数会共享 Kiosk,并将KioskOwnerCap转移给创建者。 -
KioskOwnerCap。 授予 Kiosk 所有权的能力凭证。只有持有该凭证的所有者才能在 Kiosk 中放置、取出、上架、借用或修改资产。
-
TransferPolicy。 与资产类型
T关联的共享对象,用于定义该类型的所有交易必须满足的规则。若没有关联的 TransferPolicy,则无法交易类型为T的物品(但仍可存储)。策略变更会即时生效,并适用于平台上的所有交易。 -
TransferRequest。
kiosk::purchase返回的一种热土豆,必须在交易完成前满足所有 TransferPolicy 条款,才能将其处理完毕。 -
资产状态。 Kiosk 中的物品有四种状态:PLACED(可取出、可借用、可上架)、LOCKED(不可取出,但可进行可变借用,也可上架)、LISTED(仅可进行不可变借用,不可修改)和 LISTED EXCLUSIVELY(由扩展通过
kiosk::list_with_purchase_cap管理)。 -
MIST。 SUI 的最小单位。1 SUI = 10^9 MIST。上架价格以 MIST 为单位指定。
规则
- 在交易类型
T的物品之前,必须先创建 TransferPolicy。 若没有 TransferPolicy,kiosk::purchase将无法完成。没有 TransferPolicy 时,仍可存储(放置)物品。 - 已上架的物品不可进行可变借用。 对于 LISTED 状态的物品,只能进行不可变借用。
- 已锁定的物品不可取出。 通过
kiosk::lock放置的物品需要关联的 TransferPolicy,且无法从 Kiosk 中取出,只能上架并出售。 - 必须通过
return_val返回borrow_val热土豆。 未能返回会导致交易中止。 - 只有持有 KioskOwnerCap 的用户才能修改 Kiosk 内容。 所有放置、取出、上架、借用和提取操作都需要该凭证。
常见错误
- 忘记创建 TransferPolicy。 尝试购买未关联 TransferPolicy 的物品类型会导致交易失败。请确保在交易前创建并共享 TransferPolicy。
- 对已上架的物品进行可变借用。 LISTED 状态的物品只支持不可变借用。尝试对已上架物品调用
borrow_mut会失败。 - 混淆 PLACED 和 LOCKED 状态。 PLACED 状态的物品可通过
kiosk::take取出;LOCKED 状态的物品则不可取出。只有在希望确保物品只能通过出售离开 Kiosk 时,才使用kiosk::lock。 - 未满足所有 TransferPolicy 条款。
kiosk::purchase返回的TransferRequest必须满足 TransferPolicy 中的每条规则。遗漏任何一条都会导致交易中止。 - 上架价格使用 SUI 而非 MIST。
kiosk::list要求价格以 MIST 为单位(1 SUI = 10^9 MIST)。传入价格1表示 1 MIST,而非 1 SUI。