Skip to content

lens-protocol/hardhat-foundry-template

Repository files navigation

Lens Network Hardhat + Foundry Boilerplate

This repository contains a boilerplate for developing smart contracts on the Lens Network with tooling for Hardhat and Foundry.

The common use case for this environment is for developing and deploying with Hardhat (which is more stable for ZKSync tooling), and using Foundry for running tests as described here.

Table of Contents

Requirements

  • Node.js: >= v20
  • Yarn: v3.2.4

Node.js

If you use nvm to manage your Node.js versions, you can run:

nvm use

to switch to the correct Node.js version.

See the installation guide for other ways to install Node.js.

Yarn

Enable Corepack, if it isn't already; this will add the Yarn binary to your PATH:

corepack enable

See the installation guide for other ways to install Yarn.

Initial Setup

Install dependencies:

yarn install

Create a .env file copying the .env.example file:

cp .env.example .env

Update the .env file with the correct values.

Usage

Compile

yarn compile

Clean

yarn clean

Lint

yarn lint

Test

Run tests on the Hardhat Network powered by a [ZKsync In-memory Node]((https://docs.zksync.io/build/test-and-debug/in-memory-node).

yarn test

To run tests on a specific network:

yarn test [--network <network-name>]

For example, to run Hardhat tests (*.test.ts) on the lensTestnet network:

yarn test --network lensTestnet

Tip

zkSync In-memory Node currently supports only the L2 node. If contracts also need L1, use another testing environment like Dockerized Node.

Testing With Foundry

A faster alternative for test running is to utilize Foundry to run tests on the Hardhat project.

First install the ZKSync Foundry library:

curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash

Switch to Foundry ZKSync version:

foundryup-zksync

To run Foundry tests (*.t.sol) on the lensTestnet network, compile contract source:

FOUNDRY_PROFILE=zksync forge compile --zksync

Then run tests:

FOUNDRY_PROFILE=zksync forge test --zksync

Deploy

yarn deploy --script <deploy-script.ts> --network <network-name>

For example:

yarn deploy --script deploy-token.ts --network lensTestnet

Networks

  • lensTestnet: Lens Development Network (37111).
  • hardhat: runs on a ZKsync In-Memory Node for testing.

License

Lens Network Hardhat Boilerplate MIT licensed

About

Template project with Hardhat with Foundry

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published