A Coastal Engineer who is trying to become a WEB3 engineer. GitHub: https://github.com/CAOYUhhu Twitter: https://twitter.com/james_tsao21
A Coastal Engineer who is trying to become a WEB3 engineer. GitHub: https://github.com/CAOYUhhu Twitter: https://twitter.com/james_tsao21
Subscribe to JamesTsao的个人成长笔记
Subscribe to JamesTsao的个人成长笔记
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
Hardhat是一个solidity编译器,相比较于Remix这种网页端的编辑器,Hardhat可以通过vs code进行安装,以一个安装包的形式安装到项目路径下。
安装完成后运行 npx hardhat,按照指示可以在当前文件夹下创建一个hardhat项目。其实就是在当前的React框架下增加几个文件夹和模板文件。
进入到contracts文件夹下,即可新建我们的sol文件,进行合约的编写了。通常还需要安装一下@openzeppelin/contracts这个标准代码库。
编写完成sol文件之后,进入到scripts文件夹下,编辑deploy合约的js脚本文件。在hardhat提供的模板文件基础上将合约名称等参数修改下即可。
在项目文件夹路径下还有一个hardhat.config.js文件,在这个文件中需要定义我们需要将合约部署到的网络。以部署到测试网为例,在module.exports中修改如下代码:
module.exports = {
solidity: "0.8.4",
networks: {
rinkeby:{
url: process.env.REACT_APP_RINKEBY_RPC_URL,
accounts: [process.env.REACT_APP_PRIVATE_KEY],
},
},
etherscan:{
apiKey: process.env.REACT_APP_ETHERSCAN_API,
}
}
其中,REACT_APP_RINKEBY_RPC_URL是测试网的节点地址,需要我们去rinkeby自行申请。REACT_APP_PRIVATE_KEY是钱包私钥。REACT_APP_ETHERSCAN_API是我们在etherscan拿到的api key。这些参数涉及到数据安全,因此需要单独存放在.env文件中,通过process.env来获取。
这些代码修改好之后,在vs code终端中输入以下命令:
npx hardhat run scripts/deploy.js --network rinkeby
代码执行后,终端会显示出合约部署到测试网的地址,过一两分钟就可以在测试网(rinkeby.etherscan)上搜到对应的合约了。这边需要消耗一定的gas作为合约部署的费用,测试网的ETH需要去水龙头领取一下。
上传的合约默认是没有经过etherscan验证的,在rinkeby.etherscan上只能看到合约对应的一堆bytes。因此我们需要将合约进行验证。
首先需要安装以下依赖,并在hardhat.config.js中导入依赖。
npm i -D @nomiclabs/hardhat-etherscan
然后我们在终端中输入一下代码进行合约验证:
npx hardhat verify --network rinkeby 0x合约地址 初始化变量
需要注意的是,如果合约中需要传入参数进行变量的初始化,那么需要在合约地址后面加上我们需要传入的参数。比如我们的合约需要外部传入一个unit值作为tokenMaxSupply,那么我们这边就需要在合约地址后面增加一个 10000。这个10000就是合约的最大供应量。10000这个数值需要和之前通过hardhat deploy合约的时候传入的参数一致。
这样,合约就可以通过验证了,我们可以通过etherscan很方便的查看、调用合约的外部函数,并且可以看到与合约进行交互的transaction。合约的交互信息会保留在测试网上,方便下次的测试。
Hardhat是一个solidity编译器,相比较于Remix这种网页端的编辑器,Hardhat可以通过vs code进行安装,以一个安装包的形式安装到项目路径下。
安装完成后运行 npx hardhat,按照指示可以在当前文件夹下创建一个hardhat项目。其实就是在当前的React框架下增加几个文件夹和模板文件。
进入到contracts文件夹下,即可新建我们的sol文件,进行合约的编写了。通常还需要安装一下@openzeppelin/contracts这个标准代码库。
编写完成sol文件之后,进入到scripts文件夹下,编辑deploy合约的js脚本文件。在hardhat提供的模板文件基础上将合约名称等参数修改下即可。
在项目文件夹路径下还有一个hardhat.config.js文件,在这个文件中需要定义我们需要将合约部署到的网络。以部署到测试网为例,在module.exports中修改如下代码:
module.exports = {
solidity: "0.8.4",
networks: {
rinkeby:{
url: process.env.REACT_APP_RINKEBY_RPC_URL,
accounts: [process.env.REACT_APP_PRIVATE_KEY],
},
},
etherscan:{
apiKey: process.env.REACT_APP_ETHERSCAN_API,
}
}
其中,REACT_APP_RINKEBY_RPC_URL是测试网的节点地址,需要我们去rinkeby自行申请。REACT_APP_PRIVATE_KEY是钱包私钥。REACT_APP_ETHERSCAN_API是我们在etherscan拿到的api key。这些参数涉及到数据安全,因此需要单独存放在.env文件中,通过process.env来获取。
这些代码修改好之后,在vs code终端中输入以下命令:
npx hardhat run scripts/deploy.js --network rinkeby
代码执行后,终端会显示出合约部署到测试网的地址,过一两分钟就可以在测试网(rinkeby.etherscan)上搜到对应的合约了。这边需要消耗一定的gas作为合约部署的费用,测试网的ETH需要去水龙头领取一下。
上传的合约默认是没有经过etherscan验证的,在rinkeby.etherscan上只能看到合约对应的一堆bytes。因此我们需要将合约进行验证。
首先需要安装以下依赖,并在hardhat.config.js中导入依赖。
npm i -D @nomiclabs/hardhat-etherscan
然后我们在终端中输入一下代码进行合约验证:
npx hardhat verify --network rinkeby 0x合约地址 初始化变量
需要注意的是,如果合约中需要传入参数进行变量的初始化,那么需要在合约地址后面加上我们需要传入的参数。比如我们的合约需要外部传入一个unit值作为tokenMaxSupply,那么我们这边就需要在合约地址后面增加一个 10000。这个10000就是合约的最大供应量。10000这个数值需要和之前通过hardhat deploy合约的时候传入的参数一致。
这样,合约就可以通过验证了,我们可以通过etherscan很方便的查看、调用合约的外部函数,并且可以看到与合约进行交互的transaction。合约的交互信息会保留在测试网上,方便下次的测试。
No activity yet