A Hardhat-based template for developing Solidity smart contracts, with sensible defaults.
- Hardhat: compile, run and test smart contracts
- TypeChain: generate TypeScript bindings for smart contracts
- Ethers: renowned Ethereum library and wallet implementation
- Solhint: code linter
- Solcover: code coverage
- Prettier Plugin Solidity: code formatter
Before being able to run any command, you need to create a .env file and set a BIP-39 compatible mnemonic as an environment
variable. You can follow the example in .env.example. If you don't already have a mnemonic, you can use this website to generate one.
Then, proceed with installing dependencies:
NOTE: Make sure to use Node 16.
$ yarn install$ yarn hardhat nodeCompile the smart contracts with Hardhat:
$ yarn compileCompile the smart contracts and generate TypeChain bindings:
$ yarn typechainRun the tests with Hardhat:
$ yarn testLint the Solidity code:
$ yarn lint:solLint the TypeScript code:
$ yarn lint:tsGenerate the code coverage report:
$ yarn coverageSee the gas usage per unit test and average gas per method call:
$ REPORT_GAS=true yarn testDelete the smart contract artifacts, the coverage reports and the Hardhat cache:
$ yarn cleanDeploy the contracts to Hardhat Network:
$ yarn deployDeploy the contracts to live network (e.g. goerli):
$ yarn deploy --network goerliTo verify on Etherscan, first get the implementation address via Etherscan:
- Under the contract tab select 'is this a Proxy?' and Etherscan will display the implementation address
Example for Goerli:
yarn hardhat --network goerli verify CONTRACT_IMPLEMENTATION_ADDRESSIf you use VSCode, you can get Solidity syntax highlighting with the hardhat-solidity extension.
GitPod is an open-source developer platform for remote development.
To view the coverage report generated by yarn coverage, just click Go Live from the status bar to turn the server on/off.
MIT © Paul Razvan Berg