In the first part of this tutorial we will provide a new general framework that can be used to explain many consensus protocol variants. We start with a simple primary backup replication scheme and via a series of steps extend it in several dimensions:
- from crash failures, to omission failures, to Byzantine failures.
- from single-shot to multi-shot.
- from synchrony, to partial synchrony, to asynchrony.
In the second part of this tutorial we will touch upon the deep connections between Byzantine fault-tolerance and blockchains.