Алгоритми майнінгу
Для майнінгу в Етеріумі використовувався алгоритм, відомий як Етхеш. Основна ідея алгоритму полягає в тому, що майнер намагається знайти вхідний нонс за допомогою обчислень методом повного перебору, щоб отриманий хеш був меншим за поріг, визначений розрахованою складністю. Цей рівень складності може динамічно коригуватися, що дозволяє створювати блоки через регулярні проміжки часу.
Передумови
Для кращого розуміння цієї сторінки ми рекомендуємо спочатку прочитати про консенсус доказу виконання роботи (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.
Подальше читання
Знаєте ресурс спільноти, який вам допоміг? Відредагуйте цю сторінку та додайте його!