Игра «ошибка один за другим» (сложность переназначения на основе 2015 года вместо 2016).

В этом сообщении форума от Гевина Андресена он пишет:

  

Во-вторых: я написал инфраструктуру «блокировать блоки»:      https://github.com/gavinandresen/bitcoin-git/tree/discourageblocks     (приветствуются просмотры кода)

     

..., который должен дать нам возможность подталкивать шахтеров к правильному   Вещь. Отказывание блоков, которые кажутся играющими поочередно   ошибка должна быть достаточным стимулом для предотвращения формирования 50 +% картелей,   без необходимости изменения блочной расщепления.

Я считаю, что ошибка «один за другим» относится к задаче переназначения трудности, основанной на времени, затраченном на предыдущие блоки 2015 года вместо блоков 2016 года. Пожалуйста, исправьте меня, если я ошибаюсь.

Что я хочу знать, так как эта ошибка может быть решена шахтерами? Что они могут сделать и какое преимущество оно дает?

20 голосов | спросил kirian 13 +04002011-10-13T23:45:54+04:00312011bEurope/MoscowThu, 13 Oct 2011 23:45:54 +0400 2011, 23:45:54

1 ответ


19

Атака позволяет группе горняков с более чем 50% вычислительной мощности сети произвольно изменять сложность.

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

Блоки считаются действительными, если их время больше медианы последних 11 блоков и меньше текущегоTime + 2 часа, поэтому для злоумышленника право на создание новой версии старого блока с временем далеко в будущем , Если это первый блок в периоде retarget, тогда сложность будет увеличиваться в четыре раза после этого периода. Если это последний блок, то трудность будет разделена на четыре. (Корректировка сложности ограничена * 4 или /4.)

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

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

Я думаю, что лучшим решением будет просмотр каждого блока в периоде retarget плюс, возможно, некоторые блоки до периода. Просто кажется, что плохая идея дать определенные блоки «особым силам».

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

(Спасибо gmaxwell за объяснение этой атаки для меня.)

ответил theymos 17 +04002011-10-17T11:38:01+04:00312011bEurope/MoscowMon, 17 Oct 2011 11:38:01 +0400 2011, 11:38:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132