Byzantine Generals Problem (BGP)

Byzantine Generals’ Problem is defined as a situation where spread out units need to coordinate their behavior or action but cannot trust each other to get organized.

Byzantine describes the Byzantine Empire, this was the eastern part of Europe controlled by the Roman Empire from approximately 330 AD to 1453 AD.

Byzantine Generals’ Problem is a made up, historical situation where multiple generals and their individual armies have surrounded a city to attack it. The majority of the generals must somehow coordinate a decision to either attack or retreat at the same time, otherwise the situation will end in a major failure.

Byzantine Generals Problem Image

The main problem preventing coordinated action is low trust. Reasons for low trust may include:

  • The generals are far enough apart that they cannot communicate directly or even see each other, so they must trust their messengers to deliver messages.
  • One or more generals may be a traitor and could send false messages to the other generals.
  • One or more messengers may be a traitor and could send false messages to the other generals.
  • The enemy city may catch a messenger and send false messages.

This Byzantine Generals Problem is commonly brought up when talking about cryptocurrencies. The digital record, known as the blockchain, must verify and record identical information simultaneously across many thousands of computers and none of the computers can be trusted as a reliable source.

Bitcoin provided a unique solution to this problem known as mining:

  1. All computers verify the maximum number of transactions that can be stored at one time.
  2. The computers then compete to solve a very complicated math problem. Their motivation is a reward in bitcoin.
  3. The first computer to solve the problem would not only be rewarded, they would also record the transactions into the blockchain. Included in this recording is proof that they solved the math problem.
  4. Now the winning computer sends out their updated blockchain to the other computers.
  5. The other computers quickly and easily verify that the math problem was solved and also verify/update their recordings.
  6. The process repeats and all computers are again trying to solve the math problem.