236 / 736BOOST

ASICBoost

Менше повторної роботи під час пошуку дійсного блока

Петро вибирає обладнання для майнінгу й помічає ASICBoost у характеристиках. Назва схожа на кнопку додаткової потужності, але йдеться про кращу організацію обчислень. Пристрій виконує частину підготовки одразу для кількох спроб, а не повторює її щоразу. Кожна спроба все одно має відповідати правилам Bitcoin. Щоб оцінити користь, Петро повинен розрізняти теоретичну ідею, підтримку в конкретному пристрої та виміряне споживання енергії.

ASICBoost оптимізує майнінг Bitcoin завдяки повторному використанню частини роботи з обчислення хешів, цифрових відбитків заголовків блоків. Деякі витрати на спроби зменшуються, але умова успішного хешу не послаблюється. Потрібні відповідна підготовка завдань і конструкція обчислювального чипа.

Для схожих замовлень можна підготувати спільні дані один раз, хоча кожне замовлення все одно треба завершити окремо. Так можна пояснити ідею ASICBoost. Timo Hanke описав її у 2016 році, зазначивши співпрацю із Sergio Demian Lerner. ASIC — це чип для конкретного обчислювального завдання; зміна організації роботи усуває зайві повторення. Ні SHA-256, використовувана хеш-функція, ні правила Bitcoin не змінюються. Підсумковий подвійний хеш заголовка має бути не більшим за цільове значення, а весь блок — дійсним. [1]

Байт — одиниця вимірювання обсягу цифрових даних. Заголовок стисло описує дані блока й займає 80 байтів. Перший прохід хешування обробляє 64 байти, а потім решту 16 із передбаченим доповненням. Merkle root, спільний відбиток транзакцій, перетинає цю межу: останні 4 байти містяться в другій частині. Там також розташовані час, bits — компактний запис цілі майнінгу, та nonce — лічильник, який змінюють між спробами. Саме вибір змінюваних полів визначає, які обчислення можна використати знову. [1]

Hanke називає відповідні завдання colliding work items. Перші частини їхніх заголовків різні й створюють різні midstate, тобто проміжні стани обчислення. Натомість частина Message однакова. Для вибраного nonce чип може спільно використати message schedule — допоміжні значення для обробки другої частини першого SHA-256. Далі обчислення продовжуються окремо з різних проміжних станів. Це не однакові кінцеві хеші й не злам функції. Колізією тут називають збіг вибраної частини входу; перші частини заголовків відрізняються. [1]

Sergio Demian Lerner розрізняє overt і covert ASICBoost. Overt змінює дозволені біти nVersion, поля версії заголовка, без пошуку часткового збігу Merkle root. Covert шукає такий збіг: останні 4 байти Merkle root залишаються однаковими, а перша частина змінюється. Для цього можна змінювати допустимі дані транзакцій або їхній порядок, не порушуючи залежностей між транзакціями; записані відбитки мають і далі відповідати даним блока. Самі різні версії заголовків не доводять конкретної економії енергії й не встановлюють оператора. [2]

Пул координує роботу майнерів. Його сервер — комп’ютерна служба, з якою взаємодіє пристрій, — приймає результати за узгодженими умовами. Пристрій Петра не може довільно змінювати заголовок. Документ під номером BIP310 описує узгодження через mining.configure: version-rolling.mask указує змінювані біти, а відповідь обирає перетин можливостей майнера й сервера. Маска показує дозволені позиції, а не обіцяє більшу швидкість. Умова version_bits & ~last_mask == 0 вимагає, щоб надіслані біти не виходили за останню чинну маску. Повідомлення mining.set_version_mask набуває чинності негайно, без очікування наступного завдання. Firmware, програма керування пристроєм, має дотримуватися цієї домовленості. [3]

BIP320 пропонує 16 загальних бітів nVersion; BIP323, запропонована заміна, описує 24 біти. На час цієї редакційної перевірки обидва документи мають статус Draft, тобто проєкт. Це саме по собі не означає ані відсутності реалізацій, ані підтримки всіма пулами. Документ описує задумане використання поля; конкретне з’єднання залежить від фактичної маски й програм. Тому Петро не виводить дозволи свого пристрою з номера BIP і не сприймає пропозицію як автоматичну зміну правил мережі. [4] [5]

Hanke описує економію в моделі формулою x × (n − 1) / n. Тут x — частка спільної роботи, а n — кількість відповідних завдань. За x = 25% і n = 4 виходить 18.75%. Спільну підготовку виконують разом, замість того щоб повторювати для кожного завдання. Це результат моделі обчислень, а не автоматично таке саме зменшення споживаної потужності будь-якого пристрою. Інші електричні кола теж споживають енергію, а умови роботи впливають на споживання. Без вимірювань не можна переносити цей відсоток у прогноз продуктивності чи доходу. [1]

Спочатку Петро перевіряє підтримку чипа, firmware і взаємодію з пулом. Потім з’ясовує, чи пул приймає роботу, та вимірює весь пристрій у порівнюваних умовах. J/TH означає джоулі на терахеш: енергію, потрібну для трильйона спроб хешування. Для порівняння вимірювання мають охоплювати ті самі складові пристрою й той самий період. Назва ASICBoost їх не замінює. Це також не синонім розгону, коли підвищують робочу частоту, і не гарантія знаходження блока або прибутку. Частину роботи можна виконати ощадливіше, якщо це підтримує вся система. [1] [3]

Для повної картини прочитайте також ASIC Miner, Майнінг, Block Header, Proof of Work, Bitcoin, SHA-256. На цю статтю також посилаються Mining Firmware.

DOC · 001Timo Hanke — AsicBoost, 2016Первинне джерело DOC · 002Sergio Demian Lerner — Overt and covert AsicBoost, 2017Первинне джерело DOC · 003BIP310 — Stratum protocol extensionsСпецифікація DOC · 004BIP320 — General-purpose nVersion bitsСпецифікація DOC · 005BIP323 — 24 general-purpose nVersion bitsСпецифікація DOC · 006NIST — SI prefixesДокументація
Переглянуто: Спочатку джерела · Не інвестиційна порада