Image for post
Image for post
(Photo Credit: Claudio Galamini)

Schlesi is Dead, Long Live Witti!

When I first saw the name Schlesi mentioned in the news I wasn’t sure how to pronounce it. It took me a few attempts to learn how to spell it. I wasn’t exactly sure what it was, but I quickly found out: a multi-client testnet for Ethereum 2.0. And now, having nobly served its purpose, it’s dead.

All drama aside, Schlesi satisfied an important milestone in the Ethereum 2.0 roadmap: successfully launching a public multi-client testnet. In this article I’m going to talk about the Schlesi testnet and its successor, Witti.

Some Important Definitions

Before we go any further let’s explore some common definitions so we are all on the same page.

What is a testnet?
A testnet is an alternate network used for testing that reflects the conditions of a target production network as closely as possible. Users or clients planning to use the production network can test their software against the testnet to ensure they don’t have any bugs. Testnets are important because they help expose bugs before they make it into production.

What is an Ethereum 2.0 testnet?
The first phase of Ethereum 2.0, phase 0, delivers the Beacon Chain. Here is a nice description of the Beacon Chain from Ben Edgington back in October 2018:

In order to test the Beacon Chain, we need to run it and connect to it with one or more clients. An Ethereum 2.0 testnet is an instance of the phase 0 Beacon Chain running in a test environment. An example of a currently running (single-client) Beacon Chain testnet is Prysmatic Labs’ successful Topaz Testnet.

What is a multi-client testnet?
A multi-client testnet has multiple clients from different developers connecting to it at the same time. Schlesi and Witti are multi-client testnets. It is a challenging undertaking because each client has different characteristics, bugs, and configurations. Most clients start with their own private single-client testnet first before migrating to a multi-client testnet. Multi-client testnets are useful to expose bugs that relate to multiple clients running simultaneously against a testnet. From a FAQ by Afri Schoedon:

What happens when an Ethereum 2.0 testnet is forked?
The Ethereum 2.0 Beacon Chain is a Proof of Stake (PoS) blockchain. Validators act upon the chain to validate blocks of transactions. Blocks in lots of roughly 100 are confirmed on the chain when 2/3 of the validators agree (attest) to the validity of the blocks. This is known as reaching finality and when that happens the blocks and their transactions are permanently written to the blockchain. When the blockchain is unable to reach finality it becomes unstable and forks can occur. A fork happens when different validators propose competing blocks. This is what happened to Schlesi as we’ll see below.

Multi-client Testnet History

Now that we have explored some common definitions let’s move on with some Ethereum 2.0 multi-client testnet history.

Schlesi was not the first multi-client testnet. A previous iteration simply named ‘multinet’ was committed on October 24, 2019 (GitHub). It was configured for multiple clients: Nimbus, Trinity, Lighthouse, Prysm, Lodestar, and Artemis (now known as Teku). Notably it was more of a simulated multi-client testnet. Afri Schoedon explains:

Moving forward to early March 2020, according to minutes from a developer call, Ethereum Foundation researcher Danny Ryan expressed a desire to get “multi-client testnet efforts to kick off”. And so, enter Schlesi.

Named after the Schlesisches Tor train station in Berlin, Germany, the Schlesi multi-client testnet genesis event was on April 27, 2020, as announced by Ethereum developer, Afri Schoedon.

Schlesi targeted the Ethereum 2.0 v0.11.1 and v0.11.2 specs during its lifetime. An earlier version targeting v0.10 destabilized and was discontinued.

After launching with an even split of validators between Ethereum 2.0 clients Lighthouse and Prysm, Schlesi successfully onboarded Teku as well. Nimbus and Lodestar were further behind but were catching up.

Then on May 17, Afri Schoedon announced that the testnet was forked.

Source: Twitter.com

Despite a relatively short run, Schlesi presented opportunities to organize documentation, configuration and bootstrapping, and simultaneously onboard multiple clients. Members of the public (including myself) were able to stand up nodes to sync against the beacon chain and stake Göerli testnet ETH as validators. Developers were pleasantly surprised with how long Schlesi ran and client teams were recognized for quickly fixing bugs in their implementations. Overall it was a successful outcome.

So what caused Schlesi to ultimately fail? The root cause analysis is summed up beautifully in an update by Ivan Martinez of Prysmatic Labs:

And thus Schlesi is dead. Long live Witti!

Image for post
Image for post
(Photo Credit: Jan Gympel)

The Witti Multi-client Testnet

Witti is the latest multi-client testnet in development. Its deposit contract was created just hours ago on May 25, 2020 in block 2758066 on the Göerli Testnet Network.

As tradition seems to dictate, Witti was named after a subway station (Wittenbergplatz) in Berlin. According to the GitHub page, Witti will support three Ethereum 2.0 clients at launch: Lighthouse, Prysm, and Teku. Nimbus and Lodestar are listed as WIP.

Ethereum 2.0 v0.11.3 is the target specification for Witti as most clients have implemented or are close to implementing the features/changes in that update. With v0.12 recently released, we can reasonably assume that Witti or a future railroad-station-inspired testnet will incorporate those changes.

While it is not ‘live’ yet, the pieces are coming together quickly. An expected genesis time of May 26, 2020, 9am UTC is listed.

UPDATE (May 27, 2020): Witti went live on May 26, 2020 at 12am UTC. It was live streamed by Afri Schoedon.

Some Final Words

Wrapping up, we will very soon have a brand new Ethereum 2.0 multi-client testnet called Witti. Its predecessor, Schlesi, while no longer running, played an important role in reaching this point.

Personally, I’m tremendously excited to get a node up and running on Witti. Besides assisting the devs with testing, it’s lots of fun, and I encourage everyone to try it. I have authored a step-by-step guide to get started with Prysm on the Topaz testnet (give it a go!) and as soon as Witti is available I will put another guide together based on that.

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 have worked hard for years to make all of this possible. Thank you, all.

Disclaimer (because I’m a noob)

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.

Written by

Passionate about Ethereum and decentralized technology.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store