Foundry && HardHat starter template.
I like them both. With this set-up we get:
- Unit tests written in solidity
- Foundry's cast
- Integration testing with Hardhat
- Hardhat test coverage
- Hardhat deploy & verify
- Typescript
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
Foundry consists of:
- Forge: Ethereum testing framework (like Truffle, Hardhat and Dapptools).
- Cast: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
Need help getting started with Foundry? Read the 📖 Foundry Book (WIP)!
Hardhat is an Ethereum development environment for professionals. It facilitates performing frequent tasks, such as running tests, automatically checking code for mistakes or interacting with a smart contract.
On Hardhat's website you will find:
integration
|- mover.test.ts - "Hardhat integration tests"
lib
|- forge-std - "Test dependency"
scripts
`- deploy.ts - "hardhat deploy script"
src
|- test
| |- mocks
| | `- MockNFT.sol - "Mock NFT for testing"
| `- Mover.t.sol - "Unit testi in solidity"
`- Mover.sol - "Solidity contract"
.env.example - "Expamle dot env"
.gitignore - "Ignore workfiles"
.gitmodules - "Dependecy modules"
.solcover.js - "Configure coverage"
.solhint.json - "Configure solidity lint"
foundry.toml - "Configure foundry"
hardhat.config.ts - "Configure hardhat"
package.json - "Node dependencies"
README.md - "This file"
remappings.txt - "Forge dependcy mappings"
slither.config.json - "Configure slither"
First run the command below to get foundryup
, the Foundry toolchain installer:
curl -L https://foundry.paradigm.xyz | bash
If you do not want to use the redirect, feel free to manually download the foundryup installation script from here.
Then, in a new terminal session or after reloading your PATH
, run it to get
the latest forge
and cast
binaries:
foundryup
Advanced ways to use foundryup
, and other documentation, can be found in the
foundryup package. Happy forging!
npm install
or yarn
Scripts available via `npm run-script`:
compile
npx hardhat compile
coverage
npx hardhat coverage --solcoverjs .solcover.js
deploy
npx hardhat run scripts/deploy.ts
integration
npx hardhat test
verify
npx hardhat verify
Prefer npm
packages when available and update the remappings.
install:
yarn add -D @openzeppelin/contracts
remapping:
@openzeppelin/contracts=node_modules/@openzeppelin/contracts
import:
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";