背景
开发者使用hardhat进行智能合约项目开发,但是不清楚如何在OKC上使用hardhat进行合约验证操作。下面我将通过示例介绍如何使用hardhat的verify命令(需要安装hardhat-etherscan插件并进行配置)快速验证合约。
使用说明
在OKLINK上验证代码只需要修改hardhat.config.js文件即可,具体流程命令和hardhat官方保持一致。
注意事项
1.在Etherscan上验证需要获取API密钥,但是OKC上验证暂时不需要单独去申请API密钥,比如填写为"OKLINK"。
2.部署完合约代码后,需要等待一分钟再去验证合约代码。
举例说明
第一步:首先创建一个hardhat项目工程,这里使用hardhat的示例合约Lock做演示
第二步:修改工程目录下的hardhat.config.js文件,修改如下:
OKC主网
require("@nomiclabs/hardhat-etherscan");
require('dotenv').config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.17",
networks: {
okc: {
url: "https://exchainrpc.okex.org",
accounts:[process.env.PRIVKEY]
}
},
etherscan: {
apiKey: process.env.ETHERSCAN_KEY,
customChains: [
{
network: "okc",
chainId: 66,
urls: {
apiURL: "https://www.oklink.com/api/explorer/v1/contract/verify/async/api",
browserURL: "https://www.oklink.com/zh-cn/okc/"
}
}
]
}
};
OKC测试网
require("@nomiclabs/hardhat-etherscan");
require('dotenv').config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.17",
networks: {
okcTest: {
url: "https://exchaintestrpc.okex.org",
accounts:[process.env.PRIVKEY]
}
},
etherscan: {
apiKey: process.env.ETHERSCAN_KEY,
customChains: [
{
network: "okcTest",
chainId: 65,
urls: {
apiURL: "https://www.oklink.com/api/explorer/v1/contract/verify/async/api/okctest",
browserURL: "https://www.oklink.com/zh-cn/okc-test/"
}
}
]
}
};
其中的process.env.PRIVKEY换成开发者自己部署地址的私钥,process.env.ETHERSCAN_KEY填写为OKLINK(这个暂时不校验)
第三步:编译hardhat的合约代码并部署(如果为测试网需要指定为测试网的RPC,这里以主网示例)
npx hardhat run scripts/deploy.js --network okc

第四步:等待一分钟,运行验证合约命令且需要指定需要验证的合约文件(如果为测试网需要指定为测试网的RPC,这里以主网示例)
npx hardhat verify --contract contracts/Lock.sol:Lock <address> <unlock time> --network okc

第五步:检查合约是否验证成功,访问https://www.oklink.com/okc/address/0x2F7795A8417b4226B9627c0000461e644aD7C6d8