[Engine] Support Hotstuff Consensus Protocol [PODC 2019]
HotStuff is a highly influential and widely studied consensus protocol in academia. A basic implementation of HotStuff is available in the following branch: https://github.com/apache/incubator-resilientdb/tree/hotstuff
However, to build a fully resilient HotStuff implementation, several additional mechanisms are required. In the current version, the protocol progresses solely based on messages received — that is, replicas advance to the next round upon receiving either a valid proposal or a sufficient number of valid Vote messages.
To improve robustness, the following recovery mechanisms should be implemented:
-
Timeout mechanism — allows replicas to advance to the next view if no valid messages are received before a specified timeout period.
-
Catch-up mechanism — enables a replica to fetch missing proposals or transactions from other replicas when it receives a quorum certificate (QC) for a proposal it has not yet received.
-
(Optional) View synchronization mechanism — as described in Lewis Pye’s work , which ensures progress and coordination across replicas under adverse network conditions.