Operations on CRDTs need to adhere to the following rules:
- Associativity
(a+(b+c)=(a+b)+c)
, so that grouping doesn't matter. - Commutativity
(a+b=b+a)
, so that order of application doesn't matter. - Idempotence
(a+a=a)
, so that duplication doesn't matter.
Data types as well as operations have to be specifically crafted to meet these rules. CRDTs have known implementations for counters, registers, sets, graphs, and others.