Eth 2.0

Presentation by @protolambda

Consensus state-machine

& executable specs

Taipei meetup 29 Apr. '19

Eth 2.0

Quick recap

GitHub

ETH 2.0 Spec-development timeline

(2019 only)

Eth 2.0

Spec components

Eth 1.0

Full-node

Eth 2.0 - phase 0

Beacon-node

Eth 2.0 - phase 1

Shards! Data availability!

Eth 2.0 - phase 2

Contracts!

Consensus state-machine, executable spec

@protolambda (EF Research)

Networking and libp2p

Kevin (Trinity)

Eth 2.0

"consensus state-machine"

How do you define a spec?

Valid block identity in Ethereum 1.0:

Example:

The academically verbose (but beautiful) way:

What characterizes the current Eth 2 spec wording:

  • Block transition

 

  • Slot transition

 

  • Epoch transition

Quick walkthrough:

what happens here?

Eth 2.0

Executable spec

"Pyspec"

The first exec-spec:

run build_spec.py:

core/0_beacon-chain.md

eth2spec/phase0/spec.py

make -B pyspec

What you can do with:

Pytests

Test-generation

Clients can check if they match the spec, literally.

v0.6.0 introduces new tests:

ZRNT

minimal "ZehRehNehTy"

a.k.a. Serenity

Exec. Go Spec

Some history:

Conceptually complete, but lots of lurking bugs...

Mini project:

convert bounty work in quality pyspec alternative

Result:

Keep it up to date with

Make sure *all* the generated tests are correct

Extreme example:

Cross-reference, find bugs!

Pyspec

ZRNT

- Coverage; find bugs + test better

- Benchmark: go-spec is fast, no set operations, minimal memory allocations

- Fast enough for fuzzing

- counterpart for differential fuzzing

Eth 2.0

Future of exec. specs

Pyspec

- more testing

- more test-generation

- compare against clients / ZRNT

ZRNT

A new Go client?

Phase 2, to be integrated

Questions?

Thanks!

@protolambda

eth2-state-machine

By protoslides

eth2-state-machine

  • 838