Plasma Group is an independent non-profit organization that's developing standards for plasma and beyond. PG is dedicated to the creation of an open plasma implementation that supports well designed standard data formats and interfaces for the greater Ethereum community.
@pigi
is the Plasma Group monorepo.
All of the core plasma group projects are hosted inside of the packages folder of this repository.
Package | Version | Description |
---|---|---|
@pigi/contracts |
Core Vyper contracts used for the PG plasma chain. | |
@pigi/core |
Core PG plasma chain client modules. | |
@pigi/plasma.js |
JS client library for interacting with PG plasma chains. | |
@pigi/utils |
Utilities used in many PG projects. | |
@pigi/verifier |
State transition execution library for PG plasma chains. |
Welcome! If you're looking to contribute to the future of plasma, you're in the right place.
Plasma Group follows a Contributing Guide and Code of Conduct adapted slightly from the Contributor Covenant. All contributors must read through this guide before contributing. We're here to cultivate a welcoming and inclusive contributing environment, and every new contributor needs to do their part to uphold our community standards.
Before you start working on a Plasma Group project, you'll need to clone our GitHub repository:
git clone git@github.com:plasma-group/pigi.git
Now, enter the repository.
cd pigi
Most of the projects in @pigi
are Node.js
projects.
You'll need to install Node.js
(and its corresponding package manager, npm
) for your system before continuing.
We've provided a detailed explanation of now to install Node.js
on Windows, Mac, and Linux.
@pigi
projects make use of several npm
packages.
Install all required packages with:
npm install
@pigi
provides convenient tooling for building a package or set of packages.
Build all packages:
npm run build
Build a specific package or set of packages:
PKGS=your,packages,here npm run build
Clean code is the best code, so we've provided tools to automatically lint your projects.
Lint all packages:
npm run lint
Lint a specific package or set of packages:
PKGS=your,packages,here npm run lint
We've also provided tools to make it possible to automatically fix any linting issues. It's much easier than trying to fix issues manually.
Fix all packages:
npm run fix
Fix a specific package or set of packages:
PKGS=your,packages,here npm run fix
@pigi
projects usually makes use of a combination of Mocha
(a testing framework) and Chai
(an assertion library) for testing.
Run all tests:
npm test
Run tests for a specific package or set of packages:
PKGS=your,packages,here npm test
Contributors: remember to run tests before submitting a pull request! Code with passing tests makes life easier for everyone and means your contribution can get pulled into this project faster.
We'd like to give a big shoutout to 0x and Nest.js for inspiration about the best ways to design this monorepo. Please check out their respective repos (0x and Nest.js) if you're looking for other cool projects to work on 😊!