# Solidity Template My favorite setup for writing Solidity smart contracts. - [Hardhat](https://github.com/nomiclabs/hardhat): compile and run the smart contracts on a local development network - [TypeChain](https://github.com/ethereum-ts/TypeChain): generate TypeScript types for smart contracts - [Ethers](https://github.com/ethers-io/ethers.js/): renowned Ethereum library and wallet implementation - [Solhint](https://github.com/protofire/solhint): linter - [Solcover](https://github.com/sc-forks/solidity-coverage): code coverage - [Prettier Plugin Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity): code formatter This repo is a GitHub template, so to start using it, click the "Use this template" button at the top of the page. ## Usage ### Pre Requisites Before running any command, you need to create a `.env` file and set a BIP-39 compatible mnemonic as an environment variable. Follow the example in `.env.example`. If you don't already have a mnemonic, use this [website](https://iancoleman.io/bip39/) to generate one. Then, proceed with installing dependencies: ```sh $ yarn install ``` ### Compile Compile the smart contracts with Hardhat: ```sh $ yarn compile ``` ### TypeChain Compile the smart contracts and generate TypeChain artifacts: ```sh $ yarn typechain ``` ### Lint Solidity Lint the Solidity code: ```sh $ yarn lint:sol ``` ### Lint TypeScript Lint the TypeScript code: ```sh $ yarn lint:ts ``` ### Test Run the Mocha tests: ```sh $ yarn test ``` ### Coverage Generate the code coverage report: ```sh $ yarn coverage ``` ### Report Gas See the gas usage per unit test and average gas per method call: ```sh $ REPORT_GAS=true yarn test ``` ### Clean Delete the smart contract artifacts, the coverage reports and the Hardhat cache: ```sh $ yarn clean ``` ### Deploy Deploy the contracts to Hardhat Network: ```sh $ yarn deploy --greeting "Bonjour, le monde!" ``` ## Syntax Highlighting If you use VSCode, you can get Solidity syntax highlighting via the [vscode-solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) extension. ## License [Unlicense](./LICENSE.md)