初始部署

  • circlefin
  • 发布于 2024-10-29 15:12
  • 阅读 41

本文档描述了部署新代理和实现的过程,重点在于如何初始化合约。由于代理使用delegatecall将调用转发给实现,因此合约的初始化需要特别处理。文档详细介绍了如何部署实现合约、初始化字段,以及如何部署代理并验证字段是否正确初始化。

初始部署

这是部署新的代理和实现的过程(而不是 升级现有的代理)。

由于代理使用 delegatecall 将调用转发到实现, 合约的初始化变得有点棘手,因为我们无法 通过构造函数初始化实现合约中的字段。 相反, 在实现合约中有一个初始化方法,它是公开的, 但每个代理只能调用一次。

部署实现合约

  1. 部署 FiatTokenV2_2

  2. 通过 initialize* 方法初始化 FiatTokenV2_2 中的字段。 这些 值并不重要,但是这将阻止其他人初始化 角色并尝试将其用作 token 或将其冒充为真正的 Circle token。

    initialize(
     "",
     "",
     "",
     0,
     THROWAWAY_ADDRESS,
     THROWAWAY_ADDRESS,
     THROWAWAY_ADDRESS,
     THROWAWAY_ADDRESS
    );
    initializeV2("");
    initializeV2_1(THROWAWAY_ADDRESS);
    initializeV2_2([], "");
  3. 验证 FiatToken 中的所有字段是否已正确初始化,并且 具有期望的值。

部署代理:

  1. 获取以下合约角色的地址。 确保这些角色的 密钥已安全存储。

    admin
    masterMinter
    pauser
    blacklister
    owner

    有关这些角色可以执行的操作的详细信息,请参见 Token 设计文档

  2. 部署 FiatTokenProxy,将 已部署的实现合约的地址传递给构造函数,该构造函数 将初始化 _implementation 字段。

  3. 代理合约的 admin 默认为 msg.sender。 你必须 立即更改 admin,或从其他地址发送其余的交易。 admin 只能看到代理中的方法,来自 admin 的任何方法调用 都不会转发到实现合约。 可以通过调用 changeAdmin 来更改 admin 地址。 请注意,更改 admin 必须由当前的 admin 调用。

    changeAdmin(adminAddress)
  4. 通过 initialize* 方法初始化代理。 此调用将 转发到实现合约,但由于它是通过 delegatecall 进行的,因此它将在代理合约的上下文中运行,因此它正在 初始化的字段将存储在代理的存储中。 此处传递的 值很重要,尤其是对于将控制合约的角色。

    initialize(
     tokenName,
     tokenSymbol,
     tokenCurrency,
     tokenDecimals,
     masterMinterAddress,
     pauserAddress,
     blacklisterAddress,
     ownerAddress
    );
    initializeV2(newTokenName);
    initializeV2_1(lostAndFoundAddress);
    initializeV2_2(accountsToBlacklist, newTokenSymbol);
  5. 验证字段是否已正确初始化。 验证应该 由多人独立执行,以确保合约已 正确部署。 应验证以下字段:

    • admin 是期望的地址
    • implementation 是实现合约的地址
    • namesymbolcurrencydecimals 与预期的一致
    • version 是 2
    • ownermasterMinterpauserblacklister 是期望的地址
    • totalSupply 是 0
    • initializedtrue
  6. 如果所有验证都成功,则合约已部署并可以使用。 如果任何验证步骤失败,请重新启动该过程。

  • 原文链接: github.com/circlefin/sta...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

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