A review of consensus protocols