合约核查

Remix 中有两种合约验证服务,即 Sourcify 和 Etherscan 以及扩展的区块浏览器 Etherscan 系列

Sourcify

有关 Sourcify 的文档可查阅 这里

Etherscan

Etherscan 插件名为 合约验证 - Etherscan

您可以通过插件管理器访问它。

该插件有 3 个页面: 验证 页面、 收据 页面和 设置 页面。

首次访问插件时,将加载设置页面以输入 API 密钥。

Etherscan API 密钥 - 设置页面

Etherscan 是以太坊主网的区块浏览器,他们还为其他链制作区块浏览器。

对于 Goerli 或 Sepolia 等以太坊测试网,使用相同的 API 密钥也可以。

如果您要在 Optimism 等 L2 链上进行验证,则需要为其区块浏览器提供不同的 API 密钥。并非所有 Etherscan 制作的区块链浏览器都有 API 密钥。Remix Contract Verification - Etherscan 插件只有在您可以登录该区块浏览器获取 API 密钥的情况下才能工作。

输入 API 密钥后,就会打开验证页面(主页)。

验证页面

在 Etherscan 插件中未选择网络。网络在 “部署和运行 “插件和浏览器钱包(如果使用)中选择。

核查的前提条件是

  1. 公共网络上已部署合约的地址

  2. Remix 中编译的同一份合约

  3. 构造函数参数与部署过程中使用的参数相同(如需要)

收据页面

验证收据可在收据页面找到。

使用构造函数参数进行验证

当合约的构造函数中有参数时,会显示一个文本框,用于输入与已部署合约相同的构造函数参数。

验证代理合约

在验证代理合约之前,必须先验证相关的执行合约。

为了便于检查,实施合约是由您编写或改编的,而代理则是 ,例如ERC1967Proxy。

** 在验证执行时不要勾选代理框。** 然后在验证执行合约后再勾选代理框:

  1. 从 合约地址 框中删除执行合约的地址。

  2. 单击 “这是代理合约地址 “复选框。

  3. 在 “预期实施地址 “框中粘贴经过验证的实施合约地址。

  4. 在合约地址框中粘贴代理合约地址。

为了以图示的方式解释,验证合约的执行过程:

然后选中 “这是代理合约 “复选框,并将合约地址中的执行地址剪切并粘贴到执行合约框中:

然后将代理合同的地址粘贴到合约地址框中。

生成验证脚本

单击 “验证 “页面上的 “生成验证脚本”,将在工作区的脚本文件夹中创建一个名为 etherscan 的文件夹,其中包含用于验证和返回收据状态的 .ts 文件。