  In recent years, blockchain technology has received unparalleled attention
from academia, industry, and governments all around the world. It is considered
a technological breakthrough anticipated to disrupt several application
domains. This has resulted in a plethora of blockchain systems for various
purposes. However, many of these blockchain systems suffer from serious
shortcomings related to their performance and security, which need to be
addressed before any wide-scale adoption can be achieved. A crucial component
of any blockchain system is its underlying consensus algorithm, which in many
ways, determines its performance and security. Therefore, to address the
limitations of different blockchain systems, several existing as well novel
consensus algorithms have been introduced. A systematic analysis of these
algorithms will help to understand how and why any particular blockchain
performs the way it functions. However, the existing studies of consensus
algorithms are not comprehensive. Those studies have incomplete discussions on
the properties of the algorithms and fail to analyse several major blockchain
consensus algorithms in terms of their scopes. This article fills this gap by
analysing a wide range of consensus algorithms using a comprehensive taxonomy
of properties and by examining the implications of different issues still
prevalent in consensus algorithms in detail. The result of the analysis is
presented in tabular formats, which provides a visual illustration of these
algorithms in a meaningful way. We have also analysed more than hundred top
crypto-currencies belonging to different categories of consensus algorithms to
understand their properties and to implicate different trends in these
crypto-currencies. Finally, we have presented a decision tree of algorithms to
be used as a tool to test the suitability of consensus algorithms under
different criteria.
