There are many Ethereum testnets available for experimenting with smart contracts and deploying decentralised applications before going live on the main Ethereum network. However, there is no testnet available that is both widely usable across all client implementations, and robust enough to guarantee consistent availability and high reliability.

Existing Public Testnets

Olympic used to be the chain " 0 ", the public Ethereum testnet prior to the public Frontier launch of the Ethereum main network. The Ethereum genesis block was templated based on block #1028201 of the Olympic network. This network was retired soon after the Frontier launch.

Morden was introduced as the new public proof-of-work testnet which was launched with the Frontier release of the Ethereum public main network. The Ethereum community abandoned it due to issues with the Spurious Dragon testing efforts. However, it is still used by the Ethereum Classic community, also known as Morden Classic.

Ropsten was the last public proof-of-work testnet and as of today, the last testnet that is available across different client implementations. It's the network with specifications closest to the Ethereum main network. It is mostly abandoned due to stability issues but still kept alive as this is the only way to test contracts and dapps on both Geth and Parity Ethereum.

Kovan is the first proof-of-authority testnet launched as a response to the Ropsten spam attacks. A consortium of developers and service providers stepped up to utilise Parity's Aura proof-of-authority engine to run a testnet.

Rinkeby was the second proof-of-authority network, also launched in response to the Ropsten spam attacks. However, instead of Aura, it's using Geth's Clique proof-of-authority engine which differs in its specification.

Many other public Ethereum testnets with various specifications are available, i.e., the Sokol testnet, however, none of them are available across different clients while also being highly available and robust.

As of today, only Geth implemented Clique and only Parity Ethereum implemented Aura. To run a cross-client testnet, users have to rely on the Ropsten proof-of-work network. However, proof-of-work mining on networks bearing no value is hard to be incentivised and the resulting low hash rates enable potential attackers to take over the network easily.

The Görli Testnet Proposal

Now, that EIP-1011, the hybrid Casper proof-of-work/proof-of-stake testnet idea has been abandoned by latest Ethereum research, Görli could be the next-generation public Ethereum test network.

We hereby propose,

sufficiently specifying a proof-of-authority engine, such as Aura or Clique, in an EIP, to implement one or multiple of these engines across different clients, such as Geth and Parity Ethereum, and to bootstrap a new simplistic Görli proof-of-authority testnet based on the available implementations that mimics main network conditions.

Outlook and Roadmap

The ChainSafe team started working on an Aura port to Geth at the #ETHBerlin hackathon and suggests also porting Clique to Parity Ethereum. This is not a political proposal to favour one technology over another; it's rather the desire to enable developers with as many diverse tools as possible.

The Aura EIP is being drafted on Github. What's missing is details on the Aura chain-score rules, how the seals are composed, and how finality works. Currently, Aidan and myself are working on the EIP with the help of the Parity Ethereum team.

A basic Aura engine is prepared in this repository on Github. While the work on the integration of the engine and the testnet configuration is done, significant amounts of work still have to be done in the actual implementation of the Aura consensus mechanism. Currently, Elizabeth, David, Dustin, and Tim are working on this but would appreciate help from engineers more confident with writing consensus-critical code in the Go-Ethereum code-base.

Parity Ethereum supports Aura by default, a working chain-spec for a pre-testnet is available here. Two validator nodes and bootnodes are prepared to enable seamless integration with Geth nodes.

All hands on deck!

There's still a lot to be done. Here's how you can help:

Join the chat on Gitter: gitter.im/goerli/testnet

Run a node: github.com/goerli/testnet

Report to the dashboard: ethstats.goerli.ethberl.in

Help with the Aura spec: eip-aura.md, gitter.im/goerli/eip-aura

Help with the Go implementation: go-ethereum-aura/tree/aura-dev, gitter.im/goerli/geth-aura

Acknowledgements

Thanks to MP and the #ETHBerlin team for hosting us at the most amazing hackathon in the world.

Thanks to Tomasz, André, and Thibaut from Parity Ethereum helping with analysing the Authority Round specification.

Thanks to Martin from the Ethereum Foundation for helping us with the Golang implementation and debugging our code all night.

Thanks to Kirill and Parity Ethereum to provide us with a node Dashboard.

Thanks to Aidan and the ChainSafe team to kick this off.