usdcx-token

USDCx-Token 合约摘要

本合约实现 USDCx,这是一个位于 Stacks 上的 SIP-010 可替代代币,具有 基于角色的访问控制系统暂停功能 用于协议安全。它暴露了用于转移、供应查询和元数据的标准 SIP-010 接口,同时提供仅供协议使用的铸造、销毁、治理更新和暂停功能。

角色

该合约定义了三种特权角色:

  • 治理(governance-role) )——管理协议配置、更新代币元数据并分配角色。

  • 铸造(mint-role) )——授权铸造、销毁并执行协议级转账。

  • 暂停(pause-role) )——授权暂停和取消暂停协议。

协议暂停会出于安全原因停止状态变更操作。合约部署者会自动获得 治理 角色。配套合约 .usdcx-v1 会自动获得 铸造 角色。


逐函数解析

SIP-010 标准函数

transfer(amount, sender, recipient, memo)

按照 SIP-010 规则,在主体之间转移 USDCx。该函数检查发送方是否为 tx-sendercontract-caller (用于管理托管或金库的合约),然后执行转移。可选的 memo 会记录在链上。

get-name(), get-symbol(), get-decimals()

标准的 SIP-010 元数据获取函数,返回代币名称、符号和小数精度。

get-balance(who), get-balance-available(who), get-balance-locked(who)

返回给定主体的代币余额。在此实现中,三个访问器函数都返回相同的 SIP-010 余额值。

get-total-supply()

返回铸造减去销毁后的 USDCx 总供应量。

get-token-uri()

返回代币元数据 URI。


协议调用者验证

这些函数强制执行合约的基于角色的权限。

is-protocol-caller(role, contract)

检查指定的合约主体是否拥有所需角色。

validate-protocol-caller(role, contract)

确保调用者拥有正确角色。否则,返回 ERR_UNAUTHORIZED.

is-protocol-paused()

返回协议当前是否已暂停。

validate-protocol-active()

断言协议未暂停,否则返回 ERR_PAUSED.


仅限协议的代币操作

这些函数仅允许已授权的协议合约进行铸造/销毁/转移。

protocol-transfer(amount, sender, recipient)

代表另一个合约执行协议级转账。只有具有 铸造角色 的调用者才能使用它。如果协议已暂停,则失败。

protocol-mint(amount, recipient)

向某个主体铸造新的 USDCx。仅限于 铸造角色 并且在暂停时会被禁用。

protocol-burn(amount, owner)

从某个主体的余额中销毁代币。也仅限于 铸造角色 并且在暂停时会被禁用。

protocol-mint-many(recipients)

批量向多个收款人一次性铸造代币。每个项目包含 { amount, recipient }。仅可由拥有 铸造角色.


治理函数

只有 治理角色 可以调用这些函数。

protocol-set-name(new-name)

更新代币的 SIP-010 名称。

protocol-set-symbol(new-symbol)

更新代币的 SIP-010 交易代码符号。

protocol-set-token-uri(new-uri)

更新 SIP-016 元数据 URI。

set-active-protocol-caller(caller, role, enabled)

向特定协议角色中添加或移除某个主体。 用于轮换系统、更新配套合约或委派新职责。


暂停控制

这些函数允许协议为安全或维护而停止运行。

pause()

暂停合约,禁用铸造、销毁以及所有仅限协议的操作。仅可由 暂停角色.

unpause()

在暂停后重新启用协议。也仅限于 暂停角色.

这两个函数都会发出链上事件以提高透明度。

最后更新于

这有帮助吗?