部署与运行代理合约

Remix IDE 提供了处理使用 UUPS 模式的代理合约的辅助功能。

UUPS 代理合约实现了ERC1967Proxy.

一旦您部署了 UUPS实现合约,Remix 将会部署一个 ERC1967合约,并包含您的实现合约地址。

要与执行合约中的函数交互,请使用ERC 1967合约的部署实例,而不是执行合约。

当需要升级合约时,Remix 提供了相应的用户界面进行操作。

若要尝试此操作,您需要获得一份代理合约。转到 wizard.openzepelin.com,选择一份合约,在 Upgradeability 部分选择UUPS选项,把代码复制粘贴到 Remix。编译文件然后部署和运行。

合约部署

当您在 Deploy & Run 的合约选择框中选定了UUPS合约时,您在 Deploy 按钮下方可以看到下面的复选框:

选中 Deploy with Proxy(通过代理进行部署) 的复选框,部署时会创建两笔交易:一笔是部署你的执行合约,另一笔是部署ERC1967代理合约。你会看到两个弹窗提示你做检查:

接下来是

如果你是部署到Remix VM,这些弹窗会挨个出现。如果你连接到主网或者公开的测试网,第二个弹窗会在第一笔交易完成后出现。

ERC1967代理合约部署完之后,在 Deployed Contracts 模块,你可以看到两个部署的合约实例。

要与你的执行合约进行交互,不要使用你部署的合约实例,而是使用ERC1967代理合约。代理合约拥有实现合约的所有方法。

升级合约

如果升级,请选中 Upgrad with Proxy(使用代理升级)复选框并下拉来查看选项:

你可以使用最新部署的ERC1967合约,也可以输入你想使用的ERC1967合约地址。