Что такое майнинг криптовалют с точки зрения математики и криптографии

05.11.2021 |

Для статьи про майнинг криптовалют

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

Основной претензией к криптовалютам до сих пор остается высокое потребление электричества, и не всегда оно имеет экологическое происхождение. Хотя экспертные оценки и несколько расходятся в количестве потребляемой энергии, однако, никто не говорит об объемах, меньше десятых долей процента мировой генерации.

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

Главная задача майнинга

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

Главной же задачей майнинга является обеспечение достижения консенсуса о валидности той или иной транзакции. Это позволяет избежать двойной траты полученных ранее монет за время попадания записи о транзакции в общий распределенный реестр.

Что делают майнеры

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

Хеш-функция — это необратимый математический алгоритм, который преобразует любые входные данные в строку заданного размера. Блокчейн же, это цепочка блоков, данные в которой связаны между собой. При этом, все записи являются неизменяемыми и доступны для проверки подлинности всем участникам сети.

Для начала рассмотрим универсальный пример работы майнеров, работающих по алгоритму Proof of Work, а затем разберем на конкретном примере биткоина.

Процесс построения блокчейна

Ознакомившись с принципом работы блокчейна, нам становится понятно, что в блоке хранятся данные о транзакциях, которые хешируются и передаются в общую сеть. Однако, при простом хешировании информации о предыдущем блоке и осуществленных с момента его выпуска транзакциях на выходе мы получим строку, которая начинается, условно, 5а73… Отправив ее в сеть, мы получим отрицательный ответ — сеть его не примет. Главное условие приема блока криптовалюты сетью – начинаться его хеш должен с определенного набора символов. Для биткоина это определенное количество нулей. Именно так регулируется сложность вычислений, чтобы один новый блок майнеры выпускали в сеть примерно один раз в десять минут.

Один раунд поиска биткоина

Раунд хеширования SHA-256

*Источник: https://commons.wikimedia.org/ *

На примере выше изображен один раунд хеширования SHA-256. Получая на вход набор транзакций, обозначенных от A до H, алгоритм производит побитовые операции с ними, при этом, если большинство значений окажется равно нулю, то и на выходе будет получен ноль. В противном же случае на выходе окажется единица.

Операция Σ0 сдвигает первый блок три раза на 2, 13 и 23 бита, складывая полученные значения побитно операцией XOR. Аналогично работает и блок Σ1, только сдвиги происходят на 6, 11 и 25 бит. Функция Ch выбирает результирующий бит на базе бита в блоке E. Если в последнем содержится единица, то значение для выходных данных будет взято из блока F, при нуле из блока G.

Красными блоками обозначены операции 32-битного сложения, генерирующие новые данные для блоков A и E. Применив данный цикл к входным данным 64 раза, на выходе получается надежно зашифрованный хеш данных.

Из-за двойного шифрования в сети биткоина, майнерам приходится искать второй прообраз хеша x’ (имея первый прообраз x хеша y, где y=H(x)), который бы соответствовал условию y=H(x’). Но для упрощения работы был выбран частичный прообраз H(x)/2^(256-k)=0, где k – это количество нулей в выходных данных. Чтобы найти подходящий хеш при условии k=20 понадобиться около миллиона попыток грубого перебора с изменением параметра nonce в блоке.

Объединение усилий майнеров

В настоящее время одновременно высчитывается около 160 млн TH/s. Этот показатель хотя и не является историческим максимумом, но уже в ближайшее время стоит ждать увеличения выше 200 млн. Это не позволяет майнерам в одиночку находить блоки за сколь ни будь приемлемое время.

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

Вывод

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