The building blocks of consensus
Reaching Agreement in the Presence of Faults