The byzantine generals and modern distributed systems

A moving story about a city siege and the difficulties of communication in modern distributed systems

Rosario De Chiara
Coinmonks
Published in
3 min readApr 1, 2022

--

Photo by Tim Schmidbauer on Unsplash

A historical digression

Once known as Byzantium at the time of classical antiquity, Constantinople has been subjected to many sieges (so many that their list has its own page on Wikipedia!). The generals surrounding the city had the problem of deciding to whether attack or not. To reach a consensus about whether to attack or not, generals can exchange messages and must cope with the problem of possible traitors among them. This kind of (fictional) scenario has been elected as the paradigm of the possible weakness of distributed systems like a blockchain: blockchain evolves its state only when it reaches the consensus on the next block to be added and this consensus must be reached considering failing nodes, sketchy nodes injecting fake messages and slow network: this is a Byzantine fault scenario.

Communication in the wild internet

“Distributed systems” is just the name we give to components deployed in a way where the communication channels connected them are (partially) outside your jurisdiction: this means: you cannot rely on who will propagate your messages, you can assume somebody may eavesdrop on them, it might happen that some malicious agent will inject bad messages into your traffic, etc…

Of course, this generic scenario applies to any communication on the internet, so this is something that engineers and computer scientists learned to cope with for ages. The interesting thing is that this inherently unreliable way of communicating is exactly the same the generals in the example above had to cope.

In [1] the authors present the Byzantine generals and their communication problems as a paradigm for distributed systems and also provide some approaches to let them cooperate and coordinate their efforts in the modern era internet. This is so much important that the expression byzantine fault refers to the failure in a distributed system caused by imperfect communication.

The blockchain and the generals

One of the most disruptive approaches in designing distributed systems is the blockchain which has the purpose of representing value by the means of a distributed database of transactions: such an approach must take into account byzantine failures and how to rely on them in the process of synchronizing the copies of the database while allowing each of the nodes to (potentially) add more transactions, the purpose is to reach the Byzantine fault tolerance (BFT) (see? still the generals).

Different algorithms can be used to achieve the BFT, and the same blockchain can be deployed having different BFT algorithms.

A good starting point to study them can be Hyperledger Sawtooth which can run a variety of consensus algorithms, including Practical Byzantine Fault Tolerance (PBFT) and Proof of Elapsed Time (PoET), letting the user craft the performances of the blockchain in the most suitable way depending on the specific requirements.

Check this post of mine on the Logrocket blog for more an in-depth discussion of different algorithms and some tests: Hyperledger Sawtooth: A gentle introduction

References

  1. Leslie Lamport, Robert Shostak, and Marshall Pease. 1982. The Byzantine Generals Problem. ACM Trans. Program. Lang. Syst. 4, 3 (July 1982), 382–401. DOI:https://doi.org/10.1145/357172.357176

Join Coinmonks Telegram Channel and Youtube Channel learn about crypto trading and investing

Also, Read

--

--

Rosario De Chiara
Coinmonks

Distributed Ledger Surfer, Data Masseur, Distributed Systems Sculptor, and Scalability Evangelist