changed 3 years ago
Linked with GitHub

Ethereum Protocol Fellowship Update #2.5

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

A hands on attempt at getting a private testnet operational on my own machine, and a short discussion on rollbacks

Playing around with Kurtosis

Using the Kurtosis ETH2 Merge Module I generated the following

  • Exercution Layer and Consensus Layer genesis state
  • A network of ETH1 miners
  • A network of ETH2 beacon + validator clients
  • A transaction spammer
  • A consensus monitor

Once the docker instances are fully running, a eth1 -> eth2 merge eventually occurs.

The consensus monitor has some helpful visualizations

In the graph below one can see the beacon head slot increasing

In the graph below we see something related to cl-client-0-beacon, I assume the step at 16:09 indicates where the merge occured. I will need to spend some time understanding this more thoroughly

Specifiying Rollbacks

How should rollbacks work client-side? Mario suggested the following: abuse the clients fork choice

Fork Choice Specs

The head block root associated with a store is defined as get_head(store). At genesis, let store = get_forkchoice_store(genesis_state)

To execute a rollback, would forcing the client to fork to the genesis state be sufficient?

Whats Next?

So I have a private testnet on my machine. Whats next?

  • We need an eth2 testnet whose genesis state is post merge
  • How do we simulate rollbacks?
  • How do we execute transactions? How do we test replay attacks?
  • Further investigate how rollbacks should occur clientside
  • Talk to ethstaker people about a more 'custom' docker/ansible setup?
Select a repo