No picture
About >
Content >
Authors >
Buy >
Teaching >
Hands-on >
Errata >
Reviews >
Links >
Contact >

Introduction to Reliable and Secure Distributed Programming

About the book

In modern computing a program is usually distributed among several processes. The fundamental challenge when developing reliable and secure distributed programs is to support the cooperation of processes required to execute a common task, even when some of these processes fail. Failures may range from crashes to adversarial attacks by malicious processes.

Cachin, Guerraoui, and Rodrigues present an introductory description of fundamental distributed programming abstractions together with algorithms to implement them in distributed systems, where processes are subject to crashes and malicious attacks. The authors follow an incremental approach by first introducing basic abstractions in simple distributed environments, before moving to more sophisticated abstractions and more challenging environments. Each core chapter is devoted to one topic, covering:

  • reliable broadcast,
  • shared memory,
  • consensus, and
  • extensions of consensus.

For every topic, many exercises and their solutions enhance the understanding

This book represents the second edition of the successful book Introduction to Reliable Distributed Programming, published first in 2006. The scope has been extended to include security against malicious actions by non-cooperating processes. This important domain has become widely known under the name Byzantine fault-tolerance.


The book follows an incremental approach and was primarily written as a textbook for teaching at the undergraduate or basic graduate level. It introduces the fundamental elements of distributed computing in an intuitive manner and builds sophisticated distributed programming abstractions on top of the elementary ones.

The book can be used in class or for individual study. The approach presented in the book has been developed by the authors while teaching this subject at leading universities in Europe and throughout the globe.


Communication Protocols, Distributed Algorithms, Distributed Programming, Broadcast, Reliable Delivery, Shared Memory, Consensus, Failures, Byzantine faults, Intrusion-tolerance.