Prysmatic Labs has released a demo of its shasper implementation. The team is careful to market the Ethereum client as a work in progress, labeling it Prysm v0.0.0, and clarifying:
"There is still work to be done with respect to wrapping up Phase 0 of Shasper, but we wanted to give the community a taste of what a real client will look like."
Prysmatic Labs has apparently been working on the Prysm client since late last year/early 2018. Since then, the concept has evolved significantly. It wasn't until June 15 that the concept of a Casper-meets-sharding beacon chain was announced in a core dev call. Prior to that, the aim was for Casper FFG as a contract, though that was apparently rejected for its incompatibility with sharding and complications with the eventual shift to ewasm. (If you want more background on that whole journey, Vitalik Buterin detailed it all in a tweet storm back in August.) In any case, Prysmatic Labs' journey to Prysm v0.0.0, as incomplete as it may be, has been full of zigs and zags.
To be clear, this demo is not intended to create a public shasper network. If you want to try it out, the GitHub repository post specifies you'll need to run your own beacon chain node and validator client(s). Your node does not interact with others, though you can set up multiple validator clients and create a local network. (Setup instructions can be found here.)
While it is true that the release is an incomplete shasper implementation, it does a lot as is. Validators are intermediately shuffled and reshuffled to different shards IDs/slots. Then, during a validator's assigned slot, it can propose and confirm canonical blocks. Some other notable functions include:
- Casper FFG rewards and penalties.
- Locally networked peer-to-peer transactions (read: between your own validator clients, not the public network).
- A simulator of other beacon nodes sending blocks to yours so that you can see how the thing might actually function.
- A Web3 Subscription service to listen to latest mainchain blocks and validator registrations.
- Bazel, a build system used by industry leaders like Google.
Although the demo sorts clients to shard IDs, this is not the same thing as actual sharding functionality. The announcement states:
"Shards, their associated design, and cross-shard transactions are not included in this release. Validators are simply shuffled into shard IDs but do not actually do anything to validator shard blocks yet."
The ETH2.0 fork-choice rule is also not yet included. The fork-choice rule generally refers to the code that determines which blocks to build on, but with sharding this gets complicated. For ETH2.0, the fork-choice rule must specify how shards interact with the main chain. Another necessary core function missing from the demo is randomness of validator selection. It is important for network security that validators do not know ahead of time that they are next in line. Otherwise, collusion and dishonesty are possible. While there are mechanisms to make this possible in the works, they are still being researched.
In the meantime, Prysmatic Labs' announcement of the Prysm v.0.0.0 demo release welcomes coders proficient in Go to help build and improve the client.