# How Plasma implementation changed by OVM? [Presentation](https://docs.google.com/presentation/d/1m2tW-JB8j6uHmn0qlYL_WeqpCjahTVPGB-y1Gkp4RlA/edit?usp=sharing) # Outline * About me * History of Plasma implementation * Difficulity of Plasma implementation * Universal Language * How changed Plasma implementation * Conclusion ## Introduction > Hi, I’m going to talking about recent plasma implementation. Title is how Plasma implementation changed. Our Plasma implementation was changed amazingly, it became very clear by OVM proposed by Plasma Group. ## About me * Plasma Chamber * OVM with Rust language * My current interest * How do we build L2 efficientlly? * Both construction and application? ## History of Plasma implementation * Plasma Cash * fungibility and instant finality * channel * defragmentation * atomic swap * withholding attack * simple exit game * limbo exit * Plasma implementation is very complex. * Different implementations have different features. ### Difficulity of Plasma implementation * Complexity cause unsecure implementation * We need to write specific code for each feature Plasma exit game was a complex challenge but we knew it's able to be solved. We need to know what we can do on plasma and how to implement that efficiently. We need more general concept before implementing Plasma! ## OVM helps us PG proposed OVM in July. It includes 3 concepts. * Universal expression for dispute * Universal Adjudicator Contract concept * Universal L2 Client concept ### Things became much clear ## How is smart contract abstracted ### Undecided contradiction - challenge inclusion - invalid history challenge **Challenge Inclusion procedure** 1. Alice claims her exit Property. ``` exit(state_update) := And( IncludedAtBlock(state_update), Not(isDeprecated(state_update)) ) ``` 2. Bob proves undecided contradiction. Alice's exit is never decided until that this contradicting claim is decided as False. ``` Not(IncludedAtBlock(state_update)) ``` 3. Alice can show counter claim for the Bob's claim and contradicting claim will be decided as False. Alice go exiting. ``` IncludedAtBlock(state_update) ``` ### Nested claim and parallel dispute - Generalized Plasma - Channel on Plasma #### Generalized Plasma We defined 3 Properties for minimal Plasma transfer. * Checkpoint Property is Property to claim and decide coin history is valid. * Exit Property is Property to claim and decide that the coin has never been deprecated. * Ownership Property is Property to claim and decide owner has signed valid transaction for the SsateUpdate. * Checkpoint Property claims that StateUpdates within this coin range included in a block less than the current block number are all deprecated. * Ownership Property. It is "deprecate logic" of StateUpdate. It represents the owner has never signed the transaction. * Exit Property claims StateUpdate never deprecated. Plasma works as combination of these Properties. #### Parallel dispute When a user claim exit of channel on Plasma. They claim multiple Properties. * checkpoint * exit of open state in Plasma * exit of channel Each claim can be adjudicated parallelly. We can think each claims as separated problem. ## Shared client code - History Manager - History verification - Conciseness contributes to security ## Conclusion - OVM enables unified expression for dispute design. Developers can design claims more securly than using natural language. - This expression also reduces developers effort because we can use same claims for both smart contract and client. Client decides claims with local information. Smart contract can decide claims by universal fraud proof contract. There will be fewer potential bugs than the developers write codes of L2 application from full scratch. - How do we define unsecured claim?