Plasma is a scaling solution outlined by Joseph Poon and Vitalik Buterin. The whitepaper was published on August 11, 2017. Plasma utilizes a structure of child chains (similar in some ways to side chains) that are “rooted” to a main chain — this article will explain the structure in more detail. In OmiseGO’s case, the main chain is Ethereum. Since the whitepaper was released, numerous implementations and improvements have been thought of including Plasma Cash, XT, and Debit. This article will focus on MVP, the first iteration, because that is what OmiseGO is building to begin with.

TL;DR Plasma is a scaling mechanism for Ethereum using child chains. These chains are smart contracts on Ethereum (the main chain) with a different set of validators (miners) than the main Ethereum network. Users must deposit their tokens or Ether into the smart contract to transact on the child chain. The structure of Plasma ensures that users fund’s are always redeemable on the main chain.

The Scaling Problem

Ethereum currently handles ~15 transactions per second (TPS). This is not adequate for decentralized applications with many users — one of the more infamous examples of this was when the popular DApp Cryptokitties clogged the entire Ethereum network with only a few thousand concurrent users. When the Ethereum network becomes clogged, transactions fees rise and transactions take longer to be processed.

A payments network like the one OmiseGO is building will not be functional with only 15 TPS. Plasma scales Ethereum by moving transactions “off-chain” to a child chain (also known as a Plasma chain). This means that miners on Ethereum do not need to process every transaction on the child chain(s). Instead, a different set of miners/validators will process transactions on the child chain and post state updates onto the Ethereum blockchain.

Each child chain is a smart contract on the Ethereum network, as seen below. These contracts have their own set of validators and consensus mechanism such as Proof of Stake or Proof of Authority. OmiseGO will use Proof of Authority to begin with and transition to Proof of Stake. Because the amount of validators is reduced on plasma chains, the throughput of transactions is increased. Kelvin Fichter, an OmiseGO Plasma Researcher, has stated that their initial live implementation of OMG Plasma will be able to process 100 transactions per second. This working proof of concept will set the stage for the team to gradually increase the scalability of the system to hundreds of thousands of transactions per second.

Diagram from Plasma Whitepaper

UTXO vs Account Model

There are two ways to account for funds on a blockchain, UTXO and Account. UTXO stands for Unspent Transaction Output and is used by Bitcoin. For example, if user A has 1 Bitcoin and needs to pay 0.5 Bitcoin to user B, user A will create a transaction with the input of 1 Bitcoin and two outputs: one output will be 0.5 Bitcoin to user B, and the second will be an output of 0.5 Bitcoin to themselves (user A). Each input is the output of a previous transaction and all inputs need to be spent in the transaction.

Ethereum on the other hand uses an account model. This model is more intuitive, as each address has an account with a balance. Transactions are added and subtracted to the account balance. However, Plasma MVP uses a UTXO model for security purposes. Since UTXOs have an order (i.e. there is a way to tell if a UTXO came before or after another UTXO) this makes exits safer. Older UTXOs are allowed to exit first, meaning that a fraudulent UTXO created after older UTXOs will not be able to steal funds. Of course, if an older UTXO has been spent, the user will not be able to exit with that UTXO.

Plasma Cash, XT, and Debit use a slightly different model. Each token deposited into a child chain has a unique ID. This model works well for non-fungible tokens such as ERC-721s. Plasma Cash reduces the amount of storage required by users to prove they own their token. However, there are significant new challenges created by this model including the merging and splitting of tokens. As always, there are trade-offs and no design is perfect. OmiseGO is researching and actively developing Plasma Cash but has decided to use Plasma MVP for their first launch.

Security

Plasma is designed to be as secure as possible. To transact on a child chain, users must deposit their Ether or tokens into the Plasma contract, which lives at a specified Ethereum address. From there, they can send and receive transactions from anyone else inside that child chain. When they want to exit the child chain, they will submit a withdrawal and wait some period of time to get their funds back onto the main chain.

This period of time is designated for challenging a potentially fraudulent exit. For example, if someone is trying to exit with funds they have already spent, this period of time will allow for an honest user to submit a fraud proof showing that the exit is invalid. The challenge is sent to the main Ethereum chain which acts as the final decision maker; Joseph Poon, co-author of the Plasma whitepaper, refers to Ethereum as the Supreme Court in this situation.

In the case of a malicious validator or set of validators, users can withdraw their funds (Ether, or other tokens) back onto the main Ethereum blockchain. Although this is an inconvenience, it is no doubt a better alternative to losing the money. This feature makes Plasma safe for users even if the chain operator is malicious.