Plasma MVP Sidechain
Branch |
Tests |
Coverage |
develop |
|
|
master |
|
|
This is the latest Minimum Viable Plasma version.
We have decided to modify our implementation by removing confirmation signatures as described in the More Viable Plasma construction.
Note: This sidechain is being constructed to be compatible with our rootchain contract
Overview
As a layer 2 scaling solution, 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 off chain by a sidechain. This sidechain leverages the Cosmos SDK to create a scalable and flexible blockchain, that can maintain it's security through reporting merkle roots to the root chain. We will be using Tendermint for consensus on this blockchain.
We are using a UTXO model for this blockchain. This allows us to do secure and compact proofs when interacting with the rootchain contract.
Starting a sidechain
In order to run a sidechain with tendermint consensus and a client to form transaction, a plasma node and light client will need to be initialized.
Note: The following assumes you have golang properly setup and all dependecies have already been installed. See Contribution Guidelines for more information.
Plasma Node:
- Navigate to
client/plasmad/
directory
- Run
go install
via command line
The plasma node (plasmad) is now installed and can be called from any directory with plasmad
Run plasmad init
via command line to start an instance of a plasma node with a connection to a tendermint validator.
Run plasmad start
via command line to begin running the plasma node. You should see empty blocks being proposed and committed.
Plasma Light Client:
- Navigate to
client/plasmacli/
directory
- Run
go install
via command line
Use plasmacli
to run any of the commands for this light client
The light client uses the Ethereum keystore to create and store passphrase encrypted keys in $HOME/.plasmacli/keys/
Plasma Architecture
See our research repository for architectural explanations of our Plasma implementation.
Documentation
See our documentation
Contributing
See our contributing guidelines