Abstract
Byzantine Fault Tolerant (BFT) systems are considered to be state of the art with regards to providing reliability in distributed systems. Despite over a decade of research, however, BFT systems are rarely used in practice. In this paper, we describe our experience, from an application developer’s perspective, trying to leverage the publicly available, highly- studied and extended “PBFT” middleware (by Castro and Liskov), to provide provable reliability guarantees for an electronic voting application with high security and robustness needs.
We describe several obstacles we encountered and drawbacks we identified in the PBFT approach. These include some that we tackled, such as lack of support for dynamic client management and leaving state management completely up to the application. Others still remaining include the lack of robust handling of non-determinism, lack of support for web-based applications, lack of support for stronger cryptographic primitives, and more. We find that, while many of the obstacles could be overcome, they require significant engineering effort and time and their performance implications for the end-application are unclear. An application developer is thus unlikely to be willing to invest the time and effort to do so to leverage the BFT approach.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Schneider, F.: Implementing fault-tolerant services using the state machine approach: a tutorial. ACM Computing Surveys 22(4), 299–319 (1990)
Lamport, L., Shostak, R., Pease, M.: The byzantine generals problem. ACM TPLS 4(3), 382–401 (1982)
Castro, M., Liskov, B.: Practical byzantine fault tolerance. In: OSDI (February 1999)
Clement, A., Wong, E., Alvisi, L., Dahlin, M.: Making byzantine fault tolerant systems tolerate byzantine faults. In: NSDI (April 2009)
Yin, J., Martin, J.P., Venkataramani, A., Alvisi, L., Dahlin, M.: Separating agreement from execution for byzantine fault tolerant services. In: SOSP (October 2003)
Kotla, R., Dahlin, M.: High throughput byzantine fault tolerance. In: DSN (June 2004)
Abd-El-Malek, M., Ganger, G., Goodson, G., Reiter, M., Wylie, J.: Fault-scalable byzantine fault-tolerant services. In: SOSP (October 2005)
Cowling, J., Myers, D., Liskov, B., Rodrigues, R., Shrira, L.: Hq relication: A hybrid quorum protocol for byzantine fault tolerance. In: OSDI (November 2006)
Distler, T., Kapitza, R.: Increasing performance in byzantine fault-tolerant systems with on-demand replica consistency. In: EuroSys (April 2011)
Garcia, R., Rodrigues, R., Preguica, N.: Efficient middleware for byzantine fault tolerant database replication. In: EuroSys (April 2011)
Kotla, R., Alvisi, L., Dahlin, M., Clement, A., Wong, E.: Zyzzyva: Speculative byzantine fault tolerance. In: SOSP (October 2007)
Vandiver, B., Balakrishnan, H., Liskov, B., Madden, S.: Tolerating byzantine faults in transaction processing systems using commit barrier scheduling. In: SOSP (October 2007)
Wood, T., Singh, R., Venkataramani, A., Shenoy, P., Cecchet, E.: Zz and the art of practical bft. In: EuroSys (April 2011)
Distler, T., Kapitza, R., Popov, I., Reiser, H., Schroder-Preikschat, W.: Spare: Replicas on hold. In: NDSS (February 2011)
Amir, Y., Coan, B., Kirsch, J., Lane, J.: Byzantine replication under attack. In: DSN (June 2008)
Kiayias, A., Korman, M., Walluck, D.: An internet voting system supporting user privacy. In: ACSAC (December 2006)
Guerraoui, R., Knezevic, N., Quema, V., Vukolic, M.: The next 700 bft protocols. In: EuroSys (April 2010)
Clement, A., Kapritsos, M., Lee, S., Wang, Y., Alvisi, L., Dahlin, M., Riche, T.: Upright cluster services. In: SOSP (October 2009)
Singh, A., Das, T., Maniatis, P., Druschel, P., Roscoe, T.: BFT protocols under fire. In: NSDI (2008)
Sen, S., Lloyed, W., Freedman, M.: Prophecy: Using history for high-throughput fault tolerance. In: NSDI (April 2010)
Lamport, L.: The implementation of reliable distributed multiprocess systems. Computer Networks 2 (1978)
Herlihy, M., Wing, J.M.: Linearizability: A correctness condition for concurrent objects. ACM TPLS 12(3), 463–492 (1990)
Lynch, N.: Distributed Algorithms. Morgan Kaufmann (1996)
Merkle, R.C.: A Digital Signature Based on a Conventional Encryption Function. In: Pomerance, C. (ed.) CRYPTO 1987. LNCS, vol. 293, pp. 369–378. Springer, Heidelberg (1988)
Castro, M., Rodrigues, R., Liskov, B.: BASE: Using abstraction to improve fault tolerance. ACM TOCS 21(3) (August 2003)
Sqlite embedded database engine, http://www.sqlite.org
Desmedt, Y.G., Frankel, Y.: Threshold Cryptosystems. In: Brassard, G. (ed.) CRYPTO 1989. LNCS, vol. 435, pp. 307–315. Springer, Heidelberg (1990)
Amir, Y., Danilov, C., Dolev, D., Kirsch, J., Lane, J., Nita-rotaru, C., Olsen, J., Zage, D.: Steward: Scaling byzantine fault-tolerant systems to wide area networks. In: DSN (2006)
Upright: Making distributed systems up (available) and right (correct), http://code.google.com/p/upright/w/list
Merideth, M., Iyengar, A., Mikalsen, T., Tai, S., Rouvellou, I., Narasimhan, P.: Thema: Byzantine-fault-tolerant middleware for web-service applications. In: SRDS (October 2005)
Pallemulle, S.L., Thorvaldsson, H.D., Goldman, K.J.: Byzantine fault-tolerant web services for n-tier and service oriented architectures. In: ICDCS (June 2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 IFIP International Federation for Information Processing
About this paper
Cite this paper
Chondros, N., Kokordelis, K., Roussopoulos, M. (2012). On the Practicality of Practical Byzantine Fault Tolerance. In: Narasimhan, P., Triantafillou, P. (eds) Middleware 2012. Middleware 2012. Lecture Notes in Computer Science, vol 7662. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-35170-9_22
Download citation
DOI: https://doi.org/10.1007/978-3-642-35170-9_22
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-35169-3
Online ISBN: 978-3-642-35170-9
eBook Packages: Computer ScienceComputer Science (R0)