The condition-based approach for consensus solvability consists of identifying sets of input vectors, called conditions, for which there exists an asynchronous protocol solving consensus despite the occurrence of up to f process crashes.This paper investigates Cf, the largest set of conditions which allow us to solve the consensus problem in an asynchronous shared memory system.The first part of the paper shows that Cf is made up of a hierarchy of classes of conditions, Cf[d]. where d is a parameter (called degree of the condition), starting with d=min(n - f, f) and ending with d = 0, where Cf0=Cf. We prove that each one is strictly contained in the previous one: Cf[d] ⊂ Cf[d-1]. Various properties of the hierarchy are also derived. It is shown that a class can be characterized in two equivalent but complementary ways: one is convenient for designing protocols while the other is for analyzing the class properties. The paper also defines a linear family of conditions that can be used to derive many specific conditions. In particular, for each d, two natural conditions are presented.The second part of the paper is devoted to the design of efficient condition-based protocols. A generic condition-based protocol is presented. This protocol can be instantiated with any condition C, C ∈ Cf[d], and requires at most (2n+1) ⌈log2(⌈(f - d)/2⌉+1)⌉ shared memory read/write operations per process in the synchronization part of the protocol. Thus, the value (f - d) represents the "difficulty" of the class Cf[d]. An improvement of the protocol for the conditions in Cf[0] is also presented.
Read full abstract