В данной лекции будут рассмотрены все аспекты майнинга: кто такие майнеры, что представляет собой бизнес-модель майнеров, какое влияние они оказывают на окружающую среду. Из предыдущих лекций известно, что Биткойн находится в достаточно сильной зависимости от майнеров, которые подтверждают каждую транзакцию и создают все блоки за вознаграждение.
Майнинг - это не схема быстрого обогащения, а очень длинный путь к заработку. Что необходимо сделать, чтобы стать биткойн-майнером? Для начала присоединиться к сети и стать Биткойн-нодой. Начать перехватывать и подтверждать все новые транзакции и блоки, поддерживать текущую цепочку блоков. Чтобы создать новый блок, нужно вычислить случайный одноразовый код (nonce), который позволит блоку считаться подтвержденным. Эта сложная вычислительная работа, которая является самой трудной задачей для майнера. Когда майнер путем долгих вычислений находит блок, он надеется, что все остальные майнеры признают этот блок, что они подтвердят его и начнут майнить, продолжая цепочку, и что они не признают блок конкурента вместо этого блока. И если все это совершится, то майнер получит вознаграждение в объеме более 25 биткойнов за блок. Это около $15,000 US.
Майнинг существует, чтобы осуществлять подтверждение транзакций. Остальное: вознаграждение и поиск блоков, - это всего лишь стимул, чтобы побудить майнеров осуществлять подтверждение, так как это необходимо для функционирования биткойн в качестве валюты.
Что собой представляет процесс поиска достоверного блока? Необходимо вспомнить о существовании 2 основных структур данных на основе хэша. Существует цепочка блоков (block chain), где каждый заголовок блока указывает на предыдущий заголовок блока в цепочке. В каждом блоке есть дерево Меркла, которое представляет собой бинарное дерево на основе хэша всех транзакций, включенных в блок.
(рис 5.1) Процесс поиска достоверного блока
Первое, что делает майнер – собирает все транзакции, которые были получены от пула, ожидающего блоки, в это дерево.
Потом он создает блок с правильным заголовком, который указывает на предыдущий блок (рис 5.1). Далее майнеру необходимо решить самую сложную задачу – найти случайный код(nonce), чтобы хэш заголовка блока начинался с необходимого количества нулей. Майнер может начать со случайного одноразового кода (nonce), состоящего только из нулей (32-битное целое число) и, попробовав, получит неверный хэш. Тогда он перейдет следующему коду (nonce) с номером 1, и хэш также будет неверным. Затем код (nonce) номер 2, хэш также окажется неверным. Майнер будет пытаться использовать каждое возможное значение для этого 32-битного целого числа, и, возможно, ни в одном случае хэш не будет верным.
Тогда ему потребуется внести изменения.
Комиссионная транзакция (coinbase transaction) существует там, где майнеры фактически создают новые монеты и выдвигают свои права на них. В ней существует дополнительный параметр одноразового кода (nonce), содержащий только нули. После того, как майнер исчерпал все возможные одноразовые коды (nonce) в заголовке блока, он использует дополнительный код (extra nonce) в комиссионной транзакции, который изначально содержит только нули. Он перейдет к дополнительному коду (extra nonce) в комиссионной транзакции и изменит его на 1, и затем начнет поиск кодов (nonce) в заголовке блока заново.
При изменении этого параметра в комиссионной транзакции, все дерево транзакций Меркла меняется. Таким образом, изменения будут распространяться до конца. Изменение дополнительного кода (extra nonce) в комиссионной транзакции обойдется гораздо дороже, чем изменение одноразового кода (nonce) в заголовке, по этой причине майнер делает это как внешний цикл. А внутренний цикл, в котором он действительно трудится, - изменение кода (nonce) в заголовке блока.
Но в очередной раз первая попытка не сработет, так что майнеру придется перебирать возможные значения дальше. Поиск nonce это действительно сложный вычислительный процесс, так что подавляющее большинство кодов (nonce), которые проверяет майнер, не срабатывают.
В конечном счете, если майнер посвятит этому достаточно времени, он найдет правильную комбинацию дополнительного кода (extra nonce) в комиссионной транзакции и одноразового кода (nonce) в заголовке, и сгенерирует блок с хэшем, который начинается с достаточного количества нулей, чтобы считаться достоверным. Тогда он захочет объявить об этом так быстро, насколько может, и будет надеяться, что сможет извлечь из этого выгоду.
Рассмотрим, насколько сложно найти nonce.
Хэш любого подтвержденного блока должен быть менее 256 бит. Мы используем хэш-функцию (SHA-256), в которой, по крайней мере первые 64 бита хэша любого достоверного блока должны быть нулями.
В целом сложность на настоящий момент составляет 266 и это огромное число. Если попытаться написать его десятичным числом, то получится 84 квинтильона. Приближение к этому числу, которое можно представить, - это население Земли в квадрате. Другими словами, если бы каждый человек на Земле был бы сам по себе своей планетой Земля с 7 миллиардами человек на ней, то общее число людей было бы близко к этому числу.
Или другой пример, чтобы представить данное число, если бы все 7 миллиардов человек на Земле пожали бы друг другу руки. Меньше, чем 266 общих рукопожатий должно было осуществиться.
Как определяют сложность майнинга?
Как уже упоминалось ранее, сложность майнинга пересчитывается каждые 2 недели на основе эффективности работы майнеров в течение предыдущих 2 недель. Для этого берется время, затрачиваемое майнерами на поиск предыдущих 2016 блоков и делится на 2 недели.
Затем полученное отношение умножается на предыдущее значение сложности, чтобы получить следующее значение сложности. Таким образом, значение сложности регулярно пересчитывается, чтобы поддерживать постоянной среднюю скорость создания блоков (примерно 1 блок в 10 минут). Это константа, которая была установлена в самом начале развития Биткойн, и каждые 2 недели сложность переустанавливается, чтобы гарантировать, что это свойство поддерживается.
С течением времени сложность майнинга увеличивается (рис 5.2). И это не обязательно постоянное линейное или экспоненциальное увеличение. Сложность зависит от многих параметров: активности на рынке, количества новых майнеров, обменого курса и т.п. На текущий момент основным фактором является увеличение вычислительных мощностей майнеров в сети. Чем больше людей занимаются хэшированием, тем быстрее создаются новые блоки, и сложность корректируется. Таким образом, на создание новых блоков снова затрачивается 10 минут. На рис 5.2 изображена скачкообразная функция сложности, даже несмотря на то, что общая скорость хэширования растет плавно, сложность меняется скачкообразно.
(рис 5.2) Динамика сложности майнинга
Другой способ доказать скачкообразность функции сложности – это выяснить, сколько времени в среднем потребуется для создания нового блока. На рис 5.3 показано, сколько прошло секунд между последовательно идущими блоками в цепочке блоков.
(рис 5.3) Соотношение времени, затрачиваемого на создание блока, и сложности
Можно заметить, что линия затрат времени на создание нового блока постепенно снижается, затем быстро возрастает, и снова постепенно снижается. Это объясняется тем, что сложность сбрасывается каждые 2 недели, а средняя скорость создания новых блоков возвращается на уровень 10 минут (примерно). Затем чем больше мощностей привлекается в сеть, когда сложность остается прежней, тем быстрее майнеры создают новые блоки. По прошествии 2 недель сложность переустанавливается на 10 минут, и процесс начинается сначала.
Несмотря на то, что цель заключается в том, чтобы новый блок создавался каждые 10 минут, в среднем это значение ближе к 9 минутам, а к концу периода в 2 недели это значение снижается примерно до 8 минут.
Биткоин использует хэш-функцию SHA-256. Это криптографическая хэш-функция общего назначения, являющаяся частью большого семейства функций SHA-2, которые были стандартизированы в 2001 году. Хэш-функции семейства SHA-2 были разработаны АНБ (Агентство национальной безопасности Соединённых Штатов (англ. National Security Agency, NSA)). SHA-256 неприступна криптографически, хотя имеет некоторые теоретические недостатки, которые начинают проявляться в настоящее время. На смену семейству SHA-2 должно прийти семейство SHA-3, которое на текущий момент находится на завершающей стадии стандартизации. Однако на момент разработки Биткойн семейство SHA-3 не было доступно и SHA-256 была хорошим выбором, так как это была самая сильная криптографическая хэш-функция общего назначения в то время. Вполне возможно, что она станет менее безопасной по мере существования Биткойн, но на данный момент уязвимостей в ней не выявлено и она считается достаточно устойчивой.
Чтобы понять, какую задачу необходимо решить майнерам, рассмотрим углубленную схему SHA-256 на рис 5.4.
(рис 5.4) Углубленная схема SHA-256
Длина внутреннего состояния SHA-256 составляет 256-бит, она разделена на 8 32-битных слова, поэтому больше оптимизирована для 32-битных платформ.
На каждом этапе берутся некоторые из этих слов, к которым применяются 4 различных параметра настройки, которые находятся на бит-уровне. Таким образом, с каждого из них перебрасывают или добавляют 2 или 3 бита - основные логические операции.
Затем берутся несколько слов из внутреннего состояния (к некоторым были применены параметры настройки), которые составляют 32 по модулю в канале конвейерной передачи данных. Результат всех этих добавлений привязывается к первому слову внутреннего состояния и все внутреннее состояние сдвигается. Некоторые из идей архитектуры восходят к классическим линейным регистрам сдвига с обратной связью, которые считаются одними из первых подходов к криптографическим архитектурам.
Выше описан 1 этап функции сжатия SHA, а для полного вычисления SHA-256 потребуется выполнить это 80 раз для 80 циклов. А в каждом цикле существуют разные константы, применяемые на этом одном шаге, так что каждое повторное выполнение цикла не совсем то же самое.
Перед майнерами стоит задача, вычислить эту функцию как можно быстрее.
Из схемы можно заметить, что для этого им необходимо работать с 32-битными словами, создавать 32-битные дополнения, а также некоторые побитовые логические схемы.
Первое поколение майнинга - майнинг биткойнов позиционировался как возможный для осуществления на компьютерах общего назначения с центральным процессором (ЦП) общего назначения. ЦП искал коды (nonce) по линейному закону, вычислял SHA-256 с помощью программного обеспечения (ПО) и проверял, является ли результат достоверным блоком.
Как быстро это будет происходить на компьютере общего назначения?
Если настольный ПК высокого класса, то возможно вычислять около 224 хэшей за секунду, что примерно будет составлять 20 мегагерц.
Хотя герц часто применяется по отношению к скорости процессора, основная идея герца заключается в обозначении того, что одна операция выполняется много раз в секунду.
Допустим, хэши вычисляются со скоростью 20 мегагерц, но что это дает при текущем уровне сложности? Создание одного блока займет более ста тысяч лет с такой скоростью.
Если сегодня заняться майнингом на ПК общего назначения, поиск блока займет более 140000 лет.
Второе поколение аппаратного обеспечения майнинга связано с попытками использовать графический процессор (GPU). Графические процессоры разработаны для обеспечения чрезвычайной параллельности, что помогает при майнинге биткойнов, так как можно одновременно распараллелить и вычислить множество хэшей для разных кодов (nonce), чтобы найти подходящий nonce. Помимо этого видеокарты имеют специализированную конвейерную архитектуру для увеличения пропускной способности, что также позволяет увеличить скорость расчетов. Примерно в 2010 году появилась первая реализация, написанная на языке OpenCL (от англ. Open Computing Language – открытый язык вычислений), который является языком общего назначения для работы с графическим процессором помимо графики. Это язык высокого уровня, поэтому потребовалось немного времени, прежде чем люди начали настраивать код, чтобы быстро работать на специализированных видеокартах.
Так в чем преимущества использования видеокарты? Первое преимущество – они легкодоступны и просты в использовании. Второе - видеокарты обладают рядом свойств, которые делают их особенно предпочтительными для майнинга биткойнов. Они предназначены для параллелизма, поэтому имеют в арсенале много арифметически-логических устройств (АЛУ), которые можно использовать параллельно, чтобы выполнять разные вычисления SHA-256, а некоторые из них также имеют некоторые конкретные инструкции для добычи биткойнов, которые хорошо работают для SHA-256. Видеокарта также обладает свойством, которое позволяет управлять множеством видеокарт с одной материнской платы и ЦП, так что можно взять один компьютер и подключить к нему несколько видеокарт.
Большинство видеокарт также могут быть разогнаны. Это значит, что их можно заставить работать быстрее, чем заявлено разработчиками. Для майнинга биткойнов, возможно, было бы хорошей идеей запускать микропроцессор намного быстрее, чем та скорость, на которую он был рассчитан при разработке, даже если это вызовет появление ошибок в процессе вычислений.
Существует так называемая мера успеха в майнинге – полезная пропускная способность (Goodput), которая заключается в пропускной способности, т.е. как быстро создаются новые блоки и как часто в вычислениях возникают ошибки. Разгонять микропроцессор имеет смысл в том случае, если это позволит создавать достоверные блоки быстрее, даже если это приведет к ошибкам в вычислениях. Таким образом, если можно настроить одну кнопку и запустить видеокарту на 50% быстрее, даже если ошибки в вычислениях составляют 30% времени, итоговая скорость увеличится в 1,5 раза. Это значит, что блоки будут создаваться быстрее , чем при нормальной скорости и без ошибок. На поиски ответов на вопросы насколько следует разгонять микропроцессор и какие ошибки это создаст было потрачено много времени. Со временем майнеры стали масштабировать это решение. Если одна видеокарта работает хорошо, то лучший результат можно получить, используя 2 и более карт. Постепенно появились примитивные установки, одна из которых изображена на рис 5.5. Эти установки собирались вручную – стойки, простейшие системы охлаждения и т.д.
(рис 5.5) Примитивные установки
Рассмотрим недостатки ускорения. Графический процессор имеет много комплектующих, предназначенных специально для видео. В частности, он имеет блоки вычисления с плавающей точкой, которые нельзя задействовать в SHA-256. Таким образом, многое из заводской комплектации видеокарты не используется при майнинге.
Помимо этого у видеокарт отсутствует хорошая система охлаждения, так как они предназначены для запуска одной видеокарты и монитора для одного компьютера.
Видеокарты могут обладать достаточно большой передаваемой мощностью, поэтому ими потребляется большое количество энергии.
Еще один недостаток, появившийся изначально, - необходимость конструирования стендов для размещения видеокарт.
Какую производительность можно получить от использования видеокарт?
Высокопроизводительные видеокарты с множеством грубых наладок могут предоставить до 200 мегагерц. Что приблизительно составляет 227 хэшей в секунду.
Это на порядок выше производительности с использованием ЦП. Тем не менее, даже если прибавить к этой видеокарте еще 100 видеокарт при текущем уровне сложности уйдет 174 года на поиск блока.
Примерно в 2011 году майнеры начали использовать программируемые пользователем вентильные матрицы (ППВМ). Это было приблизительно в то время, когда на языке Verilog вышла первая реализация майнинга биткойнов. Verilog является языком описания аппаратуры, используемый для программирования ППВМ.
ППВМ определены как аппаратура, которая может изготавливаться по специальным требованиям заказчика или перенастраиваться владельцем, в отличие от заводского микропроцессора, чьи характеристики фиксированы и неизменны.
ППВМ предлагают более высокую производительность, чем видеокарты. В частности, при выполнении операций, которые не требуют приложения больших усилий. Если все операции точно определены, можно заставить охлаждение работать лучше с ППВМ. В отличие от видеокарт, существенно меньше функций тратится впустую. Несколькими ППВМ можно управлять с одного центрального устройства
Как и в случае с видеокартами, несколько ППВМ лучше чем одна ППВМ. Поэтому ППВМ стали объединять в аккуратные стойки, которые не имеют ничего общего со своими предшественниками – стойками с объединенными видеокартами. Но ППВМ, которые используются для майнинга биткоинов, постоянно пребывают в активном состоянии и работают на пределе, что вызывает ошибки и сбои. Также оказалось сложным оптимизировать 32-битный шаг, который имеет решающее значение для вычисления SHA-256. ППВМ менее доступны для приобретения, чем видеокарты. Мало кто знает, как программировать ППВМ или как настроить их.
Выяснилось, что стоимость производительности была добавочной, всего лишь предельным доходом по сравнению с использованием видеокарт, даже несмотря на то, что производительность ППВМ выше. Поэтому использование видеокарт доминировало в области майнинга довольно недолгое время, примерно около года. Еще более коротким был период, когда ППВМ считалась популярным аппаратным обеспечением для майнинга биткойнов. Но если правильно использовать ППВМ, можно достигнуть производительности около гигагерца. Но даже с такой производительностью и с условием объединения 100 ППВМ, всё равно потребуется 25 лет для создания блока.
Сегодня скорость вычисления - миллиард хэшей в секунду.
На сегодняшний день в сфере майнинга биткойнов доминирует интегральная схема специального назначения (ASIC). Она представляет собой чип, который был разработан и сконструирован с нуля исключительно для майнинга биткойнов. В Интернете много предложений ASIC с указанием всех необходимых характеристика, таких как производительность, стоимость, энергопотребление, которые помогут сделать выбор. Однако самым главным критерием отбора является скорость доставки оборудования потребителю.
Большинство ASIC имеют довольно значимые оговорки, которые обязывают покупателя предварительно заказать их, даже до того как они будут доступны, и они не дают никаких гарантий по поводу даты доставки.
Компании, продающие ASIC, появились в 2012 году, поэтому им необходимо платить за производственный цикл ASIC с предзаказов покупателей. То есть с потребителей берут оплату до того, как чип будет готов. Во многих случаях доставка чипа задерживается, и потребитель теряет потенциальную прибыль. ASIC предназначены исключительно для майнинга биткоинов, то есть рассчитаны на работу на полной скорости в течение всего срока функционирования. Для разработки ASIC требуется много времени и опыта. Несмотря на сложность разработки ASIC, возможно, это самый короткий цикл разработки интегральных схем. Когда появилось осознание необходимости появления специальных устройств для майнинга биткоинов, их очень быстро сконструировали и начали продавать. Из-за этой спешки в первых поколениях ASIC было много неисправностей, некоторые из них не обладали заявленной производительностью или не поставлялись в срок, необходимый покупателю. Однако за последнее время ситуация значительно улучшилась.
Необходимо отметить, что оборудование устаревает в течение 6 месяцев. Часто в первые 6 недель зарабатывается половина прибыли, ожидаемой за все время существования оборудования для майнинга. Тот факт, что такая высокая доля прибыли приходится на первые 6 недель, означает, что придается большое значение скорости доставки. Если произошла задержка в доставке на 1 неделю, то покупатель потерял шестую часть самого прибыльного периода жизненного цикла ASIC. По мере повышения сложности майнинга, цена на оборудование будет падать.
Это объясняет, почему компании требуют совершения предзаказов. Существует большая конкуренция на то, чтобы получить ASIC первым. Также известно множество историй о том, как компании, производящие ASIC, пытались пару недель использовать их сами, перед тем как отправить покупателям.
Таким образом, ситуация на рынке все еще неблагосклонна к начинающим майнерам, которые желают сделать заказ онлайн на ASIC, чтобы начать зарабатывать деньги. Фактически, почти во всех случаях люди, разместившие заказы на оборудование для майнинга, должны были потерять деньги на основе произведенных в то время расчетов. За исключением одного момента, связанного с тем, что стоимость биткойна росла в течение большей части истории существования сети Биткойн. Растущие цены выручают майнеров, которые потеряли бы деньги в случае стабильных цен.
Исходя из вышесказанного покупка ASIC была дорогостоящим способом просто поставить на то, что стоимость биткойнов будет расти. И для большинства майнеров, даже несмотря на то, что они сделали деньги, занимаясь майнингом биткойнов, было бы куда выгоднее вложить те деньги, которые они инвестировали в оборудование для майнинга, в приобретение биткойнов, держать их, пока цены на них не поднимутся, и затем продать их.
Сейчас наступила эра профессионального майнинга. Во всем мире появляются профессиональные центры майнинга.
Для организации процессионального майнинг центра необходимы три составляющие:
Такие страны как Грузия и Исландия пользуются популярностью для создания майнинг-центров.
Если взглянуть на эволюцию майнинга в целом, можно заметить существующие параллели между майнингом биткойнов и добычей золота или с любым другим видом добычи. Но в особенности с добычей золота, так как появление майнинга привело к разновидности золотой лихорадки, когда в самом начале многие молодые любители хотели попасть в бизнес.
Мы рассмотрели эволюцию майнинга биткойнов от центрального процессора (ЦП) к графическому процессору, от графического процессора к программируемой пользователем вентильной матрице (ППВМ), от ППВМ к интегральной схеме специального назначения (ASIC), которая используется в настоящий момент. Эволюция золота происходила от отдельных людей с золотопромывочным ковшом к небольшой группе людей, оснащенных бочечно-шлюзовым прибором (ПБШ), а от неё к рассыпной золотодобыче, далее следует современная добыча золота, которая представляет собой извлечение из гигантских открытых карьеров сырья, которое измеряется тоннами.
И в обоих случаях добыча не была благосклонна к отдельным людям, пытающимся заниматься этим. С течением времени произошла консолидация с крупными компаниями, на которые приходится большая часть добычи.
Всегда ли отдельные майнеры будут вне игры? Есть ли способ вернуть их в игру? Противоречит ли это первоначальной идее системы Биткойн? Противоречит ли существование интегральных схем специального назначения и крупных майнинг центров исходному видению Сатоши Накомото о том, что каждый человек, который имеет доступ к сети, может заниматься майнингом на своем компьютере?
Те, кто считает, что это противоречит первоначальной идее, должны ответить на следующий вопрос. Возможно ли зарабатывать деньги, занимаясь майнингом без использования интегральных схем специального назначения (ASIC)?
Итак, в настоящее время крупные профессиональные центры по обработке данных занимают лидирующие позиции в сфере майнинга биткойнов. Как уже отмечалось ранее, поиск новых блоков требует сложных вычислений, и, как следствие, оборудование для майнинга потребляет большое количество энергии. Это вызывает жаркие дискуссии о влиянии системы Биткоин на экологию.
Рассмотрим, какое количество энергии потребляется системой Биткойн и что это может означать для валюты и для планеты в целом.
Существует принцип, разработанный Рольфом Ландауэром в 1960-х годах, который гласит, что на любое необратимое вычисление затрачивается минимальная энергия. Принцип выведен из основ физики. Не будем здесь рассматривать выводы, за исключением того, что при каждой обработке 1 бита в необратимом вычислении, существует минимальное количество Джоулей, которые необходимо использовать. Исходя из основных законов физики энергия никогда не разрушается, она преобразуется из одной формы в другую.
В случае вычисления энергия, в основном, преобразуется из электричества, которое является энергией высокого потенциала, в тепло, которое рассеивается в окружающей среде. Хэш-функция SHA-256, которая является основой системы Биткойн, не относится к обратимому вычислению. Следует отметить, что необратимость одна из основных особенностей SHA-256.
Итак, поскольку любое необратимое вычисление потребляет некоторый объем энергии , а SHA-256 является необратимой, то энергопотребление является неизбежным атрибутом майнинга биткойнов. Следует отметить, что ограничения, предусмотренные принципом Ландауэра, меньше, чем объем электроэнергии, который потребляется сегодня, более чем в 1000 раз. Таким образом, на текущий момент майнеры даже близко не подошли к теоретической оптимальной эффективности вычислений, но даже если бы теоретический оптимум был достигнут, для майнинга биткойнов по-прежнему использовался бы некоторый объем энергии.
Почему майнинг биткойнов не может обойтись без потребления энергии? Данный процесс состоит из 3 частей.
Во-первых, необходимо изготовить оборудование для майнинга. Для этого требуется извлечь из недр Земли элементы, в особенности редкоземельные металлы и медь, которые используются в производстве интегральных схем. Затем необходимо изготовить из этих материалов интегральную схему специального назначения (ASIC). Все это представляет собой энергетические затраты на производство и эксплуатацию. Едва только заказ ASIC был доставлен майнеру по почте, большой объем энергии уже был потреблен, включая энергию, затраченную на доставку. То есть энергия была потрачена только на то, чтобы майнер получил оборудование.
Затем майнер подключит оборудование к сети и начнет майнить. Энергия будет потребляться всё время, которое оборудование майнит биткоины - этот объем и будет составлять электроэнергию, потребляемую во время майнинга.
И несмотря ни на что эта энергия должна быть потреблена согласно принципу Ландауэра. Будем надеяться на то, что со временем энергетические затраты на производство и эксплуатацию будут снижаться по мере появления новых мощностей в сети. Меньше людей будут тратиться на новые ASIC, так как они будут устаревать медленнее. Существующая совокупность оборудования может просуществовать долго. Энергетические затраты на производство и эксплуатацию с годами будут амортизироваться.
Однако энергопотребление будет всегда, даже, несмотря на то, что оно немного снизится, вследствие повышения эффективности установки со временем.
Другой факт касательно как электроэнергии, так и энергетических затрат на производство и эксплуатацию, заключается в том, что они, вероятно, снизятся, вследствие экономии от масштаба. Управляя огромным центром обработки данных для майнинга, можно использовать энергию более эффективно. Однако существует нюанс, который заключается в охлаждении оборудования в целях предупреждения неисправностей. Если майнинг-центр находится в Антарктиде, то, возможно, оборудование охлаждается естественным путем, однако в любом другом месте придется выложить огромную сумму за электричество, чтобы охладить оборудование. При этом стоимость электричества увеличивается по мере роста масштаба. Существуют два основных подхода к оценке энергопотребления всей системы Биткойн. Конечно, они не дают точную оценку, так как система Биткоин децентрализована – в ней участвуют майнеры по всему миру и их деятельность не документируется. Тем не менее, можно вычислить приблизительную цифру.
Рассмотрим первый способ. Вознаграждение за создание каждого блока, которое происходит каждые 10 минут, составляет около 15 000 долларов США или 25 биткойнов. Если пересчитать это как доход в секунду, получится 25 долларов США в секунду, которые были добыты и получены майнинг-сообществом. Если майнеры все 25 долларов США в секунду обменяют на электроэнергию, сколько они могут получить? В США цены на электроэнергию варьируются от штата к штату, допустим, цена за киловатт-час составит примерно 0,10 доллара США. Перейдем к более стандартной научной единице измерения – мегаджоуль.
Таким образом, если майнеры все свое вознаграждение в 25 долларов США в секунду потратят на приобретение электроэнергии, то они должны будут получать 900 мегаджоулей в секунду. Джоуль в секунду – это ватт. Поэтому 900 мегаджоулей в секунду составляет 900 мегаватт или 900 миллионов ватт.
Второй способ оценить тот же показатель – это применить принцип восходящего анализа. Выясним, сколько хэшей вычисляются майнерами, просмотрев сложность каждого блока. И что собой представляет самое лучшее оборудование, которое могут использовать майнеры? Если изучить характеристики оборудования для майнинга, то можно обнаружить, что установки с самой высокой производительностью способны 1 ватт электроэнергии преобразовать в 1 гигахэш, т.е. с помощью данного оборудования вычисляется 1 миллиард хэшей в секунду и потребляется около 1 ватта энергии. Общая производительность системы составляет около 150 миллионов гигахэшей или 150 петагерцев.
Конечно же, данное число включает в себя весь объем потребленной на охлаждение энергии и энергетических затрат на производство и эксплуатацию, которые включены в стоимость чипов, но здесь рассматривается наиболее оптимальный расчет. Допустим ситуацию, при которой вся сеть обладала бы производительностью, сравнимую с той, что имеют лучшие установки на рынке. Тогда можно умножить эти два показателя вместе, и получить, что потребляется около 150 мегаватт на вычисление того огромного количества хэшей в секунду при такой производительности.
Итак, вернемся к цифре, полученной с помощью нисходящего принципа, которую мы оценили в 900 мегаватт, а, используя принцип восходящего анализа, значение установилось на уровне 150 мегаватт.
Таким образом, всей сетью, возможно, потребляется от 100 мегаватт до 1 гигаватта электроэнергии.
В действительности, значение показателя устанавливается где-то посередине, однако следует отметить, что эта приблизительная оценка достаточно полезна, чтобы задуматься об этом прямо сейчас.
Так сколько же это – мегаватт?
Одна из крупнейших электростанций в мире "Три ущелья", которая находится в Китае – это электростанция мощностью 10000 мегаватт. На самом деле ее мощность немного выше, а это средний уровень мощности, который генерируется станцией. В то время как среднестатистическая крупная гидроэлектростанция генерирует около 1000 мегаватт. Крупнейшая атомная электростанция в Японии, к примеру, генерирует около 7000 мегаватт, тогда как среднестатистическая атомная электростанция – около 4000 мегаватт. Угольные электростанции, использовавшиеся в прошлом, генерировали от 1000 до 2000 мегаватт.
Итак, приблизительная оценка, показала, что Биткойн потребляет меньше 1000 мегаватт. Следовательно, все система Биткойн потребляет меньше электроэнергии, чем генерируется на крупной электростанции.
Это значит, что одна крупная электростанция должна работать только на то, чтобы снабжать систему Биткойн энергией, лишая энергии другие направления, которые в ней нуждаются. Следует отметить и то, что любая платежная система требует потребления энергии и электричества. Если взять в качестве примера традиционную валюту, большой объем энергии потребляется на перемещение золотых слитков, охрану золотых слитков, функционирование банкоматов, автоматов для сортировки монет, контрольно-кассовых аппаратов, инкассирование. На все это традиционная денежная система потребляет энергию.
Есть мнение, что Биткойн расходует энергию напрасно, так как эта энергия расходуется на вычисление SHA-256, которое не служит какой-либо очевидной цели. Но можно заметить, что энергия, потребляемая традиционной валютной системой, тоже расходуется впустую, и она не служит никакой другой цели, кроме поддержания валютной системы.
Если Биткойн потребляет электроэнергию, то это не обязательно означает, что она тратится впустую. Если Биткойн – это полезная платежная система, в таком случае электричество в основном потребляется для этой цели.
Тем не менее следует задумываться, существует ли лучший способ использовать электроэнергию, а не просто наблюдать за тем, как рассеивается тепло в атмосферу?
Есть одна довольно интересная идея. Что если попытаться сохранить тепло, выделяемое при потреблении электроэнергии для майнинга биткойнов, и использовать его для практических целей? Что если вместо традиционных электрических обогревателей для обогрева дома или нагрева воды приобрести оборудование для майнинга биткойнов, подключить его к электросети и обеспечить доступом в Интернет?
В этом случае обогреватель в виде оборудования для майнинга будет применяться для майнинга и, в то же время, использовать выделяемое им тепло в качестве побочного продукта этого вычисления для нагрева воды, обогрева дома.
Эффективность данной установки не намного хуже, чем электрообогревателя. Так что это отличная идея, и, возможно, многообещающая перспектива, заслуживающая рассмотрения в будущем. Однако существует несколько проблем. Например, электрообогреватели все еще менее эффективны, чем газовые. Поэтому в географических областях с суровым климатом дома, как правило, обогреваются с помощью газового котла. Если использовать оборудование для майнинга не только для майнинга, но и для обогрева, что произойдет, если все выключат свои установки для майнинга биткойнов на лето? Будет ли пропускная способность системы Биткойн падать сезонно, исходя из того, сколько тепла необходимо людям? Будет ли это происходить в дни, когда температура будет устанавливаться на уровне выше среднего?
Итак, пара открытых вопросов, связанных с энергопотреблением Биткойн. Означает ли тот факт, что Биткойн обеспечивает такой хорошей возможностью преобразовать электроэнергию в деньги, что странам, которые предоставляют субсидии на электричество, придется переосмыслить этот процесс. Сейчас во многих странах мира правительство практически субсидирует затраты на электроэнергию, особенно электроэнергию, используемую в промышленности. Одна из причин- попытка стимулирования индустрии оставаться в их стране, а не в других. Если одна из главных составляющих успеха биткойн-майнеров – это дешевая электроэнергия, то можно майнить где угодно.
И еще один вопрос. Если электроэнергию можно трансформировать в биткоины, означает ли это что следует охранять розетки? Необходимо ли крупным зданиям с множеством розеток устанавливать камеры наблюдения, чтобы убедиться, что сотрудники или студенты не пытаются майнить биткойны, подключая оборудование к источникам питания и просто позволяя ему работать?
Стало бы человечество богаче, если бы не потребляло такой объем электроэнергии на поддержание системы Биткоин? Можно ли создать валюту, которая не имела бы доказательства выполнения работы и не потребляла бы такой объем электроэнергии? Эта тема будет затронута в следующих лекциях.
Прежде, чем говорить о пулах майнинга, рассмотрим деятельность отдельного майнера с экономической точки зрения. Допустим, майнер тратит 6000 долларов США на приобретение хорошего нового оборудования для майнинга. После приобретения он надеется на то, что создаст блок через 14 месяцев с помощью данного оборудования. По сегодняшним ценам один созданный блок стоит около 15000 долларов США. Значит, что ожидаемый доход данного оборудования составит около 1000 долларов США в месяц. Возможна такая ситуация, что затраты на электроэнергию и на эксплуатацию оборудования составят 1000 долларов в месяц – тогда не стоило покупать оборудование за 6000 долларов. Но необходимо помнить, что майнинг – это случайный процесс. Майнер никогда не знает, когда сможет создать новый блок, - он может создать его в любое время. Если посмотреть на распределение количества блоков, которые, вероятно, можно создать за первый год с помощью оборудования с мощностью около 1 терахэш, то можно увидеть, что дисперсия довольно высока, то есть ожидаемое количество блоков, невелико. Если просто взглянуть на распределение Пуассона, то можно увидеть, что вероятность того, что в первый год не получится найти ни одного блока составляет более 40%.
(рис 5.6) Неопределенность майнинга
Другими словами, на оборудовании за 6000 долларов, потребляющем большой объем энергии, за целый год можно ничего не заработать.
Вероятность того, что за первый год удастся создать один блок , составляет 36%. Еще чуть меньше вероятность того, что получится создать два или более блоков – только в этом случае можно говорить о прибыли от использования этого оборудования.
Все вышесказанное означает, что для отдельного майнера майнинг – это, по сути, большая игра в рулетку.
Как показывает время, когда деятельность малого бизнеса стала связана с большим риском, в поисках путей снижения риска компании объединились и образовали компании взаимного страхования. Таким образом, фермеры объединились и согласились с тем, что если дело одного из фермеров прогорит, то остальные обязуются разделить прибыль с ним, чтобы фермер не обанкротился. Если применить модель взаимного страхования к отдельным биткоин-майнерам, то получится пул совместного майнинга. Майнеры в пуле пытаются создать блок, а новообразованные биткоины отправляются администратору пула, то есть в качестве адреса в "coinbase" указывается его адрес. Управление вознаграждением осуществляется администратором пула. Он распределяет вознаграждение по всем участникам пула пропорционально вкладу каждого участника.
Администратор пула в большинстве случаев взымает определенную плату за управление пулом. Использование пула позволяет снизить дисперсию. Но как администратор пула узнает, какой вклад делает каждый из участников?
Очевидно, администратору нельзя полагаться на "честное слово" участников, так как каждому из них выгодно преувеличивать свой вклад. Существует механизм, с помощью которого майнеры могут вероятностно доказать, какой вклад они вносят, отправляя шары. Шары – это блоки, которые недостаточно хороши, чтобы считаться достоверными. Тогда как довольно редко можно создать действительно достоверный блок, выходной хэш которого начинается с 66 требуемых нулей. Будет попадаться гораздо больше недостаточно хороших блоков, которые начинаются с множества нулей, но не с 66, что необходимо, чтобы блок считался достоверным.
Таким образом, общий размер может быть, например, 40 бит или, возможно, 50 бит зависимости от того, для какого размера образован пул.
Теперь, если майнеры-участники пула отправляют множество почти достоверных блоков, то скорость, с какой и создаются эти почти достоверные блоки, предоставит администратору пула объективную статистическую картину, которая будет отражать вклад каждого участника. Еще одна приятная особенность состоит в том, что не существует способа подделать их. Исходя из свойств хэш-функции, невозможно создать почти достоверные блоки без поиска достоверных блоков на ожидаемой скорости.
Каждый раз после обнаружения предыдущего блока администратор пула, который получает транзакции и собирает блок, сообщает всем участникам о следующем блоке, над которым все будут работать. Они составят дерево транзакций Меркла, которое будет включено в этот блок. И, в частности, они обязательно укажут первой транзакцией в блоке комиссионную транзакцию, которая создает новые монеты и присваивает право собственности на них пулу.
Затем заголовок блока, над которым участникам нужно будет работать, будет отправлен всем участникам пула. И они должны представить доказательства того, что они работали над этим, отправив шары, подтверждающие выполнение работы над этим блоком.
Все майнеры приступают к работе. И все они будут медленно находить почти достоверные блоки или шары до тех пор, пока один из майнеров пула не создаст достоверный блок, который затем будет опубликован.
После того, как это произойдет, все участники пула отправят администратору пула все шары, которые они вычислили. Затем администратор пула распределяет всю сумму вознаграждения, полученную за опубликованный блок, между всеми участниками пула пропорционально вкладу каждого участника.
Обратите внимание на то, что тот майнер, который действительно создал достоверный блок, получает меньше вознаграждения, чем тот, который, в конечном счете, не создал ни одного достоверного блока, но вычислил множество шар.
Таким образом, майнер, создавший достоверный блок, не обладает никаким преимуществом.
Им было бы выгоднее, если бы они занимались майнингом отдельно, так как в этом случае они получали бы весь объем вознаграждения за созданный блок. Но, безусловно, те майнеры, которым не удалось создать достоверный блок, рады быть в составе пула, так как они ничего бы не заработали, если бы занимались майнингом отдельно.
Существует множество видов начисления вознаграждений на основе отправленных шар. Рассмотрим вид начисления вознаграждений PPS, при котором администратор пула сообщает, что за каждую шару выше определенной сложности, которая будет ему отправлена при создании блока, будет установлена фиксированная сумма вознаграждения.
В некоторой степени это самое лучшее решение для майнеров, так как присутствует гарантия. Каждый раз после нахождения шары, майнер будет получать фиксированную сумму вознаграждения. В таком случае весь риск ложится на администратора пула. Как правило, при PPS майнеры платят самые высокие операционные сборы администратору пула.
Другой вид начисления вознаграждений – пропорциональный, при котором вместо оплаты фиксированной суммы вознаграждения за каждую шару награда за шару зависит от того, был ли создан достоверный блок или нет. Таким образом, каждый раз при нахождении достоверного блока, вознаграждение за этот блок будет распределяться между всеми участниками пула пропорционально их вкладу. В этом случае майнеры берут на себя определенный риск пропорционально риску пула в целом.
Таким образом, если пул достаточно крупный, то дисперсия распределения найденных достоверных блоков будет достаточно низкой. Пропорциональный вид начисления награждений может быть хорошим решением. И это снизит риск, лежащий на администраторе пула. На данный вид также не распространяется проблема присущая виду PPS, которая заключается в том, что при оплате за шару у майнеров нет мотивации на то, чтобы отправлять достоверные блоки. У них нет мотивации, но у них есть возможность при нахождении достоверного блока сохранить это в тайне.
Отсутствие мотивации на отправку достоверных блоков вызвано тем, что они в любом случае получат фиксированную сумму вознаграждения за шару. Тогда как при использовании пропорционального вида начисления наград майнеры, безусловно, хотят отправить достоверные блоки, так как это приводит к возвращению им вознаграждения.
И последний вид начисления вознаграждения, который был популярен некоторое время, заключается в том, что администратор не собирает операционные сборы, однако майнеры не могут получить какое-либо вознаграждение до тех пор, пока их баланс не превысит 1 биткойн. Это означает, что новые участники пула некоторое время не смогут зарабатывать. А затем они будут равномерно получать вознаграждение без каких-либо операционных сборов администратору пула.
Участие в пулах с таким видом вознаграждения выгодно, но туда всё сложнее попасть. Пулы достаточно сильно продвинулись в своем развитии. Существует несколько протоколов, чтобы запустить пулы майнинга. Существует мнение, что данные протоколы следует стандартизировать как часть системы Биткойн.
Протоколы для запуска пулов майнинга схожи с протоколами системы Биткойн, которые используются для функционирования одноранговой сети, и представляют собой интерфейс прикладного программирования (API), который используется для осуществления коммуникаций между администратором пула и всеми членами пула. Они позволяют администратору пула сообщать о том, когда необходимо начинать работу над новым блоком, какой блок следует искать, и чтобы майнеры могли отправить администратору пула найденные шары. Некоторые аппаратные устройства для майнинга поддерживают эти протоколы на уровне аппаратного обеспечения.
Достаточно купить такое оборудование для майнинга, подключить к электросети, установить сетевое соединение, выбрать пул. После этого оборудование сразу начнет получать инструкции от пула и майнить. Майнинг-пулы впервые были образованы примерно в 2010 году, в период популярности видеокарт для майнинга, то есть несколько поколений назад. Они быстро завоевали популярность, так как снижали дисперсию распределения созданных блоков для майнеров-участников пула.
Таким образом, к 2014 году подавляющее большинство всех майнеров стали участниками пулов совместного майнинга. Мало кто сейчас занимается майнингом отдельно, не вступая в пулы. В июне 2014 года произошло интересное событие - самый крупный пул GHash.io настолько увеличился, что на него стало приходиться 50% мощности всей системы Биткойн. Это то, чего сообщество Биткоин долгое время боялось, однако, по существу, GHash предлагал такие хорошие условия всем майнерам, вступившим в пул, что все захотели присоединиться. В последствии пул GHash немного уменьшился, так как они сделали свои операционные сборы менее привлекательными, чтобы попытаться снизить количество майнеров пула. Примерно половина мощности сети Биткоин контролируется, в основном, 2 пулами совместного майнинга. Остальная часть приходится на небольшое число других пулов майнинга.
Преимуществом пула майнинга является то, что он делает майнинг более предсказуемым для участников пула. И облегчает процесс вовлечения небольших по мощности майнеров в игру. Дисперсия распределения созданных блоков сделала бы невозможным майнинг по экономическим причинам без существования майнинг-пулов, участвуя в котором, можно на гораздо меньшем по мощности оборудовании зарабатывать деньги.
Еще одно преимущество майнинг-пула состоит в том, что существует один главный администратор пула, который подключен к сети и собирает блоки. Фактически это упрощает обновление сети, так как, при обновлении программного обеспечения администратора майнинг-пула, эффективно обновляется и программное обеспечение всех участников пула.
Безусловным недостатком майнинг-пулов является то, что они ведут к централизации. И остается нерешенным вопрос, какой властью на самом деле обладают управляющий элемент майнинг-пула. Конечно, теоретически майнеры вправе свободно переходить из пула в пул столько, сколько им захочется. Если майнер получает прибыль в одном пуле, он вероятнее всего будет получать столько же и в другом пуле, так как вознаграждение, которое они выплачивают, схожи. Сегодня все они предлагают примерно одно и то же. Но на практике майнеры нечасто меняют пулы просто потому, что им лень, им легче продолжать сотрудничать с пулом, в который они уже вступили.
Еще одним недостатком пулов совместного майнинга является то, что они способствуют снижению количества полных нод. Раньше отдельным майнерам приходилось запускать свою собственную полную ноду. Им всем приходилось хранить полную версию цепочки блоков и верифицировать каждую транзакцию. Сейчас большинство майнеров перекладывают эту задачу на администратора пула.
Ранее было сказано о том, что основными задачами майнера являются обеспечение себя высокопроизводительным оборудованием, дешевой электроэнергией, высокой скоростью вычислений и надежда на удачу.
Но, оказывается, существуют некоторые интересные стратегические решения, которые майнер должен применить до того, как выбрать, над каким блоком работать.
В частности, майнерам приходится выбирать, какие транзакции они хотят включить в блок. Стратегия по умолчанию заключается в том, чтобы включить любую транзакцию, которая включает в себя более высокую, чем минимальная сумма транзакции.
Майнерам приходится решать, на основе какого блока они будут продолжать цепочку. В данном случае стратегия по умолчанию заключается в выборе самой длинной действительной цепочки, которая была объявлена. Но если 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 года вдвое. Поэтому удельный вес транзакционных сборов растет. В итоге настанет время, когда комиссии за транзакции будут превалировать над фиксированным вознаграждением за майнинг и станут основным доходом майнеров.
В целом майнеры могут прибегнуть к любой стратегии . Несмотря на это, на практике известно очень мало примеров применения стратегии, которая отличалась бы от базовой. Необходимо подчеркнуть, что не существует модели поведения майнеров, которая утверждала бы, что стратегия по умолчанию оптимальна. Тем не менее большинство майнеров придерживается стратегии по умолчанию, и система Биткоин функционирует исправно. Но ситуация меняется вслед увеличением пропускной способности сети, повышением навыков майнеров, большей централизации и профессионализации майнеров. Но даже вне этих тенденций система должна меняться в долгосрочной перспективе под влиянием перехода от фиксированного вознаграждения за майнинг к комиссиям за транзакции.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.