In agreement problems, each agent of a networked system has an input value and outputs a series of values; it is required that all the agents eventually output the same value and that this common value is one (or a function) of the input values. Agreement problems arise in a number of applications including consistency in replicated databases, motion of autonomous agents or, more recently, in the blockchain technology.
The (exact) consensus problem is a fundamental agreement problem where each agent is aware that agreement has been reached, as opposed to the stabilizing consensus problem where agents are just required to eventually stabilize on the same input value. The blockchain consensus, also called the Nakamoto consensus, corresponds to an intermediate type of agreement.
The goal of this course is to explore the solvability and the complexity of these different agreement problems in various contexts, depending on the synchrony model, the failure model, and on other features like the fact that the system is open or closed (permissioned vs. permissionless systems).