Я видел , как узлы собирают данные о времени в сети, но как это обеспечивается в блокчейне?
Все ли временные метки имеют цифровую подпись и включены ли в блок в качестве доказательства?
Во-первых, откуда берутся эти образцы времени: когда ваш клиент подключается к пирам в сети, он обменивается version
с ними сообщением. Помимо прочего, это сообщение содержит текущую временную метку UTC на узле. Затем ваш клиент вычисляет смещение между временем на своем узле и своими собственными часами. Сетевое время — это просто локальная отметка времени + медиана всех смещений его одноранговых узлов. Таким образом, вы можете видеть, что у нас есть относительно простая попытка синхронизации часов в сети, но в зависимости от выборки пиров, к которым вы подключаетесь, они могут сильно различаться.
О применении временных меток: временная метка появляется в общении между одноранговыми узлами очень редко , вероятно, единственное место, где она фактически применяется, — это заголовок блока. Если одноранговый узел получает новый блок во время синхронизации с сетью, а временная метка отличается более чем на 2 часа от его локальной временной метки, он отбрасывает блок как недействительный ( источник ). Идея этой проверки заключается в том, что клиент может попытаться исказить предполагаемую сложность, видимую узлом, который синхронизируется с остальной частью сети.
пользователь5107
cdecker
пользователь5107