0%

Coin Token以及Balance的区别

参考资料:


主要区别

CoinBalanceToken

Coin

含义: 可以自由转让,自由流动,可包装(store)

类似于rmb,拥有者可以自由地支配他,同时只要拥有TreasuryCap对象,就可以拥有铸造和销毁Coin的权利

怎么理解可包装

struct Foo has key {
id: UID,
bar: Bar,
}

struct Bar has store {
value: u64,
}

Balance

比较简单,这里就不说了

Token

当你相对用户的权限做一些限制的时候,可以发布一个Token,制定自己的代币经济模型

含义:transfer,spend,conversion

通过TokenPolicy自定义规则

public -公共操作

Token有一系列公共和保护操作用来管理代币。公共操作对所有人可用,不需要任何授权。

  • token::keep - 将代币发送给交易发送者
  • token::join - 合并两个代币
  • token::split - 将一个代币分成两个,指定分割的金额
  • token::zero - 创建一个空(零余额)的代币
  • token::destroy_zero - 销毁一个零余额的代币

Protected - 保护操作

注:默认是禁用的,可以在TokenPolicy中启用,并自定义规则

保护操作是那些发出ActionRequest的操作。有三种主要的方法来解决ActionRequest,最常见的是通过TokenPolicy。

  • token::transfer - 将代币转账到指定地址
  • token::to_coin - 将token转换为coin
  • token::from_coin - 将coin转换为token
  • token::spend - 在指定地址花费代币

💡Hot_Potato

ActionRequest是一个没有任何能力的结构体也称作”Hot-Potato”,它涉及一个没有任何能力的结构体,称为 “hot potato”。这种结构体只能在其模块内进行打包和解包。Hot Potato Pattern 利用 PTB(Programmatic Transaction Block)机制,通常用于在交易结束之前强制用户完成特定业务逻辑的场景。

简单来说,如果一个交易命令 A 返回一个 hot potato 值,则必须在同一个 PTB 中的任何后续命令 B 中消费它。最常见的用例是闪电贷(flashloan)。