The present study builds a taxonomy of State Machine Replication (SMR) and Transactional Replication (TR) models based on three algorithmic descriptors: the existence or the absence of a leader, synchronicity and the type of fault tolerance. As per FLP theorem, termination cannot be guaranteed in deterministic algorithms in the presence of even a single faulty process. However, the taxonomy shows that this impossibility has been overcome through weak asynchrony assumptions to ensure termination or using randomized methods to ensure termination deterministically. Increased resource usage and low throughput are major problems associated with current Byzantine Fault Tolerance (BFT) systems. Cross Fault Tolerance (XFT) is a new approach which solves practical BFT cases with minimal resources. The article further concludes with a short review of selected open source practical frameworks that implement SMR like Hyperledger, Apache Kafka, Zookeeper, Zab, etcd, zetcd and piChain.