Ethereum 2.0 and the Seven Clients
--
The Ethereum 2.0 upgrade is expected to launch later this year, starting with Phase 0. Included in that release is the Beacon Chain which is responsible for managing the Proof of Stake (PoS) protocol. In order to interact with the Beacon Chain, a client that implements the Ethereum 2.0 specification is required.
In this article I take a high-level look at the seven Ethereum 2.0 clients currently under active development, pulling into a single resource information about each client including links for the reader to dive deeper.
Why So Many Clients?
Before I get started, you might be wondering — why so many clients? Why not concentrate on building one ‘super client’, make that amazing, and the job is done?
Well, there are quite a few reasons why having more than one client is a good thing. Here are two that stand out for me:
- Having multiple clients means independent developers are in friendly competition, inspiring each other with different solutions and features. Competition drives innovation.
- Having multiple clients means robustness, giving options if an issue arises with a client. For example, what if we introduce a bug or an exploit is discovered in our hypothetical ‘super client’? It could bring down the Eth2 network.
For these reasons (and more) it is important support a balanced multi-client ecosystem for Ethereum 2.0. From Ethereum core developer Danny Ryan:
“I ask you during this period before launch, to get out of your comfort zone and try multiple clients. There are many trade-offs between them and you’re going to have to get your hands dirty to find out which works best for you. …Ethereum operates in a multi-client paradigm. To gain the benefits of this paradigm, we need users to run a diverse set of clients (to create a healthy distribution across all the types of clients).”
The Seven Clients
Without any further delay, let’s dive in. The seven clients listed in alphabetical order by name are:
- Cortex (Nethermind)
- Lighthouse (Sigma Prime)
- Lodestar (ChainSafe Systems)
- Nimbus (Status)
- Prysm (Prysmatic Labs)
- Teku (PegaSys)
- Trinity (Ethereum Foundation)
Each client has a unique profile in terms of maturity, technology, features, and support.
With the latest Ethereum spec (v0.12.1) recently released and potentially still undergoing changes, all clients are in active development.
The information below is current based on publicly available online information sources as of the date of publication of this article.
To the client teams: Please let me know if there are any inaccuracies.
Cortex (Nethermind)
The open-source Cortex client is the only .NET based Ethereum 2.0 client under development. The Nethermind company was founded in 2017 and operates out of London, UK.
While the Cortex repository hasn’t seen activity since December, there’s evidence the team is developing support for 2.0 in the Nethermind (Eth1 client) repository instead. It’s not clear if that means the Cortex client is deprecated in favor of a more fully featured Nethermind client, or if Nethermind will eventually become Cortex.
Quick Facts (based on Nethermind, not Cortex)
- Tech: Microsoft .NET Core 3.0
- Platform: Linux, MacOS, Windows
- License: GNU Lesser General Public License
- Repo: GitHub. 30 contributors (commit). Last commit within days
- Metrics: Prometheus
- Testnet: Not yet on Altona
Documentation
Extensive documentation for the Eth1 Nethermind client. I wasn’t able to find any documentation for the Eth2 Cortex client. Possibly still under development.
Current State
- Working on deposit processing and the beacon node implementation.
- Finalizing is yet to be achieved.
Notable
The Nethermind Gitcoin page lists building support for a ETH2 multi-client testnet in the next 6 months.
Links
Website / Twitter / Gitter / Gitcoin
GitHub / Documentation
Lighthouse (Sigma Prime)
Lighthouse by Sigma Prime is an open-source client written in Rust. Development began in 2018 and the company operates out of Sydney, Australia.
Quick Facts
- Tech: Rust
- Platform: Linux, MacOS, Windows
- License: Apache 2.0
- Repo: GitHub. 57 contributors (commit). Last commit within days
- Metrics: Prometheus
- Testnet: Altona (at genesis)
Documentation
The Lighthouse team have done a great job providing documentation for their project. Examples are:
- User guide for client installation and configuration
- Active Discord community
- Regularly updated developer blog
- Auto generated source code documentation
- Contributor guide for contributing to the project
Current State
- Team is focused on implementing v0.12.1 spec
- Participated in the launch of the latest multi-client network, Altona
- Finalizing validator key management
- Running an external security audit
- Undertaking performance improvements
- Working on a slashing protection solution
Notable
The Sigma Prime website boasts an impressive ‘sand on water’ interactive simulation that is a lot of fun to play with and definitely worth the click.
Links
Website / Blog / Twitter / Gitter / Discord
GitHub / Documentation / Contributor Guide
Lodestar (ChainSafe Systems)
The Lodestar client by ChainSafe Systems is an open-source client written in TypeScript. It is developed by a group of developers in Toronto, Canada. In addition to the client, the team is working on a number of utility packages and libraries in support of Ethereum 2.0.
Quick Facts
- Tech: TypeScript
- Platform: Linux, MacOS, Windows
- License: GNU Lesser General Public License v3.0
- Repo: GitHub. 30 contributors (commit). Last commit within days
- Metrics: HTTP Server
- Testnet: Not yet on Altona
Documentation
The Loadestar team embrace open communication and their team meeting notes are available to read. The user guide to install the software is minimal (basically: clone, install dependencies, build, run), but the team has plans to add more.
- Minimal user guide for client installation and configuration
- Active Discord community
- Regularly updated developer meeting and planning notes
- Contributor guide for contributing to the project
Current State
- Applying the Ethereum spec v0.12.1 updates and targeting the Altona Eth2 multi-client testnet
- Medium term goal is to be able to run a beacon node and validator client reliably on an appropriate testnet (Altona or beyond) and update documentation to reflect
Notable
The team have implemented an educational-purposes-only website (bls-keygen.com) that allows users to generate validator keys using Lodestar’s BLS library implementation. They also have a second site (simpleserialize.com) that implements Ethereum specification v0.11.2 consensus types along with a feature to deserialize serialized values.
Links
Website / Twitter / Discord
GitHub / Documentation / Contributor Guide
Nimbus (Status)
Nimbus is a research project and an open-source client implementation for Ethereum 2.0 designed to perform on embedded systems and personal mobile devices, including older smartphones with resource-restricted hardware.
The Status org has experience working with mobile technology through their messaging product, Status. They have applied their experience to build an Ethereum client that runs an archival node and the related Eth2 software on personal mobile devices.
Quick Facts
- Tech: Nim
- Platform: Android, Linux, MacOS, Windows (experimental)
- License: Apache License 2.0 or MIT
- Repo: GitHub. 24 contributors (commit). Last commit within days
- Metrics: HTTP Server
- Testnet: Altona (at genesis), Onyx
Documentation
Offers a recently updated, brief but to-the-point set of documentation covering most of the common information necessary to get up and running.
- User guide for client installation and configuration
- Active Discord and a Status community
- Developer guide for contributing to the project
Current State
- Implements the latest version of the Ethereum 2.0 specs, v0.12.1
- Participated in the launch of the latest multi-client network, Altona
- Currently supports building from source, only
- Working on separating the client into beacon and validator processes
- Undertaking performance improvements and a security audit
Notable
Nimbus is currently the only Ethereum 2.0 client targeting mobile platforms.
Nimbus runs on Nim — an efficient, general-purpose systems programming language with a Python-like syntax that compiles to C.
The team recently improved performance of block and attestation processing by about 10~50x and client startup improved 20–100x.
Links
Website / Blog / Twitter / Gitter / Discord / Status
GitHub / Documentation
Prysm (Prysmatic Labs)
A fully featured and well documented open-source Ethereum 2.0 client by Prysmatic Labs (founded in January 2018).
Prysm is a reasonably mature client with a very active development team. They do a great job interacting with and supporting users of their software and testnets, notably Topaz (deprecated) and Onyx.
Quick Facts
- Tech: Go
- Platform: Linux, MacOS, Windows
- License: GNU General Public License 3.0
- Repo: GitHub. 84 contributors (commit). Last commit within days
- Metrics: Prometheus
- Testnet: Altona (at genesis), Onyx
Documentation
Prysm’s user, code, and issue documentation is impressively detailed and well maintained. The Prysmatic Labs team also does an excellent job keeping their blog updated and it’s well worth a read to keep up with progress on the Prysm client.
Current State
- The client is up to date with v0.12.1 of the spec.
- Participated in the launch of the latest multi-client network, Altona
- Recently underwent a security audit and are addressing the feedback
- The team is performing various optimizations
- Validator account refactor is underway
Notables
The Prysm client is two separate binaries, one for the beacon chain and the other for the validator. It also has the ability to run a Slasher to help further secure the chain and earn extra income.
Prysmatic Labs have their own stable testnet, Onyx, running 30,000 validators. Their previous testnet, Topaz, was also well utilized.
Links
Website / Blog / Twitter / Gitter / Discord / Gitcoin
GitHub / Documentation / Contributor Guide
Teku (PegaSys)
The Teku client is an enterprise grade open-source client for Ethereum 2.0. It is being built by the PegaSys team (an incubation of ConsenSys).
The client is intended to meet institutional and security needs and optionally comes with a pilot program with commercial support from PegaSys spanning testnet launch to one month after mainnet launch.
Notably, the newly announced institutional staking pilot program by ConsenSys Codefi is being built on Teku.
Quick Facts
- Tech: Java
- Platform: Linux, MacOS, Windows
- License: Apache License 2.0
- Repo: GitHub. 38 contributors (commit). Last commit within days
- Metrics: Prometheus
- Testnets: Altona (at genesis), Onyx
Documentation
Offers a recently updated, brief but to-the-point set of documentation covering most of the common information necessary to get up and running.
- User guide for client installation and configuration
- Developer guide for contributing to the project
Current State
- Up to date with the latest spec, v.0.12.1.
- Participated in the launch of the latest multi-client network, Altona
- Undertaking performance optimizations
- Recently added support for exposing RocksDB metrics to Prometheus
Notables
While Teku bills itself as an enterprise client, it can freely be used by individuals as well.
The word Teku in Japanese (テク) means technology.
Links
Website / Blog / Twitter / Gitter / Discord
GitHub / Documentation / Contributor Guide
Trinity (Ethereum Foundation)
An open-source Ethereum client that supports 1.0 and 2.0 (alpha and pre-alpha respectively) authored by the Python team within the Ethereum Foundation. Development seems to have begun early 2019.
Quick Facts
- Tech: Python
- Platform: Linux, MacOS, Windows (unsupported)
- License: MIT
- Repo: Github. 75 Contributors (commit). Last commit within days
- Metrics: InfluxDB
- Testnet: Not yet on Altona
Documentation
A reasonable and up-to-date set of documentation is provided, including a quick start guide and instructions for installing and running the software.
The developers offer a ‘cookbook’ with advice on how to achieve useful and interesting things with the client, such as accessing the built-in performance profiler.
Current State
- Beacon chain implemented to v0.11.3, currently working towards v0.12.1
- Addressing performance issues
- Metrics tracking though InfluxDB has recently been added
Links
Website / Twitter / Gitter
GitHub / Documentation / Contributor Guide
Final Remarks
There you have it — the seven clients! Which one takes your fancy? If possible, I recommend you try them all. It will arguably be easier once they are all able to successfully target the same testnet. If not Altona, then perhaps the next one.
I’m not sure what the Ethereum 2.0 mainnet launch threshold is with respect to client readiness, but it’s clear some clients are further ahead than others. How this impacts the Phase 0 launch time-frame remains to be seen.
Finally, I wanted to express my gratitude to all of the developers. The Ethereum ecosystem and community is full of passionate human beings working toward a collective goal: Ethereum 2.0. Countless developers, researchers, tinkerers, and leaders are working hard to make all of this possible. Thank you, all.
Disclaimer
I’m not affiliated with the companies/developers mentioned in this article. Opinions are my own, and information is based on my own research from publicly available information. I make no recommendations or endorsements, nor do I warrant the accuracy or completeness of the information herein.