Byzantine fault tolerant protocols are algorithms that are robust to arbitrary types of failures in
distributed algorithms. The Byzantine agreement protocol is an essential part of this task. The constant-time quantum version of the Byzantine protocol,
is described below.
Introduction
The
Byzantine Agreement protocol is a protocol in
distributed computing
A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
.
It takes its name from a problem formulated by Lamport, Shostak and Pease in 1982,
which itself is a reference to a historical problem. The Byzantine army was divided into divisions with each division being led by a General with the following properties:
*Each General is either loyal or a traitor to the
Byzantine state.
*All Generals communicate by sending and receiving messages.
*There are only two commands: attack and retreat.
*All loyal Generals should agree on the same plan of action: attack or retreat.
*A small linear fraction of bad Generals should not cause the protocol to fail (less than a
fraction).
(See
for the proof of the impossibility result).
The problem usually is equivalently restated in the form of a commanding General and loyal Lieutenants with the General being either loyal or a traitor and the same for the Lieutenants with the following properties.
*All loyal Lieutenants carry out the same order.
*If the commanding General is loyal, all loyal Lieutenants obey the order that he sends.
*A strictly less than
fraction including the commanding General are traitors.
Byzantine failure and resilience
Failures in an
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
or
protocol can be categorized into three main types:
# A failure to take another execution step in the algorithm: This is usually referred to as a "fail stop" fault.
# A random failure to execute correctly: This is called a "random fault" or "random Byzantine" fault.
# An arbitrary failure where the algorithm fails to execute the steps correctly (usually in a clever way by some adversary to make the whole algorithm fail) which also encompasses the previous two types of faults; this is called a "Byzantine fault".
A Byzantine resilient or
Byzantine fault tolerant protocol or algorithm is an algorithm that is robust to all the kinds of failures mentioned above. For example, given a space shuttle with multiple redundant processors, if the processors give conflicting data, which processors or sets of processors should be believed? The solution can be formulated as a
Byzantine fault tolerant protocol.
Sketch of the algorithm
We will sketch here the asynchronous algorithm
The algorithm works in two phases:
*Phase 1 (Communication phase):
:All messages are sent and received in this round.
:A coin flipping protocol is a procedure that allows two parties A and B that do not trust each other to toss a coin to win a particular object.
There are two types of coin flipping protocols
*
weak coin flipping protocols:
The two players A and B initially start with no inputs and they are to compute some value