Утаивание блоков: атака, которую не выдаст ни одна шара
Майнер отправляет настоящие шары и скрывает ту, что стала бы блоком. Сколько это стоит, кто платит, зачем это делают и как это обнаруживают.
Что такое атака с утаиванием блоков?
Это майнер, который отправляет все обычные шары, но скрывает ту, которая стала бы блоком. Пул платит за шары. Блок так и не приходит.
Каждая шара, которую вы отправляете в пул, это настоящее решение, не дотянувшее до цели блока. Цель блока это более высокая планка, которую хеш должен преодолеть, чтобы получился блок. Время от времени решение преодолевает и её, и такая шара является целым блоком.
Такая шара выглядит как любая другая, пока пул её не проверит.
Атакующий честно выполняет работу и отправляет все обычные шары. Ту единственную, которая стала бы блоком, он тихо выбрасывает. Пул учитывает шары и платит за них. Блок, который пул должен был получить, так и не приходит.
Почему одна шара не может его выдать?
Ни в одной отдельной шаре атакующего нет ничего подозрительного. Оборудование настоящее, и хешрейт тоже. Шары валидные и приходят с правильной частотой. Пул может изучить одну шару и не увидеть ровным счётом ничего.
Не хватает того, что не произошло, а отсутствие становится видно только со временем. Майнер с определённой долей хешрейта пула должен находить примерно такую же долю его блоков.
За час это ничего не говорит. Поиск блоков случаен, и затишья обычны. За достаточно длинное окно это говорит очень многое.
Сколько это стоит и кто платит?
Пул теряет награду за блок, которую должен был получить. Но на самом деле потеря ложится не на пул. Эту часть стоит понимать для любого пула.
- При пропорциональной схеме раунд продолжается, пока блок не найдёт кто-то другой. Все участники раунда работали в раунде, который длился дольше, чем должен был. Поэтому каждый зарабатывает чуть меньше на единицу работы. Убыток распределяется между честными майнерами.
- При схеме с оплатой за шару хуже оператору. Пул уже заплатил за каждую шару из своего кармана и рассчитывает, что блоки придут. Затяжная атака напрямую истощает оператора. Исторически больше всего опасались именно этого случая.
Зачем кому-то это делать?
Атакующий выбрасывает и награду за блок. На первый взгляд это чистый вред самому себе. Смысл есть, только если атакующий выигрывает где-то там, где пул этого не видит.
Обычный мотив это конкуренция. Тот, у кого есть свой пул, может арендовать хешрейт или направить его на соперника и подавить его результаты. Тогда его собственный пул на этом фоне выглядит удачливее. Шары, которые атакующий продолжает получать, оплачивают саботаж.
В более тонком варианте атакующий не выбрасывает блок, а придерживает его. Он втайне продолжает майнить поверх него и отправляет его позже, в удобный для себя момент. Это сложнее провернуть. Чтобы игра стоила свеч, нужна большая доля хешрейта.
Как её обнаруживают?
Обнаружение статистическое, потому что другого сигнала нет. Сравните блоки, которые нашёл участник, с блоками, которые он должен был найти по числу своих шар. Делайте это на окне, достаточно длинном, чтобы удача усреднилась.
Самое сложное здесь окно.
- Сделайте его коротким, и обычное невезение будет выглядеть как атака. Честных майнеров обвиняли бы постоянно.
- Сделайте его длинным, и настоящий атакующий успеет поработать какое-то время, прежде чем цифры заговорят.
Хитрого способа обойти этот компромисс нет. Он следует из случайности, а не из программы.
Поэтому серьёзный детектор передаёт вопрос человеку, а не действует сам. Автоматический бан на основе статистики однажды забанит того, кому просто не повезло. Отключить честного майнера хуже, чем сама атака.
Что это значит для честного майнера?
Почти ничего, и это стоит сказать прямо.
Ваши шары учитываются и оплачиваются одинаково в любом случае. Невезение не проступок и не может им быть. На любом коротком окне большинству майнеров не везёт.
Серия раундов, где вы внесли много, а пул ничего не нашёл, это обычная дисперсия. Показатель удачи в статистике пула показывает, насколько это обычно.
Эта атака одна из причин, почему пулам важно, кто направляет на них хешрейт. И поэтому же пулу, который честно публикует свои блоки и удачу, легче доверять. Всё, что нужно для проверки пула, есть на странице блоков.