Bitcoin: нельзя так просто взять и намайнить

Bitcoin

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

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

Немного о генерации биткоинов

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

В традиционных денежных системах в течение долгого времени использовался так называемый золотой стандарт, гарантировавший, что выпущенная каждая денежная единица может по первому требованию обмениваться на соответствующее количество золота. В криптовалютах существует своеобразный аналог золотого стандарта, называемый «доказательством работы» (proof of work): «выпуск» каждой денежной единицы осуществляется в случае решения криптографической задачи. Задача эта заключается в вычислении значения функции. Со временем уровень сложности этой задачи растет.

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

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

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

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

Описание

Для тестирования были отобраны серверы со следующими характеристиками процессоров (такие показатели, как объем памяти и размер жесткого диска, на процесс генерации биткоинов совершенно не влияют, поэтому мы их не указываем; по этой же причине не учитывали мы и использование технологии HyperThreading; для большей наглядности мощность ядер всех указанных в списке процессоров суммируется):

  • Intel Atom D525 2 ядра по 1.8 ГГц = 3.6 ГГц
  • Intel Core i3 2120 2 ядра по 3.30 ГГц = 6.60 ГГц
  • Intel Core2Duo E8400 2 ядра по 3.0 ГГц = 6.00 ГГц
  • Intel Core2Quad Q8300 4 ядра 2.5 ГГц = 10.0 ГГц
  • 2 x Intel Xeon 5130 2 ядра 2.0 ГГц = 8.0 ГГц
  • Intel Xeon E3-1230 4 ядра по 3.20 ГГц = 12.8 ГГц
  • Intel Xeon E3-1270 4 ядра 3.5 ГГц = 14.0 ГГц
  • 2 x Intel Xeon E5504 4 ядра 2.0 ГГц = 16.0 ГГц
  • 2 x Intel Xeon E5620 4 ядра 2.4 ГГц = 19.2 ГГц
  • 2 x Intel Xeon L5630 4 ядра 2.13 ГГц = 17.04 ГГц
  • 2 x Intel Xeon E5-2603 4 ядра 1.8 ГГц = 14.4 ГГц
  • 2 x Intel Xeon E5-2620 6 ядер 2.0 ГГц = 24 ГГц
  • 2 x Intel Xeon E5-2630 6 ядер 2.30 ГГц = 27.6 ГГц

Вскоре после запуска теста процессор Atom неожиданно перестал отвечать на запросы к API, даже не достигнув текущего уровня сложности. Поэтому мы решили исключить его из дальнейшего тестирования (уровень сложности на этот момент составил 37392766.1364745; чтобы его достигнуть, процессору потребовалось чуть более суток).

Остальные процессоры достигли необходимого уровня сложности, который на момент тестирования составил 609482679.88835. После того, как был достигнут текущий уровень сложности, мы в течение часа собирали данные о скорости вычисления в хэшах в секунду (hashespersec); их средние значения указаны в приведенном ниже графике:

Bitcoin

Выводы

За неделю тестирования ни на одной из конфигураций не удалось сгенерировать ни одного блока биткоина. Использовать даже самый мощный сервер для майнинга только на процессоре совершенно бесполезно. Еще совсем недавно можно было генерировать биткоины при помощи нескольких мощных видеокарт. В последнее время стали популярны ASIC USB Block Erupter — специализированные вычислительные устройства для майнинга, о которых уже не раз писали на Хабре — см., например, здесь, но и они не гарантируют быстрого успеха.

На данный момент в связи с возрастанием сложности практически нереально получить блок, не обладая гигантскими вычислительными мощностями. Конечно, можно подключиться к пулу — но ждать все равно придется долго. Можно еще генерировать альтернативные криптовалюты (Litecoin, Namecoin, PPCoin и т.п.), а затем уже конвертировать в биткоины — но здесь тоже нет никаких гарантий успеха.

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