Опубликован: 01.02.2018 | Доступ: свободный | Студентов: 1346 / 258 | Длительность: 17:50:00
Лекция 5:

Особенности майнинга

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

Стимулы и стратегии майнинга

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

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

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

Майнерам приходится решать, на основе какого блока они будут продолжать цепочку. В данном случае стратегия по умолчанию заключается в выборе самой длинной действительной цепочки, которая была объявлена. Но если 2 человека создают блок одновременно, то майнерам приходится решать, какую из цепочек блоков продолжать, так как обе они будут самыми длинными цепочками в истории.

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

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

Что если майнер хочет изменить некоторые из этих стратегических решений? Можете ли майнер зарабатывать больше денег, если будет применять стратегии, отличные от базовой?

Все зависит от того, какие мощности у него имеются - выразим их с помощью параметра α, который находится в пределах от 0 до 1 и показывает, какую долю мощности от мощности всей сети контролирует майнер.

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

Самая простая атака – это атака "double spending",основная идея которой заключается в проведении двойного расходования.

Допустим, есть действительная цепочка блоков, майнер отправляет деньги какой-либо жертве, например, Бобу. Так что, может показаться, что транзакция по отправке денег Бобу находится в самой длинной действительной цепочке блоков.

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

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

На данном этапе этот блок не будет считаться достоверным, так как он основывается на более ранней точке. Он не находится в самой длинной действительной цепочке блоков. Однако если майнер обладает большей частью мощности, т.е. если α больше 0,5, то, в конечном счете, его альтернативная цепочка блоков будет длиннее, чем та, которая ранее была самой длинной. И в этот момент его самая длинная цепочка блоков становится действительной.

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

Итак, атака возможна, если α больше 0,5. На практике это может быть возможным и с , который принимает значение немного меньшее, чем 0,5, вследствие перегрузки сети и того факта, что в составе одного пула майнеру не следует работать над сталкивающимися блоками в альтернативной цепочке блоков.

Иногда говорят об атаке "51" в сети Биткойн, однако было бы ошибкой считать, что это магический порог, перейдя который, внезапно можно совершить атаку. В действительности, это скорее похоже на склон, который демонстрирует, что совершить атаку становится легче по мере роста α от 0,5 до 1.

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

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

Так кто может обвалить систему Биткоин подобным образом? Такую атаку называют атака Голдфингер. Она названа так вчесть знаменитого злодея из фильма о Джеймсе Бонде, который хотел сделать радиоактивным все золото, которое правительство США хранило в Форт-Ноксе, чтобы фактически уничтожить золотой запас США.

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

Помимо этих угроз, неясно, при каких еще сценариях необходимо беспокоиться о крупномасштабных атаках.

Хотя возможно, что совершить атаку легче, чем достичь значения α>0,5. Чтобы достичь α>0,5 требуется скупать вычислительные мощности, а это очень дорого. При этом они должны быть больше, чем у кого-либо. Гораздо проще и дешевле подкупить людей, которые контролируют вычислительные мощности. Можно передать им конверт, полный наличных денег. Или объявить о создании нового пула совместного майнинга и работать в убыток. Например, объявить, что о награде 1,01, что явно противоречит принципу устойвивого развития, но тем не менее привлечет майнеров в пул и, возможно, позволит выйти мощности пула за рамки 50%. Также существуют некоторые другие искусные методы заставить людей работать над вашей альтернативной цепочкой блоков, например, оставляя подсказки в цепочке блоков.

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

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

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

Могут ли такие атаки посредством подкупа, как описанные выше, быть жизнеспособными?

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

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

Но следует отметить, что это способствует снижению риска глубокого разветвления в цепочке блоков.

Еще один вид атаки – атака "утаивание блока" (block-withholding). Основная идея заключается в том, что майнер не объявляет о блоках сразу, как только находит их. Вместо этого он хочет попытаться опередить остальных. "Опередить" значит найти два блока подряд, прежде чем остальные майнеры найдут хотя бы один. До тех пор пока кто-то утаивает два найденных блока, остальные майнеры будут пытаться продолжить, как они считают, самую длинную достоверную цепочку блоков. И все эти усилия окажутся пустой тратой времени для них.

Поэтому, пока кто-то опережает остальных на 2 блока, он майнит, по сути, без конкурентов. Как только остальные найдут действительно достоверный блок, они сразу опубликуют его, и все примут его. Но затем майнер, который утаивал 2 блока, мгновенно их объявляет, и его цепочка немедленно становится самой длинной достоверной цепочкой блоков. И этот блок, который остальная часть майнеров так усердно пыталась найти, мгновенно становится изолированным и отрезанным от самой длинной цепочки блоков. Данный подход был назван "эгоистичным майнингом".

Так что произойдет, если применить стратегию "утаивание блоков" и опережать остальных только на 1 блок? Вместо того, чтобы быть на 2 блока впереди, как было рассмотрено ранее, у майнера лишь 1 блок в запасе. Когда майнеры объявят о найденном достоверном блоке, ему немедленно следует объявить о своем блоке. Появляются 2 потенциально самые длинные цепочки блоков, и каждый майнер будет решать, какую из цепочек продолжать.

Таким образом, если в запасе всего 1 блок, то необходимо вступить в гонку сразу же, как только кто-то другой нашел достоверный блок. Жизнеспособность подхода "утаивание блоков" будет в значительной степени зависеть от шансов на победу в этих гонках. Каким образом каждый раз одерживать победу? Можно ожесточенно бороться за то, чтобы обрести хорошую позицию в сети или попытаться взаимодействовать с каждой нодой. Можно попытаться подкупить людей, включив в свой блок небольшие подсказки, чтобы сделать его более привлекательным для продолжения цепочки. При честной конкуренции вероятность победы в гонках составляет 50%. При такой вероятности "утаивание блоков" является улучшением только если α>0,25.

Несмотря на то, что такая атака не наблюдалась на практике, удивительно, что это вообще возможно. Это противоречит исходной идее сети Биткойн, что без значения α>0,5, то есть без большинства сети, не было лучшей стратегии, чем базовая. Существование этой атаки доказывает, что майнер даже без контроля более 50% сети может использовать альтернативную стратегию и получить от этого выгоду.

Еще один интересный случай связан с применением стратегии "punitive forking" (англ. punitive – связанный с применением наказания, forking – ответвление). Она используется в случае, когда майнеры хотят внести в черный список транзакции с определенного адреса, чтобы навсегда заморозить деньги на этом адресе. Майнеры могут объявить, что они отказываются майнить для продолжения цепочки, в которой присутствует транзакция, отправленная с адреса X.

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

Таким образом, можно применить данную стратегию, однако очень быстро цепочка окажется изолированной. И это стало бы пустой тратой времени и электроэнергии. Но есть гораздо более умный способ применения стратегии "punitive forking" – это, так называемый, "feather-forking" (англ. feather – флюгер, forking – ответвление). Основная идея заключается в том, что вместо того, чтобы объявлять о своем намерении всегда работать над альтернативной цепочкой, если в нее входит транзакция с адреса X, майнер объявляет публично, что будет пытаться создать альтернативную самую длинную цепочку, если обнаружит, что текущая цепочка, содержит транзакцию с адреса X. Но что через некоторое время он откажется от нее. Обычно после одного или двух блоков, подтверждающих транзакцию с адреса X, майнер возвращается обратно к самой длинной достоверной цепочке.

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

α в квадрате может принимать разные значения. Допустим, майнер контролирует 20 % мощности, в этом случае α примет достаточно низкое значение. Вероятность того, что у него получится избавиться от нежеланной транзакции, составит 4%, но он может привлечь других майнеров. Поскольку майнер объявлял публично о своей атаке, то остальные майнеры знают, что если они включат транзакцию с адреса X, то с вероятностью, равной в квадрате, найденный блок окажется изолированным вследствие атаки "feather-forking".

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

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

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

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

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

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

Это число, полученное довольно случайным образом, но оно находится в базовом клиенте, поэтому нужно платить, если необходимо перевести биткойны с приоритетом транзакции меньшим, чем 0,576.

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

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

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >