 Designing an algorithm for atomic broadcasts is relatively easy if it can be assumed that computers will not fail.For example, if there are no failures, atomic broadcast can be achieved simply by having all participants communicate with one "leader" which determines the order of the messages, with the other participants following the leader.However, real computers are faulty; they fail and recover from failure at unpredictable, possibly inopportune, times.