Ethereum 2.0 Development Update #34 — Prysmatic Labs
By: Terence Tsao
Tags: Blockchain, Golang, Scalability, Ethereum

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

Interoperability Lock-In Event for Client Teams

We are beyond excited to be attending the up-coming interop retreat hosted by the lovely folks at Consensys. The event was proposed back in May during the ETHNY ETH2 meet up. The purpose of the event was for all the client implementers to get together to try plugging their implementations together.

Since May, all the client implementers have been working towards this goal by passing spec conformance tests, ironing out the design spec for the networking stack and discussing strategies for quick chain start plus eth1 related mocks. Lots of great surveys were passed around to ensure clients are aligned with the same goals in mind. Check out the goals and the exercises documented here.

Merged Code, Pull Requests, and Issues

Prysm preparations for client interoperability

In preparation for the interop event, lots of teams have put together guidelines for how to quickly and easily set up their node for multiclient testing. A big part of this setup is ensuring we have consistency across clients and can reach consensus without a problem. To do this, we must ensure launching a node is deterministic and that we properly mock the more unpredictable parts of the runtime, such as the latest eth1 proof-of-work chain block hash as the beacon chain runs.

The ETH2 research team has put together a guide for interoperability mocked starts here, where they outline a deterministic algorithm for generating private keys, tips and guidelines for clients to launch their nodes from a standard genesis, and more. In Prysm, we integrated the suggestions from the doc and have a tool that can create the standard genesis state in a PR here. Checkout our in-progress interop documentation.

P2P Discovery v5 Integrated Into Prysm

We are currently in the process of updating our discovery V5 version to what is represented in the current spec. Unfortunately the previous version we had integrated was an early prototype which turned out to be quite different from what is currently defined in the discovery v5 spec. A few of the main differences from the earlier prototype are the explicit use of ENRs to relay node capabilities and the simpler core logic for handling the different request types, ex: PING,FINDNODE,etc. The current version enables us to better integrate this into our networking stack by giving better control of configurability while also simplifying the logic of the core protocol. We are currently integrating the discovery V5 version from this branch, which is being actively worked on by Felix from the Geth Team. The PR to update this in Prysm is being worked on over here.

Initial Sync Completed

With the new networking protocol, we’ve redesigned our initial network sync. Initially, we have a naive implementation for interoperability testing where the node chooses a single peer to sync from genesis block. The production/mainnet design is to utilize a multi-peer sync model where peers are asked to serve a subset of blocks in round robin rotation. As we get closer to launch of phase 0, Prysm will begin to support syncing from the start of the weak subjectivity period of 9 months.

Revamped Prysm Runtime to Spec v0.8.1

The past few weeks of work have been stellar for our project. We now have completely revamped our nodes with the brand new, standardized p2p networking protocol, better sync, better tooling for metrics collection and debugging, and a massive array of bugs squashed. We now foresee our Eth2 testnets to be a lot more robust, longer lived, and capable of supporting use cases closer to the real thing we’ll see in production for phase 0. We love deleting code, because that just means we can do more with less. Eliminating clutter and deprecated items makes for a more robust, readable, and maintainable codebase that is also less bug-prone. You can check out all of our changes in our mega PR here.

Miscellaneous

Prysmatic Labs Going to ETHBOSTON

Our team will be attending ETHBOSTON. Both Raul and Preston will be speaking, be sure to catch their talks & come say hi 👋

Mytchmatic Making Great Progress

Mytchmatic (an ETH2 GUI) has been making great progress, be sure to keep up with the latest development!

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