Design principles
Change little in I*
DC is already a big consensus change. Networking shouldn’t become the critical path.
Minimum viable first
Whatever gets us 4× faster finality. Measure it, then tweak it.
Easy to scale
Fancier things can come later.
Not in I*.
Ben
We can have it all.
Just not all at once.
Here, only the finality gadget
Available chain
Head votes
Finality gadget
Attestations
Four words
Slot
block
0 s
12 s
One block. 12 s today.
Unit
(subround)
votes
aggregate
0 s
4 s
8 s
One committee: 4 s of votes, then 4 s of aggregation.
Round
0 s
96 s
Every validator casts one FG vote. 8 slots, 96 s.
Height
votes for this height
2/3 of stake
What the FG votes on. Justified at 2/3 of stake.
Two properties we may want
Slots
FG votes
Decoupling
FG votes keep their own clock, not the slot’s.
In I*: decoupled in the spec, 8 slots in practice
Locked to the round
h
h+1
With height progress
h
h+1
h+2
round ends
Height progress
A height can finish mid-round, once 2/3 is in.
Nice in I*, needed in J*
Pipelining: 2× to 3×
Today votes use 4 s of every 12 s. Each extra committee adds 4 s.
0 s
4 s
8 s
12 s
16 s
block
next block
1×
today
votes
aggregate
2×
one more
votes
aggregate
3×
one more
votes
aggregate
Shares its 4 s with the block
We go from 32 subrounds to 23.
Bundled attestations: another 2×
EIP-8334: one copy of the data, many signatures.
4 single attestations · 960 B
data
sig + index
data
sig + index
data
sig + index
data
sig + index
One bundle of 4 votes · 552 B
data
sig + index
sig + index
sig + index
sig + index
240 → 138 B
per vote, in a bundle of 4. Bigger bundles approach 104 B.
From 32 slots to 8
2× and 2× make the 4× faster finality we’re after.
Today
6.4 min
Pipelining, 2×
3.2 min
+ bundling, 2×
An 8-slot round, at today’s bytes per segment
96 s
3× and 2×
Headroom, towards the 4-slot stretch goal
64 s
Fancier things, if we want them later
Consolidation
Fast path
Large staker prioritization
Committee self-selection
DC lays the rails.
Three ways to fill the slot
Not decided yet.
votes
aggregation
block
Staggered publishing
0 s
12 s
Aggregates per slot
1,024
Vote timing
honest
Simple for one fork. Tied to the slot.
Multiple committees
0 s
12 s
Aggregates per slot
3,072
Vote timing
enforced
Battle-tested shape. 3× the aggregates.
One aggregation phase
newest
→ next
0 s
12 s
Aggregates per slot
1,024
Vote timing
enforced
Looks like today’s slot. Aggregates span committees.
Prioritization
Blocks and Goldfish votes first. FG votes fit around them.
0 s
4 s
8 s
12 s
We send all FG votes at the start
capacity
block, Goldfish votes
FG votes
Almost no FG votes alongside Goldfish votes
We do it anyway
Independent of the DC spec: no consensus change.
DC doesn’t rely on it
Minimal spec, on standard networking features.
Bundling should be enough
Sukun’s numbers are next.
Properties
From the property doc. Missing one? Let’s add it this week.
Ground rules for I*
Small change
Forward compatible with J*
Marked: the core of the networking layer, from the intro.
Needed in I* and J*
Low fork dependence of bitlists
Fair vote timing
Fair rewards for validators
Fair rewards for proposers
Uses the whole round
Degrades gracefully
Reliable
Nice in I*, needed in J*
Fast progress in good conditions
Enables a safety gadget
Anonymity enhancing
Enables aggregation builders
+ Decoupled from the slot?
+ Yours
properties.md, in ethereum/dc-networking
The setup
A small change
About 4×, from two moves
A few open choices
Next: Sukun
Can FG votes be aggregated in time?
Benchmarks and devnets