部署与运行代理合约
Remix IDE 提供了处理使用 UUPS 模式的代理合约的辅助功能。
UUPS 代理合约实现了ERC1967Proxy.
一旦您部署了 UUPS实现合约,Remix 将会部署一个 ERC1967合约,并包含您的实现合约地址。
要与 执行合约 中的函数交互,请使用 ERC 1967合约 的部署实例,而不是执行合约。
当需要升级合约时,Remix 提供了相应的用户界面进行操作。
若要尝试此操作,您需要获得一份代理合约。转到 wizard.openzepelin.com,选择一份合约,在 Upgradeability 部分选择UUPS选项,把代码复制粘贴到 Remix。编译文件然后部署和运行。
合约部署
当您在 Deploy & Run 的合约选择框中选定了UUPS合约时,您在 Deploy 按钮下方可以看到下面的复选框:
选中 使用代理部署 的复选框,部署时会创建两笔交易:一笔是部署你的执行合约,另一笔是部署ERC1967代理合约。你会看到两个弹窗提示你做检查:
接下来是
如果你是部署到Remix VM,这些弹窗会挨个出现。如果你连接到主网或者公开的测试网,第二个弹窗会在第一笔交易完成后出现。
ERC1967代理合约部署完之后,在 Deployed Contracts 模块,你可以看到两个部署的合约实例。
要与你的执行合约进行交互, 不要 使用你部署的合约实例,而是 使用ERC1967代理合约 。代理合约拥有实现合约的所有方法。
升级合约
如果升级,请选中 Upgrad with Proxy(使用代理升级)复选框并下拉来查看选项:
你可以使用最新部署的ERC1967合约,也可以输入你想使用的ERC1967合约地址。