  Blockchain and distributed ledger technologies rely on distributed consensus
algorithms. In recent years many consensus algorithms and protocols have been
proposed; most of them are for permissioned blockchain networks. However, the
performance of these algorithms is not well understood. This paper introduces
an approach to evaluating consensus algorithms and blockchain platforms in a
hostile network environment with the presence of byzantine and other network
failures. The approach starts by using stochastic modeling to model the
behaviors of consensus algorithms under different typical and faulty
operational scenarios. Next, we implemented a blockchain application using
different consensus protocols and tested their performance using chaos
engineering techniques. To demonstrate our generic evaluation approach, we
analyze the performance of four permissioned blockchain platforms and their
consensus protocols. Our results showed that stochastic modeling is an
inexpensive and efficient technique for analyzing consensus protocols. But they
do not represent the actual performance of the consensus protocols in a
production environment. Moreover, an experiment with chaos engineering
indicates that if two different blockchain platforms use the same blockchain
algorithm or protocol, we should not assume they will have similar performance.
Therefore, It is also essential to consider the role of platform architecture
and how the protocols are engineered in a given platform.
