Ethash алгоритм майнинга: как он работает для Ethereum
С 2022 года криптовалюта Ethereum работает на алгоритме консенсуса POS! То есть данная монета не добывается на видеокартах или асиках, но ее алгоритм по прежнему Ethash.
По мере того, как интерес к криптовалютам набирает обороты, увеличивается и их добыча.
Это создает существенный экономический стимул не только для производства большего количества оборудования для майнинга, но и для разработки более быстрых и более эффективных устройств.
Мы увидели это с Биткоином: майнинг перешел с процессоров, на видеокарты, затем на FPGA, а теперь и на ASIC.
Сегодня майнинг Ethereum на видеокартах является нормой, и пока еще майнеры не сделали сильного скачка к запуску алгоритма майнинга Ethash, на специализированных аппаратных решениях (например, FPGA и ASIC). Асики в сети есть, но они не дают такого большого преимущества как на Биткойне.
Множество статей и форумов объясняют это тем, что разработка асиков для Ethash - это проблема с памятью).
Здесь мы расскажем о том, откуда берется жесткая привязка к памяти у Ethereum и как может выглядеть следующее поколение пользовательских майнинг-устройств для добычи ETH.
В этой статье мы предполагаем, что читатели имеют общее представление о стандартных компьютерных технологиях и блокчейне, но не должны быть экспертами по программированию или майнингу.
Если вы хотите изучить полное руководсто о том, как майнить Ethereum на видеокартах в Windows, то обратитесь к этой статье.
Для более технического, ориентированного на программиста объяснения алгоритма майнинга Ethereum, называемого Ethash, пожалуйста, обратитесь к странице Ethash в GitHub репозитории Ethereum.
Быстрое объяснение сути Proof-of-Work
При майнинге с проверкой работы (Proof-of-Work) майнеры ищут решение (называемого одноразовым номером – «nonce»), которое при хешировании выдает выходное значение, которое меньше предварительно заданного целевого порога.
Слишком сложно? Читайте простое и профессиональное объяснение сути майнинга.
Из-за криптографического характера хэш-функции каждой валюты нет никакого способа для обратного инжиниринга или обратного вычисления одноразового номера («nonce»), который удовлетворяет целевому пороговому пределу.
Вместо этого майнеры должны «угадывать и проверять» хэши как можно быстрее и надеяться, что они - первые майнеры во всей сети криптовалюты, которые найдут действительный одноразовый номер. Тем самым они найдут новый блок.
Как работает алгоритм Ethash
DAG файл
Алгоритм Ethash опирается на псевдослучайный набор данных, инициализированный текущей длиной цепочки блоков.
Это и называется DAG – файлом и восстанавливается каждые 30 000 блоков (или каждые ~ 5 дней). По состоянию на март 2020 года размер DAG файла Ethereum составляет ~ 3.5 ГБ, и он будет продолжать увеличиваться в размере по мере роста блокчейна.
Особенности создания DAG не так актуальны для этой статьи, но вы можете прочитать больше о генерации DAG тут (англ.).
Ход выполнения алгоритма хеширования Ethash можно обобщить следующим образом:
Принцип работы алгоритма хеширования Ethereum
- Preprocessed Header - препроцессированный заголовок (полученный из последнего блока) и Current Nonce (текущее однократно используемое число), в сочетании с использованием SHA-3-подобного алгоритма, чтобы создать наши первоначальные 128 байты микса, называются здесь Mix-0.
- Mix используется для вычисления того, какую 128-байтовую страницу из группы DAG нужно извлечь, представленную блоком «Get DAG Page».
- Mix сочетается с полученной страницей DAG. Это делается с помощью функции смешивания «Ethereum-specific», для генерации следующего микса, называемого здесь Mix 1.
- Шаги 2 и 3 повторяются 64 раза, в результате получается Микс 64.
- Микс 64 подвергается постобработке с получением более короткого 32-байтового Mix Digest (дайджеста микса).
- Mix Digest сравнивается с предопределенным 32-байтовым Target Threshold (целевым порогом). Если Mix Digest меньше или равен Target Threshold, то текущий одноразовый номер (Current Nonce) считается успешным и будет транслироваться в сеть Ethereum. В противном случае текущий одноразовый номер считается недействительным, и алгоритм перезапускается с другим одноразовым номером (либо путем увеличения текущего одноразового номера, либо путем выбора нового случайным образом).
Почему Ethash привязан к памяти?
Каждая операция смешивания требует 128-байтового чтения из DAG (см. Рисунок 1, шаг 2).
Для хеширования одного одноразового номера требуется 64 микса, в результате чего (128 байт х 64) = 8 КБ чтения памяти. Чтение с произвольным доступом (каждая 128-байтовая страница выбирается псевдослучайно на основе функции смешивания), поэтому помещение небольшого фрагмента DAG в кэш L1 или L2 не очень поможет, так как следующая выборка DAG с большой вероятностью приведет к отсутствию кэша.
Поскольку извлечение страниц DAG из памяти намного медленнее, чем вычисление смешивания, мы почти не увидим улучшения производительности от ускорения вычисления смешивания.
Лучший способ ускорить алгоритм хэширования Ethash - ускорить выборку 128-байтовой страницы DAG из памяти.
Таким образом, мы считаем алгоритм Ethash жестко привязанным к памяти или связанным с памятью, поскольку пропускная способность памяти системы ограничивает нашу производительность.
Достижение предела пропускной способности памяти в реальном оборудовании
В качестве примера того, как ограничение пропускной способности памяти влияет на реальное оборудование, давайте подробнее рассмотрим производительность майнинга часто используемой видеокарты: RX 590.
Если хеширование Ethash действительно требует большой памяти, мы ожидаем, что фактическая скорость майнинга для этого оборудования будет очень близка к максимальной теоретической скорости хеширования, при условии, что выборка страниц DAG является единственным выполненным шагом.
Мы можем рассчитать этот максимальный теоретический хэшрейт следующим образом:
(Пропускная способность памяти) / (DAG-память, извлекаемая для хэширования) = максимальный теоретический хэшрейт
(256 гигабайт / сек) / (8 килобайт / хэш) = 32 Мегагэша/сек.
Эмпирический хэшрейт RX 490 во время реальной работы составляет ~ 31 мегахеш / с.
Эта небольшая задержка может быть легко объяснена задержкой памяти или другими быстрыми операциями в системе. Таким образом, производительность этой видеокарты такая же, как и ожидалось, при условии, что хеширование данных является трудным для памяти, а выбор страниц DAG является шагом ограничения скорости.
Победа над видеокартами: будущее поколение майнинг-устройств для добычи ETH
Единственный способ, которым может пригодиться пользовательское оборудование для майнинга Ethereum, - это если он более экономичен или энергоэффективен при пропускной способности памяти (меньше $ / (ГБ / сек) или меньше Вт / (ГБ / сек)).
Вариант 1. Платы FPGA / ASIC с высокой пропускной способностью памяти
Взглянув на RX 590, мы можем немного подсчитать (245 долл за карту / (256 ГБ / с)), чтобы увидеть, хешрейт стоит 0,95 долл / ГБ / с.
По сравнению с одним чипом GDDR5 (например, Micron EDW4032BABG), который стоит 6,83 долл. И имеет пропускную способность 24 ГБ / с, мы можем добиться большего успеха - 0,28 долл. / ГБ / с.
Таким образом, если мы сможем создать собственный чип (либо ASIC, либо FPGA), чем интерфейс с 9 чипами GDDR5, у нас будет пропускная способность памяти 216 ГБ / с по цене $ 61,47.
Однако это будет еще не законченное устройство, так как нам нужен контроллер памяти FPGA или ASIC, печатная плата и вспомогательная электроника.
Если отгруженная окончательная сборка (добавление дополнительных деталей, процессов, испытаний и логистики) стоит меньше, чем RX 590 (всего $ 245), тогда пользовательская плата превзойдет видеокарту.
То есть, пока на рынке не появится более быстрая, более эффективная и дешевая видеокарта.
Например Видеокарты HBM уже доступны. Но если вы найдете недорогие готовые микросхемы FPGA или ASIC с контроллерами памяти 5–10 DDR или HBM или у вашей компании есть опыт создания специализированных ASIC устройств с высокой пропускной способностью памяти, вы можете обойтись и без аппаратного обеспечения.
Однако в этой ситуации вам, вероятно, следует изменить свою бизнес-модель и вместо этого создавать видеокарты, поскольку это уже огромный рынок.
Вариант 2: Использование мобильных чипсетов следующего поколения
По мере того как растет использование смартфонов и мобильных 3D-графиков мы увидим более дружественную для мобильных устройств и высокую пропускную способность памяти.
Это могут быть решения для мобильных систем на кристалле со встроенным графическим процессором (например, NVidia Tegra X1) или автономный мобильный графический процессор (например, PowerVR Series 8XE), либо специализированные процессоры с высокой пропускной способностью или ориентированные на нейронные сети со встроенной памятью (например, Movidius Myriad 2).
Эти классы устройств будут продолжать развиваться, и если стоимость, мощность и пропускная способность памяти попадут в нужное место, мы вполне можем увидеть пользовательские майнеры Эфириума с 10-20 мобильными графическими процессорами или VPU, расположенными на одной плате.
Выводы
Последовательные выборки DAG страниц в алгоритме хеширования Ethash достигают пределов пропускной способности памяти современного аппаратного обеспечения.
В данный момент ограничен их теоретический максимальный хэшрейт.
Какими мы увидим будущие майнеры Эфириума? Они, вероятно, не будут основаны на ASIC или FPGA. Скорее всего, они будут основаны на готовых чипах (мобильных GPU или VPU), а не на форм-факторе традиционной видеокарты, который мы так привыкли видеть в современных компьютерах потому, что мобильных GPU или VPU более заточены под пропускную способность памяти.
Одна заключительная оговорка: Каспер
Эта статья написана о текущем протоколе Ethash, основанном на Proof-of-Work, который используется для майнинга Ethereum. В системах на основе Proof-of-Work, подобных этой, майнеры выполняют значительные объемы вычислений для нахождения новых блоков, и получают денежные вознаграждения.
Как только сеть Ethereum перейдет на систему Proof-of-Stake (предположительно после 2020 года с фазой Ethereum 2.0 или Serenity), денежные вознаграждения будут предоставлены держателям валюты Ethereum, а не майнерам, что, вероятно, сделает добычу Эфириума устаревшей.
Когда этот переход произойдет, пока неясно, ожидается, что первая фаза будет запущена уже 3 января 2020 года.
Вы можете прочитать больше о первой, подготовительной фазе Ethereum 2.0 или Serenity.