Solidity Template
Uses
- Hardhat: compile and run the smart contracts on a local development network
- TypeChain: generate TypeScript types for smart contracts
- Ethers: Ethereum library and wallet implementation
- Waffle: tooling for writing comprehensive smart contract tests
- Solhint: Solidity linter
- Prettier Plugin Solidity: code formatter
This is a GitHub template, which means you can reuse it as many times as you want. You can do that by clicking the "Use this template" button at the top of the page.
Usage
Pre Requisites
This repo works best with Node.js v16.x.x, this is preconfigured for users of asdf.
Before running any command, make sure to install dependencies:
$ yarn
Compile
Compile the smart contracts with Hardhat:
$ yarn compile
This also generates the Typechain types
Test
Run the Mocha tests:
$ yarn test
To run tests against a Mainnet fork, set your ALCHEMY_KEY
in .env
and run
$ yarn test-integration
Gas Report
To get a gas report based on unit test calls:
$ yarn gasReport
Deploy contract to netowrk (requires Mnemonic and infura API key)
npx hardhat run --network rinkeby ./scripts/deploy.ts
Validate a contract with etherscan (requires API key)
npx hardhat verify --network <network> <DEPLOYED_CONTRACT_ADDRESS> "Constructor argument 1"
Added plugins
- Contract Sizer hardhat-contract-sizer
- Gas reporter hardhat-gas-reporter
- Etherscan hardhat-etherscan