What does Client Diversity refer to?
The Ethereum upgrade is being implemented by many independent teams, each developing independent clients. They all make different decisions in their development process. If a bug sneaks into one of the clients, only those running a specific client will be affected, and not the whole network. Client Diversity therefore refers to the problem, that a overwhelming number of users choose a singular client over the other options.
Why is Client Diversity in all Staker's interest?
If more than 1/3 of validators are offline, epochs can no longer be finalised. So while the chain still grows, it is no longer possible to point to a block and guarantee that it will remain a part of the canonical chain. This breaks the blockchain mechanism. Therefore if more than 1/3 of nodes are offline, penalties for the offline nodes start ramping up drastically – this is called the “inactivity penalty”.
This means that, as a validator, you want to try to ensure that if something is going to take your node offline, it is unlikely to take many other nodes offline at the same time. The same goes for being slashed. While, there’s always a chance that your validators are slashed due to a spec or software mistake/bug, the penalties for single slashings are “only” 1 ETH. If many validators are slashed at the same time, then penalties go up to as high as 32 ETH. The point at which this happens is at this 1/3 threshold.
An example of something likes this happening is the Medalla Testnet Incident in 2020, that had a bug sneaking into Prysm’s client.
How can we prevent an incident from damaging the whole network?
To help with Client Diversity, we the Stereum team, decided to release a weekly infograph that can give you an estimation about the distribution of mainnet production clients. You, as a User, can use this to set up another validator using on of the less popular clients to contribute directly to client diversity and health of the network . You can also collect your own data – using the network.
How did we get our data?
For evaluating client distribution we use the Nimbus client with Stereum Ethereum Node Setup, it’s easy to install by following the guidelines at https://stereum.net/ethereum-node-setup/.
The dashboard is active after the start and visualizes the metrics of Nimbus (compiled with -d:libp2p_agents_metrics -d:KnownLibP2PAgents=nimbus,lighthouse,lodestar,prysm,teku) using Prometheus.
The numbers reflect active and “good” nodes, not only connection attempts. The published numbers are the result of one node using one of the 5 clients on the network dedicated to collecting this data. While it is hard to give a specific error range, we are certain, that our published numbers should give you an estimation about the weekly Ethereum main net production client distribution.
For our graph we gather the number of responding nodes over one week (From Friday to Friday), take the average and round the number up for better visualization & publish them every Friday. We’d love to see other people’s results to compare numbers!