Contributing

We welcome pull requests, and would love to support our early contributors with some awesome perks!

We'd also love for you to join our Discord server and hang out with us, we're building a community around infosec, software engineers, and blockchain enthusiasts!

Building

A Makefile is provided to simplify development workflow.

Installing Dependencies

To install all dependencies, simply run the following:

make install

This will cd into the lib, relay, and eth folders, running an npm install in each.

You can also manually run npm install in each of the folders.

Building the frontend

You can build the lib and relay separately as Make targets.

However, you also can build the whole frontend using:

make frontend

This works great inside of CI/CD tools as well. For example, make install frontend will work in most runners as the build command.

Building all artifacts

To build the contracts in eth, the core in lib, and the relay, simply run:

make all

Development

Running the dev server

The frontend and API is powered by Next.js. To start the development server, run the following command:

make dev

This will build the lib and relay folders and start the local Next.js development server at localhost:3000. Hot reloading works for both lib and relay using tsc -w in lib, and next dev in relay. They are executed in parallel, piping output to the same shell, thanks to make -j.

Migrating contracts

Truffle is managing the contract migrations and deployments. Make sure you have a development chain setup, and modify the truffle-config.js accordingly.

Once your Truffle environment is established, simply run:

make migrate

You can also run the make deploy alias.

This will deploy the Solidity contracts to your chain of choice. Make sure to update your contract addresses if/when necessary!