По данным bitcoin.org , к полным узлам предъявляется жесткое требование по отклонению времени в определенных границах.
Время блока — это время эпохи Unix, когда майнер начал хешировать заголовок (по словам майнера). Должно быть строго больше, чем среднее время предыдущих 11 блоков. Полные узлы не будут принимать блоки с заголовками более чем через два часа в будущем в соответствии со своими часами.
Однако при определенных обстоятельствах блокчейн рискует отклонить все блоки из-за противоречивых параметров проверки.
Например, в случае сильного снижения сложности. Сложность биткойна переоценивается каждые 2016 блоков . Если сложность упадет достаточно резко, могут пройти часы или дни, прежде чем будет найден следующий действительный блок, поскольку сеть работает с уменьшенной мощностью майнинга на уровне сложности, предназначенном для гораздо большего. Если следующий блок будет добыт более чем через два часа после текущего блока, не остановит ли это блокчейн? Что произойдет в данном сценарии?
Насколько строги правила проверки времени?
Насколько строги правила проверки времени?
Очень.
Если следующий блок будет добыт более чем через 2 часа после текущего блока, не остановит ли это блокчейн?
Нет.
Это не нарушает правила «Полные узлы не будут принимать блоки с заголовками более чем через два часа в будущем в соответствии с их часами ».
Это также не нарушает правило «должно быть строго больше, чем среднее время предыдущих 11 блоков».
Я надеюсь, что вышеизложенное должно быть ясно, но если это не так, давайте сделаем пример:
Событие | Время |
---|---|
Последний добытый блок | 08:00 |
Среднее время последних 11 блоков | 07:00 |
Текущее время на моих часах | 11:00 |
Прибытие времени на блоке | 12:59 |
Правило | Результат |
---|---|
(12:59 - 11:00) < 2 | ХОРОШО |
12:59 > 07:00 | ХОРОШО |
Так что нет проблем, даже несмотря на то, что вместо 10 минут был трехчасовой разрыв, и хотя блок имеет отметку времени, которая, я думаю, составляет почти два часа в будущем!
Обратите внимание, что эти конкретные правила не нарушаются, если между блоками существует огромный (например, 50 лет) разрыв. Теоретически все будет продолжаться (хотя, вероятно, будут другие проблемы, препятствующие этому)
Я думаю, у вас неправильное представление о том, что означает этот пункт:
Полные узлы не будут принимать блоки с заголовками более чем через два часа в будущем в соответствии со своими часами.
Похоже, вы интерпретируете это так: если новый блок более чем на два часа позже предыдущего, то не принимайте его. Это неправильно. Этот пункт не касается временных промежутков между блоками.
Фактический смысл этого пункта в том, что если новый блок говорит, что он буквально из будущего, из времени, которого еще не достигла вселенная, то не принимайте его. Этот пункт касается предотвращения манипуляций с блокчейном с помощью фальсифицированных меток времени.
Это сравнение между отметкой времени нового блока и вашими часами, а не отметкой времени нового блока и отметкой времени предыдущего блока.
аршбот
Питер Уилле