Consensus in Byzantine Asynchronous Systems
Abstract
This paper studies the consensus problem in byzantine asynchronous distributed systems. In such systems, a process may stop communicating with other processes or may behave arbitrarily (e.g., execute a statement more than once, corrupt the value of a local variable or misevaluate a local predicate). A consensus protocol resilient to such failures is proposed. It uses signed and certified messages and is based on two underlying failure detection modules. The first is an unreliable failure detector module. The second is a reliable arbitrary behavior detection module. More precisely, the first module detects processes that stop sending messages, while processes experiencing other arbitrary behaviors are detected by the second module. The protocol is resilient to F faulty processes, where F is less than half of the total number of processes and less than an upper bound C (where C is the maximum number of faulty processes that can be tolerated by the underlying certification service). The approach used to design the protocol is new. While usual byzantine consensus protocols are based on unreliable failure detectors to detect processes that stop communicating, none of them use a module to detect their arbitrary behavior (this detection is not isolated from the protocol and makes it difficult to understand and prove correct). In addition to this modular approach and to a new consensus protocol for byzantine systems, the paper presents a finite state automaton-based implementation of the arbitrary behavior detection module. Finally, the modular approach followed in this paper can be used to solve other problems in byzantine systems.