179
Интересно было что вычисляют при майнинге крипты, наткнулся на статью, до меня дошло, может и вам пригодится.
Понятие майнинг криптовалют знакомо многим не понаслышке, т.к. запускать программу для майнинга пробывали наверно уже все опытные пользователи ПК. Тот факт, что с помощью майнинга добывается криптовалюта и на этом можно заработать, знаком тоже многим. А вот, что конкретно делает компьютер или 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 минут у биткоин).
Наглядный пример поиска нового блока, хеш-суммы или майнинга криптовалюты:
via