This page assumes familiarity with the various flavors of Plasma currently being researched.
Plasma started as a paper written by Vitalik Buterin and Joseph Poon in late 2017. Since then, numerous other Plasma models have sprung up, including:
- Minimum Viable Plasma
- More Viable Plasma
- Plasma Cash
- Plasma Debit
- Plasma Cashflow
and many others. We chose Minimum Viable Plasma for this implementation; the reasons why are below. Note that these reasons are purely pragmatic given the goals of this project; they are not commentary on the general viability of any particular Plasma model.
Minimum Viable Plasma support coin divisibility up to the minimum unit supported by the root chain - in this case, 1 Wei or 10^19 Ether. Since one of the stated goals of this project is to support low-fee micropayments of any amount, models such as Plasma Cash that do not allow coins to be divided are antithetical to that goal.
The obvious solution to the coin divisibility problem is to simply make the minimum coin denomination incredibly small. This introduces two additional related problems:
- Sending larger amounts requires either many smaller sends or a ‘batch send’ that effectively compresses the transfer of each coin into one message.
- A user that receives many such sends will end up with a fragmented set of coins. These coins must be defragmented before being usable in the ‘batch send’ described above.
Various solutions to the above problems have been proposed. Most revolve around adding an atomic swap model to Plasma in which a user can exchange fragmented coins for defragmented coins. This works well, but runs counter to our goal of simplicity. We’d like users should be able to maintain their UTXO set without requiring participation from any parties other than the root node or their validator.
Note that Minimum Viable Plasma is not immune from requiring client maintenance. Users must periodically collect their UTXOs into larger ones in order to send or exit large amounts. However, this can be done without participation from anyone except the root node.
Well-Known, Understandable Cryptography
Some Plasma proposal involve the use of novel crypto such as zkSNARKs to provide security. While we applaud this efforts, and are watching them closely, for the time being we prefer to keep the underlying cryptographic primitives that secure the Plasma chain as simple as possible in order to make the implementation as interoperable and accessible as possible.
Limited to Payments Use Cases
This implementation is focused on peer-to-peer payment use cases. As such, we have no plans to support general computation. This allows us to significantly simplify our architecture, and focus on delivering a crisp, payment-focused developer experience.
Users Can Choose Their Trust Model
For users to be completely secure on a Minimum Viable Plasma chain, they must keep track of the entire history of the sidechain in order to properly challenge exits and watch for root node malfeasance. Chain state will likely grow larger than some devices can support, particularly web browsers and mobile clients. This is an acceptable tradeoff in our view, since we expect users to either delegate their security to a validator they trust or run their own validator.