Plasm is a Substrate Runtime Module Library which allows developers to add Plasma functions to their Substrate chain easily and seamlessly. Since Plasm is an SRML, developers can also make both plasma parent chains and plasma child chains with Substrate.
WARNING: This is a proof-of-concept prototype. This implementation is NOT ready for production use.
Table of Contents
Plasm is Staked Technologies' product that enables to import Plasma functions to your Substrate chain. Since Plasm is SRML, we can also make both Plasma parent chains and child chains. You can see the demo from here.
Today, there are many derived Plasmas, like
- Plasma-MVP: Proposed by Vitalik Buterin.
- Plasma-Cash: Users only need to download the histories of and watch the tokens they want to track.
- Plasma-XT: Plasma-Cash derivative.
- Plasma-Prime: Plasma-Cash derivative.
- Plasma-Chamber: Cryptoeconomics Lab's opensource project inspired by Prime.
- Plasma-Snapps: implemented ZK-S[T|N]ARKs
Plasm provides a Plasma-abstract data structure which is a combination of Plasma solutions. Also, Plasm provides Rust implementations of Plasma solutions.
Substrate developers can import one of the Plasm Libraries and make their own plasma chain depending on their use case. Plasm consists of 3 (or 4) libraries, Plasm-UTXO, Plasm-Parent, and Plasm-Child. Plasm-UTXO has a UTXO like data structure to manage the deposited tokens.
Plasma needs to have all transactions in order to validate and detect a malicious transaction when it is exited to the parent chain.
- Plasm-UTXO: implements the UTXO model which is abstracted and concreted for each Plasma solution.
- Plasm-Parent: provides modules to make a parent chain.
- Plasm-Child: provides modules to make a child chain.
Plasm-UTXO provides the transactions' specification which is suitable for each Plasma solution. Along with that, Plasm-UTXO can deal with UTXO-like data structures cyclopaedically. Merkle Tree is also removable.
Plasm-Parent provides the parent chain’s specification. Child chain has been implemented corresponding to the parent chain's solution. Mainly, Plasm-Parent has the logic of each exit game.
Plasm-Child provides the child chain's specification. Parent chain has been implemented corresponding to the child chain's solutions.
By using these solutions together, users can make transactions between the parent chain and the child chain. The logic of "deposit/exit" has been implemented based on Plasm-UTXO.
How to install
[dependencies.utxo] git = 'https://github.com/stakedtechnologies/Plasm.git' package = 'plasm-utxo' version = '0.1.0'
[dependencies.parent] git = 'https://github.com/stakedtechnologies/Plasm.git' package = 'plasm-utxo' version = '0.1.0'
[dependencies.child] git = 'https://github.com/stakedtechnologies/Plasm.git' package = 'plasm-child' version = '0.1.0'
Please see here.
Plasm is licensed under the Apache License, Version2.0 by Staked Technologies Inc.