Майнинг: как это работает?

Майнинг

Процесс майнинга


Многие слышали о майнинге, знают, что за майнинг дают монеты, но как это работает, представляют очень смутно. Цель данной статьи — объяснить суть майнинга, его техническую сторону, пояснить Вашу роль в майнинге. Разобравшись в этом, Вы поймете, почему оборудование, которое еще год назад приносило 300$ в день, сейчас бесполезно. Вам также станет понятно, почему система сложна для взлома, почему в ней нету огромных эмиссий и в чем же ее отличие от доллара и евро и схожесть с золотом. Описывать процесс майнинга мы будем на примере Bitcoin, так как у Bitcoin очень грамотная wiki и большую часть информации я брал из нее.

Первое впечатление

Я сам узнал о криптовалютах не так давно — пару месяцев назад. О их существовании мне рассказал друг. Информация была очень поверхностная и смутная: я узнал, что есть такая тема как Bitcoin и Litecoin, что эта тема набирает популярность. Он упомянул слова «майнинг», «защищенность», «невозможно взломать» и т д. Вначале я отнесся к услышанному скептически, так как решил, что это очередная пирамида. Но чем больше я прошаривался в вопросе, тем больше я менял свое отношение к нему. Мне нравилось то, какие идеи лежат в основе криптовалют и как математически изящно они были реализованы. Из полученной информации от друга, я сделал вывод, что майнинг, это процесс создания криптовалюты и обогащение за счет нее. Если привести аналог из жизни, я думал, что майнинг похож на процесс постройки дома. Ты строишь дом, это происходит долго, так как процесс сложный, но в итоге получаешь дорогую собственность, которую можешь продать за деньги. Мне казалось, что как и с постройкой дома, количество добытых монет пропорционально зависит от твоих собственных рабочих мощностей: если работать в 2 раза быстрее, то и добыча монет будет идти в 2 раза быстрее. Разобравшись в вопросе я понял, что это представление кардинально ошибочно. Более того, оно нарушает одну из концепций криптовалюты. Новую аналогию можно будет придумать после того, как мы разберемся с процессом майнинга.

Вы наверняка слышали, что существуют «блоки», «хэши» и прочая «SHA-256», но немногие понимают, что это такое. Поэтому начнем с определений.

Определения

Хэширование. Основная статья.

Блокчейн (blockchain – цепочка блоков) – своеобразная база данных в которой хранятся все транзакции когда либо совершенные в системе. Она состоит из блоков, в которых находятся публичные данные. При этом шифрование хэшей не мешает их чтению, а просто создает связь между ними. Особенность чейна в том, что каждый блок связан математически в цепочке, его замена или удаление нарушит логику и целостность всей цепочки. Это делает систему защищенной от вмешательств со стороны.

Блок 

Это некоторый набор данных в котором хранится информация о всех транзакциях, проведенных за последнее время. Эти транзакции важны и должны попасть в блокчейн, чтобы все пользователи могли знать о них и чтобы в систему не смогли попасть «левые» транзакции. Помимо всех транзакций в блоке хранится и другая не менее важная информация. Нас интересуют шесть его полей, которые составляют заголовок блока. Заголовок постоянно изменяется из-за постоянного обновления хотя бы одного из его полей.  Заголовок принимает непосредственное участие в майнинге.

Поля в заголовке

 

Название поля Сокращение Описание
Bits
bits
 хэш Merkelroot
mrkl_root
 Хэш предыдущего блока
prev_block
 Хэш блока, к которому привязан данный блок.
 Время
time
 Порядковая секунда создания блока. За нулевую отметку берется дата 1970-01-01 T00:00 UTC
 Версия
ver
 Версия присоединяемого блока
 Число nonce
nonce

 

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

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

Майнинг

Теперь, когда мы ввели основные определения, мы можем говорить о том, что такое майнинг.

Майнинг – процесс присоединения нового блока в блокчейн (подписывание блока). Для того, чтобы система была защищенной, процесс присоединения очень хитрый и трудоемкий. Трудоемкость обуславливается тем, что Вашему компьютеру нужно решить сложную задачу, которая требует определенного времени.  А вся хитрость в заголовке, который мы пытаемся добавить.

Один из принципов криптовалюты заключается в том, что эмиссия всегда одна и та же и в данный момент составляет 25BTC за 10 минут. Для того, чтобы это было возможным Сатоши Накомото придумал следующую задачу для подписывания:

Ваш компьютер хэширует заголовок присоединяемого блока, после этого заголовок немного меняется. Так как он меняется, при следующем хэшировании  получится другой хэш. Компьютер должен пытаться сделать как можно больше таких хэшей меняющегося заголовка. Их количество на простеньком айсике — 50 миллиардов единиц в секунду. Первый майнер, нашедший хэш среди миллиардов получающихся, который будет меньше некоторого заранее заданного «красивого» хэша, объявляется «победителем». Полученный хэш передается его всем остальным пользователям в сети . Далее он проверяется на подлинность. Проверяют, действительно ли Вы выполняли задание, или решили всех обмануть, прислав случайный набор чисел. После проверки номер хэша присваивается блоку, чей заголовок мы хэшили и он записывается в чейн. Говорят, что хэш подписывает блок. Блок рассылается всем пользователям сети и хранится на всех компьютерах сети. Таким образом нельзя подделать какую-то общую базу данных, так как сотни тысяч копий хранятся по всему миру.

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

Для того, чтобы система существовала и люди были заинтересованы, майнеру, нашедшему нужный хэш, дают 25BTC. Эта плата и запутывает людей. Многие считают, что главная цель майнинга — генерация и получение монет. На самом же деле главная цель — присоединение блоков, а получение монет — плата за предоставление Вами мощностей для этого процесса, а также средство привлечения новых людей .

Чтобы понять зачем эта странная задача, и что за «красивый» хэш, расскажу подробнее про поле Bits из заголовка блока:

Bits

Bits отвечает за, так называемый, «красивый» хэш, с которым Вы сравниваете, генерируемые Вами хэши. Красивым он называется из-за того, что определенное количество первых символов в хэше — нули. Также «красивый» хэш имеет математическую особенность: в среднем около 10 минут тратятся для того, чтобы хотя бы 1 человек в мире при данной скорости майнинга, сгенерировал хэш меньше «красивого» (математика это гарантирует!).

Текущий красивый хэш. Но кто же определяет, что «красивый» хэш должен быть именно таким? Какая в этом логика?

Один раз в 2016 подписей (примерно раз в 2 недели) отрабатывает, так называемая, «текущая сложность майнинга». Для того, чтобы скорость эмиссии не зависела от увеличения/уменьшения мировой скорости майнинга, раз в две недели система анализирует относительное изменение скорости майнинга и соответственно изменяет сложность «красивого» хэша. Поэтому меняется поле bits. Если Вы закупили новое оборудование,  увеличится лично Ваш доход, а у кого-то в системе он уменьшится. Скорость появления самих коинов остается практически постоянным.

С эмиссией разобрались, но как же система защищается от подмены и внесения фэйковых транзакций? Для этого рассмотрим поле Merkel Root.

Хэш Merkel Root

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

Представьте, что Вася заплатил Пете 100 рублей. При проведении транзакции в обычном банке, система фиксирует о ней какие-то ключевые данные: номер счета получателя, номер счета отправителя, время транзакции, сумма и т д. По этим данным мы можем найти наш платеж в будущем. Но так как эта информация (некоторые данные), например

Вася; Петя; 20.01.2014; 01:02:03; 100руб

То по этим данным можно создать хэш

c3c142ec7468269e817b1da960257cdcef0fc9f339eda91d0fda19213ac05352

По другой транзакции

Петя; Вася; 20.01.2014; 02:03:04; 200руб

также можно создать хэш

07c32c1b7d82a4de40e34eaffc73d680c0bee9a7dcfcb3f1ea42dd5c9bb62ad4

Но два хэша, это тоже некоторые данные, по которым мы можем создать хэш.

Хэшируя

c3c142ec7468269e817b1da960257cdcef0fc9f339eda91d0fda19213ac05352; 07c32c1b7d82a4de40e34eaffc73d680c0bee9a7dcfcb3f1ea42dd5c9bb62ad4

получаем

65ec781ddccc94a7fb4edb4ba4e0d90a4ce931868f5ba4a60fb4db9b755b44c1.

Что же мы сделали? Мы взяли каждую из транзакции, создали по ней хэш и затем по получившимся хэшам создали еще один хэш. Это и есть Merkel Root.

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

Следующее поле отвечает за то, чтобы в блокчейн не внесли блок задним числом:

Хэш предыдущего блока

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

Время

Время попытки подбора хэша.

Версия

Самый нехитрый из всех полей блока. Простое число, отображающее версию блока. В данный момент это число — 2.

 

Nonce

При майнинге Ваш компьютер хэширует заголовок огромное количество раз в секунду. Так как количество переборов хэшей в секунду невероятно велико, может возникнуть ситуация, когда ни одно из вышеперечисленные полей не поменяется. Для этого и создано поле nonce, которое каждый раз изменяется при новом хэшировании. Это гарантирует создание уникального хэша.

Каждые 4 года вознаграждение за присоединение блока к цепочке уменьшается в 2 раза. Следующее уменьшение будет в сентябре 2015 года. Таким образом конечное количество Bitcoin стремится к 21.000.000 единицам.

И в заключение

Сейчас я думаю, что майнинг похож на поиск иголки в стоге сена. При том стог увеличивается в зависимости от количества людей, которые ищут иголку.

Если Вам непонятны какие-то моменты статьи — спрашивайте в комментариях.

В следующих постах мы расскажем, что такое майнинг в общем пуле. Оставайтесь с нами! :)

 

За то, что Вы осилили эту статью держите порцию счастья:

 

 

Ответить

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*