Как проверяется время майнинга?

Новая цель рассчитывается из T(new_block-1) - T(new_block-2016). Здесь T — время, за которое майнер добыл блок.

Это время для блока задает сам майнер.

Таким образом, майнер может фальсифицировать это время.

Я вижу правило, что на этот раз:

Должно быть строго больше, чем среднее время предыдущих 11 блоков. Полные узлы не будут принимать блоки с заголовками более чем через два часа в будущем в соответствии со своими часами.

Используется ли этот механизм для предотвращения фальсификации времени (таким образом, целевой фальсификации)?

Достаточно ли самого этого механизма? Если да, то как?

Попробуйте и проработайте его. Если более половины всех майнеров (по мощности майнинга) нечестны, то сеть в любом случае облажалась. Итак, если предположить, что более половины всех майнеров честны, что произойдет, если злоумышленник отправит блок, временная метка которого (1) находится в далеком прошлом или (2) в далеком будущем?
Хороший комментарий. (2 - проще) в далеком будущем он просто будет отклонен из-за ограничения в 2 часа. Почему такой большой лимит, что-то вроде 15 минут должно быть достаточно, тем более, что время распространения задерживается?
(1) Майнинговый пул может майнить 5-6 блоков подряд. Если он помещает их в далекое прошлое, они отвергаются как более низкие, чем медиана. Если последний блок находится на высоте N, он может поставить их где-то в районе N-11. Это дает ошибку синхронизации примерно в 11 блоков. Поскольку сложность корректируется каждые 2016 блоков, это даст ошибку примерно 11/2016, что является низким показателем. Это верно?

Ответы (1)

В Биткойне среднее прошедшее время (как в вашей цитате) используется для всех операций, где важны часы, что ограничивает влияние любой временной метки майнера. Майнеры могут довольно сильно искажать метку времени своего блока без вреда для сети, некоторые предыдущие оптимизации майнинга включали искажение метки времени вперед, чтобы избежать необходимости выполнять дорогостоящие операции для загрузки нового корня merle.

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