aragon / nest

A grants program to support the development of the ecosystem
https://aragon.org/project/grants
Creative Commons Zero v1.0 Universal
140 stars 78 forks source link

Prysmatic Labs Request for Funding (Sharding) #36

Closed rauljordan closed 6 years ago

rauljordan commented 6 years ago

Request for Nest membership and funding (#35)

Team name: Prysmatic Labs

Proof of concept / research whitepaper: https://github.com/prysmaticlabs/geth-sharding

Funds Raised: $275k

Burn rate: ~$32k/month

Legal structure: LLC partnership filed in Illinois - Prysmatic Labs LLC

Team and roadmap

Proposal

(Please review our extensive documentation and subscribe to our communication channels for updates on the following scheme, as it is heavily undergoing changes due to research updates)

We are implementing the first, working version of sharding for the geth client through a strong emphasis on development sprints and results. Our strong suit is being able to create effective, tested code for the community to explore. We are actively developing the project here and are hard at work on our first milestone as detailed in our comprehensive reference docs. We communicate on a day-to-day basis via our Gitter channel here.

Our work is heavily based out of and in collaboration with Py-EVM and the ETHResearch team. The basic idea of our initial implementation is as follows:

The ETHResearch team has proposed the following long-term roadmap for sharding:

The Ruby Release: Local Network

Our current work is focused on creating a localized version of phase 1, quadratic sharding that would include the following:

Proposers and collators will interact through a local file system, as peer to peer networking considerations for sharding are still under heavy research.

We will forego several security considerations that will be critical for testnet and mainnet release for the purposes of demonstration and local network testing as part of the Ruby Release.

The Sapphire Release: Ropsten Testnet

Part 1 of the Sapphire Release will focus around getting the Ruby Release polished enough to be live on an Ethereum testnet and manage a set of collators effectively processing collations through the on-chain SMC. This will require a lot more elaborate simulations around the safety of the randomness behind the collator assignments in the SMC. Furthermore we need to pass stress testing against DDoS and other sorts of byzantine attacks. Additionally, it will be the first release to have real users proposing collations concurrently along with collators that can accept these proposals and add their headers to the SMC.

Part 2 of the Sapphire Release will focus on implementing state execution and defining the State Transition Function for sharding on as an extension to the Ruby Release.

The Diamond Release: Ethereum Mainnet

The Diamond Release will reconcile the best parts of the previous releases and deploy a full-featured, cross-shard transaction system through a Sharding Manager Contract on the Ethereum mainnet. As expected, this is the most difficult and time consuming release on the horizon for Prysmatic Labs. We plan on growing our community effort significantly over the first few releases to get all hands-on deck preparing for real ether to be staked in the SMC.

The Diamond Release should be considered the production release candidate for sharding Ethereum on the mainnet.

Prysmatic Labs will begin by focusing its implementation entirely on the Ruby Release from our roadmap. We plan on being as pragmatic as possible to create something that can be locally run by any developer as soon as possible. Our initial deliverable will center around a command line tool that will serve as an entrypoint into a collator client that allows staking, a proposer client that allows for simple state execution and creation of collation proposals, and processing collations through on-chain verification via the Sharding Manager Contract.

Our implementation revolves around 4 core components:

Our Work So Far

Our initial implementation works through a simple command line arguments that will allow a user running the local geth node to deposit ETH into the SMC and join as a collator that is automatically assigned to a certain period. You can try it out and run it by following the instructions on our project README here!

Once again, review our extensive documentation and subscribe to our communication channels for updates on this scheme, as it is heavily undergoing changes due to research updates.

Team Communication and Updates

We communicate our updates through the following channels:

Our Medium Page for Prysmatic Labs Our Newsletter: Opt-in Through Our Website Our Official Twitter @prylabs Our Gitter Channel: prysmaticlabs/geth-sharding

CLAassistant commented 6 years ago

CLA assistant check
All committers have signed the CLA.