Bachelor / Master Thesis

Implementing PBFT in DistAlgo language

Practical Byzantine Fault Tolerance (or PBFT, see [1]) is a classic total-order broadcast (or, equivalently, consensus) algorithm that was introduced in 1999 by Castro and Liskov. Since then it has been heavily studied and inspired a number of newer consensus and replication algorithms.

In short, PBFT works as follows. The system consists of a number of replicas. The protocol runs through a sequence of views and for each view one replica acts as the primary and the rest as backups. When the primary wants to broadcast a message, it starts a three-phase protocol, which will lead to the message being delivered by every correct replica. The protocols also specifies a mechanism for the backups to replace a faulty primary.

DistAlgo [2] is a very high-level language based on Python for programming distributed algorithms. It allows to implement a distributed algorithm writing (almost) pseudocode. The code is then compiled to Python by the DistAlgo compiler. As an example, you can see on [3] how DistAlgo can be used to describe the Paxos algorithm.

The goal of this thesis to explore the DistAlgo language and to implement the PBFT protocol with it. The project starts from the pseudocode of PBFT and from existing implementations in DistAlgo of other, similar distributed protocols such as Paxos.

References

[1] PBFT paper

[2] DistAlgo

[3] Paxos using DistAlgo

Contact Orestis Alpos or Luca Zanolini for more information.

Nature of the project: Theory 30%, Systems 70%.