Midcontract protocol
Setup
- Install Foundry by following the instructions from their repository.
- Copy the
.env.example
file to .env
and fill in the variables. - Install the dependencies by running:
yarn install
. In case there is an error with the commands, run foundryup
and try them again.
Build
The default way to build the code is suboptimal but fast, you can run it via:
yarn build
In order to build a more optimized code (via IR), run:
yarn build:optimized
Running tests
Unit tests should be isolated from any externalities, while Integration usually run in a fork of the blockchain. In this boilerplate you will find example of both.
In order to run both unit and integration tests, run:
yarn test
In order to just run unit tests, run:
yarn test:unit
In order to run unit tests and run way more fuzzing than usual (5x), run:
yarn test:unit:deep
In order to just run integration tests, run:
yarn test:integration
In order to check your current code coverage, run:
yarn coverage
Deploy & verify
Setup
Configure the .env
variables.
Sepolia
yarn deploy:sepolia
Blast
yarn deploy:blast
The deployments are stored in ./broadcast
See the Foundry Book for available options.
Export And Publish
Export TypeScript interfaces from Solidity contracts and interfaces providing compatibility with TypeChain. Publish the exported packages to NPM.
To enable this feature, make sure you've set the NPM_TOKEN
on your org's secrets. Then set the job's conditional to true
:
jobs:
export:
name: Generate Interfaces And Contracts
if: true
...
Also, remember to update the package_name
param to your package name:
- name: Export Solidity - ${{ matrix.export_type }}
uses: defi-wonderland/evm-exporter-action@1dbf5371c260add4a354e7a8d3467e5d3b9580b8
with:
package_name: "my-cool-project"
...
- name: Publish to NPM - ${{ matrix.export_type }}
run: cd export/my-cool-project-${{ matrix.export_type }} && npm publish --access public
...
You can take a look at our solidity-exporter-action repository for more information and usage examples.
Licensing
The primary license for the boilerplate is MIT, see LICENSE