[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/3688225.3688237acmotherconferencesArticle/Chapter ViewAbstractPublication PagesbiotcConference Proceedingsconference-collections
research-article

Pluggable Consensus in Hyperledger Fabric

Published: 16 October 2024 Publication History

Abstract

Permissioned blockchain for decentralized systems is pivotal in the public and private sectors, such as banking, healthcare, or the supply chain. It is fulfilling a variety of organizational requirements. The consensus protocol is the critical component of every decentralized system. Hyperledger Fabric stands as one of the leading production-ready distributed network platforms. While Hyperledger Fabric offers the flexibility of plugging in various consensus protocols, it needs comprehensive technical guidance to achieve this. Additionally, the initial release of Fabric relied on Kafka as its consensus protocol and later transitioned to Raft, both of which are Crash Fault-Tolerant (CFT) protocols unsuitable for handling Byzantine fault participants. This paper delves into the essential steps of the Orderer node architecture and Raft protocol. It provides a successful integration example of a finality gadget BFT-type protocol BDLS. The BDLS consensus protocol is recognized for its efficiency and holds significant promise within Byzantine Fault Tolerance (BFT) protocols. In the last part of the paper, we compare the performance of Raft and BDLS-based Hyperledger Fabrics. Our findings underscore the viability of BDLS as a practical consensus option for Hyperledger Fabric. It significantly enhances fault-tolerant protocols used by Hyperledger Fabric, bringing it closer to the existing CFT module, Raft-based Fabric implementation.

References

[1]
Veneta Aleksieva, Hristo Valchanov, and Anton Huliyan. 2020. Implementation of smart-contract, based on hyperledger fabric blockchain. In 2020 21st International Symposium on Electrical Apparatus & Technologies (SIELA). IEEE, 1–4.
[2]
Elli Androulaki, Artem Barger, Vita Bortnikov, Christian Cachin, Konstantinos Christidis, Angelo De Caro, David Enyeart, Christopher Ferris, Gennady Laventman, Yacov Manevich, 2018. Hyperledger fabric: a distributed operating system for permissioned blockchains. In Proceedings of the thirteenth EuroSys conference. 1–15.
[3]
Apache Kafka 2011. Apache Kafka. https://kafka.apache.org/.
[4]
BatchTimeout in Orderer configtx.yaml Hyperledger Fabric Test Network [n. d.]. BatchTimeout in Orderer configtx.yaml Hyperledger Fabric Test Network. https://github.com/BDLS-bft/fabric-samples/blob/main/test-network-nano-bash/bft-config/configtx.yaml##L181-L204.
[5]
bdls chain support [n. d.]. chainsupport.go source code file. https://github.com/BDLS-bft/fabric/blob/main-bdls/orderer/common/multichannel/chainsupport.go.
[6]
bdls registrar [n. d.]. registrar.go source code file. https://github.com/BDLS-bft/fabric/blob/main-bdls/orderer/common/multichannel/registrar.go.
[7]
benchmarking hyperledger fabric [n. d.]. BENCHMARKING HYPERLEDGER FABRIC 2.5 PERFORMANCE. https://www.hyperledger.org/blog/2023/02/16/benchmarking-hyperledger-fabric-2-5-performance.
[8]
Christian Cachin 2016. Architecture of the hyperledger blockchain fabric. In Workshop on distributed cryptocurrencies and consensus ledgers, Vol. 310. Chicago, IL, 1–4.
[9]
case raftpb.EntryConfChange in chain Hyperledger Fabric [n. d.]. case raftpb.EntryConfChange in chain Hyperledger Fabric. https://github.com/BDLS-bft/fabric/blob/BDLS-RAFT-TPS-readyc/orderer/consensus/etcdraft/chain.go##L1179-L1230.
[10]
Miguel Castro, Barbara Liskov, 1999. Practical byzantine fault tolerance. In OsDI, Vol. 99. 173–186.
[11]
Chain interface in Hyperledger Fabric consensus.go [n. d.]. Chain interface in Hyperledger Fabric consensus.go. https://github.com/BDLS-bft/fabric/blob/BDLS-RAFT-TPS-readyc/orderer/consensus/consensus.go##L57-L91.
[12]
Consenter interface in Hyperledger Fabric consensus.go [n. d.]. Consenter interface in Hyperledger Fabric consensus.go. https://github.com/BDLS-bft/fabric/blob/BDLS-RAFT-TPS-readyc/orderer/consensus/consensus.go##L19-L27.
[13]
consenters BFT = bdls.New functions in main.go Hyperledger Fabric lab/BDLS [n. d.]. consenters BFT = bdls.New functions in main.go Hyperledger Fabric lab/BDLS. https://github.com/hyperledger-labs/bdls/blob/BDLS-RAFT-TPS-readyc/orderer/common/server/main.go##L628.
[14]
ConsenterSupport interface in Hyperledger Fabric consensus.go [n. d.]. ConsenterSupport interface in Hyperledger Fabric consensus.go. https://github.com/BDLS-bft/fabric/blob/BDLS-RAFT-TPS-readyc/orderer/consensus/consensus.go##L95-L138.
[15]
Cynthia Dwork, Nancy Lynch, and Larry Stockmeyer. 1988. Consensus in the presence of partial synchrony. Journal of the ACM (JACM) 35, 2 (1988), 288–323.
[16]
etcd [n. d.]. etcd: Distributed reliable key-value store for the most critical data of a distributed system. https://etcd.io/.
[17]
Fabric 2.5 2023. Hyperledger Fabric Consensus protocols release-2.5 orderer/consensus package. https://github.com/hyperledger/fabric/tree/release-2.5/orderer/consensus.
[18]
Fabric BDLS supportproject in Hyperledger Fabric lab/BDLS [n. d.]. Fabric BDLS supportproject in Hyperledger Fabric lab/BDLS. https://github.com/hyperledger-labs/bdls.
[19]
fabric pluggable [n. d.]. Pluggable Consensus. https://hyperledger-fabric.readthedocs.io/en/latest/whatis.html##pluggable-consensus.
[20]
github Fabric samples test network nano bash Main [n. d.]. fabric-samples/test-network-nano-bash at main hyperledger/fabric-samples-github.com. https://github.com/hyperledger/fabric-samples/tree/main/test-network-nano-bash. [2023].
[21]
google golang [n. d.]. The Go Programming Language. https://go.dev/.
[22]
Heidi Howard and Richard Mortier. 2020. Paxos vs Raft: Have we reached consensus on distributed consensus. In Proceedings of the 7th Workshop on Principles and Practice of Consistency for Distributed Data. 1–9.
[23]
Leslie Lamport. 2019. The part-time parliament. In Concurrency: the Works of Leslie Lamport. Association for Computing Machinery, 277–317.
[24]
Leslie Lamport 2001. Paxos made simple. ACM Sigact News 32, 4 (2001), 18–25.
[25]
Leslie Lamport, Robert Shostak, and Marshall Pease. 2019. The Byzantine generals problem. In Concurrency: the works of leslie lamport. 203–226.
[26]
Qassim Nasir, Ilham A Qasse, Manar Abu Talib, Ali Bou Nassif, 2018. Performance analysis of hyperledger fabric platforms. Security and Communication Networks 2018 (2018).
[27]
Binh Nguyen. 2017. Hyperledger Fabric - A Brief History — linkedin.com. https://www.linkedin.com/pulse/hyperledger-fabric-brief-history-binh-nguyen.
[28]
Diego Ongaro and John Ousterhout. 2013. In search of an understandable consensus algorithm (extended version). https://web.stanford.edu/ ouster/cgi-bin/papers/raft-atc14.
[29]
Diego Ongaro and John Ousterhout. 2014. In search of an understandable consensus algorithm. In 2014 { USENIX} Annual Technical Conference ({ USENIX}{ ATC} 14). 305–319.
[30]
open block chain 2015. openblockchain — github.com. https://github.com/openblockchain.
[31]
Order and Configure functions in chain.go Hyperledger Fabric core [n. d.]. Order and Configure functions in chain.go Hyperledger Fabric core. https://github.com/BDLS-bft/fabric/blob/BDLS-RAFT-TPS-readyc/orderer/consensus/etcdraft/chain.go##L399-L409.
[32]
Harish Sukhwani, Nan Wang, Kishor S Trivedi, and Andy Rindos. 2018. Performance modeling of hyperledger fabric (permissioned blockchain network). In 2018 IEEE 17th international symposium on network computing and applications (NCA). IEEE, 1–8.
[33]
Parth Thakkar, Senthil Nathan, and Balaji Viswanathan. 2018. Performance benchmarking and optimizing hyperledger fabric blockchain platform. In 2018 IEEE 26th international symposium on modeling, analysis, and simulation of computer and telecommunication systems (MASCOTS). IEEE, 264–276.
[34]
The Ordering Service — Hyperledger-Fabricdocs Main Documentation 2024. The Ordering Service — Hyperledger-Fabricdocs Main Documentation. https://hyperledger-fabric.readthedocs.io/en/latest/orderer/ordering_service.html.
[35]
The raft consensus algorithm 2020. The raft consensus algorithm. https://raft.github.io.
[36]
Yongge Wang. 2022. Byzantine fault tolerance for distributed ledgers revisited. Distributed Ledger Technologies: Research and Practice 1, 1 (2022), 1–26.

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Other conferences
BIOTC '24: Proceedings of the 2024 6th Blockchain and Internet of Things Conference
July 2024
143 pages
ISBN:9798400717000
DOI:10.1145/3688225
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 16 October 2024

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Byzantine Fault Tolerance
  2. blockchain
  3. distributed computing
  4. partial synchronous networks
  5. security models

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Conference

BIOTC 2024

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 18
    Total Downloads
  • Downloads (Last 12 months)18
  • Downloads (Last 6 weeks)7
Reflects downloads up to 04 Feb 2025

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format.

HTML Format

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media