This said, in a truly decentralized setting, where CRDTs make most sense, logical clocks are not useful as they are not not byzantine fault tolerant. You need merkle trees.
This said, in a truly decentralized setting, where CRDTs make most sense, logical clocks are not useful as they are not not byzantine fault tolerant. You need merkle trees.
If we see every field as f(x,y,z,t) what do you mean you can't "change" x,y,z without changing t?
If you mean changing the x,y,z argument values, you can (you're just evaluating a different point in space).
If you mean changing the evaluated function value at a given x,y,z it's kinda tautological that it stays constant for a constant x,y,z,t.
So when time stops, everything else stops. It is tautological when you think about it, but I find that it's an easy way to explain why logical clocks work.
Am I wrong to reason this way?
Imagine there is an object recorded at location x,y,z at time t. This is all we know.
If I later tell you the object was recorded at location x,y,z, you have no idea what time it was captured. If I later tell you the object was recorded at any location other than x,y,z (even if only z changed by some epsilon) you know that that it was captured at some time other than t.
If you guarantee the second recording I'm showing you was not taken before time t, you know it is a more recent recording, because it would be not earlier than and not equal to time t.
byzantine fault tolerance is fun and all but it's a niche use case
You can only trust the nodes that you control. That's not what I'd call a decentralized system.