Reputation: 111
I am studying practical byzantine fault tolerance. In both prepare and commit phases, all the replicas broadcast their messages to all the replicas, including themselves. Why is that important? Does the broadcasting guarantees all the non-faulty nodes know what each other decides in order to exclude incorrect nodes?
Upvotes: 1
Views: 83
Reputation: 173
The reason why replicas broadcast is to verify the message sent from possibly Byzantine faulty leader in pre-prepare phase. Correct replicas need to exchange the message because faulty leader might send different messages to different replicas, which results in inconsistent state(i.e violating safety property)
Let's assume leader is Byzantine faulty. In pre-prepare phase, leader assigns a different sequence number to given same request sent from client. And leader broadcast <PRE-PREPARE>
message to all replicas. Here correct replicas doesn't simply believe <PRE-PREPARE>
message is exactly same among all replicas, so they check if received message is same or not by broadcasting the message. After broadcasting, replicas have knowledge of the fact that received message from the leader is same among correct replicas if a correct replica gathers matching 2f+1 number of <PRE-PREPARE>
.
So why they broadcast? Why is that important? Because deciding on a message sent from single source can break the safety property(i.e. consistency among correct replicas) under the network that allows Byzantine faulty leader. They exchange the message so that they ensure same state among correct replicas after reaching on consensus.
Upvotes: 1