In distributed systems, a group of learners achieve consensus when, by observing the output of some acceptors, they all arrive at the same value. Consensus is crucial for ordering transactions in failure-tolerant systems. Traditional consensus algorithms are homogeneous in three ways:
These assumptions, however, are unsuitable for cross-domain applications, including blockchains, where not all acceptors are equally trustworthy, and not all learners have the same assumptions and priorities. We present the first consensus algorithm to be heterogeneous in all three respects. Learners set their own mixed failure tolerances over differently trusted sets of acceptors. We express these assumptions in a novel Learner Graph, and demonstrate sufficient conditions for consensus. We present Heterogeneous Paxos: an extension of Byzantine Paxos. Heterogeneous Paxos achieves consensus for any viable Learner Graph in best-case three message sends, which is optimal. We present a proof-of-concept implementation, and demonstrate how tailoring for heterogeneous scenarios can save resources and latency.
The robustness of distributed systems is usually phrased in terms of the number of failures of certain types that they can withstand. However, these failure models are too crude to describe the different kinds of trust and expectations of participants in the modern world of complex, integrated systems extending across different owners, networks, and administrative domains. Modern systems often exist in an environment of heterogeneous trust, in which different participants may have different opinions about the trustworthiness of other nodes, and a single participant may consider other nodes to differ in their trustworthiness. We explore how to construct distributed protocols that meet the requirements of all participants, even in heterogeneous trust environments. The key to our approach is using lattice-based information flow to analyse and prove protocol properties. To demonstrate this approach, we show how two earlier distributed algorithms can be generalized to work in the presence of heterogeneous trust: first, Heterogeneous Fast Consensus, an adaptation of the earlier Bosco Fast Consensus protocol; and second, Nysiad, an algorithm for converting crash-tolerant protocols to be Byzantine-tolerant. Through simulations, we show that customizing a protocol to a heterogeneous trust configuration yields performance improvements over the conventional protocol designed for homogeneous trust.
With Charlotte, we can append one block onto multiple blockchains, solving the atomic commit problem. In this brief demo, we append a block to two chains, each running a 4-participant byzantine consensus algorithm. This demo uses our Heterogeneous Consensus algorithm.
The Heterogeneous Consensus project has invented and implemented a Consensus algorithm in which not all participants agree on who may fail, and how. It is the first consensus with:
We in some ways resemble the Stellar project, but our algorithm tolerates mixed Byzantine and Crash failures, one message-send lower latency, and a different model of Observers and Participants. This talk is for a blockchain audience, and discusses private, consortium-based blockchain applications for Heterogeneous Consensus.
This work-in-progress talk explores richer notions of failure expressible using the Decentralized Label Model for Availability and Integrity. We generalize failure tolerance to encompass mixed failures, survivor and failure-prone sets, and participants with different trust assumptions.