Plasma Winter - an account model Plasma with with zkSNARK proved state transitions. Started on ETH Singapore
Clone or download
Latest commit 923297a Dec 21, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore moving commit Dec 8, 2018

Plasma Winter: governed by SNARKs

This work is a demonstration of applying zk-SNARKs to solving blockchain scalability as a Layer 2 Plasma-like solution.

The code is meant to serve as a Proof-of-concept only and is not suitable for use in production apps. Work on the production-grade implementation is currently in progress. If you want to contribute, please contact the authors:


How to run

  • Generate a proving key
   cargo run --release --bin

It will generate a VerificationKeys.sol and proving key pk.key in a root folder.

  • Copy VerificationKeys.sol into the ./contracts/contracts/ with replacement

  • Replace a EMPTY_TREE_ROOT with value 0x09d809ed651bf1f19906bd7c170e1736176d3fbb2053e702dbbc2a8eed3e929f. It's a root hash of demo server with pregenerated 1000 accounts

  • Run the migration by making a proper adjustments in file

  • Run server:

    • Change by inserting proper URLs, addresses and keys
    • Run the script
  • Server has 1000 accounts pregenerated and you can send using


   "from": 0,
   "to": 1,
   "amount": 1000
  • Valid response is
   "accepted": true
  • Batch size is 32 transactions, so you need to send this number of txes to start block commitment and proof generation process

  • UI lives here, you need to change

   const APIserver = ''

To something else


Plasma Winter is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.