changed 3 years ago
Linked with GitHub

Ethereum Protocol Fellowship Update #2

Eitan Seri-Levi, Update #2, November 10, 2022

Theres currently an issue for validators who want to test their setups on a public testnet. Goerli is the only public testnet they can use. Goerli is an old testnet, syncing times can be quite long. Also, public Goerli faucets are hard to come by. Mario Havel proposed an interesting solution: What if we created a ephermeal public testnet, made specifically for validator testnet setups.

Proposal: Testnet for stakers

The following is mostly a summary of Marios proposal

Testnet Specification

A proposed specification for a validator-only testnet

  • A genesis state with predefined, permissioned, validators. This will be the basic validator set needed to achieve block finality
  • A rollback mechanism, which will restart the network at gensis state, probably on some predefined interval

Implementation Challenges

  • Testnet needs to be implemented by all clients
  • Testnet needs to be protected against replay attacks, i.e. transactions from previous network histories
  • Validators joining the network should have a high chance of becoming a block proposer
  • Probably needs to run the network with the same params as mainnet so that stakers on testnet can feel confident when moving to mainnet

Next Steps

After messaging Mario on Discord, he added the following:

  • Prepare a devops setup, create a private testnet:
    • This network should have its own configurable genesis state
    • Potential tools: Kurtosis, EthStaker and Pari
    • Simulate rollbacks by manually deleting the database
    • Test replay attacks

Comments from Discord

Yorick | cryptomanufaktur.io — 11/04/2022

We're discussing https://notes.ethereum.org/@mario-havel/stakers-testnet over on ethstaker Discord. Seeing an ephemeral staking testnet sooner rather than later would be a-ma-zing. For this reason constant reset has my vote. "if testnet ETH runs out" can be handled with a sufficiently large genesis faucet fund that can handle Nx queue depth for the lifetime of the network. No need to be stingy here. 10x or 100x or even 1000x is reasonable, for each faucet. All state resets anyway. "If network doesn't reach finality" can be handled with a sufficiently large genesis validator set. If genesis validator set >= max queue depth / 0.3, we're good. We likely want a size that rivals mainnet anyway. 500k or 1mil validators in the genesis set feels reasonable, so the testnet can also be used to reason about main. In 4 weeks, even if every single validator that is added is abandoned, not enough can be added to cause non-finality.

What can the ethstaker crew do to make this easier on client teams and get this sooner? What's the MVP? What is must-do for client teams, and what could be delegated to a community effort?

Potential Tools

Genesis State Generator

ethereum-genesis-generator is a tool that can help create genesis data. Required configs are specified in a values.env file and are passed to the container. The container will then generate the required information in a /data directory as well as expose it via a proxy listening on localhost:8000

How to create a postmerge testnet

Taken from Yoricks comments on Ethstaker discord

Kurtosis

Kurtosis has an ETH2 merge module

Select a repo