What is Plasma
A Plasma chain is a Layer 2 scalability solution for Ethereum, which is used to improve the scalability of Ethereum and decrease the transaction burden within Ethereum. It was originally proposed in a paper created by Vitalik Buterin and Joseph Poon in 2017.
How does Plasma work
The operating mechanism of a Plasma chain can be simply paraphrased as a process of off-chain transaction processing and publishing. First, users need to deposit their assets into a Plasma chain through a smart contract. All transactions related to assets will be arranged in a certain order and then packaged into a transaction batch to process by the Plasma chain operator.
After processing, the operator will then publish the state of the transaction batch (generally known as the Merkle Root) to the Ethereum mainnet. Merkle Root could represent all the transactions in a batch and it is represented in the form of a hash value. The graph below simply shows the generation process of a Merkle Root.
A Hash Value is a string value (of a fixed length), which is the calculation result based on the Hash Function. Through Hash Function, any given key or a string of characters can convert into a fixed length string value (Hash Value).
Plasma MVP (Minima Viable Plasma)
The initial version of Plasma is called Plasma MVP. However, the problems brought by Plasma MVP are greater than the solutions.
If user A wants to exit from the Plasma chain, he or she needs to initiate a withdrawal request and wait for a period of time (challenge period, usually 7 days). This is to prevent the existence of fraudulent behaviors.
During the challenge period, other users ("challengers") who question the transaction, need to provide a fraud-proof (evidence of occurred fraudulent behavior) to challenge the withdrawal request. If the challenge is successful, User A's exit request will be canceled. Conversely, if no one challenges in the period, user A can then successfully exit the Plasma chain.
Although this is to maintain the security of the off-chain transactions, it relatively increases the cost of time. In order to identify fraud behaviors in time during the challenge period, a user must periodically monitor transactions on the Plasma chain.
Besides, in the case of a malicious operator existing, a user needs to verify all transactions during the challenge period to exit the Plasma chain. The transaction verification cost is relatively high.
To solve the above problems of Plasma MVP, the Ethereum Research Community proposed a new version of Plasma, Plasma Cash.
The biggest difference between Plasma Cash and Plasma MVP is that Plasma Cash can reduce the cost of transaction verification by changing the data structure, which partially solves the problem mentioned before. In Plasma Cash, every deposited asset is represented as a non-fungible token (NFT).
Therefore, in the case of operator misbehavior, users can only monitor transactions related to their own assets (NOT all transactions) and verify transactions by providing current assets ownership proofs (generally including the 2 most recent transactions with corresponding proofs).
However, Plasma Cash still requires users to periodic monitor transactions, and it does not solve the first problem. Meanwhile, a new problem was brought by the change in the data structure, which is users have to store all data and corresponding proofs related to their assets. This generates relatively high storage costs.
Rollup & zkRollup
Nowadays, most of the Plasma chains have been replaced by optimistic rollup and zkRollup. The main reason caused this situation is the data unavailability of Plasma chains. The data unavailability can interpret as the original data of each transaction cannot be obtained by the Ethereum mainnet. As we mentioned in this article, Plasma only uploads the state of the transaction batch, which means the transactions are only processed off-chain and the data is unavailable. This problem directly leads to the "Demise" of Plasma.
You might also be interested in the following content:
What else do you want to learn?