Plasma Update #5

Last updated 4 months ago


This sprint has been focused on getting the Watcher API ready for an internal deployment and end-to-end integration. This includes fixes for bugs encountered when reporting initial deposits in the watcher and when publishing multiple plasma blocks at the same root chain block height. We’ve improved the API for reporting account balances and submitting transactions through the watcher. We’ve also improved performance syncing with the child chain.

We’re deep in our audits of the Plasma MVP root chain contracts with Quantstamp and Synthetic Minds. Once we have the results, we’ll report back on any issues they’ve found and how we’re addressing them.

We made a fix to the root chain contracts to address an attack vector on how finalizeExits() performs on long exit queues when there’s insufficient gas to clear all the exits. We now have the ability to use an _exits_to_processparameter so that finalizeExits can continue to work in the event of very long exit queues.

Speaking of end-to-end integration: we’re putting the final touches on our first integration library before making that repo and npm module (Node Package Manager, a javascript packaging format) public as well. We’ve chosen to use javascript for the first library since it’s one of the most accessible and widely-used languages. This is considered an early alpha version; the initial feature set of the library will support deposits into and transactions on the child chain, primarily interacting with the watcher. This library provides the end to end infrastructure for integrating an end-user application, from application to library to watcher to child chain. This is great news for the eWallet team too - this release paves the way for the next steps on blockchain integration.

Edit: the omg-js repo is now public!


Plasma Cash

We’ve been working with a few people on some pretty cool research related to Plasma Cash, building off Vitalik’s atomic swap and defragmentation work. Part of this research is a simplification of the atomic swap protocol. The other part of this work is a generalization of Vitalik’s idea of using very small denomination coins to simulate fungible assets in Plasma Cash. These designs are currently being cleaned/written up and should be published to in the next week.

We’ve also been tackling the problem of large histories in Plasma Cash, which is currently the biggest barrier to using Plasma Cash for large-scale use cases. This is a pretty hard problem, and it seems like we probably can’t solve it in a clean way without something fancy (like maybe RSA accumulators). We’re looking into this more deeply right now and will continue to update as we get further.

RLP Encoding

With the help of the community (and GitCoin!), we managed to bring together a standardized and tested RLP encoding library for Solidity. This makes it possible to RLP encode things inside a smart contract running on Ethereum, which can be useful for certain Plasma implementations. We’re not using this in production (not efficient enough), but we’re making use of it for More Minimal Plasma, a simplified Plasma MVP smart contract implementation meant to demonstrate exactly how Plasma MVP works. If you’re a developer looking to learn more about Plasma, you should check out the RootChain smart contract.

Plasma Implementers Call #15 Notes

  • More work on Plasma Debit! A detailed specification is in the works and should be published soon.

    • Atomic swaps are really hard.

    • Atomic swaps safe from operator griefing are even harder. Griefing is always a potential problem if there’s an information asymmetry.

  • People are working on figuring out optimal bond prices. This is a very economics-heavy question and depends on a lot of variables.

  • Optimistic Cheap Multi-Exits are one way to reduce the gas cost of withdrawing funds from the Plasma chain.

  • There might be a way to derive Plasma Debit from Plasma Cash if there’s a good mechanism for sibling splits/merges.

  • Some discussion about what will happen if users lose the information necessary to exit, based on this question. It’s less of an issue in Plasma MVP than in Plasma Cash, but watchtower-like constructions might be able to help.

  • Some additional concerns with a Plasma Cash operator using withdrawals to force users to put up a bunch of money in bonds.