Introducing solidity-template, a Solidity template for Ethereum good contracts. It optimally combines two extraordinarily highly effective frameworks:
Most contract repositories on the market within the wild select both one or the opposite. Each provide highly effective instruments for contract improvement, and though there’s some overlap of their performance, there’s a multitude of causes that you have to be using each:
-
Full take a look at protection utilizing Forge to cowl the uncooked contract logic and fundamental situations, and Hardhat the advanced consumer interactions.
-
Most suite of instruments for contract debugging, deployment, gasoline measurements, and many others.
-
Reference for on-chain builders writing contracts that decision these contracts in your Unit Take a look at recordsdata to see the anticipated utilization in Solidity.
-
Reference for off-chain builders writing purchasers that decision these contracts in your Integration Take a look at recordsdata to see the anticipated utilization in JavaScript (TypeScript) and Ethers.js.
The latter case has already confirmed to be extraordinarily helpful for a brand new challenge Git Consensus, the place simply pushing integration take a look at code gave examples for the frontend devs concurrently to understand how they should put together enter parameters for the contract capabilities. This may solely be extra related because the neighborhood shifts to patterns that encourage loaded enter parameters for gasoline financial savings.
Of the repositories that do mix attempt to mix each Foundry and Hardhat, none are optimized collectively in a method that makes them handy to develop in. That is as a result of cut up between how Foundry handles dependencies (git submodules positioned in /lib
) and Hardhat handles dependencies (managed with NPM). Nothing felt up-to-date with contract improvement finest practices in 2022.
This hole in a fully-featured, trendy Solidity template that makes use of each frameworks impressed me to publish solidity-template – not solely is it optimized for utilizing each, but it surely additionally presents lots of the boilerplate a challenge will have the ability to make the most of to streamline improvement: GitHub Actions, interactive CLI, linting, doc technology, deployment handle monitoring, contributor guides, and many others.
This template consists of an easy-to-follow instance Counter.sol, with its interface ICounter.sol, Unit Take a look at file Counter.t.sol, and Integration Take a look at file counter.take a look at.ts.
If you happen to prefer it, positively give it a ⭐ so you possibly can keep in mind to make use of it in your subsequent challenge!