Blockchain Consensus Protocols in The Wild: Christian Cachin Marko Vukoli C IBM Research - Zurich 2017-07-07
Blockchain Consensus Protocols in The Wild: Christian Cachin Marko Vukoli C IBM Research - Zurich 2017-07-07
2017-07-07
Abstract
arXiv:1707.01873v2 [cs.DC] 7 Jul 2017
A blockchain is a distributed ledger for recording transactions, maintained by many nodes without
central authority through a distributed cryptographic protocol. All nodes validate the information to
be appended to the blockchain, and a consensus protocol ensures that the nodes agree on a unique
order in which entries are appended. Consensus protocols for tolerating Byzantine faults have re-
ceived renewed attention because they also address blockchain systems. This work discusses the
process of assessing and gaining confidence in the resilience of a consensus protocols exposed to
faults and adversarial nodes. We advocate to follow the established practice in cryptography and
computer security, relying on public reviews, detailed models, and formal proofs; the designers of
several practical systems appear to be unaware of this. Moreover, we review the consensus proto-
cols in some prominent permissioned blockchain platforms with respect to their fault models and
resilience against attacks. The protocol comparison covers Hyperledger Fabric, Tendermint, Sym-
biont, R3 Corda, Iroha, Kadena, Chain, Quorum, MultiChain, Sawtooth Lake, Ripple, Stellar, and
IOTA.
1 Introduction
Blockchains or distributed ledgers are systems that provide a trustworthy service to a group of nodes or
parties that do not fully trust each other. They stand in the tradition of distributed protocols for secure
multiparty computation in cryptography and replicated services tolerating Byzantine faults in distributed
systems. Blockchains also contain many elements from cryptocurrencies, although a blockchain system
can be conceived without a currency or value tokens. Generally, the blockchain acts as a trusted and
dependable third party, for maintaining shared state, mediating exchanges, and providing a secure com-
puting engine. Many blockchains can execute arbitrary tasks, typically called smart contracts, written in
a domain-specific or a general-purpose programming language.
In a permissionless blockchain, such as Bitcoin or Ethereum, anyone can be a user or run a node,
anyone can “write” to the shared state through invoking transactions (provided transaction fees are paid
for), and anyone can participate in the consensus process for determining the “valid” state. A permis-
sioned blockchain in contrast, is operated by known entities, such as in consortium blockchains, where
members of a consortium or stakeholders in a given business context operate a permissioned blockchain
network. Permissioned blockchains systems have means to identify the nodes that can control and update
the shared state, and often also have ways to control who can issue transactions. A private blockchain is
a special permissioned blockchain operated by one entity, i.e., within one single trust domain.
Permissioned blockchains address many of the problems that have been studied in the field of dis-
tributed computing over decades, most prominently for developing Byzantine fault-tolerant (BFT) sys-
tems. Such blockchains can benefit from many techniques developed for reaching consensus, replicating
state, broadcasting transactions and more, in environments where network connectivity is uncertain,
nodes may crash or become subverted by an adversary, and interactions among nodes are inherently
asynchronous. The wide-spread interest in blockchain technologies has triggered new research on prac-
tical distributed consensus protocols. There is also a growing number of startups, programmers, and
1
industry groups developing blockchain protocols based on their own ideas, not relying on established
knowledge.
The purpose of this paper is to give an overview of consensus protocols actually being used in the
context of permissioned blockchains, to review the underlying principles, and to compare the resilience
and trustworthiness of some protocols. We leave out permissionless (or “public”) blockchains that are
coupled to a cryptocurrency and their consensus protocols, such as proof-of-work or proof-of-stake, al-
though this is a very interesting subject by itself.
We start by pointing out that developing consensus protocols is difficult and should not be undertaken
in an ad-hoc manner (Sec. 2). A resilient consensus protocol is only useful when it continues to deliver
the intended service under a wide range of adversarial influence on the nodes and the network. Detailed
analysis and formal argumentation are necessary to gain confidence that a protocol achieves its goal.
In that sense, distributed computing protocols resemble cryptosystems and other security mechanisms;
they require broad agreement on the underlying assumptions, detailed security models, formal reasoning,
and wide-spread public discussion. Any claim for a “superior” consensus protocol that does not come
with the necessary formal justification should be dismissed, analogously to the approach of “security by
obscurity,” which is universally rejected by experts.
The text continues in Section 3 with a brief review of consensus in the context of blockchains. As
an example for the principle of scientific study, some serious flaws in a BFT consensus protocol called
Tangaroa (also known as BFT-Raft) are shown. This protocol has gained quite some popularity among
proponents of permissioned blockchains but it is not implemented in any blockchain platform.
In Section 4 the consensus protocols in a number of permissioned blockchain platforms are com-
pared, based on the available product descriptions or source code. Section 5 discusses the consensus
mechanisms of blockchain platforms not directly following the BFT approach: Sawtooth Lake, Ripple
and Stellar, and the IOTA Tangle. A summary concludes the paper.
2
should be secure even if everything about the system, except the key, is public knowledge.” It implies
that any security claim of the kind that a system embodies a superior but otherwise undisclosed design
should be dismissed immediately.
Starting from the pioneering work in the 1980s, modern cryptography has developed formal treat-
ment, security notions, and corresponding provably secure protocols. Cryptography research has con-
centrated on mathematically formalizing (a small number of) security assumptions, such as “computing
discrete logarithms in particular groups is hard,” and on building complex systems and protocols that
rely on these assumptions, without introducing any additional insecurity. In other words, in a “provably
secure” solution, an attack on the stated goal of the solution can be turned efficiently into a violation of
some underlying assumption.
For assessing whether the formal models are appropriate and whether the security assumptions cover
the situation encountered during deployment, human judgment is needed, best exerted through careful
review, study, validation, and expert agreement. The AES block cipher, for instance, was selected in
2000 by the U.S. NIST after a multi-year public review process during which many candidates were
debated and assessed openly by the world-wide cryptographic research community.
During the internet boom in the late 1990s there were many claims of new and “unbreakable” cryp-
tosystems, all lacking substantiation. Many of them were covered by Schneier in blog posts about “snake
oil,” alluding to the history of medicine before regulation [64]:
The problem with bad security is that it looks just like good security. You can’t tell the
difference by looking at the finished product. Both make the same security claims; both
have the same functionality. (. . . ) Both might use the same protocols, implement the same
standards, and have been endorsed by the same industry groups. Yet one is secure and the
other is insecure.
Expert judgment, formal reasoning, experience, public discussion, and open validation are needed for
accepting a cryptosystem as secure.
A similar development has taken place with building resilient distributed systems, whose goal is
to deliver a service while facing network outages, communication failures, timing uncertainty, power
loss and more. The Chubby database of Google [24] and Yahoo!’s ZooKeeper [38], developed for syn-
chronizing critical configuration information across data centers, support strong consistency and high
availability through redundancy and tolerate benign failures and network outages. Those systems started
from well-understood, mathematically specified, and formally verified protocols in the research litera-
ture (e.g., Lamport’s Paxos protocol [42]). Yet it has taken considerable effort during development and
testing and frequent exercising of failure scenarios during deployment [10] to achieve the desired level
of resilience in practice.
Over the recent years countless proposals for new features in distributed ledger systems and com-
pletely new blockchain protocols have appeared, mainly originating from the nascent fintech industry
and startup scene. Most of them come without formal expression of their trust assumption and security
model. There is no agreed consensus in the industry on which assumptions are realistic for the intended
applications, not to mention any kind of accepted standard or validation for protocols. The field of block-
chain protocols is in its infancy today, but already appears at the peak of overstated expectations [32].
Many fantastic and bold claims are made in the fintech and blockchain space by startups, established
companies, researchers, and self-proclaimed experts alike. This creates excitement but also confusion in
the public opinion.
Broad agreement on trust assumptions, security models, formal reasoning methods, and protocol
goals is needed. Developers, investors, and users in the industry should look towards the established
scientific methodology in cryptography and security with building trustworthy systems, before they en-
trust financial value to new protocols. Open discussion, expert reviews, broad validation, and standards
recommendations should take over and replace the hype.
3
3 Consensus
This section presents background and models for consensus in permissioned blockchains, first intro-
ducing the underlying concept of state-machine replication in Section 3.1. Sections 3.2 and 3.3 briefly
review the most prominent family of protocols for this task, which is based Paxos/Viewstamped Replica-
tion (VSR) and PBFT. The essential step of transaction validation is discussed in Section 3.4. To round
off this part, we demonstrate the pitfalls of consensus-protocol design in Section 3.5, by analyzing a
proposed BFT consensus protocol called Tangaroa and showing that it does not achieve its goals.
State-machine replication. The formal study and development of algorithms for exploiting replica-
tion to build resilient servers and distributed systems goes back to Lamport et al.’s pioneering work
introducing Byzantine agreement [57, 44]. The topic has evolved through a long history since and is
covered in many textbooks [4, 18, 59, 73]; a good summary can be found in a “30-year perspective on
replication” [25].
As summarized concisely by Schneider [63], the task of reaching and maintaining consensus among
distributed nodes can be described with two elements: (1) a (deterministic) state machine that implements
the logic of the service to be replicated; and (2) a consensus protocol to disseminate requests among the
nodes, such that each node executes the same sequence of requests on its instance of the service. In the
literature, “consensus” means traditionally only the task of reaching agreement on one single request
(i.e., the first one), whereas “atomic broadcast” [36] provides agreement on a sequence of requests, as
4
needed for state-machine replication. But since there is a close connection between the two (a sequence
of consensus instances provides atomic broadcast), the term “consensus” more often actually stands for
atomic broadcast, especially in the context of blockchains. We adopt this terminology here and also use
“transaction” and “request” as synonyms for one of the messages to be delivered in atomic broadcast.
Asynchronous and eventually synchronous models. Throughout this text, we assume the eventual-
synchrony network model, introduced by Dwork et al. [30]. It models an asynchronous network that
may delay messages among correct nodes arbitrarily, but eventually behaves synchronously and deliv-
ers all messages within a fixed (but unknown) time bound. Protocols in this model never violate their
consistency properties (safety) during asynchronous periods, as long as the assumptions on the kind and
number of faulty nodes are met. When the network stabilizes and behaves synchronously, then the nodes
are guaranteed to terminate the protocol (liveness). Note that a protocol may stall during asynchronous
periods; this cannot be avoided due to a fundamental discovery by Fischer et al. [31] (the celebrated
“FLP impossibility result”), which rules out that deterministic protocols reach consensus in (fully) asyn-
chronous networks.
The model is widely accepted today as realistic for designing resilient distributed systems. Replica-
tion protocols have to cope with network interruptions, node failures, system crashes, planned downtime,
malicious attacks by participating nodes, and many more unpredictable effects. Developing protocols for
asynchronous networks therefore provides the best possible resilience and avoids any assumptions about
synchronized clocks and timely network behavior; making such assumptions can quickly turn into a
vulnerability of the system if any one is not satisfied during deployment.
Protocol designers today prefer the eventual synchrony assumption for its simplicity and practitioners
observe that it has broader coverage of actual network behavior, especially when compared to so-called
partially synchronous models that assume probabilistic network behavior over time.
Consensus in blockchain. Although Nakamoto’s Bitcoin paper [54] does not explicitly mention the
state-machine replication paradigm [63], Bitcoin establishes consensus on one shared ledger based on
voting among the nodes: “(Nodes) vote with their CPU power, expressing their acceptance of valid
blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any
needed rules and incentives can be enforced with this consensus mechanism” [54].
With the work of Garay et al. [33], a formal equivalence between the task solved by the “Nakamoto
protocol” inside Bitcoin and the consensus problem in distributed computing was shown for the first time.
This result coincided with the insight, developed in the fintech industry, that a blockchain platform may
use a generic consensus mechanism and implement it with any protocol matching its trust model [70]. In
today’s understanding a blockchain platform may use an arbitrary consensus mechanism and retain most
of its further aspects like distribution, cryptographic immutability, and transparency.
Existing consensus and replication mechanisms have therefore received renewed attention, for ap-
plying them to blockchain systems. Several protocols relevant for blockchains are reviewed in the
next sections. We discuss only protocols for static groups here; they require explicit group reconfigura-
tion [67, 9] and do not change membership otherwise. This assumption contrasts with view-synchronous
replication [26], where the group composition may change implicitly by removing nodes perceived as
unavailable.
5
Atomic broadcast ensures that each correct node outputs or delivers the same sequence of messages
through the deliver events. More precisely [36, 18], it ensures these properties:
The most important and most prominent way to implement atomic broadcast (i.e., consensus) in
distributed systems prone to t < n/2 node crashes is the family of protocols known today as Paxos [42,
43] and Viewstamped Replication (VSR) [55, 48]. Discovered independently, their core mechanisms
exploit the same ideas [45, 47]. They have been implemented in dozens of mission-critical systems and
power the core infrastructure of major cloud providers today [24].
The Zab protocol inside ZooKeeper is a prominent member of the protocol family; originally from
Yahoo!, it is available as open source [38, 39, 71] (https://zookeeper.apache.org/) and used
by many systems. A more recent addition to the family is Raft [56], a specialized variant developed with
the aim of simplifying the understanding and the implementation of Paxos. It is contained in dozens of
open-source tools (e.g., etcd – https://github.com/coreos/etcd).
All protocols in this family progress in a sequence of views or “epochs,” with a unique leader for each
view that is responsible for progress. If the leader fails, or more precisely, if the other nodes suspect that
the leader has failed, they can replace the current leader by moving to the next view with a fresh leader.
This view change protocol must ensure agreement, such that message already delivered by a node in the
abandoned view is retained and delivered by all correct nodes in this or another future view.
6
3.4 Validation
In an atomic broadcast protocol resilient to crashes, every message is usually considered to be an ac-
ceptable request to the service. For Byzantine consensus, especially in blockchain applications, it makes
sense to ask that only “valid” transactions are output by the broadcast protocol. To formalize this, the
protocol is parameterized with a deterministic, external predicate V (), such that the protocol delivers
only messages satisfying V (). This notion has been introduced as external validity by Cachin et al. [19].
The predicate must be deterministically computable locally by every process. More precisely, V ()
must guarantee that when two correct nodes p and q in an atomic broadcast protocol have both delivered
the same sequence of messages up to some point, then p obtains V (m) = T RUE for any message m if
and only if q also determines that V (m) = T RUE.
This combination of transaction validation and establishing consensus is inherent in permission-
less blockchains based on proof-of-work consensus, such as Bitcoin and Ethereum. For permissioned-
blockchain protocols, one could in principle also separate this step from consensus and perform the (de-
terministic) validation of transactions on the ordered “raw” sequence output by atomic broadcast. This
could make the protocol susceptible to denial-of-service attacks from clients broadcasting excessively
many invalid transactions. Hence most consensus protocols reviewed in this text combine ordering with
validation and use a form of external validity based on the current blockchain state.
Liveness issue. If the network is synchronous (i.e., well-connected, messages are delivered timely, and
nodes are synchronized), then the protocol should be live and continuously order messages. How-
ever, since any node may propose itself to become leader, a malicious node might simply rush in
at the start of a view, become elected as leader, and then refuse to perform any further work. There
is no way for the nodes to verify that the node waited for its timeout to expire. Hence, the protocol
violates liveness.
Safety issue. The leader of a view should ensure that all correct nodes deliver the same messages in the
same order. This is complicated because the leader might fail or even actively try to make the
nodes disagree on the delivered message. After a view change, the next leader must be able to
resume from a consistent state and be sure it does not deliver a message twice or omit one.
7
However, Tangaroa directly uses the low-level messaging structure from Raft, even though it is
well-known that additional rounds of exchanges are necessary to cope with the problems that a
Byzantine leader might create. This can lead to a violation of agreement by Tangaroa, in the sense
that two correct nodes decide differently; in a blockchain, their ledgers would fork and this is a
deathblow for a permissioned blockchain.
We illustrate the reason for the safety problem with Tangaroa in Remark 1. Readers not interested in
pitfalls of distributed consensus protocols should skip to the next subsection.
Remark 1 (Safety violation by Tangaroa). Within a view, the leader broadcasts an “AppendEntries”
message containing the payload to be replicated to all nodes. (To “broadcast” means here only that if
the leader is correct, it sends the same point-to-point message to all nodes.) A node that receives this
(for the first time at a given index) echoes it by broadcasting “AppendEntriesResponse” to all. When a
node receives a Byzantine quorum of those, it commits the payload (“applies the . . . committed entries
to its state machine”). This communication primitive is known in the literature as Byzantine consistent
broadcast (BCB) [18, Sec. 3.10], it goes back to Srikanth and Toueg [69]. BCB ensures consistency in the
sense that if some two correct nodes deliver any payload, then they deliver the same payload. BCB does
not ensure that any node delivers any payload when the leader is faulty. BCB neither ensures agreement
in the sense that once some correct node has delivered a payload, any other correct node will also deliver
that.
It is now possible that in a network with nodes A, B, C, D the current leader D is faulty and causes A
to deliver and commit some payload m [18, Fig. 3.11]. B may have echoed m but did not deliver it. Then
D causes a leader change to C; from this moment on, no more messages reach A due to asynchronous
network behavior and D behaves as if m was never broadcast. C has no knowledge of m and instead
picks another payload m′ and delivers that. Then A and C deliver different payloads m 6= m′ and violate
the total-order and agreement properties of consensus (Sec. 3.2 and 3.3).
It is well-known how to prevent this: PBFT [22] uses Byzantine reliable broadcast (BRB) in the
place of the BCB in Tangaroa (BRB was first formulated by Bracha [11]). This primitive entails a
second all-to-all message exchange, formally ensures the agreement property, and, most importantly,
makes it possible for a subsequent leader to gather enough information so as not to violate the consensus
protocol’s guarantees.
4 Permissioned blockchains
This section discusses some notable consensus protocols that are part of (or have at least been proposed
for) the following consortium blockchain systems: Hyperledger Fabric; Tendermint; Symbiont Assem-
bly; R3 Corda; Iroha; Kadena; Chain; Quorum; and MultiChain. We assume there are n distributed
nodes responsible for consensus, but some systems contain further nodes with other roles. Each of the
subsections contains a table summarizing the consensus resilience properties.
4.1 Overview
Among the recent flurry of blockchain-consensus protocols, many have not progressed past the stage
of a paper-based description. In this section, we review only protocols implemented in a platform; the
platform must either be available as open source or have been described in sufficient detail in marketing
material. So far all implemented protocols discussed here assume independence among the failures, self-
ish behavior, and subversion of nodes. This justifies the choice of a numeric trust assumption, expressed
only by a fraction of potentially faulty nodes.
8
nodes subverted
Any f < n/3
Special-node
Special-node
Any t < n/2
Which faults are
nodes crash
subverted
tolerated by a protocol?
crash
Hyperledger Fabric/Kafka . X . −
Hyperledger Fabric/PBFT . X . X
Tendermint . X . X
Symbiont/BFT-SMaRt . X . X
R3 Corda/Raft . X . −
R3 Corda/BFT-SMaRt . X . X
Iroha/Sumeragi (BChain) . X . X
Kadena/ScalableBFT ? ? ? ?
Chain/Federated Consensus − (X) − −
Quorum/QuorumChain − (X) − −
Quorum/Raft . X . −
MultiChain + . X . −
Sawtooth Lake/PoET ⊕ X ⊕ −
Ripple ⊗ (X) ⊗ −
Stellar/SCP ? ? ? ?
IOTA Tangle ? ? ? ?
Table 1: Summary of consensus resilience properties, some of which use statically configured nodes
with a special role. Symbols and notes: ‘X’ means that the protocol is resilient against the fault and ‘−’
that it is not; ‘.’ states that no such special node exists in the protocol; ‘?’ denotes that the properties
cannot be assessed due to lack of information; (X) denotes the crash of other nodes, different from the
special node; + MultiChain has non-final decisions; ⊕ PoET assumes trusted hardware available from
only one vendor; ⊗ Ripple tolerates one of the five default Ripple-operated validators (special nodes) to
be subverted.
9
It would be readily possible to extend such protocols to more complex fault assumptions, as for-
mulated by generic Byzantine quorum systems [49]. For example, this would allow to run stake-based
consensus (as done in some permissionless blockchains) or to express an arbitrary power structure for-
mulated in a legal agreement for the consortium [15]. No platform offers this yet, however.
Table 2: Resilience of Hyperledger Fabric V1 with the Kafka-based orderer. It supports an arbitrary
number of “peer” nodes, but “node” refers to those nodes comprising the ordering service. “Subverted”
means an adversarial, Byzantine node.
Table 3: Resilience of Hyperledger Fabric v0.6, where “node” refers to any node. The same resilience
holds for Fabric V1 with the future PBFT-based orderer, where “node” refers to those nodes comprising
the ordering service.
10
4.3 Tendermint
Tendermint Core (https://github.com/tendermint/tendermint) is a BFT protocol that
can be best described as a variant of PBFT [22], as its common-case messaging pattern is a variant of
Bracha’s Byzantine reliable broadcast [11]. In contrast to PBFT, where the client sends a new transaction
directly to all nodes, the clients in Tendermint disseminate their transactions to the validating nodes (or,
simply, validators) using a gossip protocol. The external validity condition, evaluated within the Bracha-
broadcast pattern, requires that a validator receives the transactions by gossip before it can vote for
inclusion of the transaction in a block, much like in PBFT.
Tendermint’s most significant departure from PBFT is the continuous rotation of the leader. Namely,
the leader is changed after every block, a technique first used in BFT consensus space by the Spinning
protocol [62]. Much like Spinning, Tendermint embeds aspects of PBFT’s view-change mechanism into
the common-case pattern. This is reflected in the following: while a validator expects the first message in
the Bracha broadcast pattern from the leader, it also waits for a timeout, which resembles the view-change
timer in PBFT. However, if the timer expires, a validator continues participating in the Bracha-broadcast
message pattern, but votes for a nil block.
Tendermint as originally described by Buchman [13] suffers from a livelock bug, pertaining to lock-
ing and unlocking votes by validators in the protocol. However, the protocol contains additional mecha-
nisms not described in the cited report that prevent the livelock from occurring [14]. While it appears to
be sound, the Tendermint protocol and its implementation are still subject to a thorough, peer-reviewed
correctness analysis.
11
4.5 R3 Corda – Raft and BFT-SMaRt
Unlike most of the other permissioned blockchain platforms discussed here, Corda (https://github.
com/corda/corda) does not order all transactions as one single virtual execution that forms the
blockchain. Instead, it defines states and transactions, where every transaction consumes (multiple)
states and produces a new state [37]. Only nodes affected by a transaction store it. Seen across all users,
this transaction execution model produces a hashed directed acyclic graph or Hash-DAG. Transactions
must be valid, i.e., endorsed by the issuer and other affected nodes and correct according to the under-
lying smart-contract logic governing the state. Each state points to a notary responsible for ensuring
transaction uniqueness, i.e., that each state is consumed only once. The notary is a logical service that
can be provided jointly by multiple nodes. The type of a state may designate an asset represented by the
network, such as a token or an obligation, or anything else controlled by a smart contract.
A transaction in Corda consumes only states controlled by the same notary; hence, one notary by
itself can atomically verify the transaction’s validity and uniqueness to decide whether it is executed or
not. To enable transactions that operate across states governed by different notaries, there is a specialized
transaction that changes the notary, such that one notary will become responsible for validating the
transaction.
Since a node stores only a part of the Hash-DAG, it only knows about transactions and states that
concern the node. This contrasts with most other distributed ledgers and provides means for partitioning
the data among the nodes. As is the case for other smart-contract platforms, transactions refer to contracts
that can be programmed in a universal general-purpose language.
A notary service in Corda orders and timestamps transactions that include states pointing to it. “No-
taries are expected to be composed of multiple mutually distrusting parties who use a standard consensus
algorithm” (https://docs.corda.net). A notary service needs to cryptographically sign its state-
ments of transaction uniqueness, such that other nodes in the network can rely on its assertions without
directly talking to the notary. Currently there is support for running a notary service as a single node
(centralized), for running a distributed crash-tolerant implementation using Raft (Sec. 3.2), and for dis-
tributing it using the open-source BFT-SMaRt toolkit (Sec. 3.3). When using Raft deployed on n nodes,
a Corda notary tolerates crashes of any t < n/2 of these nodes (Sec. 3.2). With BFT-SMaRt running on
n nodes, the notary is resilient to the subversion of f < n/3 nodes.
Table 6: Resilience of a Raft-based notary service in Corda. A Corda network may contain multiple
notary services and many more nodes.
Table 7: Resilience of a BFT-SMaRt-based notary service in Corda. A Corda network may contain
multiple notary services and many more nodes.
12
of Fabric (Sec. 4.2). All validating nodes collaboratively execute a Byzantine consensus protocol. In that
sense it is also similar to Tendermint and Symbiont Assembly.
The Sumeragi consensus library of Iroha is “heavily inspired” by BChain [29] a chain-style Byzan-
tine replication protocol that propagates transactions among the nodes with a “chain” topology. Chain
replication [72, 25] arranges the n nodes linearly and each node normally only receives messages from
its predecessor and sends messages to its successor. Although there is a leader at the head of the chain,
like in many other protocols, the leader does not become a bottleneck since it usually communicates only
with the head and the tail of the chain, but not with all n nodes. This balances the load among the nodes
and lets chain-replication protocols achieve the best possible throughput [35, 5], at the cost of higher
normal-case latency and slightly increased time for reconfiguration after faults.
In Sumeragi, the order of the nodes is determined based on a reputation system, which takes the
“age” of a node and its past performance into account.
As becomes apparent from the online documentation (https://github.com/hyperledger/
iroha/wiki/Sumeragi), though, the protocol departs from the “chain” pattern, because the leader
“broadcasts” to all nodes and so does the node at the tail. Hence, it is neither BChain nor chain repli-
cation. Assuming that Sumeragi would correctly implement BChain, then it relies on the standard as-
sumptions for BFT consensus in the eventually-synchronous model, just like Fabric v0.6, Tendermint,
and Symbiont.
Table 8: Resilience of Iroha, assuming the Sumeragi consensus implementation is BChain [29].
13
4.8 Chain – Federated Consensus
The Chain Core platform (https://chain.com) is a generic infrastructure for an institutional con-
sortium to issue and transfer financial assets on permissioned blockchain networks. It focuses on the
financial services industry and supports multiple different assets within the same network.
The Federated Consensus [23] protocol of Chain Core is executed by the n nodes that make up the
network. One of the nodes is statically configured as “block generator.” It periodically takes a number of
new, non-executed transactions, assembles them into blocks, and submits the block for approval to “block
signers.” Every signer validates the block proposed for a given block height, checking the signature of
the generator, validating the transactions, and verifying some real-time constraints and then signs an
endorsement for the block. Each signer endorses only one block at each height. Once a node receives q
such endorsements for a block, the node appends the block to its chain.
The protocol is resilient to a number of malicious (Byzantine-faulty) signers but not to a malicious
block generator. If the block generator violates the protocol (e.g., by signing two different blocks for the
same block height) the ledger might fork (i.e., the consensus protocol violates safety). The documenta-
tion states that such misbehavior should be addressed by retaliation and measures for this remain outside
the protocol.
More specifically, when assuming the block generator operates correctly and is live, this Federated
Consensus reduces to an ordinary Byzantine quorum system that tolerates f faulty signer nodes when
q = 2f + 1 and n = 3f + 1; its use for consensus is similar, say, to the well-understood “authenticated
echo broadcast” [18, Sec. 3.10.3]. Up to f block signers may behave arbitrarily, such as by endorsing
incorrect transactions or by refusing to participate, and the protocol will remain live and available (with
the correct block generator).
Overall, however, Federated Consensus is a special case of a standard BFT-consensus protocol that
appears to operate with a fixed “leader” (in the role of the block generator). The protocol cannot prevent
forks if the generator is malicious. Even if the generator simply crashes, the protocol halts and requires
manual intervention. Standard BFT protocols instead will tolerate leader corruption and automatically
switch to a different leader if it becomes apparent that one leader malfunctions.
Since the block generator must be correct, the purpose of a signature issued by a block signer remains
unclear, at least at the level of the consensus protocol. The only reason appears to be guaranteeing that
the signer cannot later repudiate having observed a block.
Generic Any t nodes Any f nodes Special Any s special Special nodes
nodes crash subverted nodes nodes crash subverted
Safety n t < n/3 f < n/3 m=1 − −
Liveness n t < n/3 f < n/3 m=1 − −
Table 9: Resilience of Federated Consensus in Chain Core. The single special node is the block generator.
The protocol cannot handle the case that it fails.
QuorumChain. This protocol uses a smart contract to validate blocks. The trust model specifies a set
of n “voter” nodes and some number of “block-maker” nodes, whose identities are known to all nodes.
The documentation remains unclear about the trust model, not clearly expressing in which ways one
14
or more of these nodes might fail or behave adversarially. (One can draw some conclusions from the
protocol though.)
The protocol uses the standard peer-to-peer gossip layer of Ethereum to propagate blocks and votes
on blocks, but the logic itself is formulated as a smart contract deployed with the genesis block. Nodes
digitally sign every message they send. Only block-maker nodes are permitted to propose block to be
appended; nodes with voter role validate blocks and express their approval by a (yes) vote. A block-
maker waits for a randomly chosen time and then creates, signs, and propagates a new block that extends
its own chain. A voter will validate the block (by executing its transactions and checking its consistency),
“vote” on it, and propagate this. A voter apparently votes for every received block that is valid and
extends its own chain, and it may vote multiple times for a given block height. Voting continues for a
period specified in real time. Each node accepts and extends its own chain with the block that obtains
more votes than a given threshold, and if there are multiple ones, the one with most votes. There is one
block-maker node by default.
To assess the resilience of the protocol, it is obvious that already one malicious block-maker node can
easily create inconsistencies (chain forks) unless the network is perfect and already provides consensus.
With one block-maker, if this node crashes, the protocol halts. Depending on how the operator sets the
voting threshold and on the network connectivity, it may fork the chain with only two block-makers and
without any Byzantine fault. With a Byzantine fault in a block-maker node or a voter node can disrupt
the protocol and also create inconsistencies. Furthermore, the protocol relies on synchronized clocks for
safety and liveness. Taken together, the protocol cannot ensure consensus in any realistic sense.
Generic Any t nodes Any f nodes Special Any s special Special nodes
nodes crash subverted nodes nodes crash subverted
Safety n t < n/3 f < n/3 m=1 − −
Liveness n t < n/3 f < n/3 m=1 − −
Table 10: Resilience of QuorumChain consensus in Quorum. The special nodes are the block-maker
nodes. With m > 1 block-maker nodes, safety is not guaranteed and forks may occur due to network
effects, even when all block-makers are correct.
Raft-based consensus. The second and more recent consensus option available for Quorum is based
on the Raft protocol [56], which is a popular variant of Paxos [42] available in many open-source toolkits.
Quorum uses the implementation in etcd (https://github.com/coreos/etcd) and co-locates
every Quorum-node with an etcd-node (itself running Raft). Raft will replicate the transactions to all
participating nodes and ensure that each node locally outputs the same sequence of transactions, despite
crashes of nodes. The deployment actually tolerates that any t < n/2 of the n etcd-nodes may crash.
Raft relies on timeliness and synchrony only for liveness, not for safety.
This is a canonical design, directly interpreting the replication of Quorum smart contracts as a repli-
cated state machine. It seems appropriate for a protected environment, which is not subject to adversarial
nodes.
Table 11: Resilience of Raft-based consensus in Quorum. Every generic node is also an etcd-node.
15
4.10 MultiChain
The MultiChain platform (https://github.com/MultiChain/multichain) is intended for
permissioned blockchains in the financial industry and for multi-currency exchanges in a consortium,
aiming at compatibility with the Bitcoin ecosystem as much as possible.
MultiChain uses a dynamic permissioned model [34]: There is a list of permitted nodes in the net-
work at all times, identified by their public keys. The list can be changed through transactions executed
on the blockchain, but at all times, only nodes on this list validate blocks and participate in the protocol.
As the MultiChain platform is derived from Bitcoin, its consensus mechanism is called “mining” [34];
however, in the permissioned model, the nodes do not solve computational puzzles. Instead, any permit-
ted node may generate new blocks after waiting for a random timeout, subject to a diversity parameter
ρ ∈ [0, 1] that constrains the acceptable miners for a given block height. More precisely, if the permitted
list has length L, then a block proposal from a node is only accepted if the blockchain held by the vali-
dating node does not already contain a block generated by the same node among the ⌈ρL⌉ most recent
blocks. Any participating node will extend its blockchain with the first valid block of this kind that it
receives, and if it learns about different, conflicting chain extensions, it will select the longer one (as
in Bitcoin). Furthermore, a well-behaved node will not generate a new block if its own chain already
contains a block of his within the last ⌈ρL⌉ blocks.
It appears that the random timeouts and network uncertainty easily lead to forks in the ledger, even if
all nodes are correct. If two different nodes may generate a valid block at roughly the same time, and any
other node will append the one of which it hears first to its chain, then these two nodes will be forked.
This is not different from consensus in Bitcoin and will eventually converge to a single chain if all nodes
follow the protocol. However, if a single attacking node generates transactions and blocks as it wants,
and assuming that the network behaves favorably for the attack, the node can take over the entire network
and revert arbitrarily many past transactions (in the same way as a “51%-attack” in Bitcoin).
Hence, MultiChain exhibits non-final transactions similar to any proof-of-work consensus. But
whereas lack of finality appears to be a consequence of the public nature of proof-of-work, and since
MultiChain is permissioned, forks and non-final decisions could be avoided here completely. The tra-
ditional consensus protocols for this model, discussed in Sections 3.2 and 3.3, all reach consensus with
finality. In the model of non-final consensus decisions, with the corresponding delays and throughput
constraints, the MultiChain consensus protocol can only remain consistent and live with one single cor-
rect node.
Table 12: Resilience of MultiChain consensus. Safety* denotes the non-final consistency notion, as
achieved by proof-of-work consensus, and should be understood formally as in recent work on the sub-
ject [33].
16
babbleio/babble). It targets consensus for a permissioned blockchain with n nodes and f < n/3
Byzantine faults among them, i.e., the standard Byzantine consensus problem according to Section 3.3.
In contrast to PBFT and other protocols discussed there, it operates in a “completely asynchronous”
model. The white paper states arguments for the safety and liveness of the protocol and explains that
hashgraph consensus is randomized to circumvent the FLP impossibility [31]. Since the algorithm is
guaranteed to reach agreement on a binary decision (i.e., with only 0/1 outcomes) only with exponen-
tially small probability in n [7, Thm. 5.16], it appears similar to Ben-Or-style randomized agreement [18,
Sec. 5.5]. However, no independent validation or analysis of hashgraph consensus is available.
5 Permissionless blockchains
The most widely used consensus protocols in permissionless blockchains are proof-of-work and proof-
of-stake, which appear always coupled to a cryptocurrency. There is a lot of research and development
activity addressing them at the moment, and covering this would go beyond the scope of this text.
Instead, this section reviews some notable variants of protocols that do not rely on a strict notion of
membership and therefore differ from the permissioned blockchain platforms reviewed in the last section.
The protocols described here depart in other ways from the traditional consensus notions (crash-tolerant,
Byzantine, and proof-of-work-style consensus). Conceptually they fall somewhere between the extremes
of a BFT protocol and Nakamoto’s proof-of-work consensus.
17
5.2 Ripple and Stellar
Ripple (https://ripple.com/) and Stellar (https://www.stellar.org/) are two globally
operating exchange networks with built-in cryptocurrencies; unlike Bitcoin, they do not involve mining
and operate in a somewhat permissioned fashion. The Ripple protocol consensus algorithm (RPCA)
and its offspring Stellar consensus protocol (SCP) depart from the traditional security assumption for
consensus protocols (i.e., some f < n/3 faulty nodes) by making their trust assumptions flexible [65, 52].
This means that each node would declare on its own which nodes it trusts, instead of accepting a global
assumption on which node collusions the protocol tolerates. Each node designates a list of other nodes
sufficient to convince itself (through the unique node list in Ripple or the quorum slice of Stellar).
Ripple and Stellar each maintain one distributed ledger governed by the protocol, which records
exchanges on the respective network.
Ripple. In Ripple, the process of advancing the common distributed ledger is controlled by so-called
validating nodes. They periodically start to create a new ledger entry (every few seconds) and iteratively
vote in rounds on its content; each node accepts a proposed ledger update if 50%, . . . , 80% (increasing
by +10% per round) of the signed updates that it receives match.
Ripple’s documentation states that 4/5 · n of all n validator nodes must be correct for maintaining
correctness [65]. This would correspond to tolerating f < n/5 subverted nodes in traditional BFT
systems.
Furthermore, it is obvious that a minimal overlap among the convincing-sets (i.e., unique node lists)
of all pairs of validating nodes is required, since otherwise they could exhibit split-brain behavior and the
ledger would fork. Ripple states that the overlap should be at least 1/5 of the size of the larger list [65].
The only peer-reviewed analysis of the Ripple protocol, however, contradicts this. Armknecht et al. [3]
show that when each node has ρn validators in its convincing-set, then ledger forks are ruled out only
if for every two nodes, their lists contain more than 2(1 − ρ)m common nodes, where m is the size of
the larger of the two lists. This implies more than 2/5 overlap with ρ = 0.8 as chosen by the Ripple
network.
Currently, Ripple “provides a default and recommended list of validators operated by Ripple and
third parties,” through a static configuration file; by default there are five validators operated by Ripple
which trust each other and no other node. (“At present, Ripple cannot recommend any validators aside
from the 5 core validators run by Ripple (the company)” [60].) It appears that this list is adopted by most
validating nodes in the system; consequently, trust is by far not as decentralized as advertised.
A typical consensus process creating one new ledger entry completes in less than four seconds on
average. Ripple has stated a throughput of about 1000 tps on a test network [1]. Compared to several
10’000 tps achievable on traditional BFT platforms with a small group of 4–10 validators [68], this seems
unnecessarily slow.
Stellar. As Stellar evolved from Ripple, it uses similar ideas and a protocol called federated Byzantine
agreement [52] within the Stellar consensus protocol (SCP). Only validator nodes participate in the
protocol for reaching consensus. Each validator declares its own convincing-set (called “quorum slice”
and similar to Ripple’s unique node list) that must sufficiently overlap with the convincing-sets of other
nodes for preventing forks. A node accepts a “vote” or a transaction for the ledger when a threshold of
nodes in its convincing-set confirm it. Examples in the documentation and the white paper [52, Fig. 3]
suggest the use of hierarchical structures with different groups organized into multiple levels, where a
different threshold may exist for each group (but the “threshold should be 2/3 for the top level”).
For instance, a convincing-set (i.e., a quorum slice) in a hierarchy with two levels could be like this
(expressed in percent and rounded to integers):
18
67% of Groups, where
Groups = {Banks, Auditors, Advisors, Friends} // here: 3 of 4 sub-groups
51% of Banks, where
Banks = {Bank-1, Bank-2, Bank-3} // here: 2 of 3 banks
58% of Auditors, where
Auditors = {A, B, C, D, E, F, G} // here: 5 of 7 auditors
51% of Advisors, where
Advisors = {1, 2, 3} // here: 2 of 3 advisors
1% of Friends, where
Friends = {Alice, Bob, Charlie, . . . , Zach} // here: 1 of 26 friends
Similar structures have been known as Byzantine quorum systems (BQS) [49] and are well-understood.
They can readily be used to build consensus protocols for BFT systems [15]. The documentation avail-
able for Stellar does not relate to this literature, however.
Furthermore, it seems that for constructing one single ledger, the convincing-sets for all useful con-
figurations of SCP should intersect at the top of the suggested hierarchies. This appears to introduce
some amount of centralization, similar to BQS [50].
At this time, determining the similarities and differences between the quorum slices of SCP and
generic BQS for Byzantine consensus remains an open problem.
19
6 Conclusion
This paper has summarized some of the most prominent blockchain consensus protocols, focusing on
permissioned systems in the sense that their participants are identified.
We have argued that developing consensus protocols is similar to engineering cryptographic systems,
and that blockchain developers should look towards the established experience in cryptography, security,
and the theory of distributed systems for building trustworthy systems. Otherwise, it might be danger-
ous to entrust financial value to new protocols. Open discussion, expert reviews, broad validation, and
standards recommendations should be employed.
The overview of consensus protocols and their properties contributes to this effort, by establishing a
common ground for formal protocol reviews and more technical comparisons. Once sufficiently many
systems become available publicly and are widely used, it will be interesting to compare their perfor-
mance through benchmarks and to observe their resilience to actual attacks or network incidents.
Acknowledgments
We thank Andreas Kind, Pedro Moreno-Sanchez, and Björn Tackmann for interesting discussions and
valuable comments.
This work has been supported in part by the European Commission through the Horizon 2020 Frame-
work Programme (H2020-ICT-2014-1) under grant agreements number 643964-SUPERCLOUD and
644579 ESCUDO-CLOUD and in part by the Swiss State Secretariat for Education, Research and Inno-
vation (SERI) under contracts number 15.0091 and 15.0087.
References
[1] W. Anderson. Ripple consensus ledger can sustain 1000 transactions per second. Ripple
Dev Blog, https://ripple.com/dev-blog/ripple-consensus-ledger-can-
sustain-1000-transactions-per-second/, 2017.
[3] F. Armknecht, G. O. Karame, A. Mandal, F. Youssef, and E. Zenner. Ripple: Overview and outlook.
In M. Conti, M. Schunter, and I. G. Askoxylakis, editors, Proc. Trust and Trustworthy Computing
(TRUST), volume 9229 of Lecture Notes in Computer Science, pages 163–180. Springer, 2015.
[4] H. Attiya and J. Welch. Distributed Computing: Fundamentals, Simulations and Advanced Topics.
Wiley, second edition, 2004.
[5] P. Aublin, R. Guerraoui, N. Knezevic, V. Quéma, and M. Vukolic. The next 700 BFT protocols.
ACM Transactions on Computer Systems, 32(4):12:1–12:45, 2015.
[6] A. Avizienis, J.-C. Laprie, B. Randell, and C. Landwehr. Basic concepts and taxonomy of depend-
able and secure computing. IEEE Transactions on Dependable and Secure Computing, 1(1):11–33,
2004.
[7] L. Baird. The Swirlds hashgraph consensus algorithm: Fair, fast, Byzantine fault tolerance.
Swirlds Tech Report SWIRLDS-TR-2016-01, available online, http://www.swirlds.com/
developer-resources/whitepapers/, 2016.
20
[8] A. Bessani and J. Sousa. From Byzantine consensus to BFT state machine replication: A latency-
optimal transformation. In Proc. 9th European Dependable Computing Conference, pages 37–48,
2012.
[9] A. N. Bessani, J. Sousa, and E. A. P. Alchieri. State machine replication for the masses with
BFT-SMaRt. In Proc. 44th International Conference on Dependable Systems and Networks, pages
355–362, 2014.
[10] B. Beyer, C. Jones, J. Petoff, and N. R. Murphy, editors. Site Reliability Engineering: How Google
Runs Production Systems. O’Reilly, Sebastopol, 2016.
[11] G. Bracha. Asynchronous Byzantine agreement protocols. Information and Computation, 75:130–
143, 1987.
[12] M. Brandenburger, C. Cachin, M. Lorenz, and R. Kapitza. Rollback and forking detection for
trusted execution environments using lightweight collective memory. e-print, arXiv:1701.00981
[cs.DC], 2017.
[13] E. Buchman. Tendermint: Byzantine fault tolerance in the age of blockchains. M.Sc. Thesis,
University of Guelph, Canada, June 2016.
[15] C. Cachin. Distributing trust on the Internet. In Proc. International Conference on Dependable
Systems and Networks (DSN-DCCS), pages 183–192, 2001.
[16] C. Cachin. Yet another visit to Paxos. Research Report RZ 3754, IBM Research, Nov. 2009.
[17] C. Cachin. Architecture of the Hyperledger blockchain fabric. Workshop on Distributed Cryp-
tocurrencies and Consensus Ledgers (DCCL 2016), 2016. URL: https://www.zurich.ibm.
com/dccl/papers/cachin_dccl.pdf.
[18] C. Cachin, R. Guerraoui, and L. Rodrigues. Introduction to Reliable and Secure Distributed Pro-
gramming (Second Edition). Springer, 2011.
[19] C. Cachin, K. Kursawe, F. Petzold, and V. Shoup. Secure and efficient asynchronous broadcast
protocols (extended abstract). In J. Kilian, editor, Advances in Cryptology: CRYPTO 2001, volume
2139 of Lecture Notes in Computer Science, pages 524–541. Springer, 2001.
[20] C. Cachin, K. Kursawe, and V. Shoup. Random oracles in Constantinople: Practical asynchronous
Byzantine agreement using cryptography. Journal of Cryptology, 18(3):219–246, 2005.
[21] C. Cachin and J. A. Poritz. Secure intrusion-tolerant replication on the Internet. In Proc. Inter-
national Conference on Dependable Systems and Networks (DSN-DCCS), pages 167–176, June
2002.
[22] M. Castro and B. Liskov. Practical Byzantine fault tolerance and proactive recovery. ACM Trans-
actions on Computer Systems, 20(4):398–461, Nov. 2002.
[24] T. D. Chandra, R. Griesemer, and J. Redstone. Paxos made live: An engineering perspective.
In Proc. 26th ACM Symposium on Principles of Distributed Computing (PODC), pages 398–407,
2007.
[25] B. Charron-Bost, F. Pedone, and A. Schiper, editors. Replication: Theory and Practice, volume
5959 of Lecture Notes in Computer Science. Springer, 2010.
21
[26] G. V. Chockler, I. Keidar, and R. Vitenberg. Group communication specifications: A comprehensive
study. ACM Computing Surveys, 33(4):427–469, 2001.
[27] A. Clement, E. L. Wong, L. Alvisi, M. Dahlin, and M. Marchetti. Making Byzantine fault tolerant
systems tolerate Byzantine faults. In Proc. 6th Symp. Networked Systems Design and Implementa-
tion (NSDI), pages 153–168, 2009.
[28] C. Copeland and H. Zhong. Tangaroa: A Byzantine fault tolerant raft. Class project in Distributed
Systems, Stanford University, http://www.scs.stanford.edu/14au-cs244b/labs/
projects/copeland_zhong.pdf, Dec. 2014.
[29] S. Duan, H. Meling, S. Peisert, and H. Zhang. BChain: Byzantine replication with high throughput
and embedded reconfiguration. In M. K. Aguilera, L. Querzoni, and M. Shapiro, editors, Proc.
18th Conference on Principles of Distributed Systems (OPODIS), volume 8878 of Lecture Notes in
Computer Science, pages 91–106. Springer, 2014.
[30] C. Dwork, N. Lynch, and L. Stockmeyer. Consensus in the presence of partial synchrony. Journal
of the ACM, 35(2):288–323, 1988.
[31] M. J. Fischer, N. A. Lynch, and M. S. Paterson. Impossibility of distributed consensus with one
faulty process. Journal of the ACM, 32(2):374–382, Apr. 1985.
[32] D. Furlonger and R. Valdes. Hype cycle for blockchain technologies and the programmable
economy, 2016. http://www.gartner.com/smarterwithgartner/3-trends-
appear-in-the-gartner-hype-cycle-for-emerging-technologies-2016,
July 2016.
[33] J. A. Garay, A. Kiayias, and N. Leonardos. The bitcoin backbone protocol: Analysis and appli-
cations. In Advances in Cryptology: Eurocrypt 2015, volume 9057 of Lecture Notes in Computer
Science, pages 281–310. Springer, 2015.
[35] R. Guerraoui, R. R. Levy, B. Pochon, and V. Quéma. Throughput optimal total order broadcast for
cluster environments. ACM Transactions on Computer Systems, 28(2):5:1–5:32, 2010.
[36] V. Hadzilacos and S. Toueg. Fault-tolerant broadcasts and related problems. In S. J. Mullender,
editor, Distributed Systems (2nd Ed.). ACM Press & Addison-Wesley, New York, 1993. Expanded
version appears as Technical Report TR94-1425, Department of Computer Science, Cornell Uni-
versity, Ithaca NY, 1994.
[38] P. Hunt, M. Konar, F. P. Junqueira, and B. Reed. ZooKeeper: Wait-free coordination for internet-
scale systems. In Proc. USENIX Annual Technical Conference, 2010.
[39] F. Junqueira, B. Reed, and M. Serafini. Zab: High-performance broadcast for primary-backup
systems. In Proc. 41st International Conference on Dependable Systems and Networks, 2011.
22
[42] L. Lamport. The part-time parliament. ACM Transactions on Computer Systems, 16(2):133–169,
May 1998.
[44] L. Lamport, R. Shostak, and M. Pease. The Byzantine generals problem. ACM Transactions on
Programming Languages and Systems, 4(3):382–401, July 1982.
[45] B. Lampson. The ABCD’s of Paxos. In Proc. 20th ACM Symposium on Principles of Distributed
Computing (PODC), 2001.
[46] Y. Lewenberg, Y. Sompolinsky, and A. Zohar. Inclusive block chain protocols. In R. Böhme and
T. Okamoto, editors, Proc. Financial Cryptography and Data Security (FC 2015), volume 8975 of
Lecture Notes in Computer Science, pages 528–547. Springer, 2015.
[47] B. Liskov. From viewstamped replication to Byzantine fault tolerance. In B. Charron-Bost, F. Pe-
done, and A. Schiper, editors, Replication: Theory and Practice, volume 5959 of Lecture Notes in
Computer Science, pages 121–149. Springer, 2010.
[49] D. Malkhi and M. K. Reiter. Byzantine quorum systems. Distributed Computing, 11(4):203–213,
1998.
[50] D. Malkhi, M. K. Reiter, and A. Wool. The load and availability of Byzantine quorum systems.
SIAM Journal on Computing, 29(6):1889–1906, 2000.
[51] W. Martino. Kadena — the first scalable, high performance private blockchain. Whitepaper, http:
//kadena.io/docs/Kadena-ConsensusWhitePaper-Aug2016.pdf, 2016.
[52] D. Mazières. The Stellar consensus protocol: A federated model for Internet-level consensus.
Stellar, available online, https://www.stellar.org/papers/stellar-consensus-
protocol.pdf, 2016.
[53] A. Miller, Y. Xia, K. Croman, E. Shi, and D. Song. The honey badger of BFT protocols. In Proc.
ACM Conference on Computer and Communications Security (CCS), 2016.
[54] S. Nakamoto. Bitcoin: A peer-to-peer electronic cash system. Whitepaper, 2009. http://
bitcoin.org/bitcoin.pdf.
[55] B. M. Oki and B. Liskov. Viewstamped replication: A new primary copy method to support highly-
available distributed systems. In Proc. 7th ACM Symposium on Principles of Distributed Computing
(PODC), pages 8–17, 1988.
[57] M. Pease, R. Shostak, and L. Lamport. Reaching agreement in the presence of faults. Journal of
the ACM, 27(2):228–234, Apr. 1980.
[59] M. Raynal. Communication and Agreement Abstractions for Fault-Tolerant Asynchronous Dis-
tributed Systems. Synthesis Lectures on Distributed Computing Theory. Morgan & Claypool, 2010.
23
[60] Ripple. Operating rippled servers. Available online, https://ripple.com/build/
rippled-setup/#properties-of-a-good-validator, 2017.
[62] G. Santos Veronese, M. Correia, A. N. Bessani, and L. C. Lung. Spin one’s wheels? Byzantine
fault tolerance with a spinning primary. In Proc. 28th Symposium on Reliable Distributed Systems
(SRDS), pages 135–144, 2009.
[63] F. B. Schneider. Implementing fault-tolerant services using the state machine approach: A tutorial.
ACM Computing Surveys, 22(4):299–319, Dec. 1990.
[65] D. Schwartz, N. Youngs, and A. Britto. The Ripple protocol consensus algorithm. Ripple Inc., avail-
able online, https://ripple.com/files/ripple_consensus_whitepaper.pdf,
2017.
[66] M. Schwarz, S. Weiser, D. Gruss, C. Maurice, and S. Mangard. Malware guard extension: Using
SGX to conceal cache attacks. e-print, arXiv:1702.08719 [cs.CR], 2017.
[68] J. Sousa and A. Bessani. Separating the WHEAT from the chaff: An empirical design for geo-
replicated state machines. In Proc. 34th Symposium on Reliable Distributed Systems (SRDS), pages
146–155, 2015.
[69] T. K. Srikanth and S. Toueg. Simulating authenticated broadcasts to derive simple fault-tolerant
algorithms. Distributed Computing, 2:80–94, 1987.
[71] R. van Renesse, N. Schiper, and F. B. Schneider. Vive la différence: Paxos vs. viewstamped repli-
cation vs. zab. IEEE Transactions on Dependable and Secure Computing, 12(4):472–484, 2015.
[72] R. van Renesse and F. B. Schneider. Chain replication for supporting high throughput and avail-
ability. In Proc. 6th Symp. Operating Systems Design and Implementation (OSDI), 2004.
[73] M. Vukolić. Quorum Systems: With Applications to Storage and Consensus. Synthesis Lectures on
Distributed Computing Theory. Morgan & Claypool, 2012.
[74] M. Vukolić. Rethinking permissioned blockchains. In Proc. ACM Workshop on Blockchain, Cryp-
tocurrencies and Contracts (BCC ’17), 2017.
24