Хабрахабр

Под капотом Bitfury Clarke — как устроен наш новый чип для майнинга

В конце сентября мы представили новый ASIC-чип, разработанный специально для SHA256-майнинга в сети биткоин. Сегодня расскажем, что у него внутри.


Изображение: Bitfury Group

Пара слов о биткоин-майнинге

Цель майнинга — защита блокчейн-сети. Майнеры используют свое железо для решения сложных вычислительных задач, которые гарантируют целостность транзакций в сети и исключают атаки типа double spending. Параллельно майнинг выступает механизмом генерации криптовалюты, которую майнеры получают в качестве вознаграждения (сейчас — 12,5 биткоинов за один блок).

Искомое значение формируется на основании хеша предыдущего блока, случайного числа (называемого nonce) и суммы хешей транзакций за последние десять минут. Вычислительные задачи, о которых идет речь, связаны с подбором хеша, который совпадет с транзакциями в блоке. Для оценки сложности используют разложение в модифицированный ряд Тейлора. При этом должны выполняться два условия: хеш обязан соответствовать заявленной сложности майнинга и иметь строго определенное количество нулевых битов в начале.

Он включает 64 итерации, во время которых происходит «перемешивание» битов транзакций в блоке с помощью операций сдвига и «сложения по модулю 2». Хеши в биткоин-блокчейне вычисляются по алгоритму SHA256. Подробнее о майнинге и майнинговых пулах, в которые объединяются участники блокчейн-сетей с целью ускорить решение блоков, мы писали в нашем блоге. Результат применения функции SHA256 считается необратимым, именно по этой причине целевой хеш находится путем грубого перебора.

Раньше для перебора значения nonce и подбора хеша использовали CPU и GPU, но со временем из-за постоянно увеличивающейся сложности майнинга (она меняется в зависимости от совокупной вычислительной мощности всех участников биткоин-сети) были спроектированы специализированные интегральные схемы ASIC.

Всего мы создали пять поколений майнинговых чипов, а в сентябре представили шестое — речь об ASIC Clarke, заточенном специально под решение хешей SHA256. Мы в Bitfury тоже занимаемся разработкой таких решений.

Как устроен Clarke

Clarke изготовлен по 14-нм техпроцессу и реализован в форм-факторе FC-LGA 35L размером 6x6 мм. Второй корпус имеет более эффективную разводку цепей питания на плате. Чип за секунду решает 120 гигахешей, но дает возможность регулировать производительность в зависимости от того, что сейчас нужно майнеру — больший хешрейт или низкое энергопотребление. В частности, можно добиться коэффициента энергоэффективности в 55 мДж/гигахеш, так как для питания чипа достаточно 0,3 вольта. Структура Clarke выглядит так:

Генератор тактовых сигналов. Он задает синхроимпульсы для работы чипа. Уровни напряжения: VSS = 0, VDD = 1.

Он похож на шину SPI с контактами передачи данных MOSI и MISO (служат для передачи данных от ведущего устройства к ведомому и наоборот), объединенными линией SDATA. Последовательный управляющий интерфейс, соединенный с внешним контроллером последовательной шиной.

Вот некоторые из них: task write для записи нового задания, force task switch для принудительного переключения буфера, read nonces для чтения значения nonce и др. Интерфейс отвечает за передачу команд. Все команды имеют один шаблон и содержат код, длину, поле данных, байт состояния чипа, данные из буфера nonce и контрольные суммы.

Контрольные суммы представляют собой арифметическую сумму байтов, начиная с нулевого. Например, checksum команды 04 03 03 8c 18 00 будет равняться AE.

Маска «лежит» в буфере задач и используется для установки диапазона вычислений. Система управления nonce. Управляет процессом вычисления хеша с учетом маски. Она определяет биты в nonce, которые останутся неизменными при поиске нового значения.

Всего буферов два, что позволяет быстро переключаться между задачами. Буферы задач. Нужны для вычисления хешей (их длина 20 двойных слов). Пока первый буфер занят решением хеша, во второй пишутся данные для следующих вычислений.

8154 ядра кольцевого хеша. Они используют двойной алгоритм SHA256.

Для примера мы привели процесс обмена данными в чипе, происходящий во время вычисления хешей (в спойлере ниже): Буфер nonce. Это кольцевой буфер длиной в 12 двойных слов, куда пишутся решения хешей.

Обмен данными в чипе (на англ)

// Program clock generator to value 0x20 and prescaler=1 (disabled) Send: 0803038c1800
Recv: f0b200b2
// Set nonce mask to 0x00000000
Send: 200300000000 Recv: f0230023
// Force task switch Send: 020000
Recv: f0020002
// Send task
Wi 0=CD3F992C 1=037F8197 2=A58E091A
MS0 A=0CAD7CD1 B=CBE38FD9 C=D14DC164 D=F90EB10B E=819621CF F=358D45CD G=8C14CAE3 H=538EF887 MS3 A=5FF18CDD B=8CDA24A4 C=180266F9 D=0CAD7CD1 E=B0CA39FA F=DD30B962 G=36D2CBC6 H=819621CF NONCE=D5D0E8B9
Send:_014fa607d67b614925737be76bce53a41ba12b3c8b659f27ef6726be6049f924522d2b3c8b659c78616c779 a13c81a609
35067953386a9d52b3d0f24a3b0a607d67bb2a8cc5326708e0ef55b267700000000 Recv: 0fb200b2
// Force task switch
Send: 020000
Recv: 0f020002
// Read nonce buffer
Send: 040000 Recv:_0f04000000000000000000000000000000000000000000000000000000003ffffffc7f7a42132ffffffc 1ffffffc0001ffbf8c
FIFO[0] = aaaaaaaa
FIFO[1] = aaaaaaaa
FIFO[2] = aaaaaaaa
FIFO[3] = aaaaaaaa
FIFO[4] = aaaaaaaa
FIFO[5] = aaaaaaaa
FIFO[6] = aaaaaaaa
FIFO[7] = 3ffffffc
FIFO[8] = d5d0e8b9 < — nonce value
FIFO[9] = 2ffffffc < — task switch marker
FIFO[A] = 1ffffffc < — task switch marker
FIFO[B] = aaab5515

Где будет использоваться чип

Сейчас мы устанавливаем новые устройства в собственные майнинговые серверы и мобильные дата-центры BlockBox. Мы также модифицируем биткоин-фермы в Канаде, Исландии, Грузии и Норвегии (запустили в начале года).

В частности, они поставляются вместе с майнерами Bitfury Tardis, разработанными для крупных организаций. Чипы Clarke будут доступны и как коммерческий продукт. Этот майнер можно будет модернизировать — в будущем установленные в нем ASIC Clarke получится заменить новыми чипами. В Tardis влезают 5–8 плат, способные вычислять до 80 терахешей за секунду.

Это — наш небольшой видеоролик, представляющий концепцию нового чипа:

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть