The state machine approach is a general method for achieving fault tolerance and implementing decentralized control in distributed
systems. This paper reviews the approach and identifies abstractions needed for coordinating ensembles of state machines.
Implementations of these abstractions for two different failure models—Byzantine and fail-stop—are discussed. The state machine
approach is illustrated by programming several examples. Optimization and system reconfiguration techniques are explained.
This material is based on work supported in part by the Office of Naval Research under contract N00014-86-K-0092, the National
Science Foundation under Grant No. CCR-8701103, and Digital Equipment Corporation. Any opinions, findings, and conclusions
or recommendations expressed in this publication are those of the author and do not reflect the views of these agencies.