State Machine Replication

Definition

In an SMR protocol, there are two types of nodes: \emph{servers} and \emph{clients}.
The servers run the SMR protocol and the clients (can be servers) submit \emph{requests} to the state machine using the interface provided by the SMR protocol.
The state output by the servers in an SMR protocol must be consistent across all servers, i.e.,\ no two honest servers output different states at any point.
Here, consistency means that the clients should obtain views as though a single state machine executed all requests.
We realize the state machine using a distributed linearizable append-only log consisting of a block of client requests.
As long as the honest servers agree on the log, they will derive a deterministic and thus, consistent state.

\begin{definition}[SMR --- State Machine Replication~\cite{schneiderImplementingFaulttolerantServices1990}]%
\label{def:smr}
  A State Machine replication protocol generates a linearizable log of client requests akin to a single non-faulty server among the servers with the following guarantees:
  \begin{asparaenum}[(1)]
    \item \textbf{Safety.} Honest servers do not output different requests at the same log position.
    \item \textbf{Liveness.} Each client request is eventually output by all honest servers.
  \end{asparaenum}
\end{definition}

Questions to ask when reading an SMR paper

  • What network? (Synchrony, etc.)
  • What fault? (Crash, Byzantine, etc.)
  • What corruption? (Static, Adaptive, etc.)

Notes

Surveys

  1. [3] SoK: Achieving State Machine Replication in Blockchains based on Repeated Consensus
  2. [4] SoK: A Taxonomy for Critical Analysis of Consensus Mechanisms in Consortium Blockchain
  3. [5] SoK: Diving into DAG-based Blockchain Systems
  4. [6] SoK: A Consensus Taxonomy in the Blockchain Era
  5. [7]
  6. [8]
  7. [9]
  8. [10]
  9. [11]
  10. [12]
  11. [13]