Involved parties must agree on a single strategy to avoid complete a complete failure, but some of the involved parties may be corrupt or unreliable. The corrupt/unreliable nodes are called Byzantine nodes and there's no solution to the problem when >= 1/3 nodes are byzantine.
PBFT handles < 1/3 byzantine faults/nodes. Has three phases: "pre-prepare", "prepare", and "commit"
clientsends information to primary node (e.g.
nadirdrops out due to network troubles
(f are adversarial nodes, but how do we know the # of f? maybe assume 1/3?)
PBFT considers consensus but not sybil attacks. I.e. in the generals problem, N byzantine nodes could be the same corrupt general. Nakamoto Consensus handles sybil attacks via requiring block generation ability to be proportional to computational power available through the proof-of-work mechanism (i.e. it's a unique consensus mechanism because it's baked in, but PBFT and many other consensus mechanisms don't have baked in Sybil resistance).
There are however straightforward solutions like using "weighted users"1