Each node in the system tags each version with a timestamp, using a local clock. During a conflict, the version with the latest timestamp is selected.
However, this technique can lead to some unexpected behaviors, as there is no global notion of time. For example, write A can override write B, even though B happened “as a result” of A.