Understanding distributed computing is not an easy task. This is due to the many facets of
uncertainty one has to cope with and master in order to produce correct distributed software. A
previous book Communication and Agreement Abstraction for Fault-tolerant Asynchronous
Distributed Systems (published by Morgan & Claypool 2010) was devoted to the problems created
by crash failures in asynchronous message-passing systems. The present book focuses on the way
to cope with the uncertainty created by process failures (crash omission failures and
Byzantine behavior) in synchronous message-passing systems (i.e. systems whose progress is
governed by the passage of time). To that end the book considers fundamental problems that
distributed synchronous processes have to solve. These fundamental problems concern agreement
among processes (if processes are unable to agree in one way or another in presence of failures
no non-trivial problem can be solved). They are consensus interactive consistency k-set
agreement and non-blocking atomic commit. Being able to solve these basic problems efficiently
with provable guarantees allows applications designers to give a precise meaning to the words
cooperate and agree despite failures and write distributed synchronous programs with
properties that can be stated and proved. Hence the aim of the book is to present a
comprehensive view of agreement problems algorithms that solve them and associated
computability bounds in synchronous message-passing distributed systems. Table of Contents:
List of Figures Synchronous Model Failure Models and Agreement Problems Consensus and
Interactive Consistency in the Crash Failure Model Expedite Decision in the Crash Failure
Model Simultaneous Consensus Despite Crash Failures From Consensus to k-Set Agreement
Non-Blocking Atomic Commit in Presence of Crash Failures k-Set Agreement Despite Omission
Failures Consensus Despite Byzantine Failures Byzantine Consensus in Enriched Models