This document discusses logical time in distributed systems. It begins by introducing the concept of logical time and how it is used to capture causality between events when physical time is not available. It then describes three common implementations of logical time - scalar time, vector time, and matrix time. Scalar time uses integers to represent logical time, while vector time and matrix time use vector and matrix representations, respectively. The key aspects and properties of scalar time and vector time are summarized, including how they represent causality and maintain consistency. Efficient techniques for implementing vector clocks are also discussed.