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