Fără Descriere

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

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