09 Mar 2026
This post gives a general overview of BFT protocols with 2-round finality. I was digging into this topic last weekend since there is not a good post explaining why they need $n\ge5f+1$ and ChatGPT cannot explain it to me (so AI cannot replace us…yet). I hope this post can clear out some common questions on this topic so that people don’t need to go through all the thinkings I did :). This post is not perfect (since I just learned about the topic as well), so if you have any question or suggestions, feel free to submit PRs or issues. In this blog, we focus on protocols with all-to-all communication, but the same argument should apply to protocols with one-to-all communication.
Traditional BFT consensus protocols (e.g., PBFT, Tendermint, …) require at least 3 rounds of communication to commit a block:
This contrasts with CFT consensus protocols (e.g., Raft), where proposals can be committed in 2 rounds of communication. The extra round exists mainly because, unlike in CFT, a Byzantine leader can send different proposals to different followers. This means a follower cannot blindly commit what the leader proposes: they need to validate with each other to ensure that they all commit the same block.
Because 3-round finality incurs an extra message delay to commit a block, an immediate question is if 2-round finality is possible in BFT so that we experience the same latency as in CFT. The answer is yes, but at a stronger assumption of $n\ge5f+1$.
BFT consensus with 2-round finality generally work as follows:
If a validator observes a quorum ($Q_c$) of votes for a proposal, the proposal is considered committed and the validator will advance to the next view; Otherwise, it will send a timeout message that includes the most recent vote it casts. Upon receiving a quorum ($Q_t$) of timeout messages, it will also advance to the next round. To ensure safety, the leader of the new round needs to propose the same block if it observes a timeout quorum from the previous round and sufficiently many ($\ge I$) timeout messages in the quorum voted for the same block from the previous round. Similarly, the followers can only vote for this block in the new round. The basic intuition is that, if some validator commits in the previous round, the leader needs to propose the same block so that other validators will also commit on that block. Notice: it is possible that no correct node commits on this block, but it does not violate safety:
One special case is that, in a single view, two correct validators may observe different timeout quorums, each with $I$ votes for different proposals. This could happen if, in the previous round, a malicious leader proposes two different blocks, equivocating correct validators. For liveness, we cannot force these correct validators to vote for different blocks since they will never be able to form a commit quorum. Therefore, when proposing a new block, the leader will also include the commit quorum or the timeout quorum from the previous view. With this design, suppose the leader observes a timeout quorum with $I$ votes for block $A$ and a follower observes a timeout quorum with $I$ votes for block $B$, the leader will propose $A$ again with $I$ votes from previous round for $A$. The follower, upon receiving the proposal, will notice that there exists both $I$ votes for $A$ and $I$ votes for $B$. This information should be able to prove that no correct validator can commit on $A$ or $B$ in the previous round, so the follower is free to vote for either.
Unlike traditional BFT consensus that requires $n\ge3f+1$, consensus with 2-round finality has a stronger assumption of $n\ge5f+1$. To arrive at this bound, we first derive some requirements that $Q_c$, $Q_t$, and $I$ should satisfy.
First of all, for basic liveness, we should have
Second, if at least $I$ votes for the same block $A$ exists in a timeout quorum, it is possible that a correct validator commits on $A$. To get the threshold value $I$, we consider the extreme case: all nodes not in the timeout quorum are correct and voted for $A$, all $I$ nodes in the timeout quorum voted for node $A$ are correct, and $f$ Byzantine nodes voted for $A$, and they together forms a commit quorum:
Lastly, if a validator observes $I$ votes for block $A$ and $I$ votes for block $B$, it will know that no commit quorum can be formed in the view. Note that this is equivalent to saying that $I$ votes for block $A$ guarantees that no quorum can be formed for blocks other than $A$. Therefore,
Plug in $I$
Applying the bounds on $Q_c$ and $Q_t$
Note that this bound is achieved when $Q_c=Q_t=n-f$. In this case, $I=n-3f$.
Minimmit is a recent BFT protocol with all-to-all communication and 2-round finality (commits in 1 RTT). Instead of introducing a slow fallback path when $5f+1$ fails, it lets validators proceed to the next view with only $2f+1$ votes. Why is this beneficial? In a WAN network, the latency distribution between each pair of validators will have a long tail. This means that waiting for 80% of the votes will take over 100 ms longer than waiting for only 40% of the votes. In fact, in the paper, by advancing view after receiving 40% of votes, Minimmit achieves 25% lower view latency compared with Simplex (which requires 67% of votes). While it cannot help with latency to finality, the reduced view change latency allows concurrent views, which directly translates to increased throughput.
The basic intuition is the same as before: if there exists $I=n-3f$ (or $I=2f+1$ when $n=5f+1$) votes for block $A$, then no other blocks can receive $Q_c=n-f$ votes. The paper refers to a commit quorum of $Q_c$ votes as L-notarisation, a small quorum of $I$ votes as M-notarisation, and a timeout quorum of $I$ votes as nullification. The paper uses $Q_t=I$ instead of $Q_t=n-f$, under the premise that a timeout (nullify) message will only be sent if
This ensures that, if a commit quorum (L-notarisation) is formed before timeout, no timeout quorums can be formed. Finally, validators only vote for block $B$ in view $v$ that extends from block $B’$ proposed in view $v’$ if they have seen a notarisation for $B’$ and all views between $v’$ and $v$ times out. This ensures safety: no blocks other than $B’$ could have been committed in round $v’$ and no blocks (including $B’$) could have been committed in rounds between $v’$ and $v$.