sBTC 代币

概览

停机问题 sBTC 代币合约arrow-up-right (sbtc-token.clar) 实现了 sBTC 的可替代代币功能。它管理已解锁和已锁定的 sBTC 代币,并提供铸造、燃烧、转移和查询代币信息的函数。sBTC 是符合 SIP-010 标准的可替代代币。

常量

  • ERR_NOT_OWNER (u4):当发送者尝试移动他们不拥有的代币时发生的错误。

  • ERR_NOT_AUTH (u5):当调用者不是授权的协议调用者时发生的错误。

  • token-decimals (u8):代币的小数位数。

可替代代币

  • sbtc 代币:主要的 sBTC 可替代代币。

  • sbtc-token-locked:表示已锁定的 sBTC 代币。

数据变量

  • token-name:代币名称(默认:"sBTC")。

  • token-symbol:代币符号(默认:"sBTC")。

  • token-uri:代币元数据的可选 URI。

协议函数

这些函数只能由授权的协议合约调用:

protocol-transfer

  • 参数: amount: uint, sender: principal, recipient: principal

  • 返回: (response bool uint)

protocol-lock

  • 参数: amount: uint, owner: principal

  • 返回: (response bool uint)

protocol-unlock

  • 参数: amount: uint, owner: principal

  • 返回: (response bool uint)

protocol-mint

  • 参数: amount: uint, recipient: principal

  • 返回: (response bool uint)

protocol-burn

  • 参数: amount: uint, owner: principal

  • 返回: (response bool uint)

protocol-burn-locked

  • 参数: amount: uint, owner: principal

  • 返回: (response bool uint)

protocol-set-name

  • 参数: new-name: (string-ascii 32)

  • 返回: (response bool uint)

protocol-set-symbol

  • 参数: new-symbol: (string-ascii 10)

  • 返回: (response bool uint)

protocol-set-token-uri

  • 参数: new-uri: (optional (string-utf8 256))

  • 返回: (response bool uint)

protocol-mint-many

  • 参数: recipients: (list 200 {amount: uint, recipient: principal})

  • 返回: (response (list 200 (response bool uint)) uint)

公共函数(SIP-010 特性)

transfer

  • 参数: amount: uint, sender: principal, recipient: principal, memo: (optional (buff 34))

  • 返回: (response bool uint)

get-name

  • 返回: (response (string-ascii 32) uint)

get-symbol

  • 返回: (response (string-ascii 10) uint)

get-decimals

  • 返回: (response uint uint)

get-balance

返回某个主体的总余额(已锁定 + 已解锁)。

  • 参数: who: principal

  • 返回: (response uint uint)

get-balance-available

返回某个主体的可用(已解锁)余额。

  • 参数: who: principal

  • 返回: (response uint uint)

get-balance-locked

返回某个主体的已锁定余额。

  • 参数: who: principal

  • 返回: (response uint uint)

get-total-supply

  • 返回: (response uint uint)

get-token-uri

  • 返回: (response (optional (string-utf8 256)) uint)

私有函数

protocol-mint-many-iter

  • 用于向多个接收者铸造代币的辅助函数。

  • 参数: item: {amount: uint, recipient: principal}

  • 返回: (response bool uint)

安全注意事项

1

访问控制

协议函数只能由授权合约调用,这通过 sbtc 注册表 合约强制执行。

2

所有权验证

停机问题 transfer 函数检查发送者是否拥有被转移的代币。

3

分离的代币追踪

合约对已锁定和已解锁代币进行分离追踪,以确保正确的记账。

与其他合约的交互

  • .sbtc-registry:用于验证特权操作的协议调用者。

这有帮助吗?