Is it best practice to git install ntp on the witness node, or does Graphene have a built in time syncing protocol?
It is best practice to have NTP or PTP installed... to get to 1 second blocks we will need PTP installed on all witness nodes using a single source.
what if this source get screwed/manipulated in future?
There are more complex algorithms that do not depend upon a central source that would use a phase-locked loop. An example of how this could work:
1. Each machine is assumed broadcast their blocks at multiples of the block interval (1 second)
2. Each machine receives blocks from the other machine with some random latency added on to the time signal.
3. The receiver "KNOWS" the blocks were sent 1 second apart even if they were received .95 or 1.05 seconds apart.
4. The receiver can used this input stream to find the time that minimizes the error for all of the samples.
5. The receiver can then adjust his own clock (slowly) to get closer to his estimate of the sender's clock
So long as the adjustments made are very small relative to the noise in the signal, then both parties can lock to each other at the same time. Under this system the two machines may drift from real time, but they will drift together and maintain an average of 1 second blocks.