  Testing for causality between events in distributed executions is a
fundamental problem. Vector clocks solve this problem but do not scale well.
The probabilistic Bloom clock can determine causality between events with lower
space, time, and message-space overhead than vector clock; however, predictions
suffer from false positives. We give the protocol for the Bloom clock based on
Counting Bloom filters and study its properties including the probabilities of
a positive outcome and a false positive. We show the results of extensive
experiments to determine how these above probabilities vary as a function of
the Bloom timestamps of the two events being tested, and to determine the
accuracy, precision, and false positive rate of a slice of the execution
containing events in the temporal proximity of each other. Based on these
experiments, we make recommendations for the setting of the Bloom clock
parameters. We postulate the causality spread hypothesis from the application's
perspective to indicate whether Bloom clocks will be suitable for correct
predictions with high confidence. The Bloom clock design can serve as a viable
space-, time-, and message-space-efficient alternative to vector clocks if
false positives can be tolerated by an application.
