合同核查
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 插件中未选择网络。网络在 “部署和运行 “插件和浏览器钱包(如果使用)中选择。
核查的前提条件是
公共网络上已部署合同的地址
Remix 中汇编的同一份合同
构造函数参数与部署过程中使用的参数相同(如需要)
收据页面
验证收据可在收据页面找到。
使用构造函数参数进行验证
当合约的构造函数中有参数时,会显示一个文本框,用于输入与已部署合约相同的构造函数输入。
验证代理合同
在验证代理合同之前,必须先验证相关的执行合同。
为了便于查看,实施合约是由您编写或改编的,而代理则是 ERC1967Proxy。
** 在验证执行时不要勾选代理框。** 然后在验证执行合同后再勾选代理框:
从 “合同地址 “框中剪下执行合同的地址。
单击 “这是代理合同地址 “复选框。
在 “预期实施地址 “框中粘贴经过验证的实施合同地址。
在合同地址框中粘贴代理合同地址。
为了以图示的方式解释,验证合约的执行过程:
然后选中 “这是代理合同 “复选框,并将合同地址中的执行地址剪切并粘贴到执行合同框中:
然后将代理合同的地址粘贴到合同地址框中。
生成验证脚本
单击 “验证 “页面上的 “生成验证脚本”,将在工作区的脚本文件夹中创建一个名为 etherscan 的文件夹,其中包含用于验证和返回收据状态的 .ts 文件。