桥接 USDC 标准

  • circlefin
  • 发布于 2025-05-10 14:45
  • 阅读 28

本文档介绍了 Bridged USDC 标准,这是一个在 EVM 区块链上部署 USDC 桥接形式的规范和流程,Circle 可选择在未来无缝升级到原生发行。它概述了桥接合约和 Token 部署的关键步骤,以及在第三方团队和 Circle 共同决定将桥接 USDC Token 合约的所有权安全转移给 Circle 并执行升级到原生 USDC 时所需的操作。

桥接 USDC 标准

桥接 USDC 标准 是一种规范和流程,用于在 EVM 区块链上部署桥接形式的 USDC,并允许 Circle 在未来无缝升级到原生发行。<sup>1</sup>

其结果是一种安全且标准化的方式,供任何 EVM 区块链和 rollup 团队将桥接 USDC 代币合约的所有权转移给 Circle,以便在双方认为合适时促进升级到原生 USDC。<sup>2</sup>

本文档提供了该流程的高级概述。请注意,这也适用于桥接 EURC(Circle 的欧元支持的稳定币)的实现,因为它们遵循相同的实现。

工作原理

  1. 第三方团队遵循该标准来部署其桥接合约,或者保留将来升级其桥接合约以纳入所需功能的能力。(参见桥接合约
  2. 第三方团队遵循该标准来部署其桥接 USDC 代币合约。(参见代币部署
  3. 如果第三方团队和 Circle 共同决定安全地将桥接 USDC 代币合约的所有权转移给 Circle 并执行升级到原生 USDC,则将发生以下情况:
    • 第三方团队将暂停桥接活动,并协调进行中的桥接活动,以最终确定目标链上桥接 USDC 的总供应量。
    • 第三方团队将安全地将桥接 USDC 代币合约的合约角色重新分配给 Circle。
    • Circle 和第三方团队将共同协调,销毁锁定在源链上的桥接合约中的原生 USDC 数量,该数量等于目标链上桥接 USDC 的供应量,并将目标链上的桥接 USDC 代币合约升级为原生 USDC。
  4. 原生 USDC 代币合约无缝保留原始桥接 USDC 代币合约的现有供应量、持有者和应用集成。

桥接合约

第三方团队的桥接合约在该过程中起着不可或缺的作用,并且必须是可升级的,以便添加以下功能,这是支持升级过程所必需的。

  1. 源和目标区块链)能够暂停 USDC 桥接以锁定供应量。
  2. 源区块链)能够销毁锁定的 USDC。

Circle 建议在 Circle 和第三方团队共同同意进行升级后,通过合约升级将此功能推迟到稍后添加。

1) 能够暂停 USDC 桥接

桥接合约必须能够暂停桥接,从而能够最终确定桥接代币的供应量,并且该供应量完全由源链上的原生 USDC 数量支持。如何实现这一点由第三方团队决定,但此功能必须在升级之前存在。

2) 能够销毁锁定的 USDC

升级过程中的最后一步是销毁源区块链桥接合约中锁定的 USDC。为了支持这一点,Circle 将暂时将持有 USDC 余额的桥接合约分配为零授权 USDC 增发者 的角色。这意味着该桥可以销毁自己持有的余额,但不能 增发 新的供应量。

要执行销毁,桥接合约必须公开一个函数,该函数只能由 Circle 控制的帐户调用。此函数的签名将是:

function burnLockedUSDC() external;

具体的实现细节留给第三方团队决定,但至少,该函数必须:

  1. 只能由 Circle 在接近升级时指定的地址调用。请注意,此地址不一定是用于调用 transferUSDCRoles 的同一地址。
  2. 销毁桥接所持有的 USDC 数量,该数量等于供应锁定最终确定的桥接 USDC 的总供应量。

代币部署

第三方团队的桥接 USDC 代币合约预计与在其他 EVM 区块链上的原生 USDC 代币合约相同。USDC 使用代理模式,因此该标准适用于实现合约代码和代币代理。

代币合约代码

使用相同的代码便于 Circle 进行无需信任的合约验证,并支持与现有 USDC 服务的无缝集成。为了促进这一点,第三方团队应:

  1. 从源代码构建 FiatToken 合约。为了确保字节码奇偶校验,使用的 Solidity 编译器配置应与以下设置匹配:

    • Solidity 版本:0.6.12
    • 优化器运行:10000000(合作伙伴应尝试使用相同数量的优化器运行,但如果存在技术限制,可以选择减少它)

    有关 Circle 使用的建议编译器设置,请参阅 foundry.toml

  2. 部署本地编译的 FiatToken 合约。可以在此处找到部署过程的概述。

  3. 提取用于生成已部署合约字节码的编译器元数据,并将其提供给 Circle 以支持合约验证过程。 编译器元数据 是一个自动生成的 JSON 文件,通常可以在本地机器的构建目录中找到。

Circle 的存储库配备了构建工具和脚本,可以简化上述过程。第三方团队可以参考此处列出的步骤来运行部署。

代币命名

Circle 推荐了 命名准则 用于桥接 USDC 或 EURC 代币合约的代币名称和代币符号属性,鼓励第三方团队遵循这些准则。通常 USDC 和 EURC 从 Ethereum 桥接到新的目标区块链,因此,通常使用以下内容:

USDC

  • 代币名称:桥接 USDC(第三方团队)
  • 代币符号:USDC.e

EURC

  • 代币名称:桥接 EURC(第三方团队)
  • 代币符号:EURC.e

请注意,上面括号中显示的文字将是第三方团队的公司名称。

重要提示:

  • 部署后,除 Circle 编写的后续 FiatToken 版本外,桥接代币合约不得在任何时候升级到新的或不同的实现。
  • 一旦 Circle 决定进行桥接至原生升级,不得以任何方式修改或升级底层桥接。
  • 为了有资格进行桥接至原生升级,在测试网上部署的 USDC 和桥接合约必须镜像在主网上使用的配置。
  • 第三方团队或桥接运营商必须对桥接设计有深刻的理解,并准备好就桥接相关的技术细节提供指导。
  • FiatToken 有许多一次性使用的初始化函数(如下所列),这些函数不是权限控制的,因此应在合约部署期间调用。
    • 由于 FiatToken 使用的代理模式,在指定代理指向的当前实现之后(或期间),必须调用这些初始化函数才能在代理的存储上正确设置值。 如果没有,那么任何调用者都可以在将来调用它们。
    • 还建议直接在实现合约本身上调用这些函数,与代理分开,以禁止任何外部调用者以后调用它们。在编写时,这些初始化函数包括:
    • initialize
    • initializeV2
    • initializeV2_1
    • initializeV2_2

存储库中有许多参考 部署脚本,这些脚本演示了部署 USDC/EURC 和配置实现的模式。例如,有一个 升级器模式,其中智能合约设置 FiatToken 实现合约并在单个交易中调用初始化函数。

代币角色

FiatToken 使用 增发者 模式,其中可以通过主 增发者 角色配置 增发者增发 最高允许的数量。将 增发者 模式适应于桥接 USDC 或 EURC 代币合约的一种方法是将目标桥配置为单独的 增发者

各个 FiatToken 角色(所有者、暂停者、黑名单者、主 增发者)也可以分配给桥接或某些其他可升级合约,只要将来能够添加一个Hook以将角色转移给 Circle。

如果你希望在权限控制的 增发者 配置方面具有更大的灵活性,你可能需要探索 Controller 和 MinterController 合约,它们共同构成了 MasterMinter模式。

将角色转移给 Circle

在升级时,有几个 USDC 角色将被转移到 Circle 拥有的地址。具体来说,这些是:

  • 实现所有者: 定义 在实现合约中,所有者可以重新分配所有其他角色(所有者、主 增发者、暂停者、救援者、黑名单者)。
  • ProxyAdmin: 定义 在代理合约中,ProxyAdmin 可以重新分配 ProxyAdmin 并执行升级。默认情况下,代理管理员不允许调用实现合约定义的任何函数。

由第三方团队决定如何保护和管理这些角色,作为其原始桥接 USDC 部署及其在潜在升级之前的持续使用的一部分。例如,这些角色可以分配给 EOA,或分配给智能合约(如桥接)。

  1. 智能合约所有权:如果角色分配给智能合约(如桥接),则该合约必须公开一个函数,Circle 可以通过智能合约交互来调用该函数,以便在升级时执行角色转移。

  2. EOA 所有权:如果角色分配给 EOA,则合作伙伴必须计划将它们转移到公开相同所需函数的智能合约。

此函数必须具有以下签名:

function transferUSDCRoles(address owner) external;

函数实现细节由合作伙伴决定,但它必须:

  1. 只能由 Circle 在接近升级时指定的地址调用。请注意,此地址不一定是用于调用 burnLockedUSDC 的同一地址。
  2. 将实现所有者角色转移到 owner 参数中指定的地址。
  3. 将 ProxyAdmin 角色转移给函数调用者(如果已分配给桥接)。

如果 ProxyAdmin 角色未分配给桥接合约,则合作伙伴应将该角色转移到 Circle 在接近升级时指定的地址。

此外,合作伙伴应在将角色转移给 Circle 之前(或同时)删除所有配置的 增发者

更多信息

如果你有本文档中未解决的问题,请通过 我们的 Discord 联系我们。我们重视社区的反馈和建议,以改进我们的文档。


  1. 桥接 USDC 标准授予 Circle 选择权,但没有义务获得代币合约的所有权并升级到原生 USDC。 此外,必须在部署桥接 USDC 代币合约之前合并桥接 USDC 标准,因为它无法追溯应用。 提供的要求仅供参考,如果 Circle 选择将特定形式的桥接 USDC 升级到原生 USDC,则这些要求将适用。 这些要求不构成升级特定形式的桥接 USDC 的要约。 Circle 决定将特定形式的桥接 USDC 升级到原生 USDC 可能需要遵守其他条款和条件。 正如 USDC 使用条款 第 8 节中所述,桥接形式的 USDC 存在某些风险,并非由 Circle 发行。 相同的条件适用于 EURC。
  2. 目标区块链将接受 Circle 的内部区块链尽职调查流程。该流程包括对合规性和风险因素的审查,以及对批准前的法律和技术风险的覆盖。 尽职调查侧重于加密货币和区块链的细微差别,以及对存在的战略、财务、运营、技术、法律和监管风险的评估。
  • 原文链接: github.com/circlefin/sta...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
circlefin
circlefin
江湖只有他的大名,没有他的介绍。