Взгляд венчурного инвестора на Блокчейн | 09: Атака эгоистичного майнера

В предыдущем посте я рассказал, что у Блокчейна есть ахиллесова пята – система устойчива к прямому взлому, но только до тех пор, пока все участники сети выбирают модель поведения «играть по правилам» вместо «обманывать систему». Тут я приведу интересный пример координационной атаки, при которой система станет уязвимой.

Взгляд венчурного инвестора на Блокчейн | 09: Атака эгоистичного майнера

Протокол Биткоин уязвим

Этот пост – переложение статьи «Majority is not Enough: Bitcoin Mining is Vulnerable» by Ittay Eyal and Emin Gun Sirer». Исследователи задались таким вопросом: «Возможно ли, не нарушая правил протокола и не взламывая конечные узлы, получить нерыночное преимущество в процессе майнинга биткоина?». Они нашли решение и предложили конструктивный алгоритм действий. То есть они предложили правила игры, которым необходимо следовать отдельным майнерам, чтобы зарабатывать больше тех майнеров, которые этим правилам следовать не будут.

У этого подхода есть серьезный побочный эффект: поскольку майнеры по определению следуют за прибылью, они все в итоге должны скооперироваться и действовать по этим правилам, что потенциально приведет к появлению сети с мощностью 51%+.

Алгоритм «эгоистичного майнинга»

Практика показывает, что отдельные майнеры ведут себя стратегически и объединяются в пулы майнинга, чтобы повысить предсказуемость получения вознаграждения. Внутри таких пулов все участники вносят свою лепту в решение Криптозадачи и, следовательно, получают свою долю вознаграждения, пропорциональную потраченным ими вычислительным мощностям. Отдельные крупные пулы составляют от 10% до 15% всей сети майнеров биткоина. Тем не менее до сих пор даже самые крупные из них следовали правилам протокола Биткоина и не пытались производить атаки на сеть.

Казалось бы, здравый смысл говорит нам, что протокол не позволяет вести «нечестную» игру отдельным майнерам или пулам с объемом меньше, чем 51% от всей мощности сети. Протокол вознаграждает майнеров строго пропорционально затраченным вычислительным мощностям, поэтому для индивидуальных майнеров нет резона даже объединяться в слишком большие пулы, а тем более – готовить атаку 51% (ведь отдельные майнеры не получат от нее никаких выгод).

Оказывается, здравый смысл нас обманывает

Алгоритм «эгоистичного майнинга» позволяет майнерам извлекать сверхприбыли, даже находясь в меньшинстве. Это значит, что протокол Биткоина имеет как минимум один изъян.

Как работает алгоритм

Ключевая идея в том, что пул эгоистичных майнеров («Пул») должен держать свои успешно добытые блоки в тайне, целенаправленно создавая конкурирующую ветку блокчейна. Честные майнеры продолжают работать с основной публичной версией блокчейна, тогда как Пул работает над своей частной версией. Если Пул добывает новый блок, то частная ветка блокчейна вырывается вперед публичной ветки, и тогда Пул продолжает держать эту ветку в тайне. Как только публичная ветка догоняет частную по длине, эгоистичный Пул раскрывает свою тайную ветку всей сети.

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

А теперь по шагам:

  1. Если длина частной ветки блокчейна стала меньше, чем публичной: поскольку размер Пула меньше 51%, нет смысла пытаться угнаться за всей сетью – в этом случае Пул переключается на публичную ветку.
  2. Если эгоистичный Пул добывает новый блок: в этом случае у Пула появляется преимущество в один блок. Но вместо того, чтобы наивно предъявить новый блок всей сети и забрать вознаграждение, эгоистичный Пул добавляет его к текущей ветке блокчейна, но сохраняет её в тайне. Он продолжает пробовать добыть еще один блок вперед всей сети, после чего события могут развиваться по двум сценариям – 3 или 4.
  3. Если после шага 2 публичная ветка догоняет частную: в этом случае Пул немедленно предъявляет всей сети свою частную ветку. Это приводит к коллизии, в которой есть две конкурирующие ветки одинаковой длины. В этом случае, согласно протоколу Блокчейна, все честные майнеры будут продолжать работать с той веткой, которая к ним пришла раньше (это - случайный процесс). А эгоистичные майнеры, конечно же, по согласованию, будут продолжать поддерживать свою бывшую частную ветку. Таки образом получается, что вероятность победы этой бывшей частной ветки будет выше. И вознаграждение за уже добытый блок с большей вероятностью уйдет эгоистичным майнерам.
  4. Если же после шага 2 эгоистичному Пулу опять повезет: он добудет второй подряд блок. Тогда частная сеть останется на некоторое время тайной, пул будет продолжать работать над ней и делать публичным один свой блок каждый раз, когда честные майнеры будут добывать новый блок (это вариант 3, выше). Но очевидно, что раз эгоистичный пул в меньшинстве, в какой-то момент сеть будет их догонять, и они опубликуют всю свою частную ветку сразу же, как только их лидерство сократится до одного блока.

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

Стабильность достигается уже начиная с пулов размером 15% сети. То есть существующие пулы сети уже могли бы прибегнуть к такому подходу и начать приносить своим участникам стабильные сверхприбыли, а протоколу Биткоина – сверхпроблемы.

Вывод

Существует как минимум один практический алгоритм кооперации майнеров, который позволяет им получать сверхприбыли в сети Биткоина. Размеры крупнейших пулов майнеров уже позволяют достичь устойчивых результатов. До сих пор в сети ни разу не было зафиксировано сильных отклонений, крупные пулы пока что не рискнули прибегнуть к такой либо к подобным кооперативным атакам на сеть.

Исследователи в статье предложили варианты улучшений в протоколе Биткоина, которые существенно повысят порог устойчивой работы алгоритма эгоистичного майнинга с 15% до как минимум 25%. Никаких изменений протокола Биткоина в целях противодействия эгоистичному майнингу до сих пор сделано не было.

55
2 комментария

И такой пул идёт лесом быстрее чем Винни пух за мёдом :) все наработки, труды, репутация - в печку. Ради 15% надбавки к прибыли... Да, недостаток весомый, но реализация уж больно криминальная.

Ответить

Да, я думаю поэтому большие пулы и не пытаются. Но фишка в том что даже маленькие пулы могут этим пользоваться. Различные (непроверенные) комментаторы писали что число orphant блоков и временных форков в системе зримо больше чем должно быть в теории. И это может объясняться тем, что какие-то no-name пулы таки пользуются подобной стратегией.

Ответить