1 of 57

beacon chain mistakes

how we messed up

2 of 57

3 of 57

part 1—painful today

part 2—painful in the future

4 of 57

part 1—painful today

part 2—painful in the future

5 of 57

max effective balance

no needed for danksharding

32 ETH validators

6 of 57

max effective balance

no needed for danksharding

unnecessary friction

32 ETH validators

7 of 57

max effective balance

no needed for danksharding

unnecessary friction

32 ETH validators

too many validators

8 of 57

max effective balance

no needed for danksharding

unnecessary friction

32 ETH validators

too many validators

suboptimal

compounding

9 of 57

max effective balance

no needed for danksharding

unnecessary friction

32 ETH validators

too many validators

suboptimal

compounding

no max balance

10 of 57

max effective balance—too many validators

too many validators

unnecessary client load

11 of 57

max effective balance—too many validators

too many validators

unnecessary client load

harder ePBS

12 of 57

max effective balance—too many validators

too many validators

unnecessary client load

harder ePBS

harder SSF

13 of 57

max effective balance—too many validators

too many validators

unnecessary client load

harder ePBS

harder SSF

longer slot time

14 of 57

max effective balance—suboptimal compounding

suboptimal

compounding

unfairness

15 of 57

max effective balance—suboptimal compounding

suboptimal

compounding

unfairness

long

withdrawal queue

16 of 57

committee index

worse signature aggregation

committee index

17 of 57

committee index

worse signature aggregation

committee index

less efficient

light clients

18 of 57

committee index

worse signature aggregation

committee index

less efficient

light clients

no committee index

19 of 57

0x00 withdrawal credentials

unnecessary friction

0x00 credentials

20 of 57

0x00 withdrawal credentials

unnecessary friction

0x00 credentials

useless

technical debt

21 of 57

0x00 withdrawal credentials

unnecessary friction

0x00 credentials

useless

technical debt

0x01 credentials

22 of 57

proposer rewards

unnecessary variance

proposer rewards

proposer penalties

23 of 57

proposer rewards

unnecessary variance

proposer rewards

pooling incentive

proposer penalties

24 of 57

proposer rewards

unnecessary variance

proposer rewards

pooling incentive

harder

stake capping

proposer penalties

25 of 57

issuance curve

constant

2x too large

square root issuance

26 of 57

issuance curve

constant

2x too large

square root issuance

no stake capping

27 of 57

issuance curve

constant

2x too large

square root issuance

no stake capping

no stake lowerbound

28 of 57

issuance curve

constant

2x too large

square root issuance

no stake capping

no stake lowerbound

cotangent

29 of 57

fork choice bugs

mainnet

liveness issues

fork choice bugs

30 of 57

fork choice bugs

mainnet

liveness issues

fork choice bugs

cat and mouse

31 of 57

fork choice bugs

mainnet

liveness issues

fork choice bugs

cat and mouse

not a great look

32 of 57

fork choice bugs

mainnet

liveness issues

fork choice bugs

cat and mouse

not a great look

provably secure fork choice

33 of 57

ejection balance

0.2% zombie validators

16 ETH ejection balance

34 of 57

ejection balance

0.2% zombie validators

16 ETH ejection balance

unnecessarily harsh

35 of 57

ejection balance

0.2% zombie validators

16 ETH ejection balance

unnecessarily harsh

inflexible

36 of 57

ejection balance

0.2% zombie validators

16 ETH ejection balance

unnecessarily harsh

inflexible

faster ejections

37 of 57

effective balance

1 ETH balance increments

unnecessary complexity

38 of 57

effective balance

1 ETH balance increments

unnecessary complexity

suboptimal compounding

39 of 57

effective balance

1 ETH balance increments

unnecessary complexity

suboptimal compounding

1 Gwei balance increments

40 of 57

slot boundaries

misaligned slot boundaries

arbitrary and unpolished

41 of 57

slot boundaries

misaligned slot boundaries

arbitrary and unpolished

aligned slot boundaries

42 of 57

part 1—painful today

part 2—painful in the future

43 of 57

slot duration

incompatible

with SSF?

12sec slot duration

44 of 57

slot duration

incompatible

with SSF?

12sec slot duration

incompatible

with ePBS?

45 of 57

slot duration

incompatible

with SSF?

12sec slot duration

incompatible

with ePBS?

larger slot duration

46 of 57

sync committees

not much adoption today

sync committees

47 of 57

sync committees

not much adoption today

sync committees

long-term unnecessary

48 of 57

sync committees

not much adoption today

sync committees

long-term unnecessary

SNARKed beacon chain

49 of 57

uncapped penalties

no trustless RocketPool

uncapped penalties

50 of 57

uncapped penalties

no trustless RocketPool

uncapped penalties

capped penalties

51 of 57

deposit contract gas usage

no deposit

gas padding

varies with

Merkle position

52 of 57

deposit contract gas usage

no deposit

gas padding

varies with

Merkle position

not proportional to stake

53 of 57

deposit contract gas usage

no deposit

gas padding

varies with

Merkle position

not proportional to stake

deposit gas padding

54 of 57

BLS signatures

not quantum secure

BLS signatures

55 of 57

BLS signatures

not quantum secure

BLS signatures

post-quantum signatures

56 of 57

thank you :)

justin@ethereum.org

57 of 57

beacon chain mistakes

mistakes in hindsight

  • 32 ETH max effective balance
  • suboptimal issuance curve
  • 0x00 withdrawal credentials
  • high-variance rewards
  • committee index
  • 16 ETH ejection balance too low
  • fork choice rule bugs
  • minimum slashing penalties
  • parent block roots don't cover the signature
  • deposit contract lack of fairness
  • misaligned slot boundaries
  • effective balance

dev pain

  • endianness
  • shuffling
  • SSZ

things we may regret

  • non-updatable withdrawal credentials
    • enables Lido and EigenLayer
  • 12-sec slot durations
    • likely not compatible with SSF
  • uncapped penalties
    • would have made RP-style LSTs better

technical debt

  • Eth1 data votes and voting period latency

long-term unnecessary

  • sync committees

long-term bad

  • SHA256 not SNARK friendly
  • beacon chain not SNARK friendly
  • BLS not quantum secure