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

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

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

Аппаратное обеспечение майнинга

Биткоин использует хэш-функцию 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.

Углубленная схема SHA-256

Рис. 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 была дорогостоящим способом просто поставить на то, что стоимость биткойнов будет расти. И для большинства майнеров, даже несмотря на то, что они сделали деньги, занимаясь майнингом биткойнов, было бы куда выгоднее вложить те деньги, которые они инвестировали в оборудование для майнинга, в приобретение биткойнов, держать их, пока цены на них не поднимутся, и затем продать их.

Сейчас наступила эра профессионального майнинга. Во всем мире появляются профессиональные центры майнинга.

Для организации процессионального майнинг центра необходимы три составляющие:

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

Такие страны как Грузия и Исландия пользуются популярностью для создания майнинг-центров.

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

Мы рассмотрели эволюцию майнинга биткойнов от центрального процессора (ЦП) к графическому процессору, от графического процессора к программируемой пользователем вентильной матрице (ППВМ), от ППВМ к интегральной схеме специального назначения (ASIC), которая используется в настоящий момент. Эволюция золота происходила от отдельных людей с золотопромывочным ковшом к небольшой группе людей, оснащенных бочечно-шлюзовым прибором (ПБШ), а от неё к рассыпной золотодобыче, далее следует современная добыча золота, которая представляет собой извлечение из гигантских открытых карьеров сырья, которое измеряется тоннами.

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

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

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

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