  Fault-tolerant consensus has been studied extensively in the literature,
because it is one of the most important distributed primitives and has wide
applications in practice. This paper surveys important results on
fault-tolerant consensus in message-passing networks, and the focus is on
results from the past decade. Particularly, we categorize the results into two
groups: new problem formulations and practical applications. In the first part,
we discuss new ways to define the consensus problem, which includes larger
input domains, link fault models, different network models . . . etc, and
briefly discuss the important techniques. In the second part, we focus on Crash
Fault-Tolerant (CFT) systems that use Paxos or Raft, and Byzantine
Fault-Tolerant (BFT) systems. We also discuss Bitcoin, which can be related to
solving Byzantine consensus in anonymous systems, and compare Bitcoin with BFT
systems and Byzantine consensus.
