Bez popisu

Paul Razvan Berg f96a415d8a chore: use "yml" extension instead of "yaml" před 3 roky
.husky 624f0092b3 chore: fix commitlint git hook před 4 roky
.yarn 62fbfc271b build: upgrade to yarn v3.2.0 před 3 roky
contracts 0fe5d39be7 chore: track all contract types in version control před 3 roky
src f733804bb5 chore: update dependencies před 3 roky
tasks b173741333 fix: deploy task před 3 roky
test e72b0d9e7d style: configure "prettier-plugin-sort-imports" před 3 roky
.commitlintrc.yml f96a415d8a chore: use "yml" extension instead of "yaml" před 3 roky
.czrc 432ed42c39 chore: add .czrc config file před 4 roky
.editorconfig e35b229b5a feat: initial commit před 5 roky
.env.example 305e37c7c0 chore: fix ARBISCAN name in env var před 3 roky
.eslintignore afe1da2d87 refactor: move typechain bindings from "typechain" to "types" před 3 roky
.eslintrc.yml f96a415d8a chore: use "yml" extension instead of "yaml" před 3 roky
.gitignore 0fe5d39be7 chore: track all contract types in version control před 3 roky
.lintstagedrc f96a415d8a chore: use "yml" extension instead of "yaml" před 3 roky
.prettierignore afe1da2d87 refactor: move typechain bindings from "typechain" to "types" před 3 roky
.prettierrc.yml f96a415d8a chore: use "yml" extension instead of "yaml" před 3 roky
.solcover.js afe1da2d87 refactor: move typechain bindings from "typechain" to "types" před 3 roky
.solhint.json 8156684d15 build: upgrade deps před 4 roky
.solhintignore e1a2242816 chore: add prefix "**" to paths in .solhintignore před 3 roky
.yarnrc.yml 62fbfc271b build: upgrade to yarn v3.2.0 před 3 roky
LICENSE.md 20e0db3dff docs: add license před 3 roky
README.md 20e0db3dff docs: add license před 3 roky
hardhat.config.ts 44a7bc8f13 fix: etherscan api key types před 3 roky
package.json f96a415d8a chore: use "yml" extension instead of "yaml" před 3 roky
tsconfig.json b4443d51b2 chore: add "src" to "includes" in "tsconfig.json" před 3 roky
yarn.lock f733804bb5 chore: update dependencies před 3 roky

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