JBP - Java Byzantine Paxos

JBP aims to provide a complete, modular and clear implementation of the Byzantine Paxos agreement protocol in Java programming language. Since there are several variants of this algorithm, we choose to implement Paxos at War, by Piotr Zielinski, for consensus and extended it to for total order multicast adding only one communication step and maintaining the quadratic message complexity using the usual technique proposed by Leslie Lamport in the Classical Paxos algorithm and later extended by Castro and Liskov in the BFT system.

JBP was developed because there was no implementation of a fast Byzantine fault-tolerant Total order multicast protocol in Java. Moreover, JBP implementation follow the same line of the BFT system (implemented in C), but we want to separate state management (basically, checkpoints) from the core total order multicast algorithm.

JBP was used in the Byzantine fault-tolerant replication layer of DepSpace.


Mar 2009: Version 0.3 of JBP and Communication Library
Dec 2008: Version 0.2 of JBP and Communication Library


JBP is developed by Eduardo Alchieri (alchieri at das dot ufsc dot br) with some help from Alysson Neves Bessani (bessani at di dot fc dot ul dot pt) and Paulo Sousa (pjsousa at di dot fc dot ul dot pt).
Software and Documentation:

JBP sources (version 0.3) (The communication library sources can be found here)

Currently we don't have much documentation for this project, however, if you want to use JBP to implement a BFT service please take a look on the package br.ufsc.das.tom.demo, and more specifically at the CounterClient and CounterServer classes, which uses the ServiceProxy and ServiceReplica classes to implement a BFT client and server for a dummy counter service, respectivelly.

There is a readme file in the project package that shows how to run this demonstration and gives some more information.
Want to use or contribute?

If you want to use or contribute to this project feel free to send an email to Alysson (bessani at di dot fc dot ul dot pt).

Byzantine Paxos Literature:
Paxos at War
The Byzantine Paxos variant used as basis for JBP.
Practical Byzantine Fault Tolerance and Proactive Recovery
The original Byzantine Paxos protocol as defined and implemented for state machine replication.
Fast Byzantine Consensus
This paper defines the Parametrized Fast Paxos and proves its optimality.

Related efforts:
The first Byzantine Paxos implementation. The main difference between BFT and JBP is that the former is implemented in C language and provides a complete implementation of state machine replication (including checkpoints) and proactive recovery.

Back to JITT
Back to Navigators
Updated in 02/03/2009