Hardhat Starter Kit
This project includes some additional Hardhat plugins and project structuring which isn’t included in the standard project generated by the
npx hardhat command, the additions are outlined below.
In order for this codebase to operate, rename
.env and fill in the environment variables (never commit your
.env file to your repository, the
.env file will be ignored by default by
The following additional Hardhat plugins are included with this project:
@nomiclabs/hardhat-etherscan [Official Plugin]
This official plugin made by Nomic Foundation, developers behind Hardhat, is used to make it easier to verify your contracts within your Hardhat project on Etherscan. This plugin makes use of the
ETHERSCAN_API_KEY in the
.env file (see
An example of usage of this functionality is shown in scripts/sample-deployment.js.
hardhat-gas-reporter [Community Plugin]
This community plugin made by Christopher Gewecke is used to make it easier to keep track of the gas usage of your Solidity code. Upon running tests, this plugin will automatically output gas-usage statistics based off the different method calls and deployments completed by your tests (runs by default during
npx hardhat test).
hardhat-contract-sizer [Community Plugin]
This community plugin made by Nick Barry is used to make it easier to keep track of the different sizes of your contracts, this helps to make sure that no contracts exceed the
24576 byte limit imposed by EIP-170 in Ethereum’s Spurious Dragon hard fork. It also improves the experience of making different optimizations to your Solidity code in order to decrease deployment costs (e.g. seeing the impact of using shorter revert messages). Runs by default upon running
npx hardhat test.
solidity-coverage [Community Plugin]
This community plugin, also made by Christopher Gewecke, via sc-forks, is used to make it easier to keep track of which parts of your Solidity codebase have been covered by your test cases as well as which parts have not been covered.
In order to generate a coverage report, run
npx hardhat coverage, the .gitignore folder will ignore the coverage files so if you would like to commit them to your repo, adjust the
.gitignore accordingly (by removing references to
.env files into the runtime of your codebase (in this case we use the
.env to populate environment data in our
hardhat.config.js file, this also makes it easier for code secrets to be kept in one place and to avoid committing secrets to the codebase repo by virtue of
.env being ignored in
Official Hardhat Commands
npx hardhat accounts npx hardhat compile npx hardhat clean npx hardhat test npx hardhat node node scripts/sample-script.js npx hardhat help