Ну, я знаю, что они привязаны к UTC, но где они получают время UTC от? Официальный сервер времени? Или местное время системы блочно-создателя?
Я думаю, что происходит это ваш клиент просит все другие клиент, он ведет переговоры о чем они думают, что время, и хранит список смещений между ними и тем, что он думает, что это время. Затем он использует середину этого списка в качестве реального времени.
Например, в .bitcoin / debug.log я вижу:
Добавлены временные данные, образцы 59, смещение +8 (+0 минут)
-31539317 -156 -115 -99 -148 -89 -80 -77 -30 -29 -28 -22 -21 -19 -18 -16 -16 -12 -12 -11 -11 -9 -8 -7 -7 - 6 -6 -5 -4 -2 -2 -1 -1 -1 +0 +0 +0 +0 +0 +1 +1 +1 +2 +1 +2 +2 +2 +3 +3 +3 + +5 +6 +4 +8 +8 +9 +15 +31 +245 | nTimeOffset = -2 (+0 минут)
Клиент получил 59 различных раз от сверстников и те смещения от моих часов в секундах.
5 из них согласились с моим клиентом до ближайшей секунды. Большинство клиентов согласились в течение одной минуты. Некоторые вышли на 2 до 5 минут, а один парень не знает, в каком году она (365 * 24 * 60 * 60 = 31536000). В середине этого списка 59 временных сдвигов является -2, и поэтому 2 секунды добавляется (или вычитала?) От моего компьютера часов, чтобы получить «реальное» время.