使用Hardhat插件验证
- 官网参考
- 安装
@nomicfoundation/hardhat-verify
插件
yarn add --dev @nomicfoundation/hardhat-verify
- 获取BSC API KEY,在官网注册登录获取API KEY,官网
- 在
hardhat.config.js
配置
require("@nomicfoundation/hardhat-verify");
module.exports = {
defaultNetwork: "hardhat",
networks: {
bsctest: {
url: BSCTEST_RPC_URL,
accounts: [PRIVATE_KEY],
gasPrice: 1500000000,
chainId: 97
}
},
solidity: "0.8.19",
etherscan: {
apiKey: BSCSCAN_API_KEY
}
};
- 配置好后,执行
yarn hardhat
验证是否有出现verify
命令
yarn hardhat
AVAILABLE TASKS:
...
verify Verifies a contract on Etherscan
// I'm a comment!
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
// pragma solidity ^0.8.0;
// pragma solidity >=0.8.0 <0.9.0;
contract SimpleStorage {
uint256 favoriteNumber;
struct People {
uint256 favoriteNumber;
string name;
}
// uint256[] public anArray;
People[] public people;
mapping(string => uint256) public nameToFavoriteNumber;
function store(uint256 _favoriteNumber) public {
favoriteNumber = _favoriteNumber;
}
function retrieve() public view returns (uint256) {
return favoriteNumber;
}
function addPerson(string memory _name, uint256 _favoriteNumber) public {
people.push(People(_favoriteNumber, _name));
nameToFavoriteNumber[_name] = _favoriteNumber;
}
}
const { ethers, run, network } = require("hardhat")
require("dotenv").config()
async function main() {
const simpleStorageFactory = await ethers.getContractFactory("SimpleStorage")
console.log("Deploying contract...")
const simpleStorage = await simpleStorageFactory.deploy()
await simpleStorage.waitForDeployment()
console.log(`Deployed contract address: ${ simpleStorage.target }`)
if(network.config.chainId == 97 && process.env.BSCSCAN_API_KEY) {
console.log("Waiting for block txes...")
await simpleStorage.waitForDeployment(6)
await verify(simpleStorage.target, [])
}
const currentValue = await simpleStorage.retrieve()
console.log(`Current Value is : ${ currentValue }`)
const transactionResponse = await simpleStorage.store(7)
simpleStorage.waitForDeployment(1)
const updatedValue = await simpleStorage.retrieve()
console.log(`Updated Value is: ${ updatedValue }`)
}
async function verify(contractAddress, args) {
console.log("Verifying Contract...")
try{
await run("verify:verify", {
address: contractAddress,
constructorArgsParams: args
})
} catch(error) {
if(error.message.toLowerCase().includes("already verified")) {
console.log("Already Verified!")
} else {
console.log(error)
}
}
}
main().then(() => {
process.exit(0)
}).catch((error) => {
console.log(error)
process.exit(1)
})
yarn hardhat run .\scripts\deploy.js --network bsctest