BUIDL your own Plasma MVP implementation in JavaScript & Solidity

We’re excited to announce our latest ChainShot Coding Tutorial: Plasma MVP! Ready to scale Ethereum like a pro?

Earn the Plasma Badge!

The implementation this tutorial helps users create is based on the spec provided by Vitalik Buterin and inspired by OmiseGo’s MVP implementation. The Plasma Contract uses Solidity and the central operator uses JavaScript for its ubiquity (not a JS fan? We are happily accepting PRs :D). It’s a long one, so buckle up for an adventure! Having been the first to complete it, I can happily say it’s done a tremendous job boosting my own knowledge of Plasma!

What’s in this Tutorial?

The tutorial will walk you through creating the Plasma Contract on the Ethereum Blockchain in Solidity and creating the centralized Plasma Operator in JavaScript. The Operator will batch transactions and then commit to them on the Plasma Contract. You’ll learn what it takes to keep these two main components in sync and how they interact with each other. By the end you’ll have written the core functionality of Plasma MVP.

We expect the tutorial to take roughly eight hours if you’re comfortable with JavaScript and Solidity. Before attempting it, I would suggest you complete our Merkle Trees lesson. The Merkle Tree is a critical component in providing scalability within Plasma. The final stages of the Plasma Tutorial will help you build the functionality for allowing users to “exit” the Plasma Chain, which is the primary security mechanism of the sidechain. These stages will assume you understand how a Merkle Tree works.

Want to make updates? Fork it!

As with all our tutorials, Plasma MVP is open-source! Everyone is welcome to suggest changes and we encourage Pull Requests. Similarly, feel free to use our tutorial as a base for creating your own tutorial! We would love to see more flavors of Plasma having their own tutorial.

Use our Builder IDE to edit Plasma!

It’s easy to build your own Tutorial using our Builder IDE; see an article for getting started here. Simply download our content repo and install the global npm package, you’ll be good to go! More in-depth documentation is available here.

A Big Thank You

We owe a big thank you to ETH Prize for providing the bounty for this Tutorial. The tutorial took much more effort than we expected and without their help, it could have never been accomplished!

Thank you!

We also want to thank Karl Floersch for allowing us to use his awesome Plasma MVP video in our introduction, Vitalik Buterin for his spec of Plasma MVP, and Omise Go for their Plasma MVP implementations which served as the inspiration for us to get started with ours!

Finally we’d like to thank the Ethereum Community that has provided so much support for us since the beginning. We couldn’t have made it this far without you all! We’re especially excited because with this Plasma MVP implementation, we have achieved our tutorial content goal for a curriculum which will provide the base for an Ethereum Bootcamp.

Stay tuned for further news on our bootcamp coming soon :)