Майнинг - это важнейший процесс для работы большого количества блокчейнов и криптовалют. С его помощью работает децентрализация блокчейна. Блокчейн, как вы уже знаете, распределен в виде идентичных копий между множеством узлов (нод), которые его хранят и добавляют в него новые блоки по мере необходимости. А необходимость эта возникает постоянно, потому как транзакции в основных криптовалютах происходят каждую секунду, и все их нужно занести в блокчейн, ведь только после попадания в блокчейн транзакция считается завершенной.
Майнинг - это и есть процесс формирования и добавления нового блока в блокчейн. Но в отличие от блокнотных листов, куда можно просто вносить записи о переводах, блокчейны типа proof-of-work требуют еще и решения сложной криптографической задачи. Proof-of-work буквально переводится как доказательство работы, и по сути это механизм защиты блокчейна от атак.
Вот есть блокчейн, и каждые N минут в него должен попасть новый блок с транзакциями. Как вы, надеюсь, помните, транзакции которые ожидают обработки находятся в мемпуле (mempool), и ожидают обработки майнерами. И каким-то чудесным образом должен быть сформирован новый блок, и в этом новом блоке должно быть какое-то количество транзакций. Как же это происходит? Давайте по порядку рассмотрим составляющие этого процесса.
Рассмотрим для примера блокчейн Bitcoin. В нем лимит информации в "теле" блока составляет 1Мб. При среднем размере транзакции в 250 байт мы получаем приблизительно 16 тысяч транзакций в блоке. Если в мемпуле висит 100 тысяч транзакций, только 16 тысяч счастливчиков будут обработаны в ближайший цикл, остальным придется ждать.
Решает рынок. Представьте автобус, где цена проезда любая, но в первую очередь посадят тех, кто даст больше денег. Кто-то, кто готов заплатить много, поедет сразу, а остальным придется часами торчать на остановке. Также и в майнинге. Единица оборудования для майнинга обычно называется риг (rig). В случае с биткоином это специально созданный для майнинга компьютер, также называемый ASIC. На нем установлено специальное ПО для майнинга. И эта самая программа нацелена на то, чтобы максимизировать прибыль майнинга. И как порядочные капиталисты, майнеры в первую очередь будут обрабатывать те транзакции, где комиссионные вознаграждения выше.
Блокчейн - это же децентрализованная штука, одноранговая сеть без "самых главных". Но все сотни миллионов майнеров должны как-то между собой решить, какой же блок будет добавлен следующим. И как-то прийти к согласию, и все это без какого-то центрального авторитетного узла. Тут-то в дело и вступает криптография. Дело в том, что при добыче блока недостаточно выбрать транзакции, которые будут добавлены в блок. Нужно еще решить задачу (challenge) по нахождению решения (nonce). Эта задача существует исключительно как фактор замедления и усложнения процесса. В алгоритм ПО на котором работают узлы Bitcoin заложен механизм проверки верного решения. Ответ заранее нигде не записан, но механизм опознает верное решение, когда оно найдено. И все майнеры соревнуются между собой: кто раньше найдет nonce, тот и сможет добавить блок, и получить причитающееся вознаграждение в виде комиссионных. Когда решение найдено, нода которая его нашла сообщает сети что решение найдено, рассылает полученный блок, и все остальные ноды проверяют тем же алгоритмом проверки, что решение верное. Если решение верное, то консенсус достигнут, блок записывается во все-все копии блокчейна во всех узлах, после чего стартует гонка за поиск следующего блока, и так до бесконечности.
Сам по себе блок содержит очень небольшое по меркам современных компьютеров количество информации, и устроен он просто. Без proof-of-work любой желающий, едва знакомый с программированием, мог бы наплодить миллионы блоков буквально за несколько минут и завалить ими блокчейн - это бы ничего не стоило, но сильно помешало работе системы. Механизм proof-of-work вынуждает майнера не просто штамповать блоки, а покупать дорогостоящее вычислительное оборудование и тратить кучу электроэнергии для попытки что-то в блокчейн добавить. То есть, майнинг делает попытки саботировать работу блокчейна, путем отправки туда заведомо ложных данных, крайне затратным и убыточным процессом. Результат такого саботажа весьма сомнителен, а вот затраты очень даже реальны.
В итоге пытаться добавить "левый" блок в блокчейн экономически невыгодно, да и сам майнинг приносит стабильную прибыль только если заниматься им всерьез и организованно. В итоге, система самоорганизуется: появляются майнинг-пулы где люди совместно майнят и делят прибыль между собой, а также майнинговые организации, массово закупающие оборудование и создающие целые дата-центры для майнинга. Этим серьезным людям не придет в голову пытаться саботировать работу системы, от которой зависит их прибыль и окупаемость вложений.