概览
基础
Token 重用了在 sui::coin 模块中定义的 TreasuryCap,因此具有相同的初始化过程。coin::create_currency 方法确保了 TreasuryCap 的唯一性并强制创建了一个 CoinMetadata 对象。
铸造和销毁通过类似 Coin 的方法完成。两者都需要 TreasuryCap:
token::mint- 铸造一个 Tokentoken::burn- 销毁一个 Token
请参阅 创建 Coin 指南,了解有关如何创建 Coin 的更多详细信息。
公共操作
Token 有一组公共和受保护的操作,用于管理代币。公共操作对所有人都可用,无需任何授权。它们具有类似于 Coin 的 API,但操作的是 Token 类型:
token::keep- 将 Token 发送给交易发送方token::join- 合并两个 Tokentoken::split- 将 Token 拆分为两个,指定要拆分的数量token::zero- 创建一个空的(零余额)Tokentoken::destroy_zero- 销毁零余额的 Token
请参阅 Coin 与 Token 方法对比 以比较 Coin 和 Token 的方法。
受保护的操作
受保护的操作是会触发 ActionRequest 的操作,必须解决 ActionRequest 才能使交易成功。解决 ActionRequest 的主要方式有 3 种,其中最常见的是通过 TokenPolicy。
token::transfer- 将 Token 转移到指定地址token::to_coin- 将 Token 转换为 Cointoken::from_coin- 将 Coin 转换为 Tokentoken::spend- 在指定地址上消费 Token
上述方法包含在基本实现中,但也可以为自定义操作创建 ActionRequest。
Token 策略与规则
受保护的操作默认情况下是禁用的,可以在 TokenPolicy 中启用。此外,Token 拥有者可以设置称为 Rules 的自定义限制,这些限制必须满足特定操作才能成功。