As described here at How are timestamps deemed invalid? it seems that the code enforces two checks on timestamps:
- monotonicity: the
close_timeof each block must be greater than the previous
- accuracy: the
close_timemust be no more than MAX_TIME_SLIP_SECONDS (hardcoded as 60) in the future, as determined by a quorum of nodes (I guess)
But about how accurate are Stellar timestamps in practice? Is the standard deviation 10 seconds? 1 second? How far off could a clever adversary manipulate it? 60 seconds?
Part of the rationale for this question is to evaluate Stellar as a simple, essentially free source of trusted timestamps and commitments to hashes which is much more accurate and convenient than e.g. Bitcoin, as discussed at
Here are some more specific, but perhaps still loosely-defined questions.
- How often do the Stellar checks fail in real life?
- How often do proposed blocks have anything like a
close_time60 seconds in the future? I'd guess you could find possible times like that by looking for times when the gap between blocks was unusually large, since I guess the whole system would hang out until that future point in time arrived.
- Is there a source of statistics like that, or an easy way to query or download the full blockchain to calculate those statistics?
- Typically, in practice, how far off are timestamps of proposed blocks, as judged by a node that keeps very good time?