FourthState / plasma-mvp-sidechain

Cosmos SDK (Tendermint consensus) side-chain implementation for plasma
Apache License 2.0
112 stars 35 forks source link

Plasma MVP Sidechain

Go Report Build Status codecov Discord license

Implementation of Minimum Viable Plasma compatible with our rootchain contract

Project Status

There is very little development occuring for this project. We will continue to maintain this repository by thoroughly reviewing any open source contributions. We will provide support and guidance for anyone looking to continue development.

What is Plasma?

Plasma has two major components: verification and computation. Verification is handled by the rootchain contract, which resolves any disputes and distributes funds accordingly. Computation is handled separately by a sidechain, which maintains its security through reporting proofs via merkle roots to the rootchain contract.

Plasma MVP utilizes a UTXO model, which allows for secure and compact proofs. Learn more about plasma on learnplasma.org!

We are using Tendermint for our consensus protocol. This sidechain currently supports a single validator, but will be updated in the future to support multiple validators.

Quick Start

Install using a script

This script can be used on a fresh server that has no dependencies installed.

curl https://raw.githubusercontent.com/FourthState/plasma-mvp-sidechain/develop/scripts/plasma_install.sh > install.sh
chmod +x install.sh
./install.sh

Manual Install

Requirements:

Pull the latest version of the develop branch.

make install

Plasma Node:

Run plasmad init to start an instance of a plasma node. Use the --home <dirpath> to specify a location where you want your plasma node to exist.

Navigate to <dirpath>/config/ (default is $HOME/.plasmad/config), set configuration parameters in config.toml and plasma.toml. Run plasmad start to begin running the plasma node.

Plasma Client:

Navigate to $HOME/.plasmacli, set ethereum client configuration parameters in plasma.toml. Use plasmacli to run any of the commands for this light client

Plasma Architecture

See our research repository for architectural explanations of our Plasma implementation.

Documentation

See our documentation

Contributing

See our contributing guidelines. Join our Discord Server.