Skip to content

Commit 3d452f5

Browse files
committed
docs: second round of improvements
1 parent f56be42 commit 3d452f5

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

docs/slots_and_intervals.md

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ After importing a block, all validators [recompute their head](./lmd_ghost.md),
4545
the latest [finalized and justified checkpoints](./3sf_mini.md) according to the block's
4646
post-state.
4747

48-
A block body carries at most
49-
`MAX_ATTESTATIONS_DATA` aggregated attestations: distinct `(slot, head, target, source)` tuples, each paired with a
50-
bitfield naming the validators bound to it.
48+
A block body carries at most `MAX_ATTESTATIONS_DATA` aggregated attestations: distinct
49+
`(slot, head, target, source)` tuples, each paired with a bitfield naming the validators
50+
bound to it.
5151
Genesis occupies slot 0, so proposals start at slot 1, and nothing forces a slot to be
5252
filled: a proposer that is offline or too slow leaves an empty slot, and the next block
5353
simply points its parent root at an older block.
@@ -77,10 +77,10 @@ Aggregators aggregate the votes they have received and gossip the resulting aggr
7777
attestations to the network. These aggregated attestations are imported by all validators,
7878
who verify and store them in a "new attestations buffer".
7979

80-
Aggregation earns its own interval because it is the heaviest recurring computation in the
81-
client: collapsing a subnet's worth of them
82-
into one proof is heavy CPU work. It is also what makes a block affordable, since a block
83-
carrying raw votes would need one full XMSS signature per voter, quickly going over the network bandwidth limit.
80+
Aggregation earns its own interval because collapsing a subnet's worth of XMSS signatures
81+
into one proof is the heaviest recurring computation in the client. It is also what makes a
82+
block affordable, since a block carrying raw votes would need one full XMSS signature per
83+
voter, quickly going over the network bandwidth limit.
8484

8585
> **In ethlambda:** the proofs run on an off-thread worker so the blockchain actor's
8686
> message loop stays responsive, and a session may start up to `EARLY_AGGREGATION_WINDOW`
@@ -94,7 +94,8 @@ Validators compute the [safe target](./lmd_ghost.md#safe-target-selection) they'
9494
deciding which finality vote to cast on the next slot. The safe target is computed based on
9595
the votes received in the current slot.
9696

97-
It is LMD-GHOST run with a two-thirds weight threshold instead of a plain majority, so it
97+
It is LMD-GHOST again, but run over just the votes that arrived this slot and with a
98+
two-thirds weight threshold, where head selection applies none. The safe target therefore
9899
sits at or behind the head and advances only once a branch is backed by a supermajority.
99100
Deriving targets from it is what stops [3SF-mini](./3sf_mini.md) from justifying a branch
100101
the network has not visibly converged on.
@@ -105,6 +106,8 @@ Validators merge the aggregated attestations they have in their "new attestation
105106
into their fork-choice view, and recompute their head.
106107

107108
This is the slot's second and last promotion point; the first is the proposer's, just
108-
before it builds. Between promotions a vote sits in the buffer without weight, which is
109-
what keeps a validator's fork-choice view from shifting under it mid-slot. See
110-
[why staged promotion](./lmd_ghost.md#why-staged-promotion) for the reasoning.
109+
before it builds. Until a vote is promoted it carries no weight in head selection, which is
110+
what keeps a validator's fork-choice view from shifting under it mid-slot. The safe target
111+
is the exception: it reads the unpromoted buffer directly, which is how it stays a view of
112+
this slot alone. See [why staged promotion](./lmd_ghost.md#why-staged-promotion) for the
113+
reasoning.

0 commit comments

Comments
 (0)