Майнинг в ручную. SHA-256, ручка и бумага

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

Один криптографический раунд
Расчет одного раунда SHA-256 занял у меня 16 минут, 45 секунд. С такой производительностью хэширование всего биткойн-блока (128 раундов) займёт 1,49 суток, то есть получаем скорость хэширования в 0,67 хэшей в день (на самом деле, конечно же, с практикой процесс бы ускорился). Для сравнения, текущее поколение биткойн-майнеров производит несколько терахэшей в секунду, что примерно в квинтиллион раз быстрее меня. Думаю, очевидно, что ручной майнинг биткойнов не очень практичен.
Читатель с reddit’a спросил о моих затратах энергии. Так как я не прилагаю каких-то серьезных физических усилий, то можно предположить что скорость метаболизма будет 1500 килокалорий в день, тогда получаем, что ручное хэширование требует почти 10 мегаджоулей за хэш. Типичное потребление энергии для железного майнера — 1000 магехэшей за джоуль. Таким образом, я менее энергоэффективен чем специализированная железка в 10^16 раз (10 квадриллионов). Другой вопрос в стоимости энергии. Дешевым источником питания являются пончики по 23 цента за 200 килокалорий. Электроэнергия у меня стоит 15 центов за киловатт-час, что дешевле пончиков в 6.7 раз. В итоге, стоимость энергии в пересчете на хэш для меня, как человека-майнера, в 67 квадриллионов раз выше. Да-а-а, понятно, что я не ухвачу удачу за хвост ручным майнингом биткойнов, и это еще не учитывая стоимость бумаги и ручек!
Пост носит развлекательный характер
полную статью можно прочесть тут — https://habrahabr.ru/post/258181/
6 лет назад voltash
Майнеры SHA-256

Алгоритм SHA 256, позволяющий осуществлять добычу криптовалют, основанных на блокчейнах первого поколения, крайне популярен у производителей майнинг-оборудования. Но, решив использовать SHA-256, забудьте об асиках с низкими мощностями и видеокартах – их применение будет невозможно.
Ниже мы рассмотрим лучшие асики SHA 256, что майнить SHA 256, основные характеристики моделей, а также их основные плюсы и минусы. А для оценки окупаемости того или другого майнера мы рекомендуем ознакомиться с данными, которые предоставляют пулы для майнинга.
Топ 5 майнеров SHA-256
Antminer S19 XP Hyd
Монета: BTC, BCH, BSV
Хешрейт: 250 ± 3% Th/s
Энергопотребление: 5200 ± 5% Вт
Энергоэффективность: 20,8 ± 5% J/Th
Габариты и вес: 20,9 x 17 x 41 см, 13,1 кг
Диапазон температур: 0-45°C
Охлаждение: гидроохлаждение
Уровень шума: 50 децибел
Плюсы:
- Майнинг SHA 256 обещает высокую рентабельность и быструю окупаемость
- Повышение мощности на 25% по сравнению с моделью предшественником
- Водяное охлаждение
Минусы:
- Дороговизна
- Возможно возникновение потребности в дополнительных устройствах и в центральной системе охлаждения
Antminer S19 XP
Монета: BTC, BCH, BSV
Хешрейт: 141 ± 3% Th/s
Энергопотребление: 3031,5 ± 5% Вт
Энергоэффективность: 21,5 ± 5% J/Th
Габариты и вес: 19,55 x 29 x 40 см, 14,4 кг
Охлаждение: 4 кулера
Диапазон температур: 5-40°C
Уровень шума: 75 децибел
Плюсы:
- Добыча 39 видов монет
- Возможно использовать облачный майнинг для аренды майнера
- Хорошее соотношение цена/производительность
Минусы:
- Не самая новая модель
- Могут возникать проблемы с прибыльностью
Avalon Miner A1366
Монета: BTC
Хешрейт: 130 ± 3% Th/s
Энергопотребление: 3250 ± 5% Вт
Энергоэффективность: 25 ± 5% J/Th
Габариты и вес: 27,1 x 19,2 x 29,2 см, 13 кг
Охлаждение: 2 кулера
Диапазон температур: 5-45°C
Уровень шума: 75 децибел
Плюсы:
- Сниженное электропотребление
- Простая установка
Минусы:
- Относительно высокая цена
- Ограниченное наличие в свободной продаже
Whatsminer M50S
Монета: BTC, BCH, BSV
Хешрейт: 126 ± 5% Th/s
Энергопотребление: 3276 ± 10% Вт
Энергоэффективность: 26 ± 5% J/Th
Габариты и вес: 22,6 x 15,5 x 43 см, 11.7 кг
Охлаждение: 2 кулера
Диапазон температур: 5-35°C
Уровень шума: 80 децибел
Плюсы:
- Возможна перепрошивка
- Не требует трудозатратного обслуживания
Минусы:
- Стоимость часто не включает в себя кабели
- Майнеры SHA 256 отмечали повышенный шум
Whatsminer M50
Монета: BTC, BCH, BSV
Хешрейт: 112 ± 5% Th/s
Энергопотребление: 3248 ± 10% Вт
Энергоэффективность: 29 ± 5% J/Th
Габариты и вес: 22,6 x 15,5 x 43 см, 11,7 кг
Охлаждение: 2 кулера
Диапазон температур: 5-35°C
Уровень шума: 75 децибел
Плюсы:
- Совместим с предыдущими поколениями
- Корпус легче, чем у предшественников
Минусы:
- Стоимость часто не включает в себя кабели
- Менее мощный по сравнению с более поздними моделями
Заключение
В конце этого обзора мы бы хотели дополнительно подчеркнуть, что технически все еще возможно добывать биткоины без специального оборудования для майнинга.
Однако, вы будете зарабатывать на этом менее одного цента в месяц. Майнинг биткоинов на вашем компьютере принесет больше проблем, чем прибыли.
Алгоритмы майнинга криптовалют: от SHA256 до X11Gost
![]()
Каждый день интерес к заработку криптовалют растёт. Один из основных способов заработать монеты – заняться майнингом посредством мощностей компьютера или специальных устройств – ASIC. Для этого необходимо знать алгоритмы майнинга криптовалют.
Увы, здесь не всё так просто, как многие привыкли думать. Как минимум, существует немалое количество алгоритмов майнинга криптовалют. На одних можно добывать Ethereum, на других – Bitcoin, на третьих – совершенно другие монеты, например, Litecoin. Соответственно, различные алгоритмы предполагают использование разного оборудование, заточенного конкретно под них. Эти и множество других нюансов необходимо учитывать, если вы желаете хорошо зарабатывать на майнинге.
Что такое алгоритм?
Алгоритм хеширования, отвечающий за функционирование блокчейна, – набор последовательностей, позволяющий расшифровывать данные с гарантией достоверности последних.
Алгоритм майнинга Биткоина, Эфира, Монеро и других криптовалют является плодом работы команды профессионалов, профессионально ориентирующихся в криптографии.
Таким образом, процесс майнинга является получением вознаграждений в виде монет за потраченную электроэнергию на осуществление их добычи посредством расшифровывания. В каждом используется собственная программа, заточенная под одну или несколько криптовалют.
Разумеется, одного шифрования недостаточно для построения блокчейна высокого уровня надёжности. Так как добавление записей доступно для любых участников сети, соответственно, этот процесс необходимо проверять. Для этого применяют «доказательства», позволяющие прийти к консенсусу. Последние и являются подтверждением, ожидаемым при отправке транзакции.
Наиболее популярными «доказательствами» являются PoW и PoS, первое дословно с английского переводится следующим образом: «доказательство работы», второе – «доказательство владения». И тот и другой подходы достаточно защищены для возможности выполнения транзакций и их подтверждения.

Алгоритмы
Алгоритм майнинга LTC – Scrypt. С его помощью осуществляется добыча «цифрового серебра» (Litecoin). Он давно доказал свою эффективность и защищённость – ещё в то время, когда ASIC работали только с SHA256. Позже появились устройства, позволяющие работать и с данным «протоколом».
SHA-256 – самый первый из алгоритмов. Ранее его помощью осуществлялась добыча BTC посредством мощностей видеокарт. Последних, к слову, уже недостаточно и требуются специальные устройства – ASIC. Последние были изобретены китайцами и пришлись по душе рынку. Популярны они и по сей день. На данном алгоритме также можно майнить Bitcoin Cash и ряд других монет, повторяющих или частично повторяющих структуру BTC.
Алгоритм майнинга Ethereum – Ethash. Чтобы он работал наиболее эффективно, необходимы видеокарты с большим объёмом памяти. При идеальных условиях, предпочтение следует отдавать AMD. Но и NVIDIA последних поколений (10 и 20-го) справляются достаточно хорошо. Но ввиду явно завышенной их стоимости предпочтение лучше отдавать AMD чипам. Существует и альтернатива — асики. Например, I nnosilicon A10 .
X11 – используется для добычи монеты Dash. С конца 2017 года добывается не только мощностями видеокарт, но и специальных ASIC, вовремя выпущенных всё теми же китайцами.
Decred – одна из модификаций Blake256, используется для добычи криптовалюты Decred. Майнинг осуществляется и на видеокартах. Нередко процесс запускают посредством программы Claymore’s Dual Miner, позволяющей майнить сразу две криптовалюты. Тем не менее существуют более продвинутые решения — асики. К примеру, Antminer DR5 .
Cryptonight позволяет добывать Монеро. Использует мощности исключительно процессоров для добычи.
Основой получения криптовалюты Zcash является алгоритм майнинга Equihash. Многие перешли на добычу этой монеты ввиду того, что сложность процесса получения Эфира значительно увеличилась.
X11Gost. Многие знакомы с монетой «Сибирский Червонец» – форком, выпущенным на базе более продвинутого аналога (Dash) из-за рубежа. Хеш-функция добычи криптовалюты соответствует ГОСТ, отсюда и такое название. На алгоритме добывается монета Sibcoin.

Сложность алгоритмов майнинга
Параметр сложности для добычи любой криптовалюты вводился с единственной целью – определение, какое количество оборудования и какой мощности требуется для использования в процессе. К слову, существуют специальные прошивки для увеличения производительности оборудования.
Так, сложность позволяет определять наиболее энергоэффективные устройства, позволяющие зарабатывать майнерам в условиях постоянно повышающейся конкуренции. Тем не менее актуальность майнинга в 2019 году только росла.
Чем большее количество людей майнят одну и ту же криптовалюту, тем сложнее становится процесс добычи блока. Соответственно, чем меньше мощности её добывают, тем проще процесс расшифровки.
В том же BTC сложность пересчитывается каждые 2016 блоков. Показатель индивидуальный и зависит от алгоритмов майнинга, заложенных в добычу конкретной монеты.
Майнинг будет прибыльным до тех пор, пока расходы на электроэнергию и содержание ферм из видеокарт или ASIC будут меньше, чем уровень получаемой прибыли в криптовалюте. Соответственно, при проседании рынка монет доходность от добычи значительно уменьшается, а во время его роста – увеличивается!
Вышеприведенный материал является частью фундамента знаний, необходимых для начала майнинговой деятельности.
Майним Bitcoin с помощью бумаги и ручки
В один прекрасный момент мне захотелось прикинуть, насколько быстро можно майнить биткойны вручную. Оказалось, что для майнинга используется хеширование SHA-256, а оно достаточно простое и может быть вычислено даже без компьютера. Само собой, процесс очень небыстрый и совершенно непрактичный. Но, пройдя все шаги на бумажке, можно хорошо разобраться в деталях работы алгоритма.

Один криптографический раунд
Майнинг
Ключевая часть всей системы безопасности биткойна — майнинг. Основная идея заключается в том, что майнеры группируют биткойн-транзакции в один блок, который уже подвергают хэшированию неисчислимое число для нахождения очень редкого значения хэша, подпадающего под специальные условия. Когда такое значение находится, блок считается смайненным и попадает в цепочку блоков. Само по себе хэширование не несёт никакой полезной цели кроме увеличения сложности поиска правильного блока. Таким образом, это одна из гарантий того, что никто в одиночку с любым существующим набором ресурсов не сможет взять под контроль всю систему. Подробнее про майнинг можно почитать в моей прошлой статье.
Криптографическая функция хэширования на вход получает блок с данными, а выдаёт небольшой, но непредсказуемый, выход. Она спроектирована так, что не существует быстрого способа получить нужный выход, и вы должны продолжать перебор пока не найдёте подходящее значение. Биткойн использует SHA-256 в качестве такой функции. Причём для усиления стойкости SHA-256 применяется к блоку дважды и называется уже двойным SHA-256.
В биткойне критерием валидности хэша является достаточное число нулей в его начале. [1] Найти такой хэш так же сложно, как, к примеру, найти номер машины или телефона, заканчивающийся на несколько нулей. Но, конечно, для хэша это экспоненциально сложнее. На текущий момент, правильный хэш должен содержать примерно 17 стартовых нулей, чему удовлетворяет только 1 из 1.4×10 20 . Если провести аналогию, то найти такое значение сложнее, чем обнаружить конкретную частичку среди всего песка на Земле.
На схеме ниже показан типичный блок в цепочке и его хэш. Желтым выделены байты, которые и участвуют в процессе хэширования. В данном примере хэш валиден и имеет достаточное число нулей в своём начале. Однако это нечастый случай, и обычно майнеру приходится перебирать значение поля nonce или других доступных для изменения данных.

Структура биткойн-блока
SHA-256
Алгоритм работает с данными, разбитыми на куски по 512 бит (64 байт), криптографически их смешивает и выдаёт 256-битный (32 байта) хэш. SHA-256 состоит из относительно простого раунда, повторяющегося 64 раза. Снизу, как раз, и показан такой раунд, принимающий на вход 8 4-байтовых слов — от A до H.

Один раунд SHA-256 для восьми входных слов A-H. Схема нарисована kockmeyer, CC BY-SA 3.0.
Синие блоки нелинейно перемешивают биты для усложнения криптографического анализа. Причём для еще большей надежности используются разные функции перемешивания (если вы сможете найти математическую лазейку для быстрого генерирования валидных хэшей, то возьмёте под контроль весь процесс майнинга биткойнов).
Функция большинства (Ma блок) побитово работает со словами A, B и C. Для каждой битовой позиции она возвращает 0, если большинство входных битов в этой позиции — нули, иначе вернёт 1.
Блок Σ0 циклически сдвигает A на 2 бита, затем исходное слово A циклически сдвигается на 13 бит, и, аналогично, на 22 бита. Получившиеся три сдвинутые версии A побитово складываются по модулю 2 (обычный xor, (A ror 2) xor (A ror 13) xor (A ror 22)).
Ch реализует функцию выбора. На каждой битовой позиции проверяется бит из E, если он равен единице, то на выход идёт бит из F с этой позиции, иначе бит из G. Таким образом, биты из F и G перемешиваются, исходя из значения E.
Σ1 по структуре аналогичен Σ0, но работает со словом E, а соответствующие сдвиговые константы — 6, 11 и 25.
Красные блоки выполняют 32-битное сложение, формируя новые значения для выходных слов A и E. Значение Wt генерируется на основе входных данных (это происходит в том участке алгоритма, который получает и обрабатывает хэшируемые данные. Он вне нашего рассмотрения). Kt — своя константа для каждого раунда. [2]
На схеме сверху заметно, что только A и E меняются за один криптографический раунд. Остальные слова не меняются, но сдвигаются на выходе — старое A превращается в выходное B, старое B — в новое C, и так далее. Хотя отдельный раунд алгоритма не сильно изменяет данные, но после 64 раундов, входная информация будет полностью зашифрованной. [3]
Майним вручную
На видео я показываю как можно пройти все описанные шаги с помощью ручки и бумаги. Я выполнил первый раунд хэширования для майнинга блока. Заняло это у меня 16 минут, 45 секунд.
Немного поясню что происходит: я записал слова от A до H в шестнадцатеричной форме, и под каждым сделал перевод в двоичный вид. Результат выполнения блока Ma находится под словом C, а значения A после сдвигов и сам выход Σ0 располагаются над строкой с A. Функция выбора появляется под G, и, наконец, соответствующие сдвинутые версии E и значение после блока Σ1 идут над строкой с E. В нижнем правом углу произвёл сложение, результат которого участвует в вычислении и нового A, и нового E (первые три красных блока суммирования). Справа сверху я рассчитал новое значение A, а посерёдке располагается уже расчет нового значения E. Все эти шаги обсуждались выше и легко могут быть отслежены на схеме.
Кроме того раунда, что показан в видео, я провёл еще один — последний 64-ый хэшируюший раунд для конкретного биткойн-блока. На фотографии значение хэша выделено желтым. Количество нулей подтверждает, что это валидный биткойн-хэш. Заметьте, что нули располагаются в конце хэша, а не в начале, как я писал ранее. Причина заключается в том, что биткойн, просто-напросто, переворачивает байты полученные SHA-256. [4]

Последний раунд SHA-256, в результате которого виден успешно смайненный биткойн-блок
Что всё это значит для проектирования «железных» майнеров?
Каждый шаг в SHA-256 очень просто выглядит в цифровой логике — простые битовые операции и 32-битные суммирования (если вы когда-либо изучали схемотехнику, то, скорее всего, уже представили себе как это может выглядеть в железе). Поэтому ASIC-микросхемы реализуют SHA-256 очень эффективно, размещая параллельно сотни блоков исполнения SHA-256 раундов. Фотография ниже показывает микросхему для майнинга, которая может вычислять 2-3 миллиарда хэшей в секунду. На Zeptobars можно поглядеть больше фото.

Снимок кремниевого кристалла ASIC-микросхемы Bitfury, которая может майнить биткойны со скоростью в 2-3 гигахэшей в секунду. Картинка с Zeptobars. (CC BY 3.0)
В противоположность биткойну, Litecoin, Dogecoin и другие похожие альтернативные -coin системы используют алгоритм хэширования scrypt, в котором изначально заложена сложность реализации в железе. Этот алгоритм во время выполнения хранит в памяти 1024 разных значений хэша, а уже на выходе комбинирует их для получения конечного результата. Поэтому требуется куда больше памяти и схематики для вычисления scrypt-хэшей по сравнению с SHA-256-хэшами. Влияние изменения алгоритма хэширования наглядно видно при сравнении соответствующего аппаратного обеспечения для майнинга — версии под scrypt (Litecoin и прочие) в тысячи раз медленнее, чем версии под SHA-256 (биткойн).
Заключение
SHA-256 неожиданно оказался настолько простым, что может быть вычислен даже вручную (алгоритм на эллиптических кривых, который используется для подписи биткойн-транзакции, был бы куда более мучительным, так как содержит кучу перемножений 32-байтных чисел). Расчет одного раунда SHA-256 занял у меня 16 минут, 45 секунд. С такой производительностью хэширование всего биткойн-блока (128 раундов [3]) займёт 1,49 суток, то есть получаем скорость хэширования в 0,67 хэшей в день (на самом деле, конечно же, с практикой процесс бы ускорился). Для сравнения, текущее поколение биткойн-майнеров производит несколько терахэшей в секунду, что примерно в квинтиллион раз быстрее меня. Думаю, очевидно, что ручной майнинг биткойнов не очень практичен. [5]
Читатель с reddit’a спросил о моих затратах энергии. Так как я не прилагаю каких-то серьезных физических усилий, то можно предположить что скорость метаболизма будет 1500 килокалорий в день, тогда получаем, что ручное хэширование требует почти 10 мегаджоулей за хэш. Типичное потребление энергии для железного майнера — 1000 магехэшей за джоуль. Таким образом, я менее энергоэффективен чем специализированная железка в 10^16 раз (10 квадриллионов). Другой вопрос в стоимости энергии. Дешевым источником питания являются пончики по 23 цента за 200 килокалорий. Электроэнергия у меня стоит 15 центов за киловатт-час, что дешевле пончиков в 6.7 раз. В итоге, стоимость энергии в пересчете на хэш для меня, как человека-майнера, в 67 квадриллионов раз выше. Да-а-а, понятно, что я не ухвачу удачу за хвост ручным майнингом биткойнов, и это еще не учитывая стоимость бумаги и ручек!
Примечания и ссылки
1. На самом деле, важно не число лидирующих нулей в хэше, а то, что он должен быть меньше какого-то конкретного значения, которое зависит от текущего уровня сложности системы. ↑
2. Довольно занятно то, откуда пошли эти константы для SHA-256. Так как АНБ разрабатывало этот алгоритм и выбирало константы, то откуда нам знать, что они не подобрали специальные значения, чтобы быстрее ломать хэши? Дабы пресечь подобные спекуляции, начальные инициализирующие значения хэша взяты как квадратные корни из восьми первых простых чисел (первые 32 бита дробной части). А Kt получены из кубических корней первых 64 простых чисел. Как видите, константы сгенерированы с помощью простых формул, поэтому можно доверять тому, что АНБ не придумало ничего хитрого (по крайней мере, в отношении констант). ↑
3. К моему сожалению, SHA-256 работает с блоками из 512 бит, а заголовок биткойн-блока больше. Поэтому необходим второй проход из 64 раундов хэширования. Кроме того, в биткойне используется двойной SHA-256. Таким образом, хэширование одного блока требует 192 раунда. Тем не менее, мы можем сократить это число, потому что процесс майнинга заключается в повторном хэшировании одного и того же блока, с небольшими изменениями поля «nonce» во второй половине блока. И тут возникает оптимизация за счет того, что мы можем использовать результат вычисления первых 512 бит блока повторно. В итоге, нам требуется только 128 раундов хэширования. ↑
4. Само собой, я не настолько невероятно удачлив, что нашёл сразу валидный хэш. Я начал хэширование блока, уже ранее смайнененного. Конкретно того, который уже упоминался в статье — #286819. ↑
5. Еще одна проблема с ручным майнингом заключается в том, что новые блоки майнятся примерно каждые 10 минут, поэтому даже если я успешно намайню блок, то он будет безнадежно устаревшим (сиротой, в терминах биткойна). ↑
- Ненормальное программирование
- Криптография
- Платежные системы