Что такое майнинг, рассказываем на примере биткойна.

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

Сначала разберёмся, как работают биткойн-транзакции.

В общем виде схема проста:

  1. Создается платеж, то есть, биткойн-транзакция.
  2. Транзакция добавляется в новый блок.
  3. Когда транзакция появится в нескольких (от 2 до 6) новых блоках, она считается совершённой.

Создание транзакции

Когда вы отправляете платёж, вы просто оповещаете сеть о том, что хотите передать часть средств со своего кошелька на чей-то счёт. Информация об этом поступает ко всем участникам сети. Но пока она имеет статус неподтвержденной. Такое состояние означает, что узлы получили и проверили корректность вашего сообщения, но оно ещё не записано в журнал транзакций — блокчейн.

Включение транзакции в блок

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

Кто первый из майнеров находит новый блок, тот получает право записать его в блокчейн и получить за него награду. Все остальные узлы сети проверяют записанный этим майнером блок и добавляют его в свои копии блокчейна. Затем весь процесс повторяется. Сеть спроектирована так, что среднее время нахождения блока составляет 10 минут. Если участников сети становится больше или меньше, то сложность нахождения нового блока повышается или снижается до тех пор, пока среднее время снова не станет равно 10 минутам.

Подтверждение больше, чем в одном блоке

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

Считается, что после 6 новых блоков шансов изменить историю транзакции уже почти нет, но некоторые сервисы довольствуются и 2 блоками чтобы, уменьшить время ожидания перевода.

Что это за работа, которую нужно сделать, чтобы найти новый блок?

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

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

Очень простой пример: 3+7+9+15="34. Здесь 34 будет нашим хэшем, а 3", 7, 9,15 - исходными данными. Если бы вы были майнером, ваша задача была бы, зная число 34 найти числа 3,7,9,15. Как видно, угадать, что это за числа сложно, а проверить, выполнив сложение легко. Обратите внимание, что для такой простой функции как сложение есть много разных вариантов получения числа 34, например можно сложить 10+10+10+4. Мы привели в пример сложение здесь только для того, чтобы показать суть процесса. А вот с настоящими хэш-функциями всё уже будет не так просто, ответ у нее будет только один. И единственный способ его получить - это перебор всех возможных значений до тех пор, пока какое-нибудь из них не даст искомый хэш.

Для биткойна например такая хеш функция называется SHA-256, для Litecoina это Scrypt.

Майнинг нужен только для прохождения транзакций?

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

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

Пока больше 50% пользователей сети являются честными манерами, никто не сможет создать такую фальшивую цепочку блоков, так как она не получит одобрения большинства узлов сети.

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

Зачем майнеры занимается майнингом?

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

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

Всего в системе биткойна будет выпущено 21миллион монет, на 2017 год из них уже добыто 16 миллионов. А вознаграждение за блок уменьшалось в три раза. Сначала оно составляло 50 биткойнов, в 2011году упало до 25, а в 2016 до 12,5. Так к 2031 году оно составит всего 1 биткойн.

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

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

Что в итоге, манером быть выгодно?

И да, и нет. Мы говорили о том, что награду получает тот кто первым нашел блок. Не трудно догадаться, что чаще всего будет находить блок тот, кто обладает наибольшей вычислительной мощностью. Это делает майнинг конкурентным процессом и сподвигает людей постоянно наращивать свои вычислительные возможности, увеличивая тем самым и общую сложность сети. Сеть обязана подстраиваться так, чтобы блоки не выходили чаще чем раз в 10 минут. Это делает процесс майнинга со временем все более трудозатратным. Этим объясняется то, что для биткойна уже давно не актуален майнинг на видеокартах и, тем более, процессорах. Рост сложности сети заставил майнеров заняться разработкой специального оборудования - асиков, и продолжать их совершенствование. Если вы сможете получить самые новые асики первыми ваш доход будет практически гарантирован, но вот если вы последний в очереди или приобрели оборудование предыдущего поколения то сложность сети может возрасти быстрее чем оно успеет окупиться, и вы окажитесь в не очень приятной ситуации.

На видеокартах всё еще майнят, это выгодно?

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