Стимулы и стратегии майнинга
Большую часть этой главы мы посвятили описанию того, что основная проблема майнинга — найти хорошее оборудование, дешёвое электричество, «разогнать» аппаратуру по максимуму и надеяться на лучшее. Но оказывается, что есть и другие интересные стратегические моменты, которые нужно учесть каждому майнеру перед выбором блока для работы.
1. Какие транзакции включать. Майнеры выбирают, какие транзакции желают включить в блок. По умолчанию это должна быть любая транзакция, включающая в себя комиссию выше минимальной.
2. На каком блоке майнить. Майнеры также решают, поверх какого блока будут надстраивать свой. Обычно это блок на конце самой длинной валидной цепи.
3. Выбор между блоками одного уровня. Если два одинаковых блока смайнены и объявлены почти одновременно, это приводит к возникновению одноблокового форка, при котором каждый из блоков допустим в рамках политики длиннейшей цепи. Майнеры должны решить, от какого блока вести цепь дальше. Как правило, выбирают тот, о котором узнали раньше.
4. Когда объявлять о новом блоке. Найдя блок, майнер решает, когда объявить о нём в сети. Обычно это происходит сразу же, но можно задать определённое время на ожидание перед объявлением.
Таким образом, майнеры должны принимать много решений, для каждого из которых есть стандартная стратегия, которая используется типичным клиентом сети — так поступает подавляющее большинство майнеров на момент написания этой книги.
Однако в зависимости от доли мощности, контролируемой майнером, более выгодная стратегия может быть иной. Нахождение подобных ходов — это территория активных изысканий. Посмотрим на несколько потенциально выгодных отклонений. Далее мы считаем, что есть нетипичный майнер, который владеет долей мощностей, обозначаемой через а.
Форк-атака. Простейший пример — форк-атака, а простейший способ её осуществить — провести двойную трату. Майнер посылает деньги своей жертве, Бобу, в оплату за товар или услугу. Боб ждёт и видит, что транзакция и правда попала в блокчейн (и даже ждёт стандартные шесть подтверждений для пущей уверенности). Убедившись, что оплата прошла, Боб отправляет товар или оказывает услугу.
А майнер тем временем уже работает над более ранним блоком — в котором нет транзакции Бобу. В этой форкированной цепи он вводит другую транзакцию — двойную трату монет Боба, высланных на адрес самого майнера.
Рис. 5.15. Форк-атака
Когда майнер в первый раз возвращается назад и работает над более ранней точкой в цепи, это не обязательно срабатывает, так как форкированная цепь не всегда самая длинная. Однако, если у майнера хэшрейт достаточно велик, то есть, а > 0,5, то альтернативная цепь станет самой длинной, и потому валидной.
После этого транзакции денег Бобу больше не существует в общепризнанной цепи, а так как эти деньги уже были посланы (по новому соглашению), то транзакция больше не может оказаться в блокчейне.
51% это обязательно? Форк-атака срабатывает, если а > 0,5. На практике же это возможно и при меньших значениях из-за других факторов вроде верхней сети. Сеть без атаки имеет некоторые старые блоки по понятой причине: нужно, чтобы майнеры знали о блоках друг друга. Но атакующий может обойти это по своей цепи. Аналогичным образом, чем выше 50%, тем легче провернуть эту атаку. Часто говорят об атаке 51%, как если бы это было магическим значением, которое само по себе даёт способность проводить такие атаки. На самом деле это скорее градиент.
Неясно, может ли такая атака сработать в действительности. Атакующего легко вычислить, и сообщество может решить отменить транзакцию, отказавшись признавать новую цепь, даже если она длиннее. Кроме того, возможно, что такая атака полностью обрушит курс биткоина. Если майнер её совершит, люди потеряют уверенность в системе и воздержатся от покупки биткоинов, что снизит их ценность.
По этим причинам наиболее вероятная мотивация для форк-атаки — это желание уничтожить валюту путём полного подрыва доверия к ней. Её также называют «атакой Голдфингера» в честь злодея из бондианы, который хотел сделать всё золото в Форт-Ноксе радиоактивным для его обесценивания. Цель атаки Голдфингера может состоять в уничтожении валюты или получении прибыли от сокращения биткоинов в обороте при сохранении денег в конкурирующей валюте.
Форк-атака с помощью подкупа. Купить достаточно оборудования для контроля над большей частью мощности сети — это достаточно дорого и трудно. Но, возможно, есть и более простой способ учинить форк-атаку. В то время, как купить достаточно майнинг- мощности дорого, может быть дешевле дать взятку тем, у кого она уже есть, чтобы они распоряжались ею по вашему усмотрению.
Это можно сделать несколькими способами — например, собрать их всех «в оффлайне», вручить им конверты с наличкой и потребовать работать на вашу цепь. Более умный способ — объявить себя новым пулом и работать себе в убыток.
Можно будет предлагать более заманчивые стимулы, чем другие пулы, и тем самым заманить множество майнеров. Даже если ваши обещания будут невыполнимыми, вы сможете создавать видимость их выполнения достаточно долго, чтобы успешно осуществить форк-атаку и получить свою прибыль. Третий способ — это оставлять большие чаевые в своих форк-блоках. Они должны быть достаточно большими, чтобы майнеры оставляли самую длинную цепь и работали над вашей, надеясь, что она станет самой длинной и они смогут забрать своё вознаграждение.
В любом случае, при подкупе вместо получения всей мощности в свои руки, вы платите людям, у которых она есть, чтобы они работали на ваш форк. Возможно, майнеры не станут поддерживать вашу атаку, так как это навредит валюте, в которую они инвестировали слишком много денег и оборудования. С другой стороны, хотя майнеры как группа хотят сохранить платёжеспособность валюты, они не действуют коллективно. Отдельные майнеры могут согласиться на взятку, если поверят в быструю прибыль. Это классическая драма общин с точки зрения экономики. Ничто из этого, впрочем, ещё ни разу не случилось, и вопрос о том, сработала бы атака подкупом, остаётся открытым.
Атака удержанием блока. Допустим, вы только что нашли блок. В нормальной ситуации вы тут же сообщаете об этом сети, но если вы замыслили атаку удержанием блока, вы молчите и пытаетесь провернуть майнинг поверх этого блока, надеясь найти два идущих подряд блока, прежде чем оставшаяся сеть найдёт хоть один, и тогда оба блока тайком достанутся вам.
Если вы опережаете общую цепь на два блока, все майнинговые усилия остальных пропадут впустую. Другие будут присоединять блоки поверх того, что считают самой длинной цепью, но как только они найдут валидный блок, вы объявите о двух блоках, которые удержали у себя. Это тут же создаст самую длинную валидную цепь, а та, над которой так трудились все остальные, моментально окажется заброшенной и отрезанной от длиннейшей цепи. Это называется «эгоистичным майнингом». Пустив некоторую мощность всей сети на ветер, вы надеетесь увеличить свою фактическую долю из вознаграждений за майнинг.
Рис. 5.16: Иллюстрация эгоистичного майнинга. На иллюстрации один из возможных выигрышных сценариев такой атаки
(1) Блокчейн до атаки (2) Атакующий майнит блок, удерживает блок и майнит поверх него (3) Атакующему везёт, он находит следующий блок раньше остальных и продолжает удержание (4) Неатакующий находит блок и передаёт его, после чего атакующий передаёт два своих блока, что приводит к оставлению красного блока и обессмысливанию майнинговой мощности, которая пошла на его нахождение.
Беда в том, что для нахождения двух блоков подряд нужно большое везение. Скорее всего, кто-то другой объявит о блоке, когда у вас он только один. Если это случится, вы тут же захотите объявить о своём. Это создаст одноблоковый форк, и тогда майнеры будут решать, по какому из них строить. Вам останется надеяться только на то, что большинство увидит ваш первым и выберет его. Эффективность такого метода сильно зависит от вашей способности выигрывать такие забеги, так что ваше положение в сети имеет ключевое значение. Можно попытаться связаться с каждым узлом, чтобы о вашем блоке узнали раньше.
Оказывается, если предположить, что у вас только 50% шансов на успех, эгоистичный майнинг всё равно более выгодней, чем стандартная стратегия, если а> 0,25. Существование такой атаки весьма удивительно, и оно противоречит широко распространённому мнению о том, что без большинства сети — т е., при а<0,5, нет более выгодной стратегии, чем стандартная. Так что не слишком безопасно считать, что майнер, у которого нет контроля над 50% сети, ничего не выиграет, если станет пользоваться другой стратегией.
Пока что эгоистичный майнинг — это просто теория. На практике так ещё никто не делал. Его будет очень легко раскрыть, так как он увеличит показатели для почти одновременных объявлений о нахождении блока.
Чёрные списки и карательный форк. Положим, майнер хочет внести транзакции с адреса Х в чёрный список, то есть — заморозить средства по этому адресу. Вероятно, заработать на этом можно, потребовав выкуп за разморозку, размеры которого зависят от того, кто жертва. Чёрный список может вводиться и по законным причинам — например, правительство считает некий адрес неблагонадёжным, и силы правопорядка могут потребовать, чтобы все майнеры, находящиеся в их юрисдикции, забанили эти адреса.
Известно, что надёжного способа забанить биктоин-адрес не существует. Даже если некоторые мйнеры откажутся включать определённые транзакции в блок, другие этого не сделают. Если вы майнер и пытаетесь кого-то забанить, вам нужно что-то более сильное — а именно карательный форк.
Вы можете объявить, что отказываетесь работать с цепью, содержащей транзакцию с данного адреса. Это довольно экстремальная идея, если у вас нет большей части сетевой мощности. Объявив об этом, вы откажетесь майнить любую цепь с определёнными транзакциями, если таковая возникнет и будет считаться длиннейшей — таким образом, вы отрежете себя от общего консенсуса навеки, и всё, что вы намайнили, пропадёт впустую.
Перьевой форк. Иными словами, угроза внесения в чёрный список определённых транзакций путём карательного форка так, как описано выше, едва ли сработает, если к вам не присоединяться другими майнеры. Но есть и более разумный способ это сделать. Вместо того, чтобы объявлять о своём исходе навечно, как только вам попадётся транзакция с адреса Х, вы объявляете, что создадите форк, если встретите блок с такой транзакцией, но после того как пара блоков с этой транзакцией будут подтверждены, вернётесь обратно к длиннейшей цепи.
Сдавшись после одного подтверждения, вы получите вероятность забрасывания блока с такой транзакцией, равную а2 . У вас будет два последовательно идущих блока, чтобы избавиться от блока с нежелательной транзакцией ещё до того, как оставшаяся сеть отыщет новый блок, и а2 — это вероятность того, что вам повезёт дважды. Эта вероятность кажется не такой уж большой. Если у вас 20% мощности, то только с 4% вероятностью вы избавитесь от нежелательной транзакции. Но если вы убедите других майнеров присоединиться к вашему бойкоту, шансы станут расти. Если вы обо всём заявляли публично, другие майнеры узнают, что если включить транзакцию с Х, то с вероятностью а2 их следующий найденный блок будет заброшен из-за вашей перьевой атаки.
Если у них нет сильной мотивации добавлять транзакцию с адреса Х, и у неё нет высокой комиссии, вероятность а2 потерять своё вознаграждение станет куда более мощным стимулом. Это происходит, когда остальные майнеры намеренно решают вас поддержать с чёрным списком, а вы можете тогда его создать даже при а< 0,5. Если у вас нет большинства по мощности, успешность такой атаки зависит в основном от того, насколько вы убедительны и насколько решительно намерены создать форк.
Переход от вознаграждений к комиссии. По состоянию на 2015 комиссии за транзакцию играют небольшую роль, так как большую часть доходов приносят вознаграждения — более 99% всех доходов майнеров. Но каждые четыре года вознаграждение уменьшается вдвое, и в итоге оно станет достаточно низким, чтобы именно комиссии сделались источником дохода. Неизвестно, как именно майнеры станут работать, когда до этого дойдёт. Они станут более агрессивными в получении минимальной комиссии, и как они будут сотрудничать, чтобы добиться этого?
В конечном итоге майнеры могут использовать любую стратегию, хотя на деле мало кто отходил от стандартов. Нет законченной модели для поведения майнеров, где говорится, что вся стратегия по умолчанию оптимальна, и в этой главе мы познакомились с отдельными примерами отклонений от неё, которые сулят прибыль для майнеров с достаточной мощностью. Стратегии майнинга — это область, где практика опережает теорию. На опыте мы видим, что большинство майнеров используют стандартный вариант, и потому биткоин хорошо работает. Но мы пока не знаем, работает ли это в теории.
Также мы не можем быть уверены, что на практике она всегда будет работать так же хорошо. Для биткоина всё может поменяться. Майнеры становятся более централизованными и профессиональными, а мощность сети растёт. Кроме того, в долгосрочной перспективе биткоину придётся сражаться с эффектом от перехода к комиссиям от вознаграждений. Мы не знаем, как это будет осуществлено, и использование моделей из теории игр — весьма интересная область теоретических изысканий.
Дата добавления: 2023-05-18; просмотров: 359;