Sha 256 что можно майнить. Что лучше майнить на Асиках: обзор и замер хэшрейта. Алгоритмы для майнинга на видеокартах


Известно, что криптовалюты генерируются путем майнинга, он же является основным моментом в создании защиты сети блокчейн. Майнинг криптовалют основан на использовании алгоритма хеширования SHA-2. Благодаря этому алгоритму производится добыча основной криптовалюты Bitcoin и обеспечивается его безопасность. SHA-2 также используется для майнинга альткоинов: Bitcoin Cash, Bitcoin Gold, Litecoin Cash, Auroracoin и других. На алгоритме SHA-2 базируются некоторые протоколы передачи защищенной информации, TLS, SSH, PGP, в том числе протоколы TCP/IP для передачи данных в Интернете.

Алгоритм безопасного хеширования SHA-2 (Secure Hash Algorithm Version 2) представляет собой совокупность криптографических хеш-функций, направленных на шифрование информации с целью ее защиты. Одной из хеш-функций алгоритма SHA-2 является SHA-256, которая используется для майнинга криптовалют.

Как и любая хеш-функция, SHA-256 представляет собой часть программного кода, которая преобразует входящую информацию в последовательность определенной длины, состоящую из букв и цифр. Этот процесс преобразования называется хешированием (от англ. hashing – рубить, запутывать).

Особенности протокола SHA-256

Хеш-функция алгоритма SHA-2 основана на структуре Меркла-Дамгарда, которая названа в честь ее создателей. Метод построения криптографической хеш-функции заключается в разбиении входной информации на блоки одинакового размера, а каждого блока на шестнадцатеричное число, с которым можно выполнять математические действия. Применив к ним хеш-функцию, в результате 64 или 80 итераций (повторяющейся обработки данных), на выходе получаем хеш-сумму - последовательность заданной длины из букв и цифр, именуемую также хешем, образом, слепком, хеш-кодом.

Последующий блок, согласно применяемому методу, начинает обрабатываться только после получения выхода предыдущего. И если во входящую информацию внести самое незначительное изменение, хеш уже будет не тот. При одинаковых значениях хеш-функции в разных блоках информации может возникнуть коллизия (конфликт в работе хеш-функции). Поскольку хеш-функции в процессе добычи криптовалют подтверждают неизменность входящей информации, то в случае быстрого нахождения коллизии сразу же дискредитируется надежность и безопасность всей сети блокчейн. К примеру, цифровая подпись создается с помощью хеш-функции. В случае обнаружения коллизии эту подпись можно подделать. Для вычисления коллизии применяется метод вычислительной сложности полный перебор, который повышает криптостойкость хеш-функции и пока считается самым быстрым.

Чистоту работы алгоритма, т.е. его работу без коллизий, определяет четыре нормативных требования:

1. При изменении входящей информации хеш-сумма должна измениться.

2. В процессе хеширования необходимо получить уникальную хеш-сумму.

3. Хеши должны быть необратимы, т.е. можно работать с входящей информацией, но нельзя выполнить обратный процесс.

4. Должна быть максимально усложнена генерация ключа с помощью хеширования.

Каждый узел одноранговой сети криптовалюты должен «выловить» из транзакций в сети интересующую его (прежде всего, суммой комиссионных) транзакцию, и провести ее верификацию: проверить вход, выход и подлинность электронной подписи. Затем начать формировать блок заданной емкости, для Bitcoin - 1Мб. Кроме версии и времени создания блок включает хеш входящих в него транзакций, хеш предыдущего блока, nonce и bits – специальные параметры, которые выражают условие для создания уникального хеша. Вместе они подвергаются многократному хешированию и генерируют хеш заглавия формируемого блока, который станет его выходом, а для последующего блока входом.

Представим, что в начале хеша должно быть определенное количество нулей, например, nonce =18. Найти такой хеш невероятно сложно, используя метод перебора. Но это-то как раз и гарантирует защищенность информации в сети блокчейн. Для генерации хеша блока потребуется просто гигантское количество переборов чисел. Но как только число найдено, оно передается по узлам сети вместе с готовым блоком и полученным хешем с 18 нулями. Каждый участник сети проверяет хеш, склеивая число с данными из блока. Если протокол Proof of Work реализован, блок устанавливается в конце самой длинной ветки блокчейна.

В 2003 году протокол впервые попал под прожектор внимания специалистов. Его исследованием были заняты команды разработчиков по всему миру. Основным вектором работы был поиск уязвимостей, однако вплоть до 2008 года никто не мог обнаружить ни одной проблемы. Впервые сделать прорыв удалось специалистам из Индии. В ходе их исследований было выявлено 22 уязвимости, для которых впоследствии были предложены варианты решения.

Технические данные SHA-256

    Размер блока в байтах – 64.

    Максимальная длина сообщения в байтах – 33.

    Дайджест сообщений в байтах – 32.

    Размер слова из расчета в байтах – 4.

    Внутреннее положение (длина) в байтах – 32.

    Максимальное число итераций из расчета за один цикл – 64.

    Удельная скорость протокола (MiB/s) ≈ 140.

Метод работы алгоритма SHA-256 подразумевает деление начального показателя после внесения в него каких-либо коррективов на блоки. Последние, в дальнейшем, претерпевают деление на 16 слов.

Битовые операции протокола представлены следующим образом:

    and - смысловое значение «и»;

    shr - отображает перемещение выбранного значения на заданное количество бит вправо;

    rots - основным значением является принудительный циклический сдвиг;

    || - позволяет соединять линейные структуры (основным элементов, на которое оказывается воздействие, являются строки);

    xor - значение, ввод которого устраняет команду «или»;

    Стандартное соединение значений (прибавление).

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

Важно! Высокий уровень изученности алгоритма стал опорой для его продвижения в программировании. Доказательством доверия является официальное разрешение со стороны правительства США на применение SHA-256 в качестве алгоритма для защиты информации.

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

Подводим итоги

Таким образом, вполне вероятно, что Scrypt и прочие более современные алгоритмы в ближайшем будущем смогут потеснить SHA-256, который занимает более трети от общего рыночного объема на данный момент. Уже много криптовалют используют для майнинга или .

Для чего создавался SHA — 256

SHA 256 — сокращение от Secure Hashing Algorithm — это популярный криптографический алгоритм хэширования , разработанный National Security Agency — Агентством национальной безопасности США . Задача SHA — 256 состоит в том , чтобы сделать из случайного набора данных определённые значения с фиксированной длиной , которое послужит идентификатором этих данных .

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

Этот алгоритм относится к группе шифровальных алгоритмов SHA — 2 , которые в свою очередь разработаны на базе алгоритма SHA — 1 , впервые созданного в 1995 году для использования в гражданских целях . Сам SHA — 2 разработан Агентством национальной безопасности США весной 2002 года. В течение трёх лет АНБ США выпустили патент на использование технологии SHA в гражданских проектах .

В 2012 году в Национальном институте стандартов и технологий создан обновлённый вариант алгоритма : SHA — 3 . Со временем новый алгоритм будет вытеснять как текущий основной алгоритм SHA — 2 , так и уже устаревший , но ещё используемый SHA — 1 .

Хэш — сумма не является технологией шифрования данных в классическом понимании , этим обусловлена невозможность расшифровки данных в обратную сторону . Это односторонняя шифровка для любого количества данных . Все алгоритмы SHA базируются на методе Меркла — Дамгарда : данные разделяют на равномерные группы , каждая из которых проходит через одностороннюю функцию сжатия . В результате этого длина данных уменьшается .

У такого метода есть два значительных достоинства :

  • быстрая скорость шифрования и практически невозможная расшифровка без ключей;
  • минимальный риск появления коллизий (одинаковых образов ).

Где ещё используется

Ежедневно каждый пользователь Сети , зная или нет , использует SHA — 256 : сертификат безопасности SSL , которым защищён каждый веб — сайт , включает в себя алгоритм SHA — 256 . Это необходимо для установления и аутентификации защищённого соединения с сайтом .

Плюсы SHA — 256

SHA — 256 — самый распространённый алгоритм майнинга среди всех остальных . Он зарекомендовал себя как устойчивый к взломам (за редким исключением ) и эффективный алгоритм как для задач майнинга , так и для других целей .

Минусы SHA — 256

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

После того как крупные инвесторы начали вкладывать деньги в вычислительные мощности для промышленного майнинга биткоина , сложность майнинга многократно выросла и стала требовать исключительных вычислительных мощностей . Этот недостаток исправлен в других протоколах , более современных и « заточенных » под использование в майнинге криптовалют , таких как Scrypt . Несмотря на то, что сегодня SHA — 256 занимает большую часть рынка криптовалют , он будет ослаблять своё влияние в пользу более защищённых и продвинутых протоколов .

Через какое-то время алгоритмы SHA — 1 перестали давать необходимый уровень надёжности из — за вероятного возникновения коллизий . SHA — 256 , как и SHA — 512 более защищены от этого недостатка , но вероятность возникновения все равно присутствует .

Использование в криптовалютах

Майнинг на SHA — 256

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

Майнить с использованием функции SHA — 256 можно тремя способами :

  • CPU (центральный процессор );
  • GPU (графический процессор );
  • специализированный процессор : ASIC.

В майнинге хэш — сумма используется в качестве идентификатора уже имеющихся блоков и создания новых на основе предыдущих . Процесс майнинга отображается в интерфейсе в виде « accepted f33ae3bc9 …». Где f33ae3bc9 — это хэш — сумма , часть данных , предназначенная для дешифровки . Основной блок состоит из огромного количества подобных хэш — сумм .

То есть , майнинг с алгоритмом SHA — 256 представляет собой безостановочный подбор правильного значения хэш — суммы , перебор чисел для создания нового блока . Чем больше ваши вычислительные мощности , тем больше шансов получить правильный блок : скорость перебора различных хэш — сумм зависит от мощностей .

Ввиду того , что Bitcoin построен на алгоритме SHA — 256 , для конкурентоспособного майнинга на нём необходимы крайне большие вычислительные мощности . Это связано с тем , что для майнинга биткоина достаточно давно налажено производство « асиков » — application specific integrated circuit , т . е . интегральная схема специального назначения . Асики позволяют майнить биткоины и другие криптовалюты на алгоритме SHA — 256 гораздо быстрее , эффективнее и дешевле .

Какие криптовалюты используют алгоритм SHA — 256

SHA — 256 это классический алгоритм для криптовалют : на нем построена основная криптовалюта — Bitcoin . Соответственно , и в форках биткоина используется этот алгоритм : в Bitcoin Cash , Gold , Diamond .

Помимо них , SHA — 256 используется также в :

  • Steemit;
  • DigiByte;
  • PeerCoin;
  • NameCoin;
  • TeckCoin;
  • Ocoin;
  • Zetacoin;
  • EmerCoin.

Также алгоритм SHA-256 используется как подпрограмма в криптовалюте Litecoin, а основным алгоритмом для майнинга там является Scrypt.

Каждый, кто пробовал майнить и добывать цифровую валюту рано или поздно сталкивался с таким термином как SHA256. Что же обозначают этот акроним, какими особенностями обладает, как работает? Обо всем этом и многом другом поговорим подробнее.

SHA256.

Расшифровка SHA256 – сокращение от Secure Hashing Algorithm – это актуальный на сегодня алгоритм хеширования, созданный National Security Agency – Агентством национальной безопасности США. Задача данного алгоритма заключается в том, чтобы выполнить из случайного набора данных определённые значения с длиной, которая зафиксирована. Эта длина является идентификатором. Значение, которое получится, сравнивается с дубликатами изначальных данных, получить которые нет возможности.

Главная область, где используется алгоритм SHA256 – применение в разного рода приложениях или сервисах, что связаны с защитой информационных данных, где Secure Hashing Algorithm и распространилось. Также при помощи алгоритма выполняется майнинг цифровых валют.

SHA-256 – это криптографическая хэш-функция.

Как мы все знаем, при майне криптомонет, мы разрешаем исходную задачу, пользуясь процессорами CPU или GPU. Процессы отражены в интерфейсе программы для майна, к примеру, в виде строки «Accepted 0aef41a3b». 0aef41a3b и является хэш. Это информация для раскодировки, которой соответствует хэшированный код, который будет получен. Сказать иначе – это строчка расшифрованных данных, тогда как главный виртуальный блок данных включает в себя тысячи, а то и миллионы такого рода строчек.


Этим можно объяснить ситуацию, когда требуется разрешить огромное число задач, перед тем как получится найти необходимый блок вашей криптомонеты. Получается, присутствует единственный шанс на 1, 10, 100 тысяч или даже миллион решений того, что строка, которая расшифрована, будет иметь точное значение, требуемое для снятия блокировки, или это будут личные данные (или блока). Это словно розыгрыш, игра, но с оборудованием, которое может осуществлять вычисление комбинации выигрыша оперативнее и качественнее, чем любой майнер.

Многие думают, что для разрешения задач, что связаны с хэш при применении протокола SHA256, понадобится мощнейшее аппаратное обеспечение?


Да, это имеет место быть. Чем больше применяется вычислительной мощности, тем лучше, так как шансы на добычу криптовалюты (SHA256 miner) повышаются. Однако важно понимать, что монеты на SHA256 зарабатывает огромное количество майнеров. Есть те, у кого наиболее мощное аппаратное обеспечение. Но расстраиваться не следует, у каждого есть все шансы победить. Это словно лотерейный розыгрыш, невозможно предугадать, когда улыбнется фортуна! SHA256 майнинг – увлекательный и интересный процесс, позволяющий заработать виртуальные монеты.

Технический принцип работы алгоритма


Algorithm SHA256 сегодня реализован во всех действующих на рыночной платформе ASIC-майнерах, в то время как оборудование ASIC для других хэш-функций майнинга ещё только на стадии разработки.

Кроме Биткоин, майн путем алгоритма SHA256, используется во многих других виртуальных валют-клонах. Например, его применяют альткойны Пииркоин и Нэймкоин. Многим интересно при использовании SHA256, какие криптовалюты используются.

Наиболее актуальны следующие:

  1. Ocoin.
  2. Тekcoin.
  3. Zetacoin и др.

Sha256 и Scrypt – это алгоритмы. Все, кто разбираются в добыче виртуальной волюты понимают, что для того, чтобы заработать какую-либо монету необходимо её майнить (то есть скачать программное обеспечение, запустить его и подождать пока компьютерное оборудование что-то заработает). Так вот вся суть майнинга заключается в том, что ПК решает сложнейшие задачи (хеш-функции) и чем больше проработает компьютерное оборудование, тем больше валюты будет добыто.

И задачи, которые разрешает ПК могут быть устроены не одинаково – одни базируются на алгоритме SHA256, а другие на Scrypt (разработаны и другие, но эти наиболее актуальные среди майнеров). К примеру, всем знакомый Биткоин зарабатывают по алгоритму Sha256, а криптовалюта DogeCoin добывается по Scrypt. Сказать иначе, разные цифровые валюты применяют различные алгоритмы. По какой причине?

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

Особенности протокола SHA-256


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

Имеются и недостатки:

  1. Главным минусом SHA256 валюты является контролирование майнерами.
  2. Те, у кого имеются огромные вычислительные мощности, получают основную часть крипто, что исключает один из основных принципов виртуальных денег – децентрализованность.
  3. Как только пошли инвестиции в вычислительные мощности для промышленного майна Биткоина, сложность добычи значительно возросла и стала требовать исключительных вычислительных мощностей. Этот минус исправлен в прочих протоколах, наиболее инновационных и «заточенных» под применение в майне цифровых валют, таких как Скрипт.

Несмотря на то, что в наши дни SHA256 занимает рыночную основу крипто, он будет ослаблять своё влияние в пользу наиболее надежных и современных протоколов. Пулы SHA256 сдадут позиции. Так алгоритмы SHA–1 перестали давать требуемый уровень защиты из–за вероятного развития коллизий.

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

Майнинг при помощи хэш-функции SHA256 можно осуществлять 3 методами:

  1. ASIC.

В майне хеш–сумма применяется как идентификатор уже присутствующих блоков, и создания новых на основе тех, что имеются. Процесс майна отражен в интерфейсе в виде «accepted f33ae3bc9…». Где f33ae3bc9 – это хешированная сумма, часть данных, которая требуется для дешифровывания. Главный блок включает в себя огромное число такого рода хеш-сумм. То есть, добыча с алгоритмом SHA256 – это подбор правильного значения хешированной суммы без остановки, перебор чисел для того, чтобы создать очередной блок. Чем мощнее оборудование, тем больше шансов стать владельцем того самого правильного блока: скорость перебирания разного рода сумм зависит от мощностей. Потому как Биткоин построен на алгоритме SHA256, для конкурентоспособного майна на нём требуются крайне большие вычислительные мощности.

Это связывается с тем, что для добычи криптовалюты хватает производства «асиков», а именно специальной схемы особенного назначения. Асики дают возможность добывать Биткоины и прочие криптовалюты на хэш-функции SHA–256 оперативнее, результативнее и недорого.

Какие еще криптовалюты SHA–256 можно добывать? SHA–256 это классика для цифровых валют: на нем выстроена основная виртуальная валюта – Bitcoin. Именно поэтому, и в форках биткоинаприменяется этот хеш: в Биткоин каш, Голд, Диамонд.

Кроме них, SHA–256 применяется также в:

  1. Стимит.
  2. Дигибайт.
  3. Пиркоин.
  4. Нэймкоин.
  5. Тиккоин.
  6. Окоин.
  7. Зетакоин.
  8. Эмиркоин.

Также алгоритм применяется как подпрограмма в цифровой валюте Лайткоин, а главным алгоритмом для майна там будет Scrypt.

Псевдокод хеш: функции


Отличается Scypt-Jane тем, что поддерживает более 3-х различных систем поточного шифра. И для того чтобы сформировать отчетливое понимание алгоритма, следует ознакомиться с характеристикой функционала. Основные функции:

  1. ChaCha20.
  2. Salsa6420/8.

Первостепенно мы имеем Salsa20/8. Это довольно несложная функция, основной задачей функционирования которой является приём 192-байтной строчки (из цифр и букв) и последующее её преобразование в 64-байтную строчку Salsa20 (х).


Salsa20 двухкомпонентная: потоковое шифрование для шифра данных и функция сжатия (алгоритм Румба20), которая нужна для сжатия 192-байтной строчки до 64-байтной. Сказать иначе: строчка может быть больше 64-байтной, пока не станет равна 192-байтной, при этом строчка будет сжиматься до 64 байтов. ChaCha20 имеет небольшие сходства с Сальса20: это также поточное шифрование, но оно предусматривает некоторые дополнительные возможности, например, повышение стойкости к криптоанализ.

Чача20 также повышает перемешивание данных на раунд. Говоря другими словами, занимаясь майном цифровых монет в составе пула, можно заметить, что один майнерский раунд может включать в себя либо короткий, либо длинный временной период. Длительность периода времени, на протяжении которого майнерский пул может отыскать один блок, отчасти определяется и более качественным перемешиванием, предлагаемым Чача20 из Скрпит-Джейн.

К слову, на понижение времени раунда оказывают влияние различные факторы. Еще одна важнейшая функция перемешивания информации в Скрипт-Джейн – это Salsa6420/8. Она усовершенствованная версия Salsa20/8, и дает возможность работать с наиболее высокобайтными блоками. Кроме этих функций, Скрипт Джейн поддерживает также ряд хешированных, среди которых присутствует и SHA256. Алгоритмом также поддерживается наиболее инновационный её вариант SHA512.

Пример хеширования


Что же такое хеширование? Идея хеш основана на распределении ключей в стандартном массиве H. Распределение происходит путем вычисления для каждого ключа элемента некой хешированно функции h. Она на основе ключа помогает получить целое число n, которое послужит индексом для массива H. Понятное дело, следует придумать такую хешированную функцию, которая бы давала разный код для разнообразных объектов. К примеру, если в качестве ключа хешированной таблицы следует применить строки, то можно подобрать хешированную функцию, которая основана на таком алгоритме (пример на С): int hash(char* str) {int h = 0; for (int i=0; i

Где m – размер хешированной таблицы, C – константна, большая любого ord(c), а ord() – функция, которая возвращает код символа (число). Для отдельного типа данных можно создать свою хешированную функцию. Но разработаны основные требования к функции: она должна расставлять ключи по ячейкам хешированной таблицы как наиболее равномерно, и должна легко находиться. Ниже предложена таблица. Можно понять, что индексами ключей в хешированной таблице является результат функции h, которая применена к ключу.


Также изображение показывает одну из главных проблем. При довольно низком значении m (размера хешированной таблицы) по отношению к n (числу ключей) или при плохой функции, может произойти так, что 2 ключа будут хешированные в общую ячейку массива H. Это коллизия.

Хорошие функции стремятся свести к нулю шанс формирования коллизий, но, принимая во внимание то, что пространство всех ключей, которые возможны, может быть больше размера хешированной таблицы H, всё-таки избежать их не получится. Но специалистами разработано ряд технологий для разрешения коллизий. Настройка pool SHA256 для добычи монет отображена на видео. Можно понять, как майнить криптовалюту.

SHA 256 - криптографический набор инструкций для майнинга криптовалют. Иными словами, он надежно защищает все транзакции в сети, и усложняет добычу электронных монет. Эта аббревиатура расшифровывается как Secure Hashing Algorithm, что означает крайне востребованный и эффективный способ хэширования.

Суть SHA 256 - в преобразовании информации в значения, цифры. Данная цепочка имеет фиксированную длину. Это значит, что любые сведения, передаваемые вами внутри сети, будут зашифрованы специальными значениями - идентификаторами(ID).

При совершении транзакций алгоритм SHA 256 сравнивает ID с исходными данными, извлечь которые невозможно, после чего предоставляет доступ к операции. Сейчас этот протокол используется в добыче криптовалют, таких как BTC и BCH.

История появления

Как получилось, что Bitcoin начал использоваться SHA 256? Все началось с того, что алгоритм стал членом семейства SHA-2, которые имеют размер цепочки хеша 224-512 бит.

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

Семейство SHA-2, к которому принадлежит SHA 256, было разработано Агентством национальной безопасности 16 лет назад - весной 2002. Исходя из этого, можно сказать, что алгоритм морально устарел. Однако он по-прежнему является одним из самых надежных алгоритмов для шифрования транзакций в сети.

Технические параметры SHA 256

Алгоритм предназначен для данных, поделенных на равные части по 64 байта. SHA 256 обеспечивает их сбор и объединение в единую 256-битную цепочку. Основной для метода является операция шифрования, которая выполняется в цикле 64 раза.

Краткие характеристики алгоритмичных инструкций SHA 256:

  • блоки 64-битного размера - наиболее быстро работает с 32-битными;
  • пиковая длина зашифрованной цепочки информации - 33 байта;
  • объем дайджеста сообщения - 32 байта;
  • стандартизированный размер одного слова - 4 байта;
  • цикличность шифрования в одном раунде операции - 64 байта;
  • скорость, на которой работает алгоритм - 140 Мбит/с.

Стоит отметить, что этот член семейства SHA-2 базируется на основе, которую описал Меркл-Дамгард. Это значит, что перед делением информации на слова происходит разделение данных на блоки. Процесс усиливает шифрование за счет перемешивания данных.

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

Криптовалюты с алгоритмом SHA 256

Как и говорилось ранее, таким набором инструкций обладает не только Bitcoin, но и:

  • peercoin, особенность которого заключается в том, что код создается на основе битка, но вот PoS применяется для защиты всей сети, а PoW отвечает за распределение монет;
  • namecoin - цифровая валюта, которая выступает средством защиты, конфиденциальности, децентрализации; unobtanium - отличается крайне низкой инфляцией, чтобы добыть все монеты потребуется, как минимум, 300 лет;
  • deutsche eMark - немецкая микросеть, которая используется для обмена активами и деньгами. Сам процесс проходит без посредников; betaCoin - работает по такому же принципу, что и всемирно известный BitCoin;
  • jouleCoin - также базируется на дедушке биткоине, однако обеспечивает более быстрое подтверждение транзакций;
  • steemit - даже не отдельная крипта, а целая платформа на блокчейне. Ее главная задача - награждение за интересные публикации.

Litecoin тоже использует алгоритм SHA 256, однако не во всей системе, а в подпрограмме. Для добычи лайткоина применяется защитный протокол Scrypt, что сказывается на увеличении сложности майнинга и снижает окупаемость асиков.

Майнинг криптовалюты на основе алгоритма SHA 256

Для добычи электронных монет, которые основываются на семействе SHA-2, необязательно использовать специализированные средства - ASIC. В майнинге отлично себя показывают и фермы на основе CPU и GPU. Последний по скорости явно превосходит первый.

И все же асик - лучшее решение для майнинга криптовалют. Его преимущества в некоторой степени нивелирует значительная цена - около 100 тысяч рублей, модели помощнее и вовсе переваливают за 500 000. С ростом сложности падает окупаемость. Поэтому оборудование не всегда оправдывает себя, хотя обеспечивает куда более высокую скорость майнинга, чем фермы на видеокартах и тем более ЦП.

Добыча на GPU считается более-менее прибыльной. В целом, вся ферма будет стоить приблизительно $1000-2000, плюс дополнительное оборудование - в частности, системы охлаждения для видеокарт. Также стоит учитывать аренду помещения, оплату электроэнергии и зарплату обслуживающему персоналу.

Среди видеокарт неплохо себя показывает GTX 1080 Ti от Nvidia. Она выдает скорость в 1400 удачных операций в секунду. AMD чуть отстает со своими картами линейки Vega - 1200 MH/s. Есть и более дешевые варианты вроде Radeon 7970, однако его скорость не превышает 800 MH/s.

Алгоритм SHA 256 хоть и старый, но по-прежнему используется в Bitcoin - криптовалюте №1 в мире. Протокол применяется и в ряде других перспективных альткоинов. На смену SHA256 постепенно приходит Scrypt, однако биткоин не планирует на него переходить. Касаемо майнинга все просто - если есть деньги, берите асики с высокой скоростью хеширования. Хотите более экономное решение? Тогда стройте ферму из видеокарт AMD или Nvidia.

  • Перевод

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

Один криптографический раунд

Майнинг

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

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

В биткойне критерием валидности хэша является достаточное число нулей в его начале. Найти такой хэш так же сложно, как, к примеру, найти номер машины или телефона, заканчивающийся на несколько нулей. Но, конечно, для хэша это экспоненциально сложнее. На текущий момент, правильный хэш должен содержать примерно 17 стартовых нулей, чему удовлетворяет только 1 из 1.4x10 20 . Если провести аналогию, то найти такое значение сложнее, чем обнаружить конкретную частичку среди всего песка на Земле .

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

Функция большинства (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. Значение W t генерируется на основе входных данных (это происходит в том участке алгоритма, который получает и обрабатывает хэшируемые данные. Он вне нашего рассмотрения). K t - своя константа для каждого раунда.

На схеме сверху заметно, что только A и E меняются за один криптографический раунд. Остальные слова не меняются, но сдвигаются на выходе - старое A превращается в выходное B, старое B - в новое C, и так далее. Хотя отдельный раунд алгоритма не сильно изменяет данные, но после 64 раундов, входная информация будет полностью зашифрованной.

Майним вручную

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


Немного поясню что происходит: я записал слова от A до H в шестнадцатеричной форме, и под каждым сделал перевод в двоичный вид. Результат выполнения блока Ma находится под словом C, а значения A после сдвигов и сам выход Σ0 располагаются над строкой с A. Функция выбора появляется под G, и, наконец, соответствующие сдвинутые версии E и значение после блока Σ1 идут над строкой с E. В нижнем правом углу произвёл сложение, результат которого участвует в вычислении и нового A, и нового E (первые три красных блока суммирования). Справа сверху я рассчитал новое значение A, а посерёдке располагается уже расчет нового значения E. Все эти шаги обсуждались выше и легко могут быть отслежены на схеме.

Кроме того раунда, что показан в видео, я провёл еще один - последний 64-ый хэшируюший раунд для конкретного биткойн-блока. На фотографии значение хэша выделено желтым. Количество нулей подтверждает, что это валидный биткойн-хэш. Заметьте, что нули располагаются в конце хэша, а не в начале, как я писал ранее. Причина заключается в том, что биткойн, просто-напросто, переворачивает байты полученные SHA-256.


Последний раунд 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 раундов ) займёт 1,49 суток, то есть получаем скорость хэширования в 0,67 хэшей в день (на самом деле, конечно же, с практикой процесс бы ускорился). Для сравнения, текущее поколение биткойн-майнеров производит несколько терахэшей в секунду, что примерно в квинтиллион раз быстрее меня. Думаю, очевидно, что ручной майнинг биткойнов не очень практичен.

Читатель с reddit"a спросил о моих затратах энергии. Так как я не прилагаю каких-то серьезных физических усилий, то можно предположить что скорость метаболизма будет 1500 килокалорий в день, тогда получаем, что ручное хэширование требует почти 10 мегаджоулей за хэш. Типичное потребление энергии для железного майнера - 1000 магехэшей за джоуль. Таким образом, я менее энергоэффективен чем специализированная железка в 10^16 раз (10 квадриллионов). Другой вопрос в стоимости энергии. Дешевым источником питания являются пончики по 23 цента за 200 килокалорий. Электроэнергия у меня стоит 15 центов за киловатт-час, что дешевле пончиков в 6.7 раз. В итоге, стоимость энергии в пересчете на хэш для меня, как человека-майнера, в 67 квадриллионов раз выше. Да-а-а, понятно, что я не ухвачу удачу за хвост ручным майнингом биткойнов, и это еще не учитывая стоимость бумаги и ручек!