2.
Minimal
Viable
Plasma
A Plasma chain for scalable payments
Plasma Provides: Massive Scaling
Plasma Provides: Asset Security
Plasma Exits
Minimal Viable Plasma
Plasma
operator
Minimal Viable Plasma
Plasma
operator
Plasma contract deployed to mainnet
Minimal Viable Plasma
Plasma
operator
Single Plasma operator proof of authority
Minimal Viable Plasma
Plasma
operator
Minimal Viable Plasma
Plasma
operator
Minimal Viable Plasma
Plasma
operator
Create Plasma Block
Minimal Viable Plasma
Plasma
operator
Create Plasma Block
Plasma block not yet included in root chain
Minimal Viable Plasma
Plasma
operator
Send Plasma Block Creation Tx to miner
Minimal Viable Plasma
Plasma
operator
Minimal Viable Plasma
Plasma
operator
Plasma block “confirmed”
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 10
Minimal Viable Plasma
Plasma
operator
Plasma block “confirmed”
Minimal Viable Plasma
Plasma
operator
Deposit 5 ETH into
Plasma contract
Sam�ETH: 10
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 10
Minimal Viable Plasma
Plasma
operator
Immediately create new Plasma block
Sam�ETH: 5 - PETH: 5
Minimal Viable Plasma
Plasma
operator
Watch chains for misbehavior
Sam�ETH: 5 - PETH: 5
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Alice�PETH: 1
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Alice�PETH: 1
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Send 2,500 0.001 PETH
txs to Alice just because
Alice�PETH: 1
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Alice�PETH: 1
Create block with Sam’s txs
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Alice�PETH: 1
Create block with Sam’s txs
Note the Plasma block has not been confirmed!
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Alice�PETH: 1
Create block with Sam’s txs
This means Alice cannot yet spend her new PETH
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Alice�PETH: 1
Submit block to root chain
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Alice�PETH: 1
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Alice�PETH: 1
Sees a Plasma block with Sam’s txs in the root chain
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 5
Alice�PETH: 1
Sends Alice a confirm message
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Balances update & Alice can spend her new PETH
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Balances update & Alice can spend her new PETH
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Sends exit transaction claiming 5 PETH
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Sends exit transaction claiming 5 PETH
Exits include a security deposit which is released after challenge period
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Alice’s client automatically notices bad behavior
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Alice’s client automatically notices bad behavior
All honest nodes will notice & can submit a challenge
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Send challenge before challenge period (~1 week)
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Send challenge before challenge period (~1 week)
Challenge includes a merkle proof of a transaction spending the coins Sam tried to withdraw
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Pay challenger Sam’s security deposit
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Cancel Sam’s exit!
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Cancel Sam’s exit!
ATTACK FAILED
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Cancel Sam’s exit!
ATTACK FAILED
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Cancel Sam’s exit!
ATTACK FAILED
Go Plasma!
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Balances update & Alice can spend her new PETH
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
Create invalid block
printing money
ETH: 0 - PETH: 99999
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Submit invalid block to root chain
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Oh nose!
An invalid block is confirmed!
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Clients notice bad behavior!
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Sam & Alice submit
exit transactions
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Uh oh!
Plasma operator submits an exit too
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
6 ETH
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
6 ETH
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
6 ETH
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 5 - PETH: 2.5
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
6 ETH
Minimal Viable Plasma
Plasma
operator
Sam�ETH: 7.5 - PETH: 0
Alice�PETH: 3.5
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
3.5 ETH
Send 2.5 ETH!
Minimal Viable Plasma
Plasma
operator
Alice�ETH: 3.5 - PETH: 0
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
0 ETH
Send 3.5 ETH!
Sam�ETH: 7.5 - PETH: 0
Minimal Viable Plasma
Plasma
operator
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
0 ETH
Send… LOL pwned
Alice�ETH: 3.5 - PETH: 0
Sam�ETH: 7.5 - PETH: 0
Minimal Viable Plasma
Plasma
operator
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
0 ETH
Send… LOL pwned
Alice�ETH: 3.5 - PETH: 0
Sam�ETH: 7.5 - PETH: 0
ATTACK FAILED
Minimal Viable Plasma
Plasma
operator
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
0 ETH
Send… LOL pwned
Alice�ETH: 3.5 - PETH: 0
Sam�ETH: 7.5 - PETH: 0
ATTACK FAILED
Minimal Viable Plasma
Plasma
operator
ETH: 0 - PETH: 99999
Exits based on older txs are processed first!
1
2
3
4
5
6
1
2
3
4
5
Plasma Contract
0 ETH
Send… LOL pwned
Alice�ETH: 3.5 - PETH: 0
Sam�ETH: 7.5 - PETH: 0
ATTACK FAILED
Go Plasma!
Important Design Pattern: Constraints
Important Design Pattern: Constraints
Final Takeaways