Что такое AsicBoost и как эта технология ускоряет майнинг?

1193
Просмотры
FPGA mining: расчеты, версии майнеров и разработка своими руками

AsicBoost — это способ ускорения майнинга биткоина примерно на 20%. Впервые представлен в 2016 году в whitepaper, написанной доктором Тимо Ханке.

Повышение производительности достигается за счет высокоуровневой оптимизации алгоритма интеллектуального анализа BTC. AsicBoost применим ко всем типам аппаратного обеспечения и микросхемам.


AsicBoost — это оптимизация алгоритма. Метод основан на новом способе обработки рабочих элементов как внутри ASIC (новый дизайн), так и вне устройства (дополнительный шаг предварительной обработки в ПО для майнинг).

Результатом является улучшение производительности до 20%.

Техническая информация требует высокого уровня подготовки и опыта в данной теме. Мы постараемся привести только понятные широкой аудитории аспекты, написанные популярным языком.

Производительность улучшается через оптимизацию всех низкоуровневых процессов: синхронизация, конвейерная обработка, ячейки и т. д.

Микропроцессор создан на кристалле кремния. Кремний используется из-за своих свойств: может быть и проводником, и изолятором, то есть проводить сигнал и останавливать его.

Устройство состоит из транзисторов, их миллионы и они соединены наносвязями (затворы, gate) из меди или алюминия.

Чем быстрее переключается транзистор, тем выше работоспособность процессора.

Так вот, данная технология уменьшает количество затвором в кристалле, а это улучшает две основные затраты на майнинг биткоина: потребление энергии и стоимость системы. Меньшая мощность => меньшее охлаждение => меньшая стоимость устройства в пересчете на хэшрейт.

Заголовок блока биткоинов имеет длину 80 байтов. Он помещается в 2 блока для хеширования SHA-256: 64 и 16 байт. Он переводится в 32-байтовое значение, затем снова хэшируется (1 блок), чтобы получить окончательное значение, которое сравнивается с начальным.

Обычный способ выглядит так:

while True:
blockHeader = ... # based on Merkle root and other fields
sha256Block0 = sha256Expand(blockHeader[0 : 64])
midState = sh256Compress(sha256InitVector, sha256Block0)

for i in range(2**32): # Try nonces
blockHeader.nonce = i
sha256Block1 = padAndExpand(blockHeader[64 : 80])
singleSha = sh256Compress(midState, sha256Block1)

sha256Block2 = padAndExpand(singleSha)
doubleSha = sh256Compress(sha256InitVector, sha256Block2)
if doubleSha < target:
miningSuccessful(blockHeader) # Jackpot!

Цикл состоит из двух вычислений расширения и двух сжатия.

В AsicBoost заголовок блока sha256Block0 разный, но sha256Block1 одинаковый.

while True:
blockHeader = ... # based on various fields
candidates = dict() # 4 bytes -> sets of blocks
for i in range(...): # Generate the more the merrier
tempBh = blockHeader.randomizeMerkle()
sha256Block0 = sha256Expand(tempBh[0 : 64])
tempBh.midState = sh256Compress(sha256InitVector, sha256Block0)
candidates[tempBh.merkleRoot[28 : 32]].add(tempBh)

for i in range(2**32): # Try nonces
for key in candidates:
tempBh = candidates[key][0]
tempBh.nonce = i
sha256Block1 = padAndExpand([64 : 80])

for tempBh in candidates[key]:
singleSha = sh256Compress(tempBh.midState, sha256Block1)
sha256Block2 = padAndExpand(singleSha)
doubleSha = sh256Compress(sha256InitVector, sha256Block2)
if doubleSha < target:
miningSuccessful(blockHeader) # Jackpot!

Используется candidate group (группа кандидатов), не вычисляется все, а подбираются концы хэша, что уменьшает расходы на вычисления.

В чем проблема

Метод AsicBoost был изобретен Тимо Ханке в сотрудничестве с Серхио Демьяном Лернером (работает в RSK Labs, которая финансировалась Bitmain) и запатентован. Все, что касается биткоина, всегда распространялось бесплатно, с открытым кодом. Это часть идеологии.

Но эта разработка имеет патент, то есть за ее использование нужно платить отчисления авторам. И это делает майнинг неравнозначным: преимущество можно купить. Поэтому технология считается чуждой майнингу.

Считалось, что Bitmain использовала скрытый майнинг с AsicBoost и поэтому блокировала принятие segwit. Якобы это улучшение в майннете делало асикбуст несовместимым.

Но сами Bitmain говорили, что не используют технологию в главной сети. Также были доводы, что сегвит не отменяет ее использование, просто делает менее выгодным.

Вопросы, которые возникают в отношении AsicBoost, заключаются в следующем:

  • Приемлемо ли конкурентоспособное преимущество, которое оно обеспечивает,
  • Приемлемо ли использовать программы, которые работают в первоначальной системы.

В настоящее время у майнеров есть негласное соглашение не использовать программу, поскольку это наносит ущерб сети.

Однако это мнение не единогласно. Некоторые считают это способом, который обеспечивает эффективность процесса добычи. Сейчас конкуренция растет, а фермы для биткоина доступны далеко не каждому, так что технологию для ускорения майнинга используют чаще.

Одно точно, что технология является дискриминационной для тех, кто не имеет права использовать ее, что приводит к несбалансированному процессу майнинга.

2017 год: улучшение сети биткоина от Gregory Maxwell

Поскольку существует скрытый метод использования AcisBoost, это вредит сети. Было создано BIP8 для предотвращения этих скрытых форм, чтобы уменьшить централизацию сети.

Начиная с блока X и до тех пор, пока блок Y не выполнит транзакцию,
каждый блок ДОЛЖЕН либо содержать обязательство BIP-141 segwit, либо
обязательство WTXID (witness id транзакции) с идентификатором 0xaa21a9ef.

Ситуация в 2017 году устаканилась, хотя и поднимался скандал. SegWit был принят.

Сейчас некоторые пулы применяют технологию ускорения майнинга открыто. На текущий момент отметка около 2-5% сети.

Что такое AsicBoost и как эта технология ускоряет майнинг?

Это пулы BitClub Network, SlushPool, CKPool, F2Pool и другие.

Сама технология присоединилась к программе BDPL (Защитная патентная лицензия Blockchain).