Connecting Two Layer 1 Blockchains With a Plasma Chain
While working on the Peace Relay project, we came up with the idea of developing a plasma chain that could be attached to more than one public chain. For example we can deploy a plasma chain that is connected to both Ethereum and Ethereum Classic.
What Is Plasma?
Plasma is not a specific implementation. Rather, it is a set of guidelines or a protocol that makes it possible to deploy a layer 2 chain that is connected to a layer 1 chain.
Plasma is commonly used as an application specific sidechain. Its main purpose is to provide scalability for that application.
Why Connect Two Layer 1 Chains?
Interoperability between chains is good for the ecosystem. The ability to move value between chains is useful and desired by the users. Among other things, it provides liquidity and interoperability.
Why Use Plasma For Connecting The Chains?
There are several interoperability solutions (“meta chains”) in development. Many of these requires the user to trust the provider of the service. Others try to implement their own trustless protocols.
Plasma’s major benefit is that it provides a very secure solution to move assets between the layer 1 chain and the plasma chain. It deals with and provides solution for the security and accountability issues. It is as trustless as required.
In essence, plasma solves the problem of connecting two layer 1 chains. Using it for cross-chain transactions seems to be a good fit.
In a normal plasma chain, there is a smart contract deployed on Ethereum. This contract is used to move funds in and out of the plasma chain. This contract is the “owner” of the plasma chain.
Example: Moving Funds In and Out
Alice can send 1 ETH to the plasma contract on the main net. This ETH gets locked in the contract, and a corresponding ETHX gets created on the plasma chain. Now this ETHX can be moved in the plasma chain, much faster and cheaper than on the main net.
Alice can send the ETHX to Bob. Bob then can decide to redeem the ETHX. During the withdrawal process the ETHX will be destroyed, and the original ETH will be released to Bob on the main net.
Using Two Chains
The proposed implementation uses the exact same mechanism, but it will connect the same plasma chain to two main chains. Let’s use Ethereum and Ethereum Classic as an example.
An anchor contract will be deployed on both chains. Through ethereum, Alice can move ETH into the plasma chain as ETHX. On the other side, Bob moves his ETC in as ETCX.
In the plasma chain both ETHX and ETCX are native tokens . They can be transferred to any address within the plasma chain. Atomic swaps can be easily performed.
Withdrawing from a Meta Plasma Chain
ETHX can only be withdrawn to Etherum, and ETCX can only be withdrawn to Ethereum Classic.
When One Of The Chains Goes Down
The Plasma Chain should be able to operate while – for example – Ethereum Classic is down. In that case ETCX withdrawals would not be possible, but potentially the ETCX already in Plasma should still be transferable.
We say “potentially” because we have yet to build a complete model for this scenario. It is not out of the question that the plasma chain will have to record its state with all layer 1 networks.
In that case validators will refuse any transactions that touches the asset of the “down” chain.
More Than Two Chains?
If we can implement the idea for two layer 1 chains, then it is possible to implement it for N chains. It is not known at this time whether this is feasible, or even desirable.
At Akomba Labs, we’re working on a proof-of-concept implementation that we hope to present at Devcon4 in Prague. Stay tuned!
(Article on medium: https://medium.com/akomba/plasma-bridge-48122c554e38)