主页 > imtoken 下载 > 使用hardhat开发以太坊智能合约——验证合约
使用hardhat开发以太坊智能合约——验证合约
本系列课程: 第1节:使用hardhat开发以太坊智能合约-搭建环境[2] 第2节:使用hardhat开发以太坊智能合约-测试合约[3] 第3节:使用hardhat开发以太坊智能合约-发布contract [4] 第四节:使用安全帽开发以太坊智能合约——验证合约 [5]
一、概述
将真实合约部署到官方区块链网络后,在区块链浏览器中查看我们的合约,应该是这样显示的
在合约标签中,它显示了一堆人类无法理解的“乱码”。 这对我们来说没有问题,不会影响合约的正常运行。
但是对于我们普通用户来说,他们希望的是看到你合约的具体执行情况,从而判断你的合约是否存在漏洞或者“深坑”。
为了增强用户对项目的信任度,我们需要公开我们合约的源代码。 接下来我们将讲解如何使用hardhat来验证合约
二、准备工作 1、申请区块链浏览器账号
我们使用区块链浏览器提供的api接口进行合约验证,所以需要先申请一个账号。 这里我们以matic区块链网络为例。 首先以太坊测试网goerli合并,我们访问PolygonScan注册页面[6]注册一个账号(已有账号可跳过),然后用该账号登录
2.创建API-KEY
进入左侧菜单,如下图,输入appName,点击继续按钮完成创建
创建完成后会得到一个API-KEY,我们复制一下
3.修改配置文件
我们使用vscode打开我们的hardhat项目,
3.1 修改.env配置
找到根目录下的.env配置文件,然后添加一个配置
POLYGONSCAN_API_KEY = 你刚申请的API-KEY
复制
3.2 修改hardhat.config.js配置
找到根目录下的hardhat.config.js文件,添加如下配置:
etherscan: {
apiKey: {
polygonMumbai: process.env.POLYGONSCAN_API_KEY
}
}
复制
完整的代码应该是这样的:
require("@nomicfoundation/hardhat-toolbox");
require('dotenv').config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.17",
networks: {
goerli: {
url: `https://eth-goerli.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`,
accounts: [process.env.GOERLI_PRIVATE_KEY],
},
matic: {
url: "https://rpc-mumbai.maticvigil.com",
accounts: [process.env.MATIC_PRIVATE_KEY]
}
},
etherscan: {
apiKey: {
polygonMumbai: process.env.POLYGONSCAN_API_KEY
}
}
};
复制
3. 验证合约 1. 发布测试合约
准备工作已经完成。 接下来,让我们进入验证合约的真正过程。 首先我们在matic测试网上创建一个合约以太坊测试网goerli合并,或者使用Lock.sol合约来创建(如何部署合约,可以看之前的教程[发布合约[7]]),执行命令:
npx hardhat deploy --network matic
复制
部署成功会返回合约地址:
我们复制这个合约地址,访问matic的测试区块链浏览器查看其详细信息
可以看到,已经创建成功了,我们点击Contract标签查看一下
可以看到合约发布成功,但是看不到源码。 接下来我们使用hardhat来验证合约
2.合同验证
我们先来看看官网的合约验证是如何进行的,贴出官网的示例代码
npx hardhat verify --network goerli
复制
然后我会解释
固定命令写法
npx hardhat verify --network
复制
代表你要执行的网络,对应我们在hardhat.config.js中配置的网络
goerli
复制
合约地址,也就是我们上一步发布合约后返回的地址,需要
复制
部署合约的初始化参数可以有多个,以空格分隔,字符串用""包裹
复制
那么一个完整的验证合约命令应该是这样的:
npx hardhat verify --network 网络名 合约地址 参数1 参数2 参数3 …… (没有参数就不写)
复制
本教程的合约验证码:
npx hardhat verify --network matic 0x123d89f92Bc76c918AECFA5825E13fe877e7D0C1 1696734227
复制
等待命令执行完毕,然后我们刷新刚才的区块链浏览器页面,发现合约已经验证通过
通过本课程的学习,我们完成了合约的验证过程。 至此,安全帽教程结束。 后续我会推出更多智能合约相关的课程。 感兴趣的同学关注一下
参考
[1]
整干攻城尸:
[2]
使用hardhat开发以太坊智能合约——搭建环境:
[3]
使用hardhat开发以太坊智能合约-测试合约:
[4]
使用hardhat开发以太坊智能合约——发布合约:
[5]
使用hardhat开发以太坊智能合约——验证合约:
[6]
PolygonScan 注册页面:
[7]
[发布合同: