Action Filename Description Size Access License Resource Version
Show more files...


It is considered good distributed computing practice to devise object implementations that tolerate contention, periods of asynchrony and a large number of failures, but perform fast if few failures occur, the system is synchronous and there is no contention. This paper initiates the first study of quorum systems that help design such implementations. Namely, our study of quorum systems encompasses, at the same time, the optimal resilience of distributed object implementations (just like traditional quorum systems), as well as their {\em optimal best-case complexity} (unlike traditional quorum systems). We introduce the notion of a \emph{refined} quorum system (RQS) of some set $S$ as a set of three refined classes of subsets (quorums) of $S$: first class quorums are also second class quorums, which are also third class quorums. First class quorums have large intersections with all other quorums, second class quorums might have slightly smaller intersections with those of the third class, the latter simply correspond to traditional quorums. Intuitively, under uncontended and synchronous conditions, a distributed object implementation would expedite an operation if a quorum of the first class is accessed, then degrade gracefully depending on whether a quorum of the second or the third class is accessed. The latter case corresponds somehow to the worst situation under uncontended and synchronous conditions. Our refined quorum system is devised assuming a general adversary structure, and this basically implies that algorithms relying on such a quorum system do not need to make the assumption of independent process failures, often questioned in practice. We illustrate the power of refined quorums by introducing two new optimal distributed object implementations: a Byzantine-resilient atomic storage algorithm and a Byzantine-resilient consensus algorithm. Both match previously established resilience and best-case complexity lower bounds, closing open gaps, as well as new complexity bounds we establish here.