I. Introduction
Consensus is a generic technique that implements faulttolerant services through replication. It is critical to achieve both reliability and availability in various online services and cloud computing applications, including Google's Chubby [6], Amazon Web Services [1], and VMware's vSphere [2], [3]. Depending on the types of failures we aim to tolerate, various protocols are designed with different security guarantees and performance characteristics. It is in general known that there exists a tradeoff between the resiliency and the cost of the consensus protocols. Namely, a low cost protocol with low redundancy and high performance can only handle limited types of failures. For instance, Crash Fault Tolerant (CFT) protocols are less redundant but can only tolerate crash fail-ures. In comparison, Byzantine Fault Tolerant (BFT) protocols handle arbitrary failures but are very expensive, which may be an overkill to use most of the time.