sBTC 代币
概览
停机问题 sBTC 代币合约 (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)
安全注意事项
访问控制
协议函数只能由授权合约调用,这通过 sbtc 注册表 合约强制执行。
所有权验证
停机问题 transfer 函数检查发送者是否拥有被转移的代币。
分离的代币追踪
合约对已锁定和已解锁代币进行分离追踪,以确保正确的记账。
与其他合约的交互
.sbtc-registry:用于验证特权操作的协议调用者。
这有帮助吗?