usdcx-v1

USDCx-v1 合约摘要

这个 usdcx-v1 合约实现了 USDC xReserve 协议 用于在 Stacks 与外部链之间转移 USDC。它充当 铸造和销毁 USDCx 的主要入口 ,基于 Circle 发行的存款意图。

此合约处理:

  • 解析和验证存款意图负载

  • 恢复并验证 Circle 证明者签名

  • 强制执行基于 nonce 的重放保护

  • 通过 usdcx 代币合约

  • 销毁 USDCx 以发起提现吗

  • 管理 Circle 证明者密钥

  • 处理 Stacks 特定的接收者转换

  • 为赞助铸造应用费用逻辑

  • 管理最小提现阈值

它与主 usdcx 代币合约协同工作,该合约强制执行协议角色(铸造, 治理,等等)。所有铸造/销毁都通过 protocol-mintprotocol-burn.

铸造 USDCx

铸造 USDCx 的入口是通过 铸造 函数。调用者提供一个序列化的存款意图,以及一个签名,这两者都在链下作为桥接过程的一部分接收。存款意图根据 xReserve 规范进行解析。

有几个 Stacks 特定元素:

  • 这个 remote-token 必须是 principal 的共识序列化字节 .usdcx (其中部署者地址依赖于网络),并在左侧填充 0x。

  • 这个 remote-domain 对于 Stacks 总是 10003.

  • 因为 Stacks 只支持 u128 整数,所以如果存款意图中的任何 64 字节整数大于 u128::max,反序列化函数会抛出错误。这符合 xReserve 规范。

验证证明

这个 .usdcx-v1 合约保留一个 circle-attestors 映射,用于跟踪有效证明者的公钥。当提供存款意图时,它必须由该映射中的某个公钥签名。

销毁 USDCx

要将 USDCx 提现到另一条链,用户调用 burn。指定数量的 USDCx 会从他们的 Stacks 账户中销毁。系统会发出一个 print 事件,该事件用于在链下触发销毁证明。

这个 .usdcx-v1 合约存储一个最小金额变量。用户必须至少提现这个金额,否则销毁失败。具有角色 0x04 的账户可以更新此变量。

最后更新于

这有帮助吗?