Skip to content
HagarMeir edited this page May 21, 2019 · 38 revisions

Byzantine Fault Tolerant Replicated State Machine library

Consensus is the controller. It receives clients' requests, calls a Timeouter on each request and keeps it in the RequestPool. If the current View indicates that this process is the leader then the Consensus batches requests with the Batcher, making sure first to check if the VerificationSequence has changed and if so it verifies each request. Then with the help of the Assembler it builds a new Proposal which is then proposed to the current view.

The View runs all three phases of the normal path, prePrepare, prepare, and commit. If it finished successfully it delivers the decision by calling the Decider. The View and the Timeouter may complain to the ViewChanger by sending a view change message.

The ViewChanger runs the view change protocol and informs the Consensus about the new view. The Consensus then aborts the current View and uses the ViewBuilder to start a new one.

The Synchronizer is used for replication when a node is behind. It is called by the View when it suspects that something is wrong.

Clone this wiki locally