a simulation that shows various ways to deal with byzantine failures in distributed systems