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.
Edit: the omg-js repo is now public!
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 ethresear.ch 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.
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.
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 ethresear.ch 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.