Using Error-Correcting Codes to Solve Distributed Agreement Problems: A Future Direction in Distributed Computing? R. Friedman 1 , A. Most´ efaoui 2 , S. Rajsbaum 3 , and M. Raynal 2 1 Department of Computer Science, The Technion, Haifa, Israel 2 IRISA - Campus de Beaulieu, 35042 Rennes Cedex, France 3 HP Research Lab, Cambridge, MA 02139, USA and Inst. Matem. UNAM, Mexico roy@cs.technion.ac.il achour,raynal@irisa.fr Sergio.Rajsbaum@hp.com 1 A Basic Agreement Problem: Consensus The Consensus problem lies at the heart of many distributed computing prob- lems one has to solve when designing reliable applications on top of unreliable distributed asynchronous systems. There is a large literature where theoretical and practical aspects of this problem are studied 1 , that can be informally stated in terms of three requirements. Each process proposes a value, and has to decide on a value (termination) such that there is a single decided value (agreement), and the decided value is a proposed value (validity). One of the most funda- mental impossibility results in distributed computing says that this apparently simple problem has no deterministic solution in an asynchronous system even if only one process may crash [0]. To circumvent this impossibility, known as FLP, two main approaches have been investigated. One of them consists of relaxing the requirements of the problem, by either allowing for probabilistic solutions (e.g., [0]), or for approximate solutions (ε-agreement [0], or k-set agreement [0]). Another approach consists of enriching the system with synchrony assumptions until they allow the problem to be solved [0]. This approach has been abstracted in the notion of unreliable failure detectors [0]. There have also been studies of hybrid approaches, like combining failure detection with randomization [0,0]. 2 The Condition Based Approach We have recently introduced a new condition-based approach to tackle the con- sensus problem [0]. This approach focuses on sets of input vectors that allow n processes to solve the consensus problem despite up to f process crashes, in a standard asynchronous model. Let an input vector be a size n vector, whose i-th entry contains the value proposed by a process p i .A condition (which involves the parameters f and n) is a set C of such vectors that can be proposed under normal operating conditions. The aim is then to design f -fault tolerant protocols that (1) are always safe (i.e., the protocol has to always guarantee agreement and validity, whether the proposed input vector is allowed by the condition or 1 The distributed computing textbooks [0,0] devote several chapters to this problem.