Классика: SHA-256
Начнем наш обзор, конечно же, с классического SHA-256, с которого все начиналось — именно на этом алгоритме построен биткойн-майнинг, как и майнинг подавляющего большинства биткойн-клонов (альткойнов).
Так что же это такое этот самый SHA-256? Это криптографическая хэш-функция, которая была разработана нашими «друзьями» – Агентством национальной безопасности США. Подождите, не спешите впадать в прострацию, здесь не о чем волноваться. Потерпите немного, обещаю, что скучать вы точно не будете.
Основная работа любой хэш-функции заключается в превращении (или хэшировании) произвольного набора элементов данных в значение фиксированной длины («отпечатка» или «дайджеста»). Это значение будет однозначно характеризовать набор исходных данных (служить как бы его подписью), без возможности извлечения этих исходных данных. Это официальное объяснение из Википедии, замечательное и научно-обоснованное, но вот только я, например, не говорю на таком языке. И уверен, что большинство из вас тоже. А посему, позвольте мне объяснить значение этого «феномена», по-нашему, по-простому.
Как мы все знаем, при майнинге SHA-256 крипто-монет, мы решаем поставленную задачу при помощи CPU, GPU или специализированного процессора. Процессы преобразования отображаются в интерфейсе программы, предназначенной для майнинга, например, в виде строки «Accepted 0aef41a3b». Значение 0aef41a3b — это и есть хэш. Он является как бы подписью большого набора данных (собственно, очередного блока транзакций с добавленным к нему случайным числом). Эта короткая строка как бы представляет собой блок, который состоит из нескольких тысяч, если не миллионов, подобных строк.
Это также объясняет то, почему вам нужно решить перебором множество задач, прежде чем удастся отыскать нужный хэш для нового блока. Ведь мы ищем не какой попало хэш, а тот, который начинается на определенное количество нулей. У вас имеется один шанс на тысячу, десятки, сотни тысяч, миллионы решений, что случайно получившийся хэш будет иметь нужное количество нулей в начале. Сколько именно? Определяется параметром сложности, которое задает ваш майнинг-пул. Заранее понять, получится у вас «красивый хэш» или нет, невозможно. Это похоже на игру в лотерею, но с машинами, которые могут выполнять вычисление выигрышной комбинации быстрее и лучше, чем любой из нас.
Вы считаете, что для решения задач, связанных с хэшированием при использовании протокола SHA-256, вам потребуется мощное аппаратное обеспечение? В этом есть определенный смысл. Чем больше используется вычислительной мощности, тем лучше, так как увеличиваются шансы на добычу монет. Но имейте в виду, что вы не единственный, кто занимается майнингом. Есть люди, которые располагают более производительным аппаратным обеспечением. Не расстраивайтесь, у вас есть все шансы на выигрыш. Это похоже на игру в лотерею, вы никогда не знаете, когда повезет!
Теперь вернемся к алгоритму SHA-256. Криптовалюта - это не единичный пример, где используется SHA-256. Есть несколько протоколов, о которых вы, скорее всего, слышали и которые используют данный алгоритм. Это протоколы SSL, SSH, PGP и многие другие. Каждый раз, когда вы заходите на защищенный веб-сайт с помощью сертификата SSL, используется SHA-256. Бьюсь об заклад, вы не задумывались об этом, не так ли? Все мы узнаем что-то новое со временем!
Именно алгоритм SHA-256 реализован во всех выпущенных на настоящий момент специализированных ASIC-майнеров, ASIC-оборудование для других алгоритмов майнинга пока только разрабатывается. Помимо Биткойна, майнинг, основанный на SHA-256, используется в ряде других цифровых валют-клонов. Например, такие альткойны как Peercoin и Namecoin его используют. В последнее время, наблюдается всплеск новых SHA-256 монет: Zetacoin, Ocoin, Tekcoin и десятки других.
Задачки посложнее: Scrypt
Алгоритм SHA-256 — не единственный алгоритм, который интересен для майнеров. Вторым по популярности майнинг-алгоритмом в мире криптовалют является Scrypt. История появления Scrypt несколько необычна. Но давайте не будем забегать вперед.
Сейчас вы узнаете, что такое Scrypt и, наверняка, удивитесь. Scrypt является ключевой функцией вывода данных на основании пароля (или алгоритма). Эта функция была изначально разработана для реализации крупномасштабных аппаратных атак. Если сказать проще: Scrypt был разработан, чтобы взламывать зашифрованные сообщения.
Протокол SHA-256 был разработан для шифрования сообщений и данных, в то время как Scrypt — для их расшифровки. Если у вас есть зашифрованный фрагмент данных и нет абсолютно никакого способа, чтобы расшифровать его, то эти данные не принесут никому пользы, не так ли? Но, как мы все знаем, для расшифровки может использоваться алгоритм, который применяет в своей работе различные хитрые методы.
Я приведу некоторые примеры и терминологию, с помощью которой общаются хакеры. У них есть термин, который означает начало больших аппаратных атак на базы данных. Это брутфорс ( (brutforce). По сути дела, майнинг с помощью Scrypt протокола представляет собой массированную атаку подобного типа на блок данных.
Речь не идет о чем-то незаконном. Добычу цифровых монет с помощью Scrypt протокола можно представить в виде попытки обработать огромный кусок данных. Мы решаем технические задачи путем расшифровки некоторой их части, но мы должны быть уверены, что эти данные помогут нам в достижении конечной цели. Это похоже на то, как работодатель оценивает выполненный дневной объем работы, а потом проверяет ее качество.
Майнинг с помощью Scrypt протокола представляет собой процесс, в результате которого обрабатывается большое количество данных в поиске одного правильного решения. Это очень трудоемкий процесс, он требует много памяти. Я уже не говорю про оперативное запоминающее устройство (ОЗУ), я говорю о реальной внутренней памяти процессора или видеокарты.
Почему требуется большое количество памяти? Ну, это просто объяснить. Так как приходится работать с большим объемом данных, то память должна поддерживать этот поток. Вы не можете начать обработку ста возможных комбинаций последовательно, в этом случае речь пойдет не о производительности компьютера, а о времени, которое потребуется для решения задачи. Вы открываете максимально большое количество комбинаций и решаете их одновременно, увеличивая тем самым свои шансы на успех.
Образно говоря, вы пытаетесь затопить систему возможными решениями и найти уязвимую точку, которая откроет весь блок. Чем больше скважин мы откроем, тем больше вероятность того, что найдется крохотная щель в броне фактического блока.
В идеале, добыча монет с протоколом Scrypt должна осуществляться на одном (или нескольких) компьютерах с большим количеством памяти. Здесь большое значение уделяется видеокартам. Если вы рассматриваете покупку видеокарт для майнинга с использованием Skrypt протокола, то наилучшим вариантом станет приобретение изделия от фирмы Radeon. Nvidia карты, к сожалению, недостаточно эффективны для майнинга. Они разработаны для видеоигр и не приспособлены для решения других задач.
В конечном счете, все сводится к следующему: протоколы SHA-256 и Scrypt работают ради одной цели – мы хотим получать как можно больше ежедневных вознаграждений. Это возможно в том случае, если вы состоите в сообществе майнеров. Они решают поставленную задачу по-разному: протокол SHA-256 использует технические возможности аппаратного обеспечения. Чем выше производительность, тем лучше результат. Протокол Scrypt использует в работе большой объем памяти. Соответственно, производительность напрямую зависит от размера оперативного запоминающего устройства (ОЗУ) и видеокарт, установленных в компьютере.
Самым известным альткойном из использующих в майнинге Scrypt является Litecoin. Есть и Dogecoin, Digitalcoin, Franco, Bottlecaps и многие другие. Популярность Scrypt-монет, особенно лайткойна, существенно возросла после того, как биткойн-майнинг массово мигрировал на ASIC и бывшие майнеры с видеокартами остались не у дел — их оборудование не может конкурировать со специализированными комбайнами. Вот они и приспособили свои видюшки к лайткойн-майнингу, или к добыче другой экзотики, которую пока еще можно сбыть доверчивым горе-инвесторам, ожидающим чуда.
Крипто-танцы: Scrypt-Jane
Знакомьтесь – это Джейн! Нет, нет, она и Scrypt не состоят в браке, хотя, между ними все же есть некие родственные отношения. Scrypt-Jane подобно любой другой девушке любит хорошо провести время. А ее способности к перемешиванию данных и приятели-алгоритмы унесут вас в самые экзотические места! Не понимаете? Сейчас все объясню.
Scypt-Jane поддерживает не менее трех различных систем поточного шифрования. Прежде всего, у нас есть Salsa20/8. Нет, это не латиноамериканский танец — на самом деле это довольно простая функция. Основная ее работа заключается в приеме 192-байтной строки (из букв или цифр) и дальнейшем ее преобразовании в 64-байтную строку Salsa20 (х).
Не понятно, не так ли? Хорошо, постараюсь использовать меньше теории. Salsa20 состоит из двух частей: потокового шифра для шифрования данных (это должно быть звучит более знакомо) и функции сжатия (так называемый алгоритм Rumba20), предназначенной для сжимания строки в 192 байта до 64-байтного значения. Используя лексикон «чайника», можно сказать так: ваша строка может быть длиннее 64 байт, пока не сравняется со значением в 192 байта, при этом строка будет сжата (читай: конвертирована) до 64-байтной строки.
Теперь, когда мы немного разогрелись после сальсы и румбы, пришла пора вводить вторую функцию – ChaCha20. Честно, это не я выдумываю такие названия. ChaCha20 очень похож Salsa20: это такой же поточный шифр. И, тем не менее, он предлагает некоторые дополнительные услуги, такие как увеличение устойчивости к криптоанализу. Он также улучшает перемешивание данных на раунд. То есть, если вы занимаетесь добычей криптовалюты в составе майнерского пула, то вы можете увидеть, что один майнерский раунд (период времени, в течение которого пул находит один блок) может составлять либо длинный, либо короткий промежуток времени. Длительность подобных раундов частично зависит и от улучшенного перемешивания, предлагаемого ChaCha20 из Scrypt-Jane. Есть и другие факторы, влияющие на снижение времени раунда, но об этом позже.
И наконец, последняя, но не менее важная третья функция перемешивания данных — Salsa6420/8. Сексуальное название, не так ли? Salsa6420/8 является доказательством правильности концепции 64-байтной версии Salsa20/8. Это просто улучшенная версия Salsa20/8, которая позволяет работать с более высокобайтными блоками. Я мог бы продолжить в том же духе выдавать подробную техническую информацию, но, боюсь, что половина из вас, мои дорогие читатели, уже заснула, а остальные принялись за игрушки на своих смартфонах, так что давайте не будем заострять на этом внимание. Просто помните о том, что у Scrypt-Jane имеется три отличных «миксовых партнера».
Но, вернемся к реальности! Scrypt-Jane также поддерживает несколько хэш-функций. Одна из них уже очень хорошо известна всем нам – это SHA-256. Она также поддерживает более продвинутый вариант SHA-512. Другие поддерживаемые хэш-функции включают BLAKE256/512, Skein512 и Keccak256/512 (или просто SHA -3).
BLAKE256-512 отличается очень простой разработкой для применения и опирается на уже проанализированные нами компоненты: структуру HAIFA (не будем ее рассматривать в данный момент) и основную функцию ChaCha (которую мы затронули ранее). Наиболее характерные особенности BLAKE – это высокий запас надежности (довольно важная характеристика, но о ней не сейчас) и высокопроизводительная универсальность (что тоже очень важно для майнеров). Что нужно запомнить о BLAKE, так это то, что она может и будет работать быстрее, чем SHA- 2(56) на ряде платформ.
С другой стороны, у нас же есть Skein512. Тех, кто придумывает такие великолепные имена нужно наградить медалью… Skein («лялька» в переводе на русский) представляет собой хэш-функцию, представленную на конкурсе криптографических хэш алгоритмов. Она сочетает в себе скорость, безопасность, простоту и гибкость. Все мы это очень любим, не так ли? Она также очень эффективна на различных платформах как в аппаратной, так и в программной среде. Вы можете найти алгоритм Skein и на маленьких смарт-картах, с которыми большинство из нас имеет большой опыт работы.
Да уж, танцевально-криптографическая терминология тут просто зубодробительная. Но хватит теории, давайте посмотрим на то, что Scrypt-Jane может сделать для нас. Scrypt-Jane имеет свой собственный вариант масштабирования сложности проблем. Scrypt-Jane использует N-фактор (который является числом) и это число определяет количество памяти, необходимой для решения задач. Значение числа N-фактора возрастает через определенные промежутки времени. Обычно это происходит тогда, когда в блокчейне найдено определенное количество блоков. Всякий раз, когда это число N-фактора увеличивается, снижается эффективность добычи криптовалют, так как требуется все больший объем памяти на выполнения тех же задач. Говоря простым языком, количество выполненных задач снизится, то есть упадет и вероятность нахождения решения.
Scrypt-Jane первоначально была предназначена для майнинга только на процессорах CPU, как еще более замороченная замена Scrypt. Но увы, доминирование CPU-майнинга и тут длилось недолго.Майнеры, работающие на GPU как вороны кружили вокруг Scrypt-Jane монет, стремясь увеличить эффективность добычи и, соответственно, прибыль. Вы можете подумать, что даже в случае уменьшения прибыли, вы сможете вести добычу с GPU в течение более длительного времени по сравнению с майнингом на CPU? Боюсь, что вы ошибаетесь. В конце концов, значение N-фактора будет настолько высоко, что для добычи на Scrypt-Jane GPU будут менее эффективным, чем процессоры CPU. В связи с этим, Scrypt-Jane не так-то легко перевести в специализированный ASIC-майнинг, как SHA-256 или даже Scrypt.
Одной из первых Scrypt-Jane-монет, получивших некоторую популярность, была Yacoin (да, да, Yet Another Coin — «еще одна монета»), правда популярность этой монеты быстро упала вместе с уменьшением интереса к ней майнеров. Совсем недавно мы были свидетелями появления монет подобных Copperbars (эффективность майнинга на GPU также упала) и самые свежие дополнения к списку – это валюты TIX и Cryptonerd.
Далее везде
Три описанных алгоритма покрывают более 90% всего зоопарка криптовалют, но конечно же есть и другие. Чуть ли не еженедельно появляются предложения относительно все более новых и хитромудрых алгоритмов майнинга — все и не осветить. Из относительно новых можно упомянуть особо «асикоустойчивый» алгоритм Dagger, который собираются использовать в криптовалютной платформе нового поколения Ethereum.
Надеемся, эта статья дала вам лучшее представление о том, что представляют из себя наиболее распространенные крипто-алгоритмы майнинга. Если вы занимаетесь майнингом, вы теперь лучше понимаете, что именно происходит в недрах вашего гудящего и перегревающегося майнинг-комбайна, и на что конкретно уходит ваше электричество.
Источник: coinspot