Skip to content

Commit

Permalink
Merge pull request #1 from staketechnologies/development-roadmap
Browse files Browse the repository at this point in the history
Development Roadmap
  • Loading branch information
SotaWatanabe authored Nov 6, 2020
2 parents 4d1cc22 + 303de72 commit 424170e
Showing 1 changed file with 54 additions and 45 deletions.
99 changes: 54 additions & 45 deletions applications/zk-rollups.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Open Grant Proposal

* **Project:** ZK Rollups on Polkadot
* **Project:** ZK Rollup on Polkadot
* **Proposer:** NoCtrlZ, akru, and SotaWatanabe
* **Payment Address:** 1LYWirHyBbmdCCU2YHg2qxgLAuybUfKEPm
* **Payment Address:** 1LYWirHyBbmdCCU2YHg2qxgLAuybUfKEPm

## Project Overview :page_facing_up:
We have been working on off-chain scalability solutions aka layer2 solutions. And after tremendous research, we became to believe that ZK Rollups would be the killer layer2 solution. Currently, rollups is [one of the potentially interesing topics](https://github.com/w3f/General-Grants-Program/blob/master/grants/polkadot_stack.md) for Web3 Foundation and Vitalik announced [the rollups centrric Ethreum roadmap last month](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698?fbclid=IwAR1oJyMEwvjFXNy7vCHT19PyXNh27PAHZjvCR4qBRoUB9mKf_nEVOtE4vgk). According to Vitalik, the Ethereum ecosystem is likely to be all-in on rollups (plus some plasma and channels) as a scaling strategy for the near and mid-term future. We know that Polkdot has a different technical architecture and tech stack but Rollups is still important because of severtal reasons.
## Project Overview :page_facing_up:
We have been working on off-chain scalability solutions aka layer2 solutions. And after tremendous research, we became to believe that ZK Rollup would be the killer layer2 solution. Currently, rollup is [one of the potentially interesing topics](https://github.com/w3f/General-Grants-Program/blob/master/grants/polkadot_stack.md) for Web3 Foundation and Vitalik announced [the rollup centrric Ethreum roadmap last month](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698?fbclid=IwAR1oJyMEwvjFXNy7vCHT19PyXNh27PAHZjvCR4qBRoUB9mKf_nEVOtE4vgk). According to Vitalik, the Ethereum ecosystem is likely to be all-in on rollup (plus some plasma and channels) as a scaling strategy for the near and mid-term future. We know that Polkdot has a different technical architecture and tech stack but Rollup is still important because of severtal reasons.

1. Bringing vertical off-chain scalability without sacrificing on-chain data availability (×3-10 scalability).
1. Handling smart contracts on layer2.

### Overview
Throught this grant, we are going to make a ZK Rollups pallet for potential Parachains. Our goal is to make Plasm Network a scalable smart contract platform. And supporting Rollups on the Parachian is important both for us and for the community.
Throught this grant, we are going to make a ZK Rollup pallet for potential Parachains. Our goal is to make Plasm Network a scalable smart contract platform. And supporting Rollup on the Parachian is important both for us and for the community.

### Project Details
### Project Details
We expect the teams to already have a solid idea about the project's expected final state.

Therefore, we ask the teams to submit (where relevant):
Expand All @@ -23,25 +23,25 @@ Therefore, we ask the teams to submit (where relevant):
* Documentation of core components, protocols, architecture etc. to be deployed
* PoC/MVP or other relevant prior work or research on the topic

### Ecosystem Fit
### Ecosystem Fit
Are there any other projects similar to yours? If so, how is your project different?

## Team :busts_in_silhouette:

### Team members
* Shinsaku Ashizawa
* Alexsandr Krrupenkin
* Sota Watanabe
* Sota Watanabe

### Team Website
### Team Website
* https://stake.co.jp/en

### Legal Structure
### Legal Structure
* Incorporated in Japan
* Address: 1-30-3 Minamiaoyama Minato-ku Tokyo Japan

### Team's experience
We have been making Plasm Nnetwork, a scalable multi-virtual machines smart contract platform on Polkadot supporting cutting edge layer2 solutions. Curretly, another team at Stake techologies is working on the Optimistic Virtual Machine, an unification for all layer2 solutions and a subset of Optimistic Rollups. We have already delivered 4 milestones out of 6. In addition to that, we have already delivered several grants such as Plasma, ECDSA, and ink! playground.
We have been making Plasm Nnetwork, a scalable multi-virtual machines smart contract platform on Polkadot supporting cutting edge layer2 solutions. Curretly, another team at Stake techologies is working on the Optimistic Virtual Machine, an unification for all layer2 solutions and a subset of Optimistic Rollup. We have already delivered 4 milestones out of 6. In addition to that, we have already delivered several grants such as Plasma, ECDSA, and ink! playground.

- [Plasma](https://github.com/stakedtechnologies/Plasm)
- [ECDSA](https://github.com/polkadot-js/common/tree/master/packages/util-crypto/src/secp256k1)
Expand All @@ -58,55 +58,64 @@ We are also participating in Substrate Builders Program and Substrate Delivery P
* https://www.linkedin.com/in/sota-watanabe-b962b3110/


## Development Roadmap :nut_and_bolt:
## Development Roadmap :nut_and_bolt:

This section should break out the development roadmap into a number of milestones. Since the milestones will appear in the grant contract, it helps to describe the functionality we should expect, plus how we can check that such functionality exists in the product. Whenever milestones are delivered, we refer to the contract to ensure that everything has been delivered as expected.

Below we provide an **example roadmap**. In the descriptions it should be clear how the project is related to Substrate and/or Polkadot. We recommend that the scope of the work can fit within a 3 month period and that teams structure their roadmap as 1 month = 1 milestone.

For each milestone:
* Please be sure to include a specification of your software. Treat it as a contract - the level of detail must be enough to later verify that the software meets the specification.
To assist you in defining it, we created a document with examples for some grant categories [here](../src/grant_guidelines_per_category.md).
* Please include total amount of funding requested per milestone.
* Please note that we require documentation (e.g. tutorials, API specifications, architecture details) in each milestone. This ensures that the code can be widely used by the community.
* Please provide a test suite, comprising unit and integration tests, along with a guide on how to run these.
* Please commit to providing a dockerfiles for the delivery of your project.
* Please indicate the milestone duration, as well as number of Full-Time Employees working on each milestone, and include the number of days along with their cost per day.
### Summary
We plan to provide a `ZK Rollup` pallet that allows Substrate-based blockchain to execute `ZK Rollup` on evm environment.

### Overview
* **Total Estimated Duration:** Duration of the whole project
* **Full-time equivalent (FTE):** Workload of an employed person ([see](https://en.wikipedia.org/wiki/Full-time_equivalent))
* **Total Costs:** Amount of Payment in BTC for the whole project. The total amount of funding needs to be below $30k at the time of submission.
* **Total Estimated Duration:** 3 months
* **Full-time equivalent (FTE):** 1 FTE
* **Total Costs:** 2.07

### Milestone 1 Example — Implement Substrate Modules
### Milestone 1
#### Implement ZK Rollup Contract With Cirom
* **Estimated Duration:** 1 month
* **FTE:** 1
* **Costs:** 0.75 BTC
* **Costs:** 0.69 BTC

First step will be to implement ZK Rollup contracts with [`Zinc`](https://github.com/matter-labs/zinc) framework enables us to build ZK Rollup smart contracts easily. We'll prepare the mock contracts and operator application on ropsten network as test environment.

| Number | Deliverable | Specification |
| ------------- | ------------- | ------------- |
| 0a. | License | Apache 2.0 / MIT / Unlicense |
| 0b. | Documentation | We will provide both inline documentation of the code and a basic tutorial that explains how a user can (for example) spin up one of our Substrate nodes. Once the node is up, it will be possible to send test transactions that will show how the new functionality works. |
| 0c. | Testing Guide | The code will have proper unit-test coverage (e.g. 90%) to ensure functionality and robustness. In the guide we will describe how to run these tests |
| 1. | Substrate module: X | We will create a Substrate module that will... (Please list the functionality that will be coded for the first milestone) |
| 2. | Substrate module: Y | We will create a Substrate module that will... |
| 3. | Substrate module: Z | We will create a Substrate module that will... |
| 4. | Substrate chain | Modules X, Y & Z of our custom chain will interact in such a way... (Please describe the deliverable here as detailed as possible) |
| 5. | Docker | We will provide a dockerfile to demonstrate the full functionality of our chain |
| 1. | Mainchain Contract | Contract which is used by user to deposit and withdraw Ether or ERC token |
| 2. | Sidechain Contract | Contract which receives transaction from transactor |
| 3. | Prover API | API that allows prover to receive witness from operator and create SNARK proof for sidechain block |
| 4. | Operator API | API that allows service provider to compose sidechain network and, broadcast bundle of transactions and SNARK proof for them to mainchain contract |
| 5. | Integration Test | Test for above modules to check whether these API work together correctly on ropsten network |
| 6. | Documentation | Document which describes how to deposit, withdraw and send Ether, be prover, and to test them |

### Milestone 2
#### Implement ZK Rollup Network Builder Pallet
* **Estimated Duration:** 1 month
* **FTE:** 1
* **Costs:** 0.69 BTC

### Milestone 2 Example — Additional features
...
Second step will be to implement ZK Rollup builder module as pallet. In order for service provider to setup ZK Rollup sidechain network, we need pallet to be network operator which has function to monitor mainchain contract, commit sidechain block on mainchain and request to create sidechain block proof for prover.

### Community engagement
| Number | Deliverable | Specification |
| ------------- | ------------- | ------------- |
| 1. | Implement Sidechain Runtime | Runtime that run the sidechain environment |
| 2. | Implement Operator RPC | Pallet that allows service provider to compose own ZK Rollup network and interact with mainchain through RPC |
| 3. | Integration Test | Test sidechain and mainchain work together correctly on substrate-based chain |
| 4. | Documentation | Document which describes how to deposit, withdraw and send, be validator, and init and participate network on substrate-based chain |

As part of the Program, we require that you produce an article/tutorial and publish it (for example on [Medium](https://medium.com/)). It should explain your work done as part of the grant.
### Milestone 3
#### Implement ZK Rollup Prover Client And Block Explorer
* **Estimated Duration:** 1 month
* **FTE:** 1
* **Costs:** 0.69 BTC

Normally, we ask you to submit the write-up upon the completion of your grant, although for larger projects it might make sense to publish multiple articles after the completion of different milestones.
Third step will be to implement ZK Rollup prover application and block explore. In order for user to participating ZK Rollup network and create sidechain block validity proof with SNARK, we need implement prover application.

## Future Plans
Please include the team's long-term plans and intentions.
| Number | Deliverable | Specification |
| ------------- | ------------- | ------------- |
| 1. | Implement Prover Application | Pallet that allows user to be prover in ZK Rollup network. This pallet has function to create proof after receiving witness from server |
| 2. | Implement Block Explorer | UI that allows everyone to check blocks and transactions status |
| 3. | Integration Test | Test explorer works together correctly on Web UI |
| 4. | Documentation | Document which describes how to deposit, withdraw and send, be validator |

## Additional Information :heavy_plus_sign:
## Additional Information :heavy_plus_sign:
Any additional information that you think is relevant to this application that hasn't already been included.

Possible additional information to include:
Expand Down

0 comments on commit 424170e

Please sign in to comment.