Context
This document only covers the logic for processing the votes. It does not discuss the details of how this logic is integrated into the EventHandler.
Protocol Level
Primitives
Flow nodes have a 'staking key' (conventional BLS key)
The Consensus Committee $\mathcal{C}$ is the subset of Flow nodes that run HotStuff
- express their agreement with block proposals through 'HotStuff vote'
- each node has a weight (non-negative integer) assigned to it
- HotStuff a supermajority (strictly more than 2/3 of the total weight) to agree with a block proposal
Notation:
- Let $w_i$ be the weight of consensus node $i$. We denote the total weight of the consensus committee as $W := \sum_{i \in \mathcal{C}} w_i$.
- We denote a set of consensus nodes that agree with a block as $c \sube \mathcal{C}$.
- We define the weight of set $c$ as $\texttt{weight}(c) := \sum_{i\in c} w_i$
The RandomBeacon Committee $\mathcal{R}$ is the subset of Flow nodes that run the Random Beacon
- members have a 'threshold-signature' key share, which they use to sign blocks
- the threshold signature scheme has a threshold value $t$, (currently set to 50%)
- the Random Beacon requires honest signatures shares of strictly more that $t$ of Random Beacon Committee members.
Notation: