Skip to content

View change

HagarMeir edited this page Sep 25, 2019 · 12 revisions

The view change protocol is inspired by the Synchronization Phase in this BFT-SMaRt paper (illustrated in the attached figure taken from the BFT-SMaRt paper). The view change protocol is comprised of three messages: ViewChange, ViewData, and NewView (Stop, StopData, and Sync in BFT-SMaRt).

The ViewChange message (the first message) is sent to all nodes by some node who suspects the leader is faulty. This message is very lightweight and includes only the next view sequence number. After receiving f+1 ViewChange messages, with the same view sequence number, the receiving node is convinced that at least one correct node is asking for a view change and so it helps it by sending the same ViewChange messages. Once receiving 2f+1 ViewChange messages the nodes will send a ViewData message to the next view's leader.

The ViewData message is similar to the ViewChange message suggested by PBFT. It is signed, as it will serve as proof in the next phase. The message contains the last checkpoint (last decided proposal) and the next proposal, if it exists, with its state (proposed or prepared). However, as opposed to the PBFT ViewChange message, the ViewData message is sent only to the next leader.

The new leader, after receiving 2f+1 ViewData messages, sends a NewView message to all nodes. This message is similar to the NewView message suggested by PBFT. It includes a proof of the validity of the new view, the 2f+1 ViewData signed messages. The nodes check if they need to catch up with the last decision or if they need to agree on the next proposal, all contained in the NewView message.

Clone this wiki locally