plasma-contracts
is the set of smart contracts written in Vyper for the Plasma Group series of projects. It includes an implementation of a Plasma Cash variant, and a registry contract for discovering Plasma chains. This repo is used for compiling those contracts--If you don't need any modifications, you can spin up your own with plasma-chain-operator
or try out other chains with @pigi/plasma-js
.
If you're looking to contribute to plasma-contracts
, you're in the right place. Welcome!
Plasma Group follows a Contributing Guide and Code of Conduct adapted slightly from the Contributor Covenant. All contributors are expected to read through this guide. 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.
The first step is cloning this repo. Via https:
$ git clone https://github.com/plasma-group/plasma-contracts.git
or ssh:
$ git clone [email protected]:plasma-group/plasma-contracts.git
plasma-contracts
is tested with Node.js
and has been tested on the following versions of Node:
- 11.6.0
If you're having trouble getting plasma-contracts
tests running, please make sure you have one of the above Node.js
versions installed.
plasma-contracts
makes use of several npm
packages.
Install all required packages with:
$ npm install
plasma-contracts
is written in Vyper, a pythonic Ethereum smart contract language. You'll need Python 3.6 or above to install Vyper.
We reccomend setting up a virtual environment instead of installing globally:
python3 -m venv venv
To activate:
$ source venv/bin/activate
Install Vyper:
pip3 install vyper
Your venv
must be activated whenever testing or otherwise using Vyper, but it will break the npm install
, so be sure to $ deactivate
if you still need to do that and reactivate afterwards.
plasma-contracts
makes use of a combination of Mocha
(a testing framework) and Chai
(an assertion library) for testing.
Run all tests with:
$ npm test
So that Python and Vyper aren't requirements for our other components, we do include a compiled-contracts
folder which contains JS exports of the bytecode and ABI. Compilation is done automatically before testing.