A Byzantine Fault-Tolerant Consensus Library for Hyperledger Fabric

Artem Barger,Yacov Manevich,Hagar Meir,Yoav Tock
DOI: https://doi.org/10.48550/arXiv.2107.06922
2021-07-15
Abstract: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.1) supporting only Crash Fault-Tolerance (CFT). In our work, we address crucial aspects of BFT integration into Fabric that were left unsolved in all prior works, making them unfit for production use. 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. We evaluate the new BFT ordering service by comparing it with the currently supported Raft-based CFT ordering service in Hyperledger Fabric.
Distributed, Parallel, and Cluster Computing,Cryptography and Security
What problem does this paper attempt to address?
The problem that this paper attempts to solve is to implement a Byzantine Fault - Tolerant (BFT) ordering service in Hyperledger Fabric. Hyperledger Fabric is an enterprise - level permissioned distributed ledger platform, which provides a modular architecture to support a wide range of industry application scenarios. One of the modular components is a pluggable ordering service, which is responsible for establishing consensus on the order of transactions and batching transactions into blocks. However, at the time of writing this paper, Fabric does not yet have a production - level BFT ordering service, and the latest version (v2.3) only supports Crash Fault - Tolerance (CFT). The paper describes the process of designing and implementing a BFT ordering service suitable for Fabric, which is based on a new BFT consensus library. This new library is based on the BFT - SMART protocol, written in Go language, optimized for blockchain use cases and general enough to be adapted to many other uses. The design of the BFT library and its integration with Fabric solve the key problems that were not solved in previous work, which made previous attempts unusable in production environments. The author evaluates the performance of the new BFT ordering service by comparing it with the currently supported Raft - based CFT ordering service. The main contributions include: - An independent Byzantine Fault - Tolerant consensus library, based on BFT - SMART, with open - source code and written in Go language. - An easily integrable consensus library interface, suitable for blockchain applications, but also fully customizable to adapt to other use cases. - A comprehensive integration with Hyperledger Fabric, solving the BFT problems of all its components. This BFT - version of Fabric is an open - source project publicly available, with an SDK. - An evaluation of the BFT - version of Fabric and the Raft - based Fabric, and the results show that its implementation performance is comparable to the earlier BFT - SMART - based implementation, but slower than Raft due to the lack of pipelining. In general, this paper aims to enhance the security and reliability of Hyperledger Fabric by introducing a BFT ordering service, enabling it to better resist malicious behavior and failures.