Дилемма майнера

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

До недавних пор этой тенденции мало что можно было противопоставить. Гэвин Андресен, главный ученый из Bitcoin Foundation, неоднократно призывал майнеров использовать меньшие пулы, а другие исследователи, в том числе мы, предложили несколько технических исправлений для сокращения размера пулов (например, здесь и здесь). Увы, давление сообщества имело лишь ограниченный успех, а технические решения все еще далеки от внедрения.

В этой статье я объясню, почему такие решения могут не потребоваться. В аналитической работе, которую я опубликовал на сайте arXiv, я показал, что открытые пулы стоят перед проблемой, которую я назвал дилеммой майнера, — версией дилеммы заключенного, в которой майнеры могут выбирать, атаковать ли им друг друга или оставить в покое. Я обнаружил, что любой открытый пул может увеличить собственную прибыль, атакуя другой открытый пул, но если оба пула атакуют друг друга, каждый из них зарабатывает меньше, чем при обычной работе.

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

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

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

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

Базовые знания: майнеры, пулы и утаивание блоков

Майнеры и пулы

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

Награда, выдаваемая майнерам, составляет сегодня 25 BTC, создаваемых примерно каждые 10 минут. Это означает, что у майнера, чьи ресурсы составляют лишь небольшую долю от всех майнинг-ресурсов, мало шансов на выигрыш. Поскольку на получение хотя бы одной награды могут потребоваться годы, майнеры объединяются в пулы. У пула есть менеджер, и когда участник пула находит подтверждение работы, награда уходит менеджеру, который распределяет ее между участниками согласно их вкладу.

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

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

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

Классическая атака утаивания блоков

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

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

Утаивание блоков пулом

Может ли утаивание блоков увеличить доход майнера? Этот вопрос был недавно поставлен Гэвином Андресеном из Bitcoin Foundation. Хотя точная стратегия атаки не публиковалась ранее, недавно было показано, что в некоторых ситуациях это возможно.

Сейчас мы рассмотрим, что происходит, когда пулы утаивают блоки друг от друга.

Стратегия атаки

У пула есть много лояльных майнеров, которые делают то, что им говорит менеджер пула. В стандартном пуле все лояльные майнеры осуществляют майнинг от имени пула. Атакующий, однако, поступает иначе. Менеджер атакующего пула выдает некоторым своим майнерам обычные задачи майнинга, но параллельно он инфильтрирует майнеров в пул-жертву, которые регистрируются в нем как обычные майнеры. Такие майнеры получают от жертвы задачи майнинга и отправляют их лояльным майнерам. Объем майнинг-ресурсов, которые атакующий пул перенаправляет на обработку задач жертвы, называется уровнем инфильтрации, а майнеры, инфильтрированные в другой пул, — лазутчиками. Когда атакующий получает частичные подтверждения работы от своих лазутчиков, он отправляет их жертве, которая оценивает их подлинную майнинговую мощность. Однако когда он получает от лазутчиков полные подтверждения работы, он утаивает и отбрасывает их, не внося вклад в доход жертвы (обратите внимание, что пул мог бы использовать ресурсы инфильтрированных майнеров для майнинга собственных задач, так что это имеет свои затраты). Пул-жертва считает, что лазутчики выполняют эффективную работу и делит свой доход с атакующим пулом, который распределяет доход от собственного майнинга и от лазутчиков между всеми лояльными майнерами.

Игра пулов

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

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

Дилемма майнера

Анализ игры пулов показывает, что пул всегда может увеличить свой доход, атакуя честный пул независимо от их размеров. Это несколько удивляет: как атакующий может увеличить свой доход, отбрасывая подтверждения работы? Как и всегда, дьявол кроется в деталях, но в целом в пользу атакующего играют два фактора. Во-первых, отбрасывая подтверждения работы, он много не теряет. поскольку он все же отправляет в инфильтрированный пул частичные подтверждения работы, которые жертва оплачивает. Во-вторых, сокращая общую эффективную майнинговую мощность, пул увеличивает доход от собственного майнинга.

Но что, если другой пул попытается отомстить? Тогда все становятся еще более интересным. Если два пула атакуют друг друга (тогда как остальные заняты обычным майнингом), им следует выбрать оптимальные уровни инфильтрации. В точке равновесия никакой пул не может увеличить свой доход, увеличив или уменьшив долю лазутчиков. В общем, у пулов есть выбор: атаковать ли им другие пулы для увеличения своего дохода или отказаться от атак. Это версия дилеммы заключенного.

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

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

Меры защиты

Чтобы скрыть атаку утаивания блоков, атакующий пул может зарегистрировать в пуле-жертве несколько майнеров с небольшой майнинговой мощностью. Хотя жертва по уменьшению дохода поймет, что ее атакуют, ей будет сложно идентифицировать лазутчиков. Все майнеры отправляют частичные подтверждения работы, но полные подтверждения обнаруживаются редко, поэтому на получение статистически значимого доказательства утаивания блоков требуется много времени. Это затрудняет защиту от утаивания блоков. Кроме того, проводить атаку можно анонимно, потому что для регистрации в пуле обычно требуется указать лишь биткойн-адрес для получения денег и (или) адрес электронной почты. Жертва понятия не имеет, кто зарегистрирован у нее в качестве майнеров.

Дальнейшее чтение и другие работы по теме

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

Для распределения доходов среди участников пулы могут использовать разные способы. Если вас интересует эта тема, обратитесь к обзору от Мени Розенфелда (Meni Rosenfeld).

Заключение

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

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

Источник: https://bitfeed.ru/dilemma-majnera/

Add Comment

Required fields are marked *. Your email address will not be published.