Ethereum 2.0 Development Update #29 — Prysmatic Labs

Preston Van Loon
Prysmatic Labs
Published in
5 min readJun 27, 2019

Our biweekly updates written by the entire Prysmatic Labs team on the Ethereum 2.0 roadmap

Eth2 Research Updates

Execution environments and EWASM for Eth 2.0

We’ve begun to estimate the work needed for Prysm to operate in a phase 2 execution environment only test net. There’s parallel efforts going-on for phase 0, phase 1 and phase 2. The eWASM team has recently released a block-boxed prototyping environment for the phase 2 execution environment — it allows the researchers to experiment and benchmark execution environments features. The goal is to obtain a better idea on the speed of the WASM code and the overall throughput of the execution environment. Given the current phase 0 and phase 1 are black boxed for Scout, it is important to initiate an effort to integrate Scout with an eth2 client to test end-to-end end performance. Expect more updates on this from us in the upcoming weeks!

Only 3 days until spec freeze!

We couldn’t be more excited about the upcoming spec freeze this week!

Merged Code, Pull Requests, and Issues

Ethereum 2.0 Common APIs Repository

One of the most important pieces of Ethereum 2.0 in phase 0 is access to data. We’ve started to collect service schema definitions that we find valuable to validator client operators, block explorers, and anyone interested in the data of Ethereum. We collected data API use cases in this product requirements document and put that forward for feedback from the community.

https://github.com/prysmaticlabs/ethereumapis

We turned that feedback into a self-describing schema utilizing protocol buffers with the hope that we can start Ethereum 2.0 with a consistent and easy-to-use API from day 0. Expect to see these service definitions implemented in the next few weeks!

Wrapping up v0.7.1 spec conformity tests

We have finished and passed v0.7.1 spec tests! What that means is Prysm client is fully conform to the eth2.0-spec-tests standard and it can begin to talk to other clients that also comfort with the same standard. We see this as a big step towards multi-client interoperability. So What’s in a spec tests? It consists of state transition functions for epoch processing, block processing and slot processing. Passing these meaning clients processed state will be the same always. In addition the state transition functions, the spec tests also consist of BLS and SSZ to ensure every client can hash, encode, decode beacon chain objects the same way.

Our Go-SSZ Implementation Passes Conformity Tests

go-ssz passing spec tests

We have completed the conformity of our Simple Serialize implementation up to the v0.7.1 official Ethereum 2.0 specification in its own repository here under the permissive, MIT license. We have opted for building a correct and robust implementation of SSZ with an easy-to-use API matching the popular JSON marshaler/unmarshaler for Go.

Our next focus on the project is to work on a whole suite of optimizations and improvements for greater usability and speed in production. For now, we are content it passes all spec tests. Feel free to suggest improvements to the project through pull requests/issues!

BLS Updated To Pass Conformity Tests

We currently use the phore library as our underlying BLS library. However the phore library didn’t implement the domain parameter in its Sign and Verify Methods, which were blocking us in implementing the spec BLS tests. So we opened up a PR, which would allow us to provide the domain parameter in Signing Messages and Verifying Signatures. With those methods added we were able to pass the BLS Spec tests.

Upcoming Work

Optimizing and Stress Testing Prysm

The next item we’ve been itching to work on is the core optimization of Prysm itself. Our testnet release has shed a lot of light on where our bottlenecks are and have given us valuable insight on where any future refactoring efforts should begin. Our our radar, we wish to radically improve the data layer of Prysm, how we cache information, and making syncing with the chain a lot more robust than its current flakey state. A particular goal clients should have is to attempt 1 second block time testnets, which will put every part of our system under immense pressure — exactly what we need before we go into a multi-client or mainnet scenario.

Miscellaneous

Eth 2.0 Implementers Call June 27, 2019

Due to technical issues, there was no livestream for the call, but Ben Edgington put together a nice tweetstorm summarizing the discussion here. When the EF researchers surveyed various teams about how confident they would be in being production ready by Jan 3, 2020, Prysmatic Labs is cautiously optimistic at a 6/10 score. We aim to be objective in our work, and put together the highest quality software we can. Jan 3 is not a deadline, but is a solid, tentative date that keeps everyone on their feet working hard towards it.

Interested in Contributing?

We are always looking for devs interested in helping us out. If you know Go or Solidity and want to contribute to the forefront of research on Ethereum, please drop us a line and we’d be more than happy to help onboard you :).

Check out our contributing guidelines and our open projects on Github. Each task and issue is grouped into the Phase 0 milestone along with a specific project it belongs to.

As always, follow us on Twitter or join our Discord server and let us know what you want to help with.

Official, Prysmatic Labs Ether Donation Address

0x9B984D5a03980D8dc0a24506c968465424c81DbE

Official, Prysmatic Labs ENS Name

prysmatic.eth

--

--