I'm asking myself the same question, and just asked that question earlier today to the [CS stackexchange][1]. Here are some elements of answer with my current thought maturity: ## DAG vs. vector clocks ## What unifies them: - They both could be used to determine causality relation in a distributed system Advantages of vector clocks: - Size of data to synchronize in vector clock grows with the number of replica, but not with the number of events; which in most real life application is more efficient. Also optimizing DAG data transfer between replica over the network may not be straightforward. Advantage of DAGs: - Easier to conceptualize? And possibly implement? - Models the full tree, so wins over vector clocks when we want not only to understand if an event e1 occurred before another event e2, but want to access more details on the event present, possibly their content, etc. - More expressive than vector clocks because vector clocks DAGs are constructed with a specific algorithm that constrains the expressiveness, and there are things you cannot do, such as taking three or more previous events to build one new event. [1]: https://cs.stackexchange.com/questions/132864/using-vector-clocks-vs-directed-acyclic-graph-for-causality-detection-in-distri