概览
基础
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 的自定义限制,这些限制必须满足特定操作才能成功。