Как соблюдается сетевое время?

Я видел , как узлы собирают данные о времени в сети, но как это обеспечивается в блокчейне?

Все ли временные метки имеют цифровую подпись и включены ли в блок в качестве доказательства?

Ответы (1)

Во-первых, откуда берутся эти образцы времени: когда ваш клиент подключается к пирам в сети, он обменивается versionс ними сообщением. Помимо прочего, это сообщение содержит текущую временную метку UTC на узле. Затем ваш клиент вычисляет смещение между временем на своем узле и своими собственными часами. Сетевое время — это просто локальная отметка времени + медиана всех смещений его одноранговых узлов. Таким образом, вы можете видеть, что у нас есть относительно простая попытка синхронизации часов в сети, но в зависимости от выборки пиров, к которым вы подключаетесь, они могут сильно различаться.

О применении временных меток: временная метка появляется в общении между одноранговыми узлами очень редко , вероятно, единственное место, где она фактически применяется, — это заголовок блока. Если одноранговый узел получает новый блок во время синхронизации с сетью, а временная метка отличается более чем на 2 часа от его локальной временной метки, он отбрасывает блок как недействительный ( источник ). Идея этой проверки заключается в том, что клиент может попытаться исказить предполагаемую сложность, видимую узлом, который синхронизируется с остальной частью сети.

Спасибо cdecker! Значит, отвергаются только будущие блоки из-за того, что они слишком молоды, а не прошлые блоки из-за того, что они слишком стары, двухчасовая неудача? Огромное спасибо заранее!
Вроде так и есть, хотя вроде бы помню, что проверяли в обе стороны, но не могу найти доказательств этому :-)
Да, ты прав. Я нашел, но потерял ссылку, лол. Прошлые блоки управляются последовательно, а будущие блоки управляются в режиме реального времени. Большое вам спасибо за вашу помощь!