Distributed Systems 2.2: The Byzantine generals problem