合同核查

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

Sourcify

有关 Sourcify 的文档可查阅 here

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 文件。