Sen descrición

Paul Razvan Berg 20e0db3dff docs: add license %!s(int64=3) %!d(string=hai) anos
.github f4cd769e48 chore: use .yaml extension for FUNDING file %!s(int64=4) %!d(string=hai) anos
.husky 624f0092b3 chore: fix commitlint git hook %!s(int64=4) %!d(string=hai) anos
.yarn 62fbfc271b build: upgrade to yarn v3.2.0 %!s(int64=3) %!d(string=hai) anos
contracts 0fe5d39be7 chore: track all contract types in version control %!s(int64=3) %!d(string=hai) anos
src f733804bb5 chore: update dependencies %!s(int64=3) %!d(string=hai) anos
tasks b173741333 fix: deploy task %!s(int64=3) %!d(string=hai) anos
test e72b0d9e7d style: configure "prettier-plugin-sort-imports" %!s(int64=3) %!d(string=hai) anos
.commitlintrc.yaml 624f0092b3 chore: fix commitlint git hook %!s(int64=4) %!d(string=hai) anos
.czrc 432ed42c39 chore: add .czrc config file %!s(int64=4) %!d(string=hai) anos
.editorconfig e35b229b5a feat: initial commit %!s(int64=5) %!d(string=hai) anos
.env.example 305e37c7c0 chore: fix ARBISCAN name in env var %!s(int64=3) %!d(string=hai) anos
.eslintignore afe1da2d87 refactor: move typechain bindings from "typechain" to "types" %!s(int64=3) %!d(string=hai) anos
.eslintrc.yaml 2de6b59757 chore: delete stale ganache id in chainsIds %!s(int64=4) %!d(string=hai) anos
.gitignore 0fe5d39be7 chore: track all contract types in version control %!s(int64=3) %!d(string=hai) anos
.lintstagedrc 585f39c172 chore: lint yaml and yml in lint-staged config %!s(int64=3) %!d(string=hai) anos
.prettierignore afe1da2d87 refactor: move typechain bindings from "typechain" to "types" %!s(int64=3) %!d(string=hai) anos
.prettierrc.yaml e72b0d9e7d style: configure "prettier-plugin-sort-imports" %!s(int64=3) %!d(string=hai) anos
.solcover.js afe1da2d87 refactor: move typechain bindings from "typechain" to "types" %!s(int64=3) %!d(string=hai) anos
.solhint.json 8156684d15 build: upgrade deps %!s(int64=4) %!d(string=hai) anos
.solhintignore e1a2242816 chore: add prefix "**" to paths in .solhintignore %!s(int64=3) %!d(string=hai) anos
.yarnrc.yml 62fbfc271b build: upgrade to yarn v3.2.0 %!s(int64=3) %!d(string=hai) anos
LICENSE.md 20e0db3dff docs: add license %!s(int64=3) %!d(string=hai) anos
README.md 20e0db3dff docs: add license %!s(int64=3) %!d(string=hai) anos
hardhat.config.ts 44a7bc8f13 fix: etherscan api key types %!s(int64=3) %!d(string=hai) anos
package.json 0724c4fd51 refactor: generates fresh types after clean %!s(int64=3) %!d(string=hai) anos
tsconfig.json b4443d51b2 chore: add "src" to "includes" in "tsconfig.json" %!s(int64=3) %!d(string=hai) anos
yarn.lock f733804bb5 chore: update dependencies %!s(int64=3) %!d(string=hai) anos

README.md

Solidity Template

My favorite setup for writing Solidity smart contracts.

  • Hardhat: compile and run the smart contracts on a local development network
  • TypeChain: generate TypeScript types for smart contracts
  • Ethers: renowned Ethereum library and wallet implementation
  • Waffle: tooling for writing comprehensive smart contract tests
  • Solhint: linter
  • Solcover: code coverage
  • 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 to generate one.

Then, proceed with installing dependencies:

$ yarn install

Compile

Compile the smart contracts with Hardhat:

$ yarn compile

TypeChain

Compile the smart contracts and generate TypeChain artifacts:

$ yarn typechain

Lint Solidity

Lint the Solidity code:

$ yarn lint:sol

Lint TypeScript

Lint the TypeScript code:

$ yarn lint:ts

Test

Run the Mocha tests:

$ yarn test

Coverage

Generate the code coverage report:

$ yarn coverage

Report Gas

See the gas usage per unit test and average gas per method call:

$ REPORT_GAS=true yarn test

Clean

Delete the smart contract artifacts, the coverage reports and the Hardhat cache:

$ yarn clean

Deploy

Deploy the contracts to Hardhat Network:

$ yarn deploy --greeting "Bonjour, le monde!"

Syntax Highlighting

If you use VSCode, you can get Solidity syntax highlighting via the vscode-solidity extension.

Caveats

Ethers and Waffle

If you can't get the Waffle matchers to work, try to make your ethers package version match the version used by the @ethereum-waffle/chai package. Seem #111 for more details.

License

Unlicense