Byzantine Fault Tolerance (BFT) is a mechanism used in computer and blockchain systems to ensure that the system can tolerate any number of failures of components.
The Byzantine Generals Problem is a thought experiment first presented by Lamport, Shostak, and Pease in 1982. The problem explains the difficulty of reaching consensus in a distributed computing system when some distributed processes may fail or perform incorrectly.
For example, imagine a group of generals trying to decide whether or not to attack an enemy city. The generals have spread out far away from each other and can only communicate with each other via courier. For the attack to be successful, all the generals must agree on whether or not to attack (i.e., reach a consensus).
However, one or more of the generals may be traitors who will try to prevent the loyal generals from reaching a consensus!
Byzantine Fault Tolerance is named after this problem. An attacker attempts to prevent a group from reaching a consensus by sending conflicting messages to different parties in the group. BFT mechanisms ensure that even if some processes fail, the correct processes will still agree on a single value.