A byzantine fault-tolerant consensus library for hyperledger fabric
Hyperledger Fabric is an enterprise grade permissioned distributed ledger platform that offers modularity for a broad set of industry use cases. One modular component is a pluggable ordering service that establishes consensus on the order of transactions and batches them into blocks. However, as of the time of this writing, there is no production grade Byzantine Fault-Tolerant (BFT) ordering service for Fabric, with the latest version (v2.3) supporting only Crash Fault-Tolerance (CFT).In this work we describe the design and implementation of a BFT ordering service for Fabric, employing a new BFT consensus library. The new library, based on the BFT-SMART protocol and written in Go, is tailored to the blockchain use-case, yet is general enough to cater to a wide variety of other uses. The BFT library's design and integration into Fabric address crucial aspects that were left unsolved in all prior work, making them unfit for production use. We evaluate the new BFT ordering service by comparing it with the currently supported Raft-based CFT ordering service in Hyperledger Fabric.