Введение
RandomX — это название нового алгоритма майнинга Monero, конфиденциальной монеты, цель которой — защитить сеть от майнинга ASIC, позволяя майнить только на определенный процессор одновременно обеспечивая безопасность ее протокола и блокчейна.
Алгоритм майнинга RandomX — это алгоритм Proof of Work (PoW), который был разработан для замены известного CryptoNight - конфиденцимального алгоритма криптовалюты Monero (XMR).
Как и его предшественник, RandomX был разработан как безопасный и стал новым алгоритмом Monero по умолчанию. Он предлагает высокий уровень криптографии и ориентирован на системы, обеспечивающие конфиденциальность и анонимность. Но, прежде всего, считается устойчивым к майнингу с помощью ASIC. Последнее — способность, которую CryptoNight потерял некоторое время назад и которая поддерживалась на плаву благодаря нескольким обновлениям. Однако команда Monero приняла решение создать новый алгоритм с нуля. Алгоритм, который возьмет лучшее от CryptoNight и, таким образом, создаст новую базу для майнинга Monero.
Результат? Алгоритм майнинга с очень многообещающей устойчивостью к ASIC.
Но RandomX — проверенный алгоритм, имеющий огромный потенциал роста. Поэтому здесь мы проведем анализ RandomX и всего нового, что он привносит в мир криптовалют, а также того, какую выгоду от этого получила Monero.
Происхождение RandomX
Как мы уже указывали, RandomX родился из-за необходимости проекта Monero (XMR) иметь новый алгоритм майнинга, способный противостоять развитию ASIC.
Напомним, что в 2018 году компании Baikal y Bitmain анонсировали первые ASIC для CryptoNight, преодолев сопротивление, которое этот алгоритм оказывал в течение нескольких лет. Настоящее достижение для обеих компаний, особенно если учесть, что CryptoNight был достаточно сложным алгоритмом. Фактически, алгоритм разработали для того, чтобы с самого начала избежать майнинга ASIC.
Однако эта разработка не была хорошо воспринята сообществом Monero и другими сообществами блокчейнов, использующими алгоритм CryptoNight. И прежде всего потому, что Monero — это криптовалюта, в которой майнеры ASIC не пользуются большим спросом.
Производственная монополия ASIC и доступ к ним лиц с большими суммами денег не оставляют обычным людям возможности получить выгоду от процесса майнинга, оставляя все централизованным в нескольких руках. Что-то, что, в свою очередь, представляет собой единую точку отказа для всей монеты.
В Monero майнинг, как правило, осуществлялся с помощью CPU и GPU, поэтому ASIC представляли серьезный риск централизации и безопасности из-за возможности атаки 51%.
Чтобы облегчить ситуацию, Monero начала разработку новых вариантов CryptoNight, которые негативно повлияли на производительность ASIC. Некоторые обновления имели хороший масштаб, но ASIC по-прежнему держались. На тот момент было очевидно, что происходящее CryptoNight было недостаточным и требовался новый алгоритм.
Так родился Monero Classic, созданный майнерами, которым нужен был алгоритм майнинга ASIC. Однако эта попытка не была должным образом воспринята
Несмотря на это, они продолжили совершенствовать ASIC-чипы для Monero, и 31 октября 2018 года началась разработка RandomX. По мнению разработчиков Monero, этот новый алгоритм будет представлять собой радикальное изменение в алгоритмах майнинга. Работа окупилась 5 мая 2019 года, когда вышла первая версия RandomX.
Алгоритм RandomX был разработан для Monero разработчиками tevator, hyc, vielmetti, antanst y Schernykh и был успешно активирован в сети Monero 30 ноября 2019 года.
Как работает RandomX ?
Грубая работа RandomX записана в его названии: случайность —основная предпосылка. Но что это значит? Что ж, это означает, что RandomX предназначен для создания полностью случайной «рабочей зоны» или блокнота с высоким потреблением памяти и что для его работы используются передовые методы виртуализации. Эти три столпа позволяют RandomX быть устойчивым к ASIC.
На самом деле, RandomX не только устойчив к ASIC, но и к GPU, поскольку в этих чипах вообще отсутствуют необходимые инструкции для выполнения сложных операций RandomX. В результате RandomX стремится стать алгоритмом майнинга, использующим только процессор, предлагая максимально возможную устойчивость к другим типам майнинга. С другой стороны, это также направлено на то, чтобы избежать так называемых очень известных ботнетов в Monero, поскольку RandomX сделает их практически невозможным для реализации. Особенно в устройствах с низким энергопотреблением, таких как Smart TV или устройства IoT (Интернет вещей или Интернет вещей).
Но как RandomX делает все это возможным?
Прежде всего, у RandomX есть два режима майнинга. У каждого из них очень разные требования и характеристики. Самый мощный и требовательный к ресурсам режим — Quick Mode, для которого требуется не менее 2 ГБ памяти. Но кроме того, если операционная система поддерживает NUMA (неоднородный доступ к памяти) , Huge Pages (подкачка памяти большими блоками), при использовании высокоядерных процессоров и не менее 2 ГБ ОЗУ на ядро процессора, конечная производительность RandomX существенно улучшается. Это связано с тем, что вся эта память используется для создания случайного блокнота RandomX.
Во-вторых, у нас есть облегченный режим, режим, для которого требуется всего 256 МБ ОЗУ и который был разработан для использования в узлах проверки Monero. Производительность майнинга в этом режиме ограничена и до 6 раз ниже быстрого режима, поэтому прибыль за майнинг в этом режиме будет довольно скудной.
Сейчас есть первый барьер против ASIC. Хотя у ASIC теперь могут быть большие объемы оперативной памяти (например, Ethereum, который обычно имеет от 4 до 8 ГБ ОЗУ), эти майнеры считаются достаточно дорогими
Во-вторых, учитывая высокое потребление вычислительной мощности, в случае заражения компьютера криптоджекингом при майнинге Monero пользователю будет легко его идентифицировать, уменьшая шансы на успех ботнета.
Используемая криптография
Если проект Monero (XMR) к чему-то нас и приучил, так это к использованию передовых крипто технологий в своих разработках. В RandomX активно используются хэш-функции Blake2b, генератор паролей Argon2d и симметричная криптография AES. В результате RandomX отличается исключительным криптографическим качеством.
Однако в Monero не ограничились своей работой в одиночку и решили провести формальный аудит криптографической безопасности и реализации алгоритма RandomX. Компании Trail of Bits, X41 D-SEC, Kudelski Security и Quarkslab провели четыре аудита. Указанные компании управляются OSTIF, организацией с многолетней историей в области кибербезопасности и криптографии.
Схема RandomX Proof of Work (PoW)
Схема выглядит следующим образом:
Сначала генерируется ключ (называемый ключом K), который выбирается в качестве хеша блока в блокчейне. Этот блок называется «ключевой блок». Для оптимальной производительности майнинга и проверки ключ должен меняться каждые 2048 блоков (около 2,8 дней), а между блоком ключа и сменой ключа K должна быть задержка в 64 блока (около 2 часов). Этого можно достичь, изменив ключ, когда верно следующее: blockHeight % 2048 == 64 (где % — модуль деления) и выбрав ключевой блок так, чтобы keyBlockHeight % 2048 == 0.
В этот момент вход H представляет собой стандартный хэш-объект с выбранным нунцием значения.
Хотя все это кажется немного загадочным, алгоритм RandomX означает, что его доказательство работы работает при двух важных предпосылках:
Нужен ключ (называемый K), который должен меняться каждые 2048 блоков. Этот ключ жизненно важен для того, чтобы RandomX мог генерировать действительные хеши и блоки для сети.
Ключ генерируется на основе данных из блокчейна и, в конечном итоге, с помощью безопасной системы генерации ключей.
С другой стороны, алгоритм также немного усложняет задачу, требуя определенных условий выполнения. К числу этих условий можно отнести:
64-битная архитектура ЦП, позволяющая обрабатывать большие объемы данных и памяти.
Модуль FPU (модуль с плавающей запятой), соответствующий стандарту IEEE 754. Если устройство не соответствует требованиям, данные, сгенерированные алгоритмом, не могут быть проверены.
Поддержка AES. Если поддержка осуществляется аппаратно расширениями наподобие AES-NI, производительность алгоритма намного выше.
Много кэш-памяти для каждого потока алгоритма. Не менее 16 КБ кэша L1, 256 КБ кэша L2 и 2 МБ кэша L3.
Операционная система с поддержкой обработки больших страниц памяти. RandomX использует не менее 2 ГБ ОЗУ, и требования могут увеличиться в зависимости от конфигурации.
Виртуальная машина RandomX
Уникальная особенность этого алгоритма, — это его виртуальная машина или VM (Virtual Machine) этого алгоритма с функциональностью устойчивостью к ASIC.
RandomX выполняет всю свою работу по криптографии и майнингу на простой виртуальной машине, целью которой является; разделение всего процесса майнинга на серию этапов, работающим по своим собственным инструкциям и виртуализированной архитектуре.
Это направлено на увеличение сложности реализации решения ASIC до невиданного ранее уровня. В то же время реализация ЦП упрощена и может быть скорректирована в соответствии с будущими потребностями. Эта виртуальная машина может выполнять различные задачи благодаря набору пользовательских инструкций типа CISC. Подобная функция позволяет легко обмениваться данными с процессорами, использующими набор инструкций одного типа. Этим она отличается от чипов ASIC, которые используют набор команд типа RISC, а эмуляция CISC-over-RISC требует больших вычислительных затрат, что усложняет решение ASIC для RandomX.
Целью этой виртуальной машины является создание необходимой среды для выполнения проверки работы RandomX. Чтобы добиться этого, эта виртуальная машина создает случайное рабочее пространство (блокнот в памяти), тщательно зашифрованное и полное энтропии (случайные данные, которые позже будут использоваться для доказательства работы).
После создания указанных условий, виртуальная машина получает инструкции по запуску программ майнинга. Каждая из этих программ создается с использованием случайных данных из рабочей области и в результате получается уникальная программа.
Созданная программа будет применять все процессы, разрешенные виртуальной машиной для выполнения майнинга, то есть программа может выполнять только разрешенные виртуальной машиной инструкции (256 инструкций и 20 регистров). На этом этапе происходящее в виртуальной машине RandomX, практически незаметно для остальной части компьютера.
Этот процесс создания случайных программ для выполнения майнинга называется Dynamic Proof of Work. Именно на этом этапе RandomX использует такую схему.
Она определяется следующим образом:
Сначала генерируется случайная программа. Под случайной программой подразумеваются работа виртуальной машины при запуске блокнота и всех элементов программы в первом рабочем цикле.
Затем виртуальная машина выполняет роль переводчика между процессором и случайными программами. Случайные программы могут использовать только инструкции виртуальной машины, но виртуальная машина переводит эти действия в машинный код, понятный процессору. Таким образом, ЦП реагирует на действия, а виртуальная машина получает ответы. Оптимизация обходится очень дорого, поскольку в инструкциях используется криптография.
На этапе выполнения программы виртуальная машина разрешает доступ к процессору и его возможностям, не теряя связи со случайной программой. Этот момент возникает при специфических условиях, уже запрограммированных в алгоритме RandomX. Фактически, любое изменение приводит к получению неверных данных, поскольку этот процесс полностью воспроизводим.
Плюсы и минусы алгоритма
Плюсы
Это алгоритм с четкой целью обеспечения безопасности. Использование AES, Blake2 и Argon2 делает этот алгоритм безопасным.
Поскольку он предназначен для процессоров и имеет структуры, устойчивые к ASIC и GPU, этот алгоритм может лучше использовать их преимущества. Как следствие, RandomX предлагает более высокую прибыль майнерам ЦП
Устойчивость к ASIC позволяет блокчейнам, использующим RandomX, быть более децентрализованными на уровне майнинга.
Минусы
Использование виртуальной машины значительно усложняют разработку и отладку этого алгоритма.
Использование VM открывает возможности для боковых атак, которые можно использовать для взлома системы и использовать для повышения производительности при определенных условиях. Однако использование криптовалюты в блокноте сильно усложняет этот момент, поэтому многие считают его невозможным.
Устройства с 32-битным процессором не могут правильно использовать алгоритм.
Комментарии
Комментарии для сайта Cackle