Protocol replicated data types (PRDTs) are a novel approach for implementing distributed protocols using replicated data types (RDTs). The core idea is to use RDTs as a way to track protocol knowledge that is replicated between the different peers. Whenever a peer makes progress on the protocol, they add new facts to this knowledge store which will eventually reach other peers. The replicated knowledge grows monotonically and once discovered facts are never removed again. By relying on this simple abstraction, protocol designers can ignore many of the low-level intricacies of distributed systems such as message loss and out of order message delivery.
In this project, you will get to know the PRDT approach by reading the relevant paper. Afterwards, your goal is to implement one or more custom protocols using the PRDT library implemented in Scala. The focus is on compositionality: Building more complex application-specific protocols through composition of smaller more general building blocks.
Links: