DEPRECATED - Please refer to https://github.com/Network-Goods/hypercerts for the latest
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 node
Compile the smart contracts with Hardhat:
$ yarn compile
Compile the smart contracts and generate TypeChain bindings:
$ yarn typechain
Run the tests with Hardhat:
$ yarn test
Lint the Solidity code:
$ yarn lint:sol
Lint the TypeScript code:
$ yarn lint:ts
Generate the code coverage report:
$ yarn coverage
See the gas usage per unit test and average gas per method call:
$ REPORT_GAS=true yarn test
Delete the smart contract artifacts, the coverage reports and the Hardhat cache:
$ yarn clean
Deploy the contracts to Hardhat Network:
$ yarn deploy
Deploy the contracts to live network (e.g. goerli):
$ yarn deploy --network goerli
To 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_ADDRESS
If 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