Doubt regarding reaching consensus in Byzantine Fault Tolerance algorithm

by Saumya Bhatt   Last Updated July 11, 2019 07:27 AM - source

This is a bit long question but please stay with me on this.It's a humble request

Say there are 3 generals: P1, P2, P3, P4, P5, P6, P7

Let P1 act as the commander and is faulty in nature. It sends the value 0 to P2, P3, P4 and 1 to P5, P6, P7. Adding it's unique ID to the message ( 1 as in case of P1), The message distribution is as follows:

P2 received message (0,1)

P3 received message (0,1)

P4 received message (0,1)

P5 received message (1,1)

P6 received message (1,1)

P7 received message (1,1)

This was the end of round 0. But since m (faulty characters) = 1; we have to go through another round of message exchange, this time between the generals P2, P3, P4, P5, P6, P7. Again, each general append their own unique ID to their message and since the general cannot send message to themselves, the message collection at the end of round 1 is as follows:

P2 = {(0,13),(0,14),(1,15),(1,16),(1,17)}

P3 = {(0,12),(0,14),(1,15),(1,16),(1,17)}

P4 = {(0,12),(0,13),(1,15),(1,16),(1,17)}

P5 = {(0,12),(0,13),(0,14),(1,16),(1,17)}

P6 = {(0,12),(0,13),(0,14),(1,15),(1,17)}

P7 = {(0,12),(0,13),(0,14),(1,15),(1,16)}

Now taking the majority of the value for each general, we get it as:

P2 has majority value: 1

P3 has majority value: 1

P4 has majority value: 1

P5 has majority value: 0

P6 has majority value: 0

P7 has majority value: 0

But now, the majority is divided as half the generals P1,P2,P3 agree to 1 while the other half P4,P5,P6 agree to 0. Thus the consensus isn't reached

What am I missing here?

Your help would be greatly appriciated! Thanks!

Also, if this may be the wrong platform to ask this query, do suggest me where should I post it. Thanks!

Related Questions

How to detect a consensus is BFT or not?

Updated July 04, 2019 11:27 AM

BFT-based consensus vs chain-based consensus

Updated December 06, 2017 16:27 PM