Что делает компьютер во время майнинга криптовалют простыми словами

computer crypto hashПонятие майнинг криптовалют знакомо многим не понаслышке, т.к. запускать программу для майнинга пробывали наверно уже все опытные пользователи ПК. Тот факт, что с помощью майнинга добывается криптовалюта и на этом можно заработать, знаком тоже многим. А вот, что конкретно делает компьютер или asic (специализированное устройство для майнинга) во время майнинга, зачем перебирать какие-то хеши, т.е. техническую сторону вопроса, уже знакома более узкому кругу пользователей. Из-за этого в сети возникает множество "теорий заговора", на подобие того, что Bitcoin это чей-то проект по завладению огромной вычислительной мощности для взламывания Пентагона или других подобных организаций. Что компьютерные мощности криптовалют используются для секретных научных разработок, общения с инопланетным разумом, а сами криптовалюты придумали как прикрытие для всех этих "темных дел". Далее мы постараемся наиболее понятно осветить процесс майнинга биткойна и какие задачи решает Ваш компьютер в это время, что бы Вы смогли более точно представлять техническую часть процесса майнинга, а на все "теории заговора" Вы смотрели как на не самую удачную шутку. 

 Сначала приведем небольшую теорию по технологии Блокчейн (Blockchain) для тех кто еще не знаком с этим понятием. 

Blockchain - в переводе цепочка блоков, что отражает суть, т.е. последовательная запись блоков. Блок это список транзакций (переводов). Т.е. получаем блокчейн это список переводов между криптовалютными кошельками, записываемых не по отдельности, а сразу большой партией.

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

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

Т.е. Blockchain это архив всех переводов, которые существуют и его нельзя подделать.

Что бы Blockchain обладал 100% надежностью и люди полностью доверяли сделкам через блокчейн, используется несколько технологий, в том числе и проверка работы, т.е. Proof of Work майнинг.

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

Что бы понимать дальнейшие повествование нужно знать следующие термины: Хеширование,  Хещ-функция и Хеш-сумма и другие.

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

Хеш-функция (алгоритм хеширования)- способ с помощью которого происходит шифрование. Написать текст задом наперед, заменить все буквы цифрами или объединить оба этих способа тоже можно назвать хеш-функцией. Для Bitcoin хеш-функция гораздо сложнее и называется SHA-256, Ethereum - Dagger Hashimoto, Litecoin - Scrypt.

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

Сложность хеширования (сложность майнинга) - для криптовалют сложность хеширования задается за счет включения дополнительного условия при создании хеш-сумм. Для этого в начале хеш-суммы добавляется неизменяемое число ноль (0). С увеличением сложности количество нулей в начале  хеш-суммы увеличивается. На данный момент хеш-сумма Bitcoin в обязательном порядке должна содержать 18 нулей.

Транзакция (перевод) - информация по передаче криптовалюты с одного адреса на другой, при этом эта информация так же хешируется в строку из 64 символов той же хеш-функцией (SHA-256 для биткойна), причем дважды. Хеширование транзакций происходит быстро, т.к. нету дополнительный условия к созданию хеш-функций, в отличии от нахождения хеш-функции всего блока. Хеш-сумму транзакции обычно называют TxID.

Nonce (случайное произвольное число) -  это число которое добавляется к данным блока для упрощения создания хеш-суммы с текущими условиями (сложностью майнинга).

Всю терминологию мы объясняем на обывательском уровне, для полного понимания обратитесь к другим источникам, например, википедии.

Зная и понимая терминологию можно уже понять что же на самом деле делает компьютер (процессор, видеокарта, asic, fpga) во время майнинга криптовалют

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

Наглядный пример поиска нового блока, хеш-суммы или майнинга криптовалюты:

bitcoin mining hashing

В данном примере рассчитано 4 хеш-суммы с разными Nonce числами (3001, 3002, 3003, 3004), хеш-суммы предыдущего блока и хеш-суммы транзакции остаются без изменений. 

Собственно из-за произвольного числа Nonce время появления нового блока не постоянно и может варьироваться в широких пределах, но в среднем математически время нахождения блока будет стремиться к одному заданному в программе числу.

Таким образом получаем, что майнинг криптовалют это подбор произвольного числа Nonce с последующим хешированием, что бы получаемая хеш-сумма блока после хеширования отвечала требованиям сложности сети (имела нужное количество нулей). Т.к. процесс хеширования не моментальный процесс и требует математических и логических операций от компьютера, поэтому для каждого алгоритма то или иное оборудование имеет свою скорость хеширования. Например, при хешировании по алгоритму Dagger-Hashimoto или Ethash видеокарта AMD Radeon RX580 в течении одной секунды хеширует 30 миллионов вариантов хеш-сумм с различным числом Nonce. Собственно поэтому и говорят, видеокарта RX580 выдает 30 мегахеш (MH/s). При этом скорость хеширования зависит не только от оборудования, но и от алгоритма шифрования, сложности майнинга и программного обеспечения (майнеров). 

Вся информация по блокам открыта в свободном доступе. Для биткоин можно посмотреть на сайте Blockchain.com. Пример блока под номером 613181 можно посмотреть ниже:

mining bitcoin block information 

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

Теперь Вы, наверно, спросите: "Зачем вообще все этого нужно?". Ответ на этот вопрос лежит в самой технологии блокчейн, которой для защиты данных от взлома нужно обеспечить определенный интервал появления новых блоков. И этот временной интервал как раз регулируется сложностью майнинга, а сам майнинг служит доказательством работы (Proof of Work), за которую майнер получает награду в виде вновь выпущенной криптовалюты в найденом им блоке. Совершаемая при этом работа тоже не бесплатна, т.к. требует покупки оборудования и траты ресурсов (электроэнергии). Поэтому и выстраивается устойчивая экономическая модель криптовалют, за счет которой у криптовалют появляется начальная материальная ценность в обществе.

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