Интересно было что вычисляют при майнинге крипты, наткнулся на статью, до меня дошло, может и вам пригодится.
Понятие майнинг криптовалют знакомо многим не понаслышке, т.к. запускать программу для майнинга пробывали наверно уже все опытные пользователи ПК. Тот факт, что с помощью майнинга добывается криптовалюта и на этом можно заработать, знаком тоже многим. А вот, что конкретно делает компьютер или 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 минут у биткоин).
Наглядный пример поиска нового блока, хеш-суммы или майнинга криптовалюты:
Источник
В данном примере рассчитано 4 хеш-суммы с разными Nonce числами (3001, 3002, 3003, 3004), хеш-суммы предыдущего блока и хеш-суммы транзакции остаются без изменений.
Собственно из-за произвольного числа Nonce время появления нового блока не постоянно и может варьироваться в широких пределах, но в среднем математически время нахождения блока будет стремиться к одному заданному в программе числу.
Таким образом получаем, что майнинг криптовалют это подбор произвольного числа Nonce с последующим хешированием, что бы получаемая хеш-сумма блока после хеширования отвечала требованиям сложности сети (имела нужное количество нулей). Т.к. процесс хеширования не моментальный процесс и требует математических и логических операций от компьютера, поэтому для каждого алгоритма то или иное оборудование имеет свою скорость хеширования. Например, при хешировании по алгоритму Dagger-Hashimoto или Ethash видеокарта AMD Radeon RX580 в течении одной секунды хеширует 30 миллионов вариантов хеш-сумм с различным числом Nonce. Собственно поэтому и говорят, видеокарта RX580 выдает 30 мегахеш (MH/s). При этом скорость хеширования зависит не только от оборудования, но и от алгоритма шифрования, сложности майнинга и программного обеспечения (майнеров).
Вся информация по блокам открыта в свободном доступе. Для биткоин можно посмотреть на сайте Blockchain.com. Пример блока под номером 613181 можно посмотреть ниже:
Когда компьютер производит десятки или сотни тысяч математических операций, что бы получить одну хеш-сумму или просто хеш и при этом за одну секунду обрабатывается 30 миллионов таких хеш-сумм, то при таком объеме работ, производимых компьютером, говорить о каком-то подборе паролей для взлома пентагона или другом тайном заговоре становится просто смешно.
Теперь Вы, наверно, спросите: "Зачем вообще все этого нужно?". Ответ на этот вопрос лежит в самой технологии блокчейн, которой для защиты данных от взлома нужно обеспечить определенный интервал появления новых блоков. И этот временной интервал как раз регулируется сложностью майнинга, а сам майнинг служит доказательством работы (Proof of Work), за которую майнер получает награду в виде вновь выпущенной криптовалюты в найденом им блоке. Совершаемая при этом работа тоже не бесплатна, т.к. требует покупки оборудования и траты ресурсов (электроэнергии). Поэтому и выстраивается устойчивая экономическая модель криптовалют, за счет которой у криптовалют появляется начальная материальная ценность в обществе.
В заключение можно сказать, что blockchain это надежный архив, а процесс майнинга это запись подтвержденной информации в этот архив. Майнеры в этом процессе получают награду за вполне понятную и нужную работу по поддержанию всей системы в рабочем и устойчивом состоянии.