I am very proud to show you all what we have been up to at Prysmatic Labs over the past few weeks. If you missed the first post on why sharding matters, or a brief overview of what Prysmatic Labs is doing, take a look here and here.
Back in January 2018, I planned to solidify a strong team of developers, called Prysmatic Labs, with a passion to tackle the big, scalability problem the Ethereum protocol faces. We quickly assembled our repository, got a Gitter chat together, and started grinding away at a realistic plan for a sharding implementation you will all be able to try out.
Check out our comprehensive plan to implement sharding right here — we have a lot on the horizon, but we just wanted to give you a sneak peek of what’s to come.
Our Release Roadmap
Upcoming Alpha Testnet: The Ruby Release
Our current work is focused on creating a simplified version of quadratic sharding that will include the following:
- A validator node with a CLI tool that deposits ETH into the validator manager contract through the command line and selects the user as a validator for a shard in a given period, in addition to the ability to withdraw the ETH staked.
- A collator node and crypto-economic incentive system for collators to listen to pending transactions, execute and package transactions into collations, and submit them along with a deposit to validator nodes in the network.
- A simple command line util to simulate pending transactions of different types posted to the local geth node’s txpool for the local collation proposer to begin proposing collation headers
- Ability to inspect the shard states and visualize the working system locally through the command line
We are already hard at work on these items and you can contribute or track our progress for this release here.
Ethereum Testnet: The Sapphire Release
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 real validators effectively processing collations through the on-chain VMC. This will require a lot more elaborate simulations around the safety behind the validator assignments in the VMC and stress testing against DDoS attacks. Additionally, it will be the first release to have real users proposing collations along with validators that can accept these proposals and add their headers to the VMC.
Part 2 of the Sapphire Release will focus on implementing a cross-shard transaction mechanism via two-way pegging and a receipts system. We plan on getting that functionality ready to run on a local, private network as an extension to the Ruby Release.
ETA: Late 2018
Ethereum Mainnet: The Diamond Release
The Diamond Release will reconcile the best parts of the previous releases and deploy a full-featured, cross-shard transaction system through a Validator 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 VMC.
The Diamond Release will be considered the production release candidate for sharding Ethereum on the mainnet.
Where We Are Now: Sharding Spec for the Go-Ethereum Client ⚡️
In less than 3 months, we have made significant progress in creating a command line tool you can try out on your local network to start the sharding process. Everything you need to know about how sharding works and how we’re building it is detailed in our top-level README and Sharding Implementation Doc.
Our architecture revolves around the following components:
(1) A validator client that connects to a locally running Geth node + local Ethereum blockchain, and kicks off the sharding process. This client will extract 100ETH from your account balance and insert you into the VMC’s validator set. Then, the program will listen for incoming block headers and notify you when you have been selected as an eligible validator for a certain shard in a given period. Once you are selected, the validator will request collations from a “collation proposals pool” that is created by collation proposer nodes (Work in Progress).
geth sharding-validator --deposit
(2) A collator client that is tasked with executing pending transactions in the geth node’s tx pool and packages them up into collations that validators can accept (Work In Progress).
Where We Need Help 💡
We are currently looking for more Golang developers to join into our mix and help us accelerate our pace on the Ruby release. Check out our contributing guidelines and our open projects on Github. Each task and issue is grouped into the Ruby Release milestone along with a specific project it belongs to (VMC related tasks, collator node tasks, etc.).
As always, drop us a line here or on our Gitter chat and let us know what you want to help with— we need all the collaboration we can get! 🎉