Hardhat + Typescript 智能合约的部署与测试
这篇文章主要介绍从零开始搭建Hardhat框架下使用typescrip进行合约的部署和测试
哪里有不足的地方请多指教
主要使用的框架和技术:
- hardhat
- yarn(当然也可用npm,只是我喜欢用yarn)
- waffle
- mocha
项目搭建
-
创建一个项目目录,并进行yarn初始化
mkdir hardhat-example cd hardhat-example yarn init
-
安装hardhat
直接运行
yarn add hardhat就可以了 -
初始化项目为hardhat+typescript项目
-
运行
yarn hardhat init -
选择
Create an advanced sample project that uses TypeScript

-
下面分别是
选择项目跟目录
是否创建
.gitignore文件是否安装所需要的一些包
直接敲回车就行
注意:用
yarn进行安装的时候有可能出现ethereum-waffle包装不上的问题,这时候这个包可以单独用npm进行安装到这里这个项目框架基本已经搭建完成了,下面就是对它进行各种配置了
-
项目配置
-
在项目跟目录下新建
.env文件,用于配置与链和网络相关配置相应的配置也可以直接从
.env.example文件拷贝过去替换成自己的ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1 ROPSTEN_URL=https://ropsten.infura.io/v3/<YOUR ALCHEMY KEY> PRIVATE_KEY=0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 -
安装hardhat部署插件
hardhat-deploy、hardhat-deploy-ethers,并引入到hardhat.confit.ts中:yarn add hardhat-deploy hardhat-deploy-ethersimport 'hardhat-deploy'; import 'hardhat-deploy-ethers'; -
对配置
hardhat.config.ts文件进行配置在文件中有一段task的代码,个人觉得用处不大就直接删除了
task("accounts", "Prints the list of accounts", async (taskArgs, hre) => { const accounts = await hre.ethers.getSigners(); for (const account of accounts) { console.log(account.address); } });一下配置均在
hardhat.config.ts文件下config中const config: HardhatUserConfig = { }配置hardhat多版本solidity编译环境,还需要其他的话直接照着加就行
solidity: { compilers: [{ version: "0.8.0", settings: { optimizer: { enabled: true, runs: 200 } } }, { version: "0.6.0", settings: { optimizer: { enabled: true, runs: 200 } } }] },配置合约路径
paths: { sources: "contracts" },配置地址对应的名称(主要用于部署时更方便调用部署地址)
namedAccounts: { deployer: 0 },

本文档详述如何利用Hardhat、Typescript、Waffle和Mocha来构建、测试和部署以太坊智能合约。从项目初始化、配置到合约编写和部署,每个步骤都有清晰的说明,包括配置hardhat多版本Solidity编译环境、设置合约路径、配置地址映射,以及使用hardhat-deploy进行合约部署。
最低0.47元/天 解锁文章
1117

被折叠的 条评论
为什么被折叠?



