Насколько точным является время сети Биткойн?

Были ли сделаны какие-либо наблюдения, чтобы сделать вывод о точности сетевого времени Биткойн?

Было бы интересно узнать, отследил ли NIST или какой-либо другой орган это явление.

Вы можете отследить это самостоятельно через биткойн -blocknotify. Кажется, легко настроить, весело и интересно!

Ответы (3)

Из этого сообщения в блоге, описывающего атаку таймджекинга :

Каждый узел внутренне поддерживает счетчик, который представляет время в сети. Это основано на среднем времени одноранговых узлов узла, которое отправляется в сообщении версии при подключении одноранговых узлов. Однако счетчик сетевого времени возвращается к системному времени, если среднее время отличается от системного более чем на 70 минут. Очень разумный способ оценить среднее время сети.

Таким образом, временные метки блоков основаны на «сетевом времени», которое, в свою очередь, является одним из:

  • Среднее время, объявленное одноранговыми узлами (в пределах ±70 минут от системного времени)
  • Системное время

Сетевое время используется для проверки новых блоков. В качестве меры предосторожности узлы отклоняют любую временную метку блока, которая превышает 2 часа от текущего сетевого времени. Временные метки блоков, которые раньше среднего времени последних 11 блоков, также отклоняются. Эта проверка устанавливает верхнюю и нижнюю границы допустимого диапазона меток времени блока.

Таким образом, временные метки блоков:

  • < 2 часов от «сетевого времени».
  • > медиана последних 11 блоков.

Мне нужно обновить свои уроки распространения ошибок, но я думаю, что это приводит к точности около ± 3 часов.

Конечно, это всего лишь верхняя граница ошибки, но остается актуальный вопрос: какова реальная точность блокчейна? (это очень интересный вопрос.) Единственный способ убедиться в этом — это отследить его и сравнить с известной идеальной отметкой времени. Я не знаю, делал ли кто-нибудь это раньше, и не смог найти никаких ссылок.

Это не точно, время в сети Биткойн является медианой других узлов.

Но должна же быть какая-то погрешность, верно? Вопрос не в том, «точно ли это?» но "насколько это точно?" . Было бы интересно проследить abs(real_stamp - block_stamp)за временем.

По сути, когда узел находит блок, он передает его с любой отметкой времени, которую хочет, так что это вовсе не означает, что он точен. Конечно, узлы запрограммированы не делать этого, но это не значит, что они не могут. Другие узлы запрограммированы на прием блоков с временными метками, которые имеют смысл : например, если я получу блок с временной меткой, установленной на период далеко в будущее, я, вероятно, отклоню его.

Таким образом, это не совсем точно, но достаточно точно, потому что большинство узлов используют узел bitcoind, который запрограммирован с учетом определенной логики временных меток для генерации временной метки на основе среднего времени пиров узла, которое отправляется в сообщении версии. когда пиры подключаются.

Но насколько точным является «достаточно точное» ?
Что ж, поскольку блок более или менее транслируется каждые 10 минут, я бы дал ему в худшем случае 10-минутную погрешность.