I had an interesting thought, given that every block in Bitcoin has a timestamp attached to it, is there a way to use the timestamps plus the time that you saw an average block in order to sync your clock to the time on the network? What if someone fakes the timestamp and fudges a little bit, can you at least stay within say 15 seconds assuming the majority is honest and it takes 10 seconds for a block to propagate to 75% of the network?
-snip-
Timestamps or modified as part of finding a valid block, they are not reliable and do not have to be incremental either. Block n can have a later timestamp than block n+1 as long as its within certain bounds.