Typescript Solidity Dev Starter Kit
Updated to use Hardhat!
This is a starter kit for developing, testing, and deploying smart contracts with a full Typescript environment. This stack uses Hardhat as the platform layer to orchestrate all the tasks. Ethers is used for all Ethereum interactions and testing.
Using this Project
Clone this repository, then install the dependencies with npm install
. Build everything with npm run build
. https://hardhat.org has excellent docs, and can be used as reference for extending this project.
Available Functionality
Build Contracts and Generate Typechain Typeings
npm run compile
Run Contract Tests & Get Callstacks
In one terminal run npx hardhat node
Then in another run npm run test
Notes:
- The gas usage table may be incomplete (the gas report currently needs to run with the
--network localhost
flag; see below).
Run Contract Tests and Generate Gas Usage Report
In one terminal run npx hardhat node
Then in another run npm run test -- --network localhost
Notes:
- When running with this
localhost
option, you get a gas report but may not get good callstacks - See here for how to configure the gas usage report.
Run Coverage Report for Tests
npm run coverage
Notes:
- running a coverage report currently deletes artifacts, so after each coverage run you will then need to run
npx hardhat clean
followed bynpm run build
before re-running tests - the branch coverage is 75%
Deploy to Ethereum
Create/modify network config in hardhat.config.ts
and add API key and private key, then run:
npx hardhat run --network rinkeby scripts/deploy.ts
Verify on Etherscan
Using the hardhat-etherscan plugin, add Etherscan API key to hardhat.config.ts
, then run:
npx hardhat verify --network rinkeby <DEPLOYED ADDRESS>
PRs and feedback welcome!