Алгоритмы майнинга
Последнее обновление страницы: 22 октября 2025 г.
Для майнинга Ethereum использовался алгоритм, известный как Ethash. Основная идея алгоритма заключается в том, что майнер пытается найти ввод nonce с помощью грубой силы, чтобы полученный хэш был меньше порога, определяемого вычисленной сложностью. Этот уровень сложности можно динамически регулировать, что позволяет производить блоки через регулярные промежутки времени.
Предварительные условия
Чтобы лучше понять эту страницу, мы рекомендуем вам сначала ознакомиться с консенсусом на основе доказательства работы и майнингом.
Dagger Hashimoto
Dagger Hashimoto был предшественником исследовательского алгоритма добычи Ethereum, который заменил Ethash. Это было объединение двух разных алгоритмов: Dagger и Hashimoto. Это была всего лишь исследовательская реализация, и к моменту запуска основной сети Ethereum его заменил Ethash.
Dagger (opens in a new tab) предполагает создание направленного ациклического графа (opens in a new tab), случайные фрагменты которого затем хешируются вместе. Основной принцип заключается в том, что для каждого nonce требуется лишь небольшая часть большого общего дерева данных. Перерасчет поддерева для каждого одноразового номера в майнинге невозможен — следовательно, необходимо хранить дерево — но это нормально для проверки ценности одного одноразового номера. Dagger был разработан как альтернатива существующим алгоритмам, таким как Scrypt, которые требовательны к памяти, но их трудно проверить, когда их жесткость памяти увеличивается до действительно безопасного уровня. Однако Dagger был уязвим для аппаратного ускорения общей памяти, и поэтому ему пришлось отказаться от других направлений исследований.
Hashimoto (opens in a new tab) — это алгоритм, обеспечивающий устойчивость к ASIC за счет привязки к операциям ввода-вывода (т. е. чтение из памяти является ограничивающим фактором в процессе майнинга). Теория состоит в том, что оперативная память более доступна, чем вычисления; исследования стоимостью в миллиарды долларов уже направлены на оптимизацию оперативной памяти для различных вариантов использования, которые часто включают шаблоны почти произвольного доступа (отсюда и «оперативная память»). В результате существующая оперативная память, вероятно, будет умеренно близка к оптимальной для оценки алгоритма. Hashimoto использует блокчейн в качестве источника данных, одновременно удовлетворяя (1) и (3) выше.
Dagger-Hashimoto использовал измененные версии алгоритмов Dagger и Hashimoto. Разница между Dagger Hashimoto и Hashimoto заключается в том, что вместо использования блокчейна в качестве источника данных Dagger Hashimoto использует специально созданный набор данных, который обновляется на основе данных блока каждые N блоков. Набор данных генерируется с помощью алгоритма Dagger, что позволяет эффективно вычислять подмножество, специфичное для каждого nonce, для алгоритма верификации легкого клиента. Разница между Dagger Hashimoto и Dagger заключается в том, что, в отличие от оригинального Dagger, набор данных, используемый для запроса блока, является полупостоянным, обновляясь лишь время от времени (например, раз в неделю). Это означает, что доля усилий по созданию набора данных близка к нулю, поэтому аргументы Серджио Лернера относительно ускорения за счет общей памяти становятся незначительными.
Подробнее о Dagger-Hashimoto.
Ethash
Ethash — это алгоритм майнинга, который фактически использовался в основной сети Ethereum в рамках ныне устаревшей архитектуры доказательства выполнения работы. Ethash — это, по сути, новое название, данное определенной версии Dagger-Hashimoto после того, как алгоритм был значительно обновлен, при этом он унаследовал основные принципы своего предшественника. В основной сети Ethereum всегда использовался только Ethash — Dagger Hashimoto был версией алгоритма майнинга для исследований и разработок (R&D), которая была заменена до начала майнинга в основной сети Ethereum.
Дополнительные материалы
Знаете ресурс сообщества, который вам пригодился? Измените эту страницу и добавьте его!