Thanks to visit codestin.com
Credit goes to github.com

Skip to content

wighawag/template-ethereum-contracts

 
 

Repository files navigation

Boilerplate for ethereum solidity smart contract development

INSTALL

pnpm i

TEST

There are 3 flavors of tests: hardhat, dapptools and forge

hardhat

  • One using hardhat that can leverage hardhat-deploy to reuse deployment procedures and named accounts:
pnnpm test
dapp test

The latter requires additional step to set up your machine:

Install dapptools (Following instruction here):

# user must be in sudoers
curl -L https://nixos.org/nix/install | sh

# Run this or login again to use Nix
. "$HOME/.nix-profile/etc/profile.d/nix.sh"

curl https://dapp.tools/install | sh

Then install solc with the correct version:

nix-env -f https://github.com/dapphub/dapptools/archive/master.tar.gz -iA solc-static-versions.solc_0_8_9

forge

forge test

This require the installation of forge (see foundry)

SCRIPTS

Here is the list of npm scripts you can execute:

Some of them relies on ./_scripts.js to allow parameterizing it via command line argument (have a look inside if you need modifications)

pnpm prepare

As a standard lifecycle npm script, it is executed automatically upon install. It generate config file and typechain to get you started with type safe contract interactions

pnpm format and pnpm format:fix

These will format check your code. the :fix version will modifiy the files to match the requirement specified in .prettierrc.

pnpm compile

These will compile your contracts

pnpm void:deploy

This will deploy your contracts on the in-memory hardhat network and exit, leaving no trace. quick way to ensure deployments work as intended without consequences

pnpm test [mocha args...]

These will execute your tests using mocha. you can pass extra arguments to mocha

pnpm coverage

These will produce a coverage report in the coverage/ folder

pnpm gas

These will produce a gas report for function used in the tests

pnpm dev

These will run a local hardhat network on localhost:8545 and deploy your contracts on it. Plus it will watch for any changes and redeploy them.

pnpm local:dev

This assumes a local node it running on localhost:8545. It will deploy your contracts on it. Plus it will watch for any changes and redeploy them.

pnpm execute <network> <file.ts> [args...]

This will execute the script <file.ts> against the specified network

pnpm deploy <network> [args...]

This will deploy the contract on the specified network.

Behind the scene it uses hardhat deploy command so you can append any argument for it

pnpm export <network> <file.json>

This will export the abi+address of deployed contract to <file.json>

pnpm fork:execute <network> [--blockNumber <blockNumber>] [--deploy] <file.ts> [args...]

This will execute the script <file.ts> against a temporary fork of the specified network

if --deploy is used, deploy scripts will be executed

pnpm fork:deploy <network> [--blockNumber <blockNumber>] [args...]

This will deploy the contract against a temporary fork of the specified network.

Behind the scene it uses hardhat deploy command so you can append any argument for it

pnpm fork:test <network> [--blockNumber <blockNumber>] [mocha args...]

This will test the contract against a temporary fork of the specified network.

pnpm fork:dev <network> [--blockNumber <blockNumber>] [args...]

This will deploy the contract against a fork of the specified network and it will keep running as a node.

Behind the scene it uses hardhat node command so you can append any argument for it