“…Fault-tolerant protocols have been extensively used by distributed systems to provide robustness and high availability [42,55,61,82,94,131,180]. While cloud systems, such as Google's Spanner [82], Amazon's Dynamo [94], and Facebook's Tao [61], rely on crash fault-tolerant protocols, e.g., Paxos [149], to establish consensus, a Byzantine fault-tolerant (BFT) protocol is a key ingredient in distributed systems with non-trustworthy infrastructures, e.g., permissioned blockchains [1- 3, 24, 26, 28-30, 32, 44, 78, 115-117, 124, 147, 196, 203, 206] and even permissionless blockchains [62,139,141,167,230], distributed file systems [13,70,80], locking service [81], firewalls [53,111,112,202,213,228], certificate authority systems [234], SCADA systems [40,138,188,233], key-value datastores [51,98,114,127,202], and key management [170].…”