Causal is a Reliable Causal Broadcast (RCB) protocol implemented in Rust and Actix.
The protocol is an adaptation from this article which is a great read for anyone wanting to try and learn more about operation-based CRDTs.
Operation-based CRDTs are also called commutative replicated data types, or CmRDTs. CmRDT replicas propagate state by transmitting only the update operation. Replicas receive the updates and apply them locally.
The operations are commutative. However, they are not necessarily idempotent. The communications infrastructure must therefore ensure that all operations on a replica are delivered to the other replicas, without duplication, but in any order.
- ORSet
- LSeq
- RGA
Please note that the work on this protocol has just been started and there are for sure bugs and features that must be solved/added.