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

Что такое алгоритм Scrypt

Scrypt — это один из алгоритмов хеширования, который используется в самых различных криптографических протоколах и системах защиты данных. Он был разработан в 2009 году Колином Персивалем (Colin A. Percival) для онлайн-сервиса хранения резервных копий Tarsnap. При создании Tarsnap Персиваль обнаружил, что ему нужна максимально безопасная и эффективная хеш-функция для системы резервного копирования, которая бы отвечала следующим критериям:

  • Использует эффективный алгоритм хеширования, чтобы избежать чрезмерного энергопотребления компьютеров, на которых установлено программное обеспечение (программа, использующая алгоритм).
  • Обеспечивает более высокий уровень безопасности, чем другие алгоритмы, которые усложняют хакерские атаки перебором при помощи PLD.
  • Является бесплатным, мультиплатформенным и достаточно компактным (портативным) программным обеспечением.

Персиваль понял, что ни один из известных до сих пор алгоритмов не мог предложить ему то, что он искал. По этой причине Персиваль начал разработку Scrypt, работу, которую он завершил и представил в 2009 году в этом техническом документе. При этом Персиваль сделал свою разработку открытым программным обеспечением, благодаря чему любой, кто хотел использовать и / или улучшить хеш-функцию Scrypt, мог это сделать бесплатно и без каких-либо ограничений.

Благодаря открытому коду Scrypt получил признание во всем мире. Именно это привело к тому, что в 2016 году IETF создали стандарт безопасности RFC 7914 на базе Scrypt. Это в свою очередь позволило использовать Scrypt (его упрощенную версию) в качестве PoW-механизма рядом криптовалют. Впервые данная идея была представлена анонимным пользователем под ником ArtForz на онлайн-форуме Tenebrix, а вскоре и реализована на практике в сети криптовалюты Litecoin.

Главная же особенность Scrypt в том, что он требует большого объема памяти для выполнения хеширования, что, гипотетически, делает его более устойчивым к специализированному оборудованию для майнинга, такому как ASIC.

Как работает хеш-функция Scrypt

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

Алгоритм Scrypt состоит из трех шагов:

  1. Вы выбираете какую-то фразу, которая будет основой для вашего пароля. Например: «Я люблю котиков». В Scrypt это называется пасс-фразой.
  2. Вы добавляете к пасс-фразе специальную последовательность символов, которая делает ваш пароль еще более уникальным. Например: «Я люблю котиков!@#$%^&*%:?*_)(*??». В алгоритме Scrypt эти дополнительные символы обычно называют солью (salt).
  3. Дальше Scrypt превращает вашу пасс-фразу с солью в длинный и сложный код из букв и цифр. Например: “b3a6f6c8e9f5d4c3a2b1d0f9e8d7c6b5a4b3c2d1f0e9d8c7b6a5b4c3d2f1e0”. Это и называется хешем.

Алгоритм Scrypt делает это таким образом, чтобы задействовать много памяти вашего компьютера. И он делает это несколько раз, каждый раз меняя порядок и значение символов в хеше. Это называется смешиванием. Алгоритм Scrypt также использует другие параметры, которые определяют, сколько раз он будет смешивать хеш, сколько памяти он будет использовать и какой длины будет выходной хеш. Вот некоторые параметры, которые можно настроить в алгоритме Scrypt:

  • r — размер блока в байтах; 
  • N — «стоимость» памяти видеокарты;
  • p — положительное числовое значение, отвечающее определенному условию: p ≤ (2^32 - 1) * hLen / MFLen;
  • dkLen — длина выходного ключа в байтах.

Таким образом, алгоритм Scrypt делает ваш пароль очень сложным для подбора или взлома, потому что он требует много памяти и времени для создания каждого хеша. И если кто-то захочет угадать ваш пароль, ему придется повторить все шаги с теми же параметрами и солью, что и вы. Это будет очень трудно и дорого сделать.

Майнинг криптовалют на алгоритме Scrypt

Алгоритм Scrypt также используется в майнинге криптовалют для создания новых блоков в блокчейне, которые содержат информацию о транзакциях и подтверждают их подлинность. При этом основная цель Scrypt заключается в усложнении процесса использования ASIC-устройств для добычи криптовалюты. Это усиливает защиту сети от централизованной добычи и снижает возможность атак типа 51%-Attack.

На техническом уровне алгоритм Scrypt работает следующим образом:

  1. Для майнинга криптовалют на алгоритме Scrypt необходимо выбрать подходящее оборудование, программу-майнер, пул для майнинга и криптовалюту для добычи. В зависимости от этих факторов может меняться доходность и сложность майнинга. Но в целом майнинг на алгоритме Scrypt считается менее затратным и сложным, чем на алгоритме SHA-256, который используется для майнинга Bitcoin и других криптовалют.
  2. Алгоритм Scrypt состоит из трех шагов: генерации псевдослучайного ключа из пароля и соли с помощью функции HMAC-SHA256; генерации большого массива псевдослучайных байтов из ключа и параметров N и r с помощью функции SMixr, которая использует операцию смешивания Salsa20/8; генерации выходного ключа из массива байтов и параметров p и dkLen с помощью функции PBKDF2-HMAC-SHA256.
  3. Для создания нового блока в блокчейне майнеры должны найти такой хеш блока, который удовлетворяет определенному условию сложности. Это называется решением головоломки. Для этого они используют алгоритм Scrypt для хеширования заголовка блока, который содержит хеш предыдущего блока, номер блока, метку времени, сложность и нонс (случайное число). Они меняют нонс до тех пор, пока не получат хеш с нужным количеством нулей в начале. Это называется доказательством работы (proof-of-work).

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

Какие криптовалюты используют Scrypt

Некоторые из наиболее известных криптовалют, использующих Scrypt, включают:

  • Litecoin (LTC). Это одна из самых известных криптовалют, созданная Чарльзом Ли в 2011 году как «серебряная» альтернатива Bitcoin. Litecoin использует алгоритм Scrypt для майнинга, что делает его более доступным для обычных компьютеров и оборудования.
  • Dogecoin (DOGE). Эта криптовалюта началась как шутка, но вскоре набрала популярность. Dogecoin также использует алгоритм Scrypt для майнинга. Она славится своей дружественной и «шутливой» позицией в криптосообществе.
  • Digitalcoin (DGC). Эта криптовалюта также использует Scrypt для майнинга и была представлена в 2013 году. Digitalcoin стремится к более быстрым подтверждениям транзакций и облегченному майнингу.
  • Worldcoin (WDC). Еще одна криптовалюта, созданная на основе Scrypt, с упором на скорость обработки транзакций и более равномерное распределение вознаграждений между майнерами.
  • Feathercoin (FTC). Эта сеть также использует алгоритм Scrypt и стремится к устойчивой долгосрочной добыче с более широким участием майнеров.
  • Verge (XVG). Это валюта для ценящих конфиденциальность. Она улучшила оригинальный блокчейн Биткоина за счет использования TOR и i2P.
  • Einsteinium (EMC2). Это криптовалюта, созданная для привлечения средств на научные проекты.

Преимущества и недостатки Scrypt

Scrypt имеет свои преимущества и недостатки, которые следует учитывать при его использовании. Вот их краткое описание:

Преимущества алгоритма Scrypt:

  • Сопротивление ASIC и FPGA. Одной из причин, по которой криптовалюты, такие как Litecoin, использовали в Scrypt, была их способность препятствовать использованию ASIC и FPGA. Это означает, что Scrypt усложняет работу для крупных (богатых) майнеров и майнинговых ферм. Правда, еще в 2013 году был представлен первые ASIC, заточенные под Scrypt. Да, такие ASIC не настолько эффективны (рентабельны), как ASIC для PoW-сетей, но они намного эффективнее добычи монет на обычных компьютерах. 
  • Большая сетевая безопасность. Scrypt — протокол с высоким уровнем безопасности, который разработан таким образом, чтобы программист мог увеличивать или уменьшать различные влияющие в этом отношении переменные. В дополнение к этому алгоритм обеспечивает высокую устойчивость к атакам методом перебора, что делает его идеальным для распределенных систем, где безопасность имеет важное значение.
  • Высокая эффективность. Использование ключа, набора точек или переходов, распараллеливание процесса, генерация случайных чисел, а также возможность корректировки значений функции позволяют Scrypt иметь высокую степень эффективности без ущерба для безопасности.
  • Децентрализация. Из-за сложности применения ASIC для майнинга на алгоритме Scrypt более децентрализован. Он позволяет более широкому кругу людей участвовать в процессе добычи криптовалюты, что способствует распределению мощностей и защищает сеть от потенциальных атак.

Недостатки алгоритма Scrypt:

  • Затраты. Майнинг на ASIC характеризуются высокой эффективностью. Они предлагают высокий уровень хешрейта при минимальном энергопотреблении. Например, часто можно увидеть ASIC под SHA-256 с потреблением всего 1000 Вт и мощностью в несколько TH/s. Но в Scrypt ситуация радикально меняется. Scrypt-майнер, потребляющий те же 1000 Вт, вряд ли сможет вам предложить более 500 MH/s. Этот момент представляет собой серьезную проблему.
  • Ограниченная производительность. Также из-за повышенных требований к памяти и ресурсам Scrypt может быть медленнее в сравнении с некоторыми другими алгоритмами, что ограничивает общую производительность сети.
  • Сложность настройки параметров. Правильная настройка параметров работы алгоритма Scrypt может быть сложной задачей, а неправильные настройки могут повлиять на безопасность и производительность.
  • «Рваная» производительность. Некоторые типы аппаратного оборудования могут быть более или менее эффективными при использовании Scrypt, что может привести к неравномерной производительности майнеров.

Краткие выводы

Алгоритм Scrypt — это неотъемлемая часть криптовалютной экосистемы, представляющая собой инновационный криптографический алгоритм. Способность эффективно устранять угрозы централизованной добычи делает его хорошим инструментом для обеспечения безопасности и децентрализации криптовалютных сетей. А разносторонний спектр применения алгоритма Scrypt, начиная от Litecoin и Dogecoin, до области шифрования данных в различных онлайн-сервисах вне мира блокчейна, свидетельствует о его важной роли в поддержании стабильности и разнообразия не только в мире криптовалют, но и интернета в целом.