Инструкция по добыче одного блока биткоина

МАЙНИНГ | miningМАЙНИНГ | mining

Инструкция по добыче одного блока биткоина

Что такое блок

Начнем с того, что блокчейн (Block — блок, chain — цепь) — это децентрализованная база данных, которая предназначена для хранения последовательных блоков с набором характеристик (версия, дата создания, информация о предыдущих действиях в сети). Аналоговым примером его структуры представляется бесконечно длинная металлическая цепь, в которой нельзя разорвать или поменять местами звенья.

Блоки, найденные майнерами, и есть те самые звенья. При создании блока в нем делается запись обо всех предыдущих действиях и транзакциях, затем он запечатывается и сохраняется в блокчейн на тысячах клиентских устройств в сети. Таким образом, мы не сможем отредактировать, удалить или переместить их. Только найти и добавить следующие. В этом и скрыта вся прелесть технологии.

Зачем искать блоки

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

Впрочем, разработчики пытаются оптимизировать алгоритмы добычи или вообще избавиться от классического майнинга и изменить способ подтверждения транзакций с помощью PoS системы. Ведь на поиск биткоинов уходит невероятное количество энергии. Если взять за среднее значение показатели мощности и энергопотребления ASIC-майнера Antminer S9, то на данный момент сеть биткоина потребляет около 5 ТВт электроэнергии в час.

Немного теории

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

0000000000000000002037646f063ea032548c4906a6a2b6e16d7ee90c8ba9bc

Для справки: количество нулей bits в начале хэша регулируется автоматически для уравнивания сложности сети. Это необходимо, чтобы ограничить эмиссию монеты. Так как эмиссия биткоина ограничена объемом монет в 21 миллион, возникает необходимость регулировать и ограничивать количество добываемых блоков в сети. Это и есть сложность майнинга. Математический расчет показал, что последний биткоин будет добыт в 2140 году. Так, Сатоши Накамото, создатель биткоина, первым предложил внедрить алгоритм увеличения сложности поиска блока в сети. То есть чем больше майнеров присоединяются к добыче, тем сильнее система закручивает гайки.

Математическая задача

Возникает вопрос: если вычисления выполняются по инструкции, почему бы нам не попытаться найти блок вручную? Довольно простой алгоритм SHA256 можно повторить на бумаге, как это сделал в своем блоге американский энтузиаст-разработчик Кен Ширрифф.

Для криптографического перемешивания используются входные данные весом в 512 бит, которые впоследствии разделяются и образуют результат в 256 бит. Вычисление поделено на раунды, как на картинке ниже. Каждый такой раунд выполняется в 64 прохода.

После прохождения 64 кругов подбора на выходе получится уникальный код для шифрования свежего блока. Этот процесс довольно прост с точки зрения математических расчетов, но очень объемен и его практическое применение возможно лишь с учетом того, что каждый такой раунд будет выполняться молниеносно. Да, вручную такая задача решаема, но бессмысленна, ведь подсчет всего одного раунда будет длиться намного дольше, чем майнеры найдут валидный блок.

Так или иначе, каждый может попробовать себя в роли настоящего гения криптографии и найти блок биткоина на бумаге. Кен Ширрифф поделился знаниями и записал практическую часть процесса на видео.

Кратко разберем происходящее. Слова от A до H выписаны в столбик. Каждое из них записано в шестнадцатеричной системе, затем их переводят в двоичную. Итог maj находится под C, сдвиги и 0 записаны над шестнадцатеричным видом A. Функция выбора записывается под G, и, наконец, соответствующие сдвинутые версии E и значение после блока 1 идут над строкой с E. В нижнем правом углу выполняем сложение, результат которого необходим для вычисления следующих A и E. Справа сверху расположили новое значение A, а посередине — новое E.

Один раунд алгоритма вычисления блока выглядит следующим образом:

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

Почему так сложно найти блок

Далеко позади остались времена, когда можно было майнить биткоин видеокартой и мощным процессором. Сложность сети возросла так сильно, что на поиск одного блока в сети требуется огромная вычислительная мощность, а награда за него и вовсе уменьшилась с 25 до 12.5 биткоина. А в 2009 году за блок отдавали целых 50 монет! К 2020 году ожидается очередное двукратное снижение награды. Несмотря на автоматическую подстройку сети, алгоритмы математических расчетов остаются прежними как для биткоина, так и для любой PoW (Proof of Work) монеты.

Рассмотрим сеть биткоина в цифрах. В качестве эталонных значений возьмем характеристики ASIC Antminer S9j для майнинга биткоина, который умеет обрабатывать около 15 терахэшей, то есть ровно 15,000,000,000,000 хэшей, в секунду. Получается, что такая небольшая «машинка» сможет посчитать пример из видео 15 триллионов раз в секунду! Это невероятно для человеческого мозга, но крайне мало для майнинга и сети биткоина.

Сегодня хэшрейт сети биткоина перешагнул отметку в 50,000,000,000 GH/s. А это уже цифра космических масштабов — 50,000,000,000,000,000,000 хэшей в секунду. Пятьдесят квинтиллионов! Для сравнения, диаметр Млечного Пути составляет почти квинтиллион километров. А до ближайшей галактики нам лететь 25 квинтиллионов километров.

00:07
332