Dear Community members!
IDEAS Center has been deeply involved in the development of SmartBFT consensus library and would like to propose RFC https://github.com/hyperledger/fabric-rfcs/pull/33 that argues about the necessity of BFT protocol as part of enterprise grade blockchain platform. The RFC highlights the implementation details and the efforts required to integrate the library into Hyperledger Fabric. Currently we are seeking for engagements with community and in particular with Hyperledger Fabric maintainers in order to identify milestones and formulate reasonable integration strategy and the roadmap, striving to generate small self containable deliverables and providing on going support going forward.
In the heart of the BFT ordering service for Hyperledger Fabric implementation lies a new consensus library, based on the BFT-Smart protocol, implemented in Go. The library presents APIs suited for permissioned blockchain applications, such as Fabric. It delegates many of the core functions that any such library must use to the application employing it, allowing for maximal flexibility and generality. For example, cryptographic functions, identity management, as well as point to point communication are not embedded but are exposed through proper interfaces, to be implemented by the application using it. This allowed us to re-use some of the sophisticated mechanisms that Fabric already possessed. In the quest to make Fabric a truly end-to-end BFT system, it is not enough to augment the ordering service alone. We took special care to ensure that the peer and the client SDK interact properly with the BFT ordering service.
We chose to implement the BFT-Smart protocol because of its simplicity and elegance. This protocol is significantly simpler than PBFT, because it does not allow for a transaction pipeline. In BFTSmart there is only a single proposed transaction by a given leader at any point in time, which dramatically simplifies the view change sub-protocol. This simplicity greatly increases our confidence in the correctness of the implementation and reduced the effort it took to implement the library. However, these advantages come with a cost – reduced performance. This is especially salient when comparing against the highly mature and optimized etcd/raft library, which uses pipelining extensively. Despite the cost of reduced performance relative to etcd/raft, our implementation exhibits levels of performance that are sufficient for most permissioned blockchain applications: a 7 node BFT ordering service (𝐹 = 2) can support over 2500 TPS in a LAN, and over 1000 TPS in a WAN. These numbers are for a single channel; a Fabric network can scale horizontally by adding channels.
IDEAS Center is managing Smart BFT additional development at the moment and will be responsible for the following support and new Fabric versions compatibility.