Вредоносные стратегии майнеров: как обмануть сеть и уйти незамеченным

Сатоши Накамото видел биткойн как полностью децентрализованную сеть, где каждый пользователь поддерживает полный узел и занимается майнингом, получая вознаграждение пропорционально вкладу в общую мощность. Но c 2011 года это предположение не выполняется: майнеры используют специализированные устройства (FPGA, затем ASIC) и объединяются в пулы для получения равномерного дохода.

Вредоносные стратегии майнеров: как обмануть сеть и уйти незамеченным

Популярное опасение, связанное с пулами, — атака 51%, при которой злонамеренный пул тратит биткойны дважды и цензурирует транзакции. Но майнеры могут и другими способами «обманывать» сеть, повышая прибыль без пользы для сети. Исследователи Николя Куртуа (Nicolas Courtois) из Университетского колледжа Лондона (University College London) и Леар Бахак (Lear Bahack) из Открытого университета Израиля (Open University of Israel) исследовали вредоносные стратегии нечестных майнеров и показали, что они в принципе незаметны для честных участников.

Структура заголовка биткойн-блока

Биткойн часто позиционируется как система, не требующая доверия между участниками, своего рода криптографическая утопия. К сожалению, реальность пока не соответствует идеалу. Биткойн уязвим. Единственная каноническая реализация полного узла (Bitcoin Core) — очевидная критическая точка. Кроме того, участники сети не равны.

Лишь немногие узлы сети — майнеры — выполняют две критические функции. Во-первых, они проверяют корректность транзакций. Обычный пользователь не делает этого, кроме, быть может, небольшого количества транзакций, затрагивающих его лично. Майнеры же проверяют корректность всех транзакций и формируют консенсусную версию истории транзакций — главную цепочку блоков. Во-вторых, майнеры отвечают за эмиссию валюты: затратив ресурсы на выполнение proof-of-work, они получают в награду новые биткойны и комиссию за вошедшие в найденный ими блок транзакции.

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

Простые атаки

Простейшая атака «pool hopping» была описана ещё в 2011 году Мени Розенфельдом (Meni Rosenfeld). Он показал, что если пул распределяет выплаты по пропорциональной системе, майнить в начале раунда выгодней, чем в конце. Другие методы выплаты усложняют проведение атаки, но не устраняют такую опасность.

Злонамеренные пулы могут образовать картель с долей мощности более 50% и отклонять блоки, добытые остальными участниками. Это не обязательно влечёт двойную трату («атака 51%»): вступившие в сговор майнеры могут корректно подтверждать все валидные транзакции, но в случае форка их цепочка будет признаваться главной, следовательно, убытки из-за майнинга орфанных блоков лягут на плечи честного меньшинства.

Майнеры также могут применять секретные криптографические оптимизации. Так, в работе 2013 года было показано, что задача проверки, отвечает ли двойной SHA256-хеш заголовка блока параметру сложности, достаточно в среднем 1,86 раундов соответствующей функции сжатия (SHA256 compression function), тогда как для полного вычисления хеша заголовка блока требуется 3 раунда. Столь существенная оптимизация (38%!) объясняется двумя факторами. Во-первых, заголовок блока — не случайные данные: многие поля з либо не меняются, либо меняются медленно и предсказуемо. Во-вторых, майнерам и не требуется вычислять полное значение SHA256: можно остановиться на первом ненулевом символе. Пул может разработать ещё более тонкую криптографическую оптимизацию и держать её в тайне, получая прибыль выше своей доли в сети. Впрочем, достигнутое значение 1,86 раундов, по мнению авторов исследования, близко к теоретическому минимуму; улучшить его можно разве что на 1-2%.

Эгоистичный майнинг

Стратегия «эгоистичного майнинга» на первый взгляд контринтуитивна. Казалось бы, в интересах майнера распространить найденный блок по сети как можно быстрее, чтобы другие участники признали его частью главной цепочки: только так майнер получит награду. Тем не менее, есть стратегия, позволяющая нечестному майнеру М получать больше, на определённое время «утаивая» свой блок. Расмотрим её подробно.

  • Большую часть времени М действует честно.
  • Если М нашёл блок первым, он распространяет его внутри собственного пула. «Эгоистичный» пул далее майнит поверх секретного блока Б11. Теперь М опережает сеть на 1 шаг.
  • Предположим, что в любой момент времени есть не более двух конкурирующих ветвей блокчейна: публичная и секретная.
  • В некоторый момент в сети появляется блок-конкурент Б21. В этот момент М обнародует Б11 и продолжает майнить поверх него, тогда как сеть майнит частично поверх Б11, частично поверх Б21, в зависимости от скорости распространения блоков.
  • У М теперь нет преимущества по длине цепочки, но поскольку он майнит поверх секретного блока дольше, его шансы найти продолжение своей цепочки выше.
  • Если же (редкое событие!) М до обнародования Б11 находит продолжение своей цепочки Б12, М продолжает майнить секретную цепочку до тех пор, пока преимущество по длине цепочки снова не станет равным 1. Тогда М обнародует всю секретную цепочку, которая, будучи на блок длиннее, будет принята сетью как главная.

Можно доказать, что если эгоистичной стратегии придерживается один майнер, то его ожидаемая прибыль больше, чем вклад в мощность сети. Тем не менее, такая стратегия вряд ли применяется на практике: только для очень крупных пулов увеличение дохода было бы существенным. Также неочевидны последствия, если «эгоистичных» майнеров много или если участники «эгоистичного» пула применяют вредоносные стратегии против него же. Косвенным признаком эгоистичного майнинга могло бы быть увеличение доли орфанных блоков. Авторы исследования проанализировали блокчейн и показали, что доля орфанов с 2012 года не растёт и составляет от 0,43 до 1,77%.

Из проведённого анализа следует, что для честных майнеров в случае форка оптимальной стратегией является выбирать версию цепочки случайным образом. Доверять меткам времени блоков не следует: эгоистичный майнер мог их изменить.

Отбрасывание и утаивание блока

Стратегия «отбрасывания блока» (block discarding) была рассмотрена ещё в 2011 году. Это простая и исключительно деструктивная стратегия, уменьшающая прибыль пула-жертвы. Злонамеренный майнер посылает пулу только частичные решения (shares), отбрасывая полные.

«Утаивание блока» (block withholding) основана на похожей идее, но, в отличие от block discarding, прибыльна для нечестного майнера. Рассмотрим её подробно.

  • Исходим из следующих предположений. Все майнеры состоят в пулах. Комиссии за транзакции пренебрежимо малы. Майнеры не меняют пулы очень часто (т. е. без pool hopping). Схемы выплаты награды в пулах различаются несущественно и в пределе вознаграждают майнеров в точности пропорционально их доле в мощности сети.
  • Пусть нечестные майнеры контролируют 20% мощности сети. Половина из них присоединяется к случайно выбранным честным пулам, половина образует собственный пул.
  • Если «внедрённый» в честный пул вредоносный майнер находит полное решение, он не посылает его пулу. В результате доход честных пулов падает, но внедрённые майнеры получают то же вознаграждение. Оператор пула может заметить, что пул получает меньше прибыли, чем ожидалось, но не может узнать, кто из участников утаивает блоки: большинство честных участников находят блоки исчезающе редко. В итоге честные пулы получают примерно 88% от ожидаемой прибыли.
  • Другая половина нечестных майнеров, объединённые в закрытый пул, получают прибыль примерно на 13% выше честных пулов.
  • Расчёты показывают, что при такой схеме нечестные майнеры получат примерно на 6% больше прибыли, чем при честном майнинге. При любой мощности нечестных майнеров оптимальным разделением мощности между внедрением в честные пулы и майнингов в своём пуле будет 50/50.

Такую атаку крайне сложно выявить: авторы исследования доказали, что из-за статистических особенностей майнинга эффект, произведённый нечестными майнерами, укладывается в стандартную статистическую гипотезу. Это стимулирует централизацию майнинга: только очень большой пул накапливает достаточно данных, чтобы статистически выявить описанную атаку. Для небольших пулов нахождение блока — слишком редкое событие.

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

Категория: 
Криптовалюты
Ваша оценка: Нет
0
Голосов еще нет
6683 / 0
Аватар пользователя anon
Публикацию добавил: anon
Дата публикации: вт, 08/11/2015 - 00:49

Что еще почитать:

Комментарии:

Аватар пользователя F1551313530859CE

F1551313530859CE

Касаемо последней стратегии, являющейся развитием "отбрасывания блока":
Против неё найден способ противодействия, используется на двух пулах: PeerCoin & EmerCoin.
Анонс и описание технологии здесь: https://forum.bits.media/index.php?/topic/15983-novyi-sposob-nachisleniia-mainerskoi-nagrady-halfsolo34/

пт, 08/21/2015 - 18:16

Аватар пользователя EDC825A8846D2053

EDC825A8846D2053

Пробую систему emcSSL для логина на сайт. Все четко работает!

вс, 08/23/2015 - 19:16

Аватар пользователя Иона

Иона

Ничего не понял ! Что это вообще такое?

вт, 07/12/2016 - 13:26

Аватар пользователя зум

зум

АААХАХАХАХАХААХ!!1 ЖГЁШ ЧУВАК

пн, 07/24/2017 - 14:37

Добавить комментарий