usdcx 代币

USDCx-代币合约摘要

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

角色

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

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

  • 铸造(mint-role) – 被授权铸造、销毁并执行协议级别的转移。

  • 暂停(pause-role) – 被授权暂停和恢复协议。

协议暂停会为了安全而停止更改状态的操作。合约部署者会自动获得 治理 角色。配套合约 .usdcx-v1 会自动获得 铸造 角色。


按函数逐项解析

SIP-010 标准函数

transfer(amount, sender, recipient, memo)

在主体之间转移 USDCx,遵循 SIP-010 规则。函数检查发送者是否为 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()

暂停合约,禁用铸造、销毁和所有仅限协议的操作。只有 pause 角色.

unpause()

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

两者都会为透明性发出链上事件。

最后更新于

这有帮助吗?