/template-ethereum-contracts

Template to develop ethereum smart contracts

Primary LanguageTypeScriptMIT LicenseMIT

A template for EVM-based smart contract development

How to use it?

Compile your contracts

pnpm compile

Test your contracts

There are 2 flavors of tests

  1. Using hardhat
pnpm test
  1. Using foundry
forge test

This assumes you have forge installed and that you added forge-std in via the following command

git clone --recursive https://github.com/foundry-rs/forge-std.git lib/forge-std

(You can also add it as a submodule if you prefer, just remove the lib/forge-std line in .gitignore first)

watch for changes and rebuild automatically

pnpm compile:watch

deploy your contract

  • on localhost

    This assumes you have a local node running: pnpm local_node

    pnpm run deploy localhost
  • on a network of your choice

    Just make sure you have your .env.local setup, see .env

    pnpm run deploy <network>

execute scripts

pnpm execute <network name> scripts/setMessage.ts

or if you want to execute in a forked environment :

pnpm fork:execute <network name> scripts/setMessage.ts "Hello world"

zellij

zellij is a useful multiplexer (think tmux) for which we have included a layout file to get started

Once installed simply run the following to get a local in-memory Ethereum node running along with the tests

pnpm start

if you want to try Zellij without installing it, try this :

bash <(curl -L zellij.dev/launch) --layout zellij.kdl

In the shell in the upper pane, you execute the script as mentioned above

pnpm execute localhost scripts/setMessage.ts "Hello everyone"

Initial Setup

You need to have these installed

Then you need to install the local dependencies with the following command:

pnpm i

We also recommend installing Zellij to have your dev env setup in one go via pnpm start