Paper 2022/1433

BG: A Modular Treatment of BFT Consensus

Xiao Sui, Shandong University
Sisi Duan, Tsinghua University
Haibin Zhang, Beijing Institute of Technology

We provide an expressive framework that allows analyzing and generating provably secure, state-of-the-art Byzantine fault-tolerant (BFT) protocols. Our framework is hierarchical, including three layers. The top layer is used to model the message pattern and abstract key functions on which BFT algorithms can be built. The intermediate layer provides the core functions with high-level properties sufficient to prove the security of the top-layer algorithms. The bottom layer carefully defines predicates according to which we offer operational realizations for the core functions. All three layers in our framework are extensible and enable innovation. One may modify or extend any layer to theoretically cover all BFT protocols, known and unknown. Indeed, unlike prior BFT frameworks, our framework can analyze and recast BFT protocols in an exceedingly fine-grained manner. More importantly, our framework can readily generate new BFT protocols by simply enumerating the parameters in the framework. In this paper, we show that the framework allows us to fully specify and formally prove the security for 23 BFT protocols, including protocols matching HotStuff, Fast-HotStuff, Jolteon, and Marlin, and among these protocols, seven new protocols outperforming existing ones or achieving meaningful trade-offs among various performance metrics.

Available format(s)
Publication info
BFT Byzantine fault tolerance modular treatment consensus theory BG dominant predicate
Contact author(s)
suixiao @ mail sdu edu cn
duansisi @ tsinghua edu cn
haibin @ bit edu cn
2022-10-25: revised
2022-10-21: received
See all versions
Short URL
Creative Commons Attribution


      author = {Xiao Sui and Sisi Duan and Haibin Zhang},
      title = {BG:  A Modular Treatment of BFT Consensus},
      howpublished = {Cryptology ePrint Archive, Paper 2022/1433},
      year = {2022},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.