jarpian объясняет, что такое атака искажения времени (атака духа времени):
Это атака 51%, когда злоумышленник искусственно устанавливает метки времени блока, чтобы снизить сложность, что позволяет ему получить больше монет, чем может гарантировать его скорость хэширования. Это работает, потому что формула регулировки сложности основана исключительно на временных метках, которые злоумышленник может выбрать совершенно свободно. В частности, временные метки не обязательно должны располагаться в порядке возрастания . ArtForz подробно объясняет атаку здесь .
Эта атака была использована против новой цепочки блоков Geist Geld. Сложность Geist Geld меняется каждые 16 блоков, что делает цепочку особенно уязвимой для этой атаки. Злоумышленник, нацеленный на Биткойн, должен будет добыть полный набор из 2016 блоков с текущей сложностью, прежде чем начать получать какое-либо преимущество по сравнению с «обычной» атакой 51%.
Очевидно, что выполнение этой атаки будет ужасно дорогим. (На момент написания Coinometrics оценивает стоимость примерно в 463 миллиона долларов .)
Однако, если вы добились успеха, вы могли бы снизить сложность и увеличить скорость блокировки в 4 раза каждые 2 недели, что позволит вам чеканить монеты чаще, чем каждые 10 минут.
Очевидный способ исправить это — изменение периода перенацеливания блока с (2016*n, 2016*n + 2015) на (2016*n, 2016*n + 2016 ) проблематично. Блоки, созданные новой реализацией, будут недействительны в старой реализации, и наоборот. (Источник)
Итак, как можно предотвратить атаку с искажением времени без нарушения работы?
Простое решение — софтфорк, требующий, чтобы время каждого блока было равно или больше, чем время предыдущего блока в цепочке блоков. То есть время в цепочке блоков не может идти вспять.
Если время не может вернуться вспять, то злоумышленник не может искусственно снизить сложность, кроме как путем майнинга блоков со временем в будущем, а сеть уже отклоняет блоки более чем на 120 минут вперед.
Это предложение представляет собой софтфорк, потому что майнеры, не прошедшие апгрейд, примут более сложную цепочку, время которой только увеличивается или остается прежним. Если реализовать так же, как BIP34 , подавляющее большинство скорости хеширования будет обновлено до применения нового правила, что сведет к минимуму нарушения.
A->B->C
время C может быть> = время A? Фактически это ничем не отличается от того, что время C равно == времени B, потому что любой узел, который отвергает B, также отвергает C. Если это не то, что вы говорите, то, возможно, я неправильно понял: под >= the previous block's time
я имел в виду предыдущий блок в цепочке блоков, в частности тот, который указан в поле заголовка блока prevHeaderHash. Таким образом, время блока A <= время блока B <= время блока C. Если есть устаревший блок B′, его время не влияет на время блока C. Я отредактирую пост, чтобы было понятнее.Следите за такими сетями, как Myriad, Digibyte, Digitalcoin, Unitus и другими, которые используют доказательство работы Multi-Algo. Как некоторые из вас, возможно, знают, Myriadcoin подверглась атаке Timewarp в конце прошлого года и успешно положила конец усилиям злоумышленников. Я, например, не знаю, где находятся пороги для % хешрейта, чтобы иметь возможность осуществить такую атаку. Глубокий анализ Myriad Blockchain (временные метки и все остальное, сетевой трафик от атаки тоже было бы неплохо, но он должен быть захвачен в реальном времени) и просмотр https://github.com/myriadcoin/myriadcoin был бы хорошей идеей. для всех, кто заинтересован в решении проблем с искривлением времени.
Чак Бэтсон
пользователь 24697