Keine Beschreibung

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

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