Аппаратура для майнинга. Подробней о SHA-256. CPU и GPU -майнинг
Аппаратура для майнинга. Мы уже говорили, что вычисления, производимые майнерами, очень сложны. В этом разделе мы поговорим о том, почему так происходит, и познакомимся с аппаратурой, которая упрощает эти вычисления.
Что же именно с такой сложностью вычисляют майнеры? Они вычисляют огромные количества SHA-256 хэшей. Мы говорили о хэш-функциях и упоминали в частности и SHA- 256 - это криптографическая хэш-функция общего назначения, входящая в большую группу функций, стандартизированных в 2001. SHA-256 - хороший выбор, так как была самой сильной функцией на момент создания биткоина.
Возможно, со временем она станет менее безопасной, но пока с ней всё в порядке. Её выпустило Агентство Национальной Безопасности США, что породило несколько теорий заговора, но в целом она считается крайне надёжной.
Примечание. Хотя функция и считается криптографически безопасной, ей уже подобрали замену — группу SHA-3. Она проходит последние этапы стандартизации, но на заре биткоина была недоступна.
Подробней о SHA-256. На рис. 5.5 расчёты по SHA-256 показаны более подробно. Хотя нам и не нужно знать всех деталей для понимания работы биткоина, мы дадим общий обзор этой темы, чтобы вы в целом понимали суть решаемых майнерами задач. SHA-256 обрабатывает 256 битов состояния. Состояние разбивается на восемь 32-битных слов, что отлично подходит для 32-битного оборудования, и в каждом раунде зацепляются биты, применяемые к этим словам. Затем берутся несколько слов состояния — некоторые с зацепкам, и добавляются в mod32. В результате все эти добавления переводятся к первому слову состояния и всё состояние сдвигается.
Рис. 5.5: Структура SHA-256. Это один раунд функции сжатия
На рис. 5.5 показан лишь один раунд функции сжатия SHA-256 — а всё вычисление происходит в течение 80 итераций. В каждом раунде используются слегка отличные константы, так что двух одинаковых итераций не бывает.
Задача майнеров — вычислить эту функцию. Для этого им приходится иметь дело с 32битными словам, выполнять модулярное дополнение в 32 бита, а также применять разрядную логику. И не забывать, что они соревнуются с другими майнерами в скорости.
Как мы вскоре увидим, биткоин требует двукратного выполнения SHA-256 на блоке, чтобы получить хэш, используемый узлами. Это особенность биткоина, и причина двойного применения нигде не прописана и кажется необязательной — но майнерам приходится с этим считаться.
CPU-майнинг. Изначально майнинг выполнялся на обычных компьютерах — то есть с помощью обычных процессоров (CPU). Такой майнинг был не сложнее, чем запуск кода на рис. 5.6. Таким образом майнеры просто искали выборки линейным образом, вычисляли SHA-256 программно и проверяли валидность итогового блока. Также обратите внимание, что код выполняется дважды.
Рис. 5.6: Псевдокод CPU-майнинга
Как быстро это работало на домашнем компьютере? На хорошем РС можно вычислять около 20 миллионов хэшей в секунду — при такой скорости вам понадобилось бы более ста тысяч лет на поиск блока при сложности на начало 2015 года. Мы говорили о том, как сложен майнинг, и если сегодня вы пользуетесь обычным компьютером, вам предстоит прорва работы, поскольку на поиск блока вам понадобится около 300 000 лет. CPU-майнинг более не выгоден при нынешнем уровне сложности. В последние годы те, кто пытается майнить дома, вероятно, просто не понимают принципы работы биткоина, и, скорее всего, огорчаются, не получая ожидаемой прибыли.
GPU-майнинг. Второй этап майнинга начался, когда люди возмутились медлительностью домашних компьютеров и стали пользоваться графической картой (GPU). Она есть почти в каждом компьютере и обрабатывает сложные графические данные. Такие карты рассчитаны на высокую производительность и имеют высокую параллельность — оба этих свойства важны для майнинга. Майнинг можно запараллелить, так как можно вычислять несколько хэшей одновременно по разным выборкам. В 2010 выпустили язык OpenCL - язык общего назначения для того, чтобы делать с графическими картами и другие вещи.
Это высокоуровневый язык, но со временем люди выучились менять код ещё сильнее, чтобы процессы на GPU шли быстрее. Это и проторило дорогу для GPU-майнинга.
У графического майнинга есть хорошие свойства. Во-первых, карты доступны, а установить их может даже непрофессионал. Их можно заказать в интернете или купить в любом магазине электроники. Они рассчитаны на параллельность, так что в них много арифметических логических устройств для выполнения нескольких вычислений SHA-256, а некоторые даже имеют специальные инструкции для разрядных операций, которые отлично подходят SHA-256. Также они могут по несколько подключаться к одной материнской плате и процессору — так что на одном компьютере их может быть много.
Большинство графических карт можно к тому же разогнать — это свойство необходимо геймерам, чтобы играть в игры, чьи системные требования превышают номинальные параметры карты — если они готовы пойти на риск.
В случае майнинга можно гонять чип быстрее, чем он должен работать, даже если вы допустите несколько ошибок в процессе. Скажем, вы увеличиваете нагрузку на 50% сверх нормы, но этим увеличиваете ошибку в расчётах SHA-256 на 30% времени. Если карта выдаёт неверное решение — а это бывает редко, его всегда можно перепроверить на процессоре.
С другой стороны, если верное решение по ошибке пропущено, вы об этом никогда не узнаете. Но если разгон и приводит к росту числа ошибок, в итоге вы всё равно в выигрыше — есть понятие «полезной пропускной способности», которая это измеряет. Она является произведением пропускной способности и успешности. В предыдущем примере пропускная способность в 1,5 раза выше по сравнению с неразогнанной, а успешность составляет 0,7 — их произведение равно 1,05, что говорит об увеличении полезной способности на 5% с помощью разгона.
Люди долгое время оптимизировали методы разгона конкретного чипа под конкретные ошибки. Как мы уже говорили, можно подключить несколько GPU к одному CPU, поэтому люди стали устанавливать для майнинга много графических карт, благодаря чему появились интересные домашние системы (см. рис. 5.7). Это также было ещё на заре биткоина, когда майнинг был хобби, а об управлении дата-центрами майнинга никто и не думал. Тем не менее, на свет появлялись великолепные схемы совмещения нескольких карт и их успешного охлаждения.
Рис. 5.7: Домашняя стойка GPU для майнинга биткоинов. Также видны вентиляторы для охлаждения системы. Источник: LeonardH, cryptocurrenciestalk.com
Недостатки GPU-майнинга. У GPU-майнинга есть свои недостатки. В картах полно устройств, которыми майнеры не пользуются — например, устройства плавающей точки, которые для SHA-256 не нужны вовсе. Также у GPU не лучшие параметры охлаждения, если их подключать по несколько. Они не рассчитаны на то, чтобы подключаться рядом, как это сделано на фото, а должны помещаться по одной в отсек. Также графические карты потребляют много электроэнергии.
Кроме того, раньше нужно было собирать или собственную плату, либо покупать очень дорогие платы для нескольких графических карт.
На самых хороших картах можно было выжать до 200 МХ/с, что гораздо лучше, чем у CPU, но даже с такой повышенной производительностью и огромным количеством карт, для того, чтобы найти блок в начале 2015 года, вам бы потребовалось более 300 лет. Из-за этого сейчас GPU-майнинг практически не используется.
Дата добавления: 2023-05-18; просмотров: 555;