236 / 691BOOST

ASICBoost

Повторное использование части вычислений между кандидатами заголовка

ASICBoost сокращает повторяющуюся работу в вычислениях майнинга. Он не обходит целевой хеш или правила валидности; польза зависит от чипа, подготовки заданий и разрешённых изменений заголовка.

ASICBoost совместно использует вычисление расписания сообщения SHA-256 для подходящих кандидатов заголовка блока. У них общая часть сообщения и разные промежуточные состояния; речь не о поиске двух одинаковых конечных хешей Bitcoin.

Timo Hanke описал ASICBoost в 2016 году и отметил сотрудничество с Sergio Demian Lerner. Проект сочетает подготовку работы вне ASIC с организацией вычислений внутри чипа. SHA-256 и требование соответствия конечного двойного хеша цели не меняются; экономятся повторяющиеся операции. [Timo Hanke — AsicBoost, 2016]

Заголовок Bitcoin занимает 80 байт. Первый SHA-256 делит его на 64 байта и оставшиеся 16 байт с padding. Merkle root охватывает обе части: последние 4 байта находятся во второй вместе со временем, bits и nonce. Поэтому важно точное положение изменяемых данных. [Timo Hanke — AsicBoost, 2016]

Hanke называет подходящие задания colliding work items: одинаковый Message и разные midstate из первой части. Для выбранного nonce можно повторно использовать message schedule второй части первого SHA-256 между этими состояниями. Это не коллизия полного SHA-256 и не одинаковые первые части заголовков: они различаются. [Timo Hanke — AsicBoost, 2016]

Lerner различает overt с изменением nVersion и covert с поиском Merkle root с одинаковыми последними 4 байтами и отличающейся первой частью. Covert может менять транзакции или их порядок, сохраняя корректные обязательства и зависимости. Изменяющийся nVersion сам по себе не доказывает конкретной экономии или личности оператора. [Sergio Demian Lerner — Overt and covert AsicBoost, 2017]

BIP310 использует mining.configure и version-rolling.mask; ответ является пересечением возможностей сервера и майнера. Отправка должна удовлетворять version_bits & ~last_mask == 0. mining.set_version_mask действует немедленно, а не со следующего задания. Version rolling не разрешает произвольные изменения битов или игнорирование новой маски. [BIP310 — Stratum protocol extensions]

На дату проверки BIP320 имеет статус Draft и описывает 16 общих битов nVersion; BIP323 также имеет Draft и предлагает замену на 24 бита. Отличайте эти документы от фактической маски и ПО конкретного соединения. Номер BIP не доказывает поддержку всеми устройствами или произвольное изменение консенсуса. [BIP320 — General-purpose nVersion bits] [BIP323 — 24 general-purpose nVersion bits]

Модель Hanke даёт x × (n − 1) / n, где x — процентная доля общего развёртывания, n — число подходящих заданий. При x = 25% и n = 4 получается 18.75%. Это модель вычислительной работы при данном допущении, а не автоматически такая же экономия ватт, цены или рост хешрейта каждого майнера. [Timo Hanke — AsicBoost, 2016]

Подтвердите поддержку чипа и прошивки, согласованную маску, принятую работу и потребление в сопоставимых условиях. J/TH всего устройства нельзя заменить названием функции или теоретическим процентом. ASICBoost не является синонимом разгона и не гарантирует нахождение блока или прибыль. [Timo Hanke — AsicBoost, 2016] [BIP310 — Stratum protocol extensions]

Для полной картины прочитайте эту статью вместе с ASIC Miner, Майнинг, Заголовок блока, Proof of Work. На эту статью также ссылаются 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Спецификация ↗
Сначала источники · Не является инвестиционной рекомендацией