这个过程,是为了验证已经部署到区块链网络上的智能合约代码与源代码是否匹配。
这里可以使用hardhat的插件,当前版本是@nomicfoundation/hardhat-verify,文档点击查看hardhat-verify,之前还有一个是hardhat-etherscan,应该是差不多的。如果之后有新增,可以安装最新的。
我们还要准备一个东西,我这边的验证是通过Ethereum (ETH) Blockchain Explorer (etherscan.io)上进行的,需要从这个网站上获得一个apikey,注册一下即可。这个网站也是我用来关联MetaMask,查看整个发布和交易测试使用的网站。不同的验证,可以到相关的网站找到对应的apikey。
- 安装
yarn add --dev @nomicfoundation/hardhat-verify
- 编码
// 这里是在hardhat.config.js里增加的 hardhat-verify,从etherscan.io获取的apikey写在.env中
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();
require("@nomicfoundation/hardhat-verify");
const env = process.env;
const SEPOLIA_RPC_URL = env.SEPOLIA_RPC_URL;
const PRIVATE_KEY = env.PRIVATE_KEY;
const ETHERSCAN_API_KEY = env.ETHERSCAN_API_KEY;
(
module.exports = {
defaultNetwork: "hardhat",
networks: {
sepolia: {
url: SEPOLIA_RPC_URL,
accounts: [PRIVATE_KEY],
chainId: 11155111,
},
},
solidity: "0.8.19",
// 新增的配置
etherscan: {
apiKey: ETHERSCAN_API_KEY,
},
}
);
验证方式
- 手动验证,就是执行命令
// network 可以使用你当时连接的网络,我用的是sepolia
// DEPLOYED_CONTRACT_ADDRESS需要验证的合约的地址
yarn hardhat verify --network sepolia DEPLOYED_CONTRACT_ADDRESS "Constructor argument 1(这里是构造函数中的参数)"