Алгоритм майнинга CryptoNight - это алгоритм майнинга, который должен быть особенно эффективным для процессора и устойчивым к ASIC. Это сделано для того, чтобы обеспечить большую децентрализацию майнинга криптовалют, в которых он применяется, а также для того, чтобы эти криптовалюты могли предложить расширенные возможности приватности и анонимности.
Одним из наиболее известных алгоритмов майнинга является CryptoNight. Этот алгоритм является частью известного консенсусного протокола CryptoNote. CryptoNight использует для своей работы схему майнинга Proof of Work (PoW) и стремится предложить высокую зависимость от главного процессора, противостоя ASIC, FPGA и, отчасти, GPU.
Его главная особенность заключается в том, что это очень быстрый алгоритм хеширования. Он также обеспечивает хорошую масштабируемость и выполняет ряд криптографических тестов, которые чрезвычайно зависят от кэша процессоров CPU. Но не только это, его ядро или криптографическое ядро работает на основе алгоритма шифрования AES, очень надежного алгоритма, который в некоторых версиях даже рассматривается как шифрование военного уровня.
Все это делает CryptoNight алгоритмом майнинга, в котором большое внимание уделяется безопасности, что и стало его основным фактором успеха в криптовалютном мире. Фактически, тот факт, что криптовалюта Monero выбрала его в качестве хэш-алгоритма для доказательства работы консенсуса своего блокчейна, повысил узнаваемость CryptoNight и открыл для него место в криптовалютном мире.
Итак, что же стоит за CryptoNight? Как работает этот интересный алгоритм? Как всегда, ответы на эти и другие вопросы вы можете получить ниже.
Алгоритм CryptoNight
Развитие CryptoNight можно проследить с 12 декабря 2012 года, когда разработчик Николас ван Саберхаген представил миру протокол консенсуса CryptoNote. Николас ван Саберхаген - это вымышленное имя, и личность разработчика является полной загадкой, настолько, что может соперничать с личностью Сатоши Накамото. Более того, многие специалисты считают, что Николас ван Саберхаген и Сатоши Накамото - одно и то же лицо. В связи с этим и родилось имя Сатоши ван Саберхаген, отсылающее к этому возможному факту.
Но далеко не область спекуляций, CryptoNote - это реальность. Запуск этого протокола в столь знаменательную дату (а точнее, 12.12.12) привлек внимание криптосообщества. Это связано с тем, что CryptoNote обладает расширенными возможностями, обещающими такие вещи, как конфиденциальность транзакций. Кроме того, в криптовалюте были реализованы несвязанные транзакции, кольцевые подписи, более мелкие транзакции и повышенная безопасность.
Позже, в марте 2013 года, была представлена полная спецификация CryptoNight - алгоритма майнинга, который должен был сделать CryptoNote реальностью. За этой разработкой стоят разработчики Seigen, Max Jameson, Tuomo Nieminen, Neocortex и Antonio M. Juarez.
Проект CryptoNote и его алгоритм майнинга первоначально был взят на вооружение компанией Bytecoin (BCN), которая применила его в своем блокчейне. Но только после создания Monero (XMR) этот проект стал широко известен в криптовалютном мире.
Работа CryptoNight
Работа CryptoNight основана на ряде свойств, которые делают ее очень удобной для майнинга на GPU. К ним относятся:
- Используется встроенное шифрование AES. Процессоры с возможностью аппаратного ускорения вычислений AES могут значительно выиграть от этого факта и получить более высокий потенциал для майнинга.
- Использование безопасных хэш-функций типа Keccak и Blake-256.
- Используется набор 64-битных быстрых множителей. Благодаря этому чисто 64-разрядные архитектуры процессоров обладают высокой эффективностью. Также возможно его использование на процессорах типа VLIW 128 - 512 бит, где алгоритм может использовать преимущества параллельных майнинговых пулов, увеличивая производительность.
- Активное использование кэша процессора. Алгоритм CryptoNight регулирует использование кэша, чтобы получить максимальную отдачу от него. Фактически, чем больше кэш-памяти у процессора, тем выше его производительность.
Если мы посмотрим на эти четыре компонента, то увидим, что все они очень ориентированы на работу с процессором. Более того, некоторые из этих функций гораздо эффективнее выполняются на центральном процессоре, чем на любой другой вычислительной структуре, включая ASIC. Именно это и позволяет CryptoNight быть устойчивой к ним.
Но, конечно, это только столпы, а не принцип работы алгоритма, о чем мы расскажем ниже.
Запуск хэш-системы
Работа CryptoNight начинается с инициализации рабочего пространства. Для этого CryptoNight использует ряд криптографических примитивов, к которым относятся:
- Шифрование AES
- Хэш-функция Keccak, которая используется в качестве основного средства генерации хэшей в алгоритме.
- Хэш-функция SHA-3. SHA-3 является хэш-функцией, производной от Keccak, и используется совместно с BLAKE-256,
- Groestl-256, JH-256 и Hank-256 для усиления генерации хэшей в криптопространстве CryptoNight.
Создание ключа AES и шифрование хэша Keccak
Наиболее важной частью процесса является создание ключа AES. Это возможно во время первого раунда хэш-функций. Прежде всего, КриптоНочь принимает входные данные и передает их в функцию Keccak. Для этого необходимо подготовить функцию Keccak-1600 шириной 1600 бит. Для сравнения, Bitcoin и его хэш-функция SHA-256 используют 256-битные или 64-символьные слова. Тогда как Keccak-1600 создает гораздо более крупные хэши - 1600 бит или 400 символов целиком, размер которых составляет 200 байт.
Затем берется первый 31 байт этого хэша Keccak-1600 и преобразуется в ключ шифрования для алгоритма AES-256, самого высокого значения в семействе AES. Для этого небольшой фрагмент данных шифруется в десять раундов. Остальная часть хэша шифруется с помощью AES-256 и также проходит 10 раундов шифрования.
Затем берется остальная информация из хэша Keccak и шифруется с помощью AES-256. В результате этого процесса генерируется огромный объем данных, который затем отправляется в рабочую область CryptoNight или на "скрэтчпад". По завершении этого процесса рабочая область CryptoNight подготовлена, и начинается цикл генерации хэша.
Окончательная генерация хэша
Теперь собранные в результате этих действий данные питают ядро или ядра хэш-функций. Как мы уже говорили, основной из них является Keccak, к которой присоединяются BLAKE-256, Groestl-256, JH-256 и Hank-256.
CryptoNight берет весь набор данных, созданный на предыдущем шаге функциями AES-256 и Keccak, и пропускает его через остальные хэш-функции. В итоге получается окончательный хэш, который и является результатом доказательства работы CryptoNight. Этот хэш имеет расширение 256 бит или всего 64 символа.
Плюсы и минусы алгоритма
Плюсы
- Высокая настраиваемость. Такие данные, как цель добычи и сложность, могут быть скорректированы между блоками, не представляя угрозы для безопасности сети.
- Ориентирован на центральный процессор. Это делает майнинг с использованием ASIC сложным и дорогим. Исключительная безопасность на криптографическом уровне. Использование AES-256 и определенное связывание методов шифрования и хэш-функций позволяет всегда обеспечивать высокий уровень безопасности.
- Она энергоэффективна и вычислительна.
- Для обеспечиваемого уровня безопасности размер результатов криптографического тестирования CryptoNight невелик. Это позволяет максимально увеличить количество транзакций внутри блоков.
- Учитывая то, как CryptoNight обрабатывает информацию для майнинга блоков, существует возможность создания нативных неотслеживаемых транзакций. Собственно, Monero и смогла создать такие транзакции благодаря CryptoNight.
Минусы
- Возможность устойчивости к ASIC больше не реализуется. Это связано с тем, что ASIC смогли адаптироваться для успешного майнинга на этом алгоритме.
- CryptoNight - чрезвычайно сложный и трудно поддающийся аудиту алгоритм. По этой причине разработчики имеют большую кривую сложности для проверки возможных ошибок в этом алгоритме.
- Использование специфических инструкций процессора, таких как AES, может привести к тому, что алгоритм будет атакован сбоку. Существует возможность использования уязвимостей в процессоре (как, например, в случае TSX или таких дефектов, как Spectre/Meltdown), которые могут нарушить безопасность алгоритма и тем самым подорвать безопасность блокчейна, использующего этот алгоритм майнинга.
Эволюция CryptoNight
CryptoNight - один из немногих криптографических алгоритмов, который на протяжении своей истории претерпел большое количество модификаций. Начиная с появления версии 1, продемонстрированной в whitepaper, и до создания CryptoNight-R, последней версии CryptoNight, разработанной компанией Monero.
Несмотря на это, изменения и новые версии CryptoNight направлены на то, чтобы не дать ASIC-майнингу разрушить попытку алгоритма оказать сопротивление. Но каждое новое изменение структуры с этой целью добавляет больше сложности и больше точек отказа. Это и стало основной причиной прекращения его разработки (по крайней мере, со стороны Monero, наиболее важного участника сообщества).
Поэтому на данный момент можно сказать, что CryptoNight - это алгоритм, достигший пика своей эволюции, чтобы не позволить ASIC открыто эксплуатировать этот алгоритм.
Майнинг Monero (XMR)
Bytecoin (BTN) - первый блокчейн, использующий CryptoNight. Следующим блокчейном, использовавшим его, стал Monero, и, по сути, именно в нем этот алгоритм получил наибольшее развитие. Однако Monero отказалась от этого алгоритма в пользу RandomX - полной эволюции CryptoNight, которая очень устойчива к ASIC, и будет устойчива еще долгое время.
Другой блокчейн, который использует CryptoNight, - Electroneum (ETN), разработанный таким образом, что мобильные устройства могут служить как полноценными узлами, так и узлами майнинга.
Заключение
В заключение, хочется сказать, что этот алгоритм не актуален в наше время. Даже Monero перешел на RandomX, и не остался на этом алгортиме. Рекомендуем прочитать наши другие статьи! Всего доброго!