Skip to content

Horusiath/crdt-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRDT Examples

This repository contains an example implementation of various CRDTs. It serves mainly academic purposes (the implementations are meant to be simple and easy to understand, not optimized). If you want help or want to actually use them on production please let me know ;)

List of CRDTs (implemented and to be implemented):

  1. Convergent (state-based):

    • Delta-based
      • Grow-only Counter
      • Positive/Negative Counter
      • Grow-only Set
      • Add Wins Observed Remove Set
      • Multi Value Register
      • YATA
    • Grow-only Counter
    • Positive/Negative Counter
    • Bounded Counter
    • Grow-only Set
    • 2 Phase Set
    • Add Wins Observed Removed Set
    • Last Write Wins Register
  2. Commutative (operation-based)

    • Pure-operation based:
      • protocol: Tagged Reliable Causal Broadcast
      • Counter
      • Observed Remove Set
    • protocol: Reliable Causal Broadcast
    • Counter
    • Last Write Wins Register
    • Multi Value Register
    • Observed Remove Set (add wins semantics)
    • Linear Sequence (L-Seq)
    • Replicated Growable Array (RGA)
    • Replicated Growable Array (blockwise variant)
    • JSON-like document

How to run

Requirements

  • Docker

Running

  1. Start Docker
  2. From inside the repo, run the following command
$ docker build -t crdt5 .
  1. Run the following command to start the container
$ docker run -it crdt5
  1. Inside the container, run the following command to run the tests
$ dotnet Crdt.Tests.dll --debug --sequenced

About

An example implementations of various CRDTs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published