The approach taken to maximize concurrency and im- prove performance is to restrict the use of the PBFT pro- tocol to only the operations that need to be totally or- dered among each other. Other operations can execute speculatively in a single replica (that may be faulty and provide incorrect replies) and we delay validating these replies until commit time. The application program starts a transaction by exe- cuting a BEGIN operation (function db begin, Figure 2, line 1). The client starts by generating a unique iden- tifier for the transaction and selecting a replica respon- sible to speculatively execute the transaction – we call this the coordinator replica for the transaction.