Что такое майнинг криптовалют?
Короткий ответ: майнинг — это быстрая поочередная подстановка чисел в одну и ту же математическую функцию. Из чего состоит любая функция?
Из трех частей:
- входные данные — аргумент, икс
- алгоритм, который их как-то изменяет — принято обозначать буквой f
- конечные данные — значение функции, игрек
Получается привычная школьная запись, f(x)=y. Функции, пригодные для майнинга, обладают специальными свойствами. Почему так — расскажем ниже, а пока представим, что вся математика — такой «чёрный ящик», в который мы загружаем одно число, а получаем другое, нужное нам. Оно начинается на определенное число нолей, его легко узнать. Почему оно такое нужное? Это поймём, ответив на вопросы:
- Почему криптовалюты не существуют без майнинга?
- Что делает функцию майнинга такой особенной?
Отвечаем на первый вопрос. Зачем нужен майнинг?
Майнинг криптовалютам нужен, потому что без него будет некуда записывать денежные транзакции. Не потому, что за него получают токены: это только побочный эффект, как выработка кислорода зеленью в процессе фотосинтеза. Помните?
В статье про блокчейн мы разбирались, что он из себя представляет, и пришли к выводу, что его можно сравнить с дневником, страницы которого «пришиты» одна к другой так, чтобы было очень трудно вырвать или вставить новые. Страницы, кстати, заламинированы: если они попали в «дневник», на них уже ничего не напишешь и не сотрёшь.
Майнинг — создание новых страниц дневника, и, что важнее, особый способ «пришивания» их к старым. За него положена награда.
Вот так эта награда изменялась в сети биткоин, здесь учитываются награды за майнинг и комиссионные. Как видим, лучше всего майнерам жилось под новый год.
А кому нужен этот дневник? Что с ним теперь делать?
Скопировать много раз и сверять копии между собой. Свойство, за которое ценят блокчейн — невозможность фальсифицировать его данные. И не потому, что он хранится в сейфе какого-то банка, которому мы очень сильно доверяем. Даже наоборот. Защищенность блокчейна от подделок держится на том факте, что его копии параллельно друг с другом, децентрализованно сверяет множество людей. Да, прямо хранят всю эту огромную базу данных у себя на компьютерах. И проверяют прямо сейчас. Ни один из них не заинтересован в том, чтобы сосед изменил блокчейн и присвоил себе их деньги. Самую распространенную версию блокчейна договариваются считать верной. Из-за того, что одновременно проверяют блокчейн много людей, его очень трудно подделать.
Процесс «прошивания» дневника задуман так, чтобы при проверке не нужно было перечитывать, что написано на страницах. Достаточно удостовериться, что математическая «нитка», скрепляющая листы, нигде не разорвана, а это просто. Нельзя вырвать или вставить страницы в дневник, все это сразу заметят. Можно только полностью, с самой первой страницы, «заново сшить» его. Процесс требует времени, ведь сводится, как мы уже знаем, к последовательной подстановке множества чисел в сложную функцию.
Вот настолько часто к блокчейну биткоина присоединяются новые блоки. В 2009 время составляло 17 минут, в 2013 — только восемь, а сейчас в среднем 9,5: почти эталон.
Правда, это только усредненные значения: на недельном графике хорошо видно реальный разброс: от 9 минут до 15.
Хорошо, допустим, блокчейн не подделать. Но почему к нему нужно постоянно «пришивать новые страницы»? Всем ведь нужен биткоин, а не «страницы» блокчейна.
Важно, чтобы в блокчейне всё время появлялись новые страницы: там записаны детали всех транзакций пользователей. На поле криптовалют нет денег «самих по себе», нет «как таковых» денег. Любые деньги представлены в виде транзакций. Если деньги сейчас «находятся у вас», значит, что где-то на блокчейне записана транзакция, сообщающая, что вам их кто-то перевел.
Тот факт, эти деньги сейчас принадлежат вам — в некотором роде частность: вы просто пока не отправили их никому другому. Правом распоряжаться своими деньгами любой человек обладает постольку, поскольку правильной считается та версия блокчейна, где записан перевод денег к нему на кошелёк и не записан перевод от него к кому-нибудь ещё. Кстати, можно не бояться, что вдруг эта версия перестанет считаться правильной. Для этого нужно, чтобы больше половины мировых «узлов сети», то есть компьютеров, где хранится блокчейн, сочли правильной поддельную версию блокчейна злоумышленника. Этого он добьётся, только если узлы физически будут принадлежать ему.
График использования разных версий блоков биткоина. Не пугайтесь: они отличаются только техническими деталями, сами транзакции в сохранности.
Сегодня по всему миру один только блокчейн биткоина постоянно проверяет около 10 000 «открытых» узлов, то есть не скрывающих своего существования, и предположительно от 50 до 60 тысяч «закрытых» узлов. Это делает «атаку 51%» невозможной на практике. Узлы принадлежат крупным сообществам майнеров и компаниям из разных стран мира. У них хранится много криптовалюты, и они не хотят потерять её. Эти организации жестко конкурируют между собой, чтобы не дать другу переписать блокчейн на свой лад. А значит, сговор между игроками рынка на практике невозможен.
На карте синим отмечены 11 с лишним тысяч узлов сети биткоин, которые находятся в открытом доступе. Все эти компьютеры хранят часть или целый блокчейн на своих жестких дисках.
Значит, есть люди, которые могут просматривать блокчейн? Нужны какие-то специальные программы, компьютеры? Насколько сложно там во всём разобраться?
Совсем не сложно. Просмотреть весь блокчейн биткоина сегодня можно прямо в браузере — например, на сайте blockchain.info. Да, весь гигантский электронный блокнот с прошитыми страницами полностью хранится у кого-то на мощных серверах — и их много по миру, такие серверы называются «полными узлами» сети. Сегодня этим занимаются уже не одиночки-любители, а крупные коммерческие компании. Штаб-квартира blockchain.info, например, зарегистрирована в Люксембурге. А чтобы понять, сколько данных приходится хранить и обрабатывать, оцените временной график роста размера блокчейна биткоина (на сегодня там уже более 160 000 МБ данных).
Толщина нашего «дневника» на восьмилетнем графике растёт плавно и экспоненциально.
Есть, правда, такие блокчейны, которые просматривать могут не все. Но это обычно собственные блокчейны банков или крупных компаний (да, кое-где с ними уже работают). Посредством них фирмы организуют поставки клиентам, ведут аудит или борются с нелегальными товарами. На блокчейн, как оказалось, удобно записывать данные о корпоративных закупках — исключаются мошенничество и контрабанда.
Выходит, майнинг ведется постоянно?
Да, прямо сейчас к одному из блокчейнов «пришивают новую страницу», или, если говорить специальными терминами, присоединяют новый блок. И получают за это награду. Награду, правда, никто не «выдает» физически — просто на новой странице блокчейна в самой первой строчке, перед всеми остальными, автоматически вписывается транзакция майнеру.
Транзакции, или переводы денег, всегда содержат два адреса, верно? Два человека, один из которых отправил деньги, а второй — получил. Но транзакция майнеру — особый случай, её еще называют «генерирующей», так как исходного адреса попросту нет. Новые деньги появляются прямо из ниоткуда, из воздуха, выражаясь языком экономики — эмитируются.
Но не стоит думать, что из-за этого они ничем не обеспечены: тот факт, что майнер должным образом «пришил» новую страницу к блокчейну, служит доказательством выполненной работы, затраченных ресурсов и времени. Должным ли образом он это сделал — проверяется математически, и очень легко.
В реальности это выглядит прямо вот так. Самый первый адрес справа получил вожделенную награду за новый блок — на сегодня она составляет 12,5 биткоинов. Скорее всего, эту награду поделят между собой много людей, которым принадлежит выполнившая работу майнинг-ферма. Воспользоваться вознаграждением можно, по правилам сети, только когда «поверх» нового блока будут присоединены несколько новых, это защищает от мошенников, так как каждый следующий блок доказывает подлинность всех предыдущих. Обычно перед тем, как майнеры получат вознаграждение, проходит около суток.
Добавим, что, вообще-то, не совсем грамотно говорить о том, что криптовалюты обеспечиваются электроэнергией и вычислительной мощностью: ведь токены нельзя «обменять» на вычислительную мощность. Правильнее будет сказать, что криптовалюты самоценны, обеспечены спросом на них. Это может звучать пугающе (вдруг спрос упадет?), но всё в порядке.
Примерно так биткоин искали в интернете. Пики приходятся на март и декабрь 2013, а также на декабрь 2017 года.
Люди готовы платить за биткоин, поскольку тот обладает свойствами денег, и даже кое в чем превосходит обычные деньги. Золото до его применения в медицине и промышленности (то есть почти всю историю) тоже ценилось исключительно за свои денежные свойства: ограниченность и трудоемкость добычи. Но золото не обесценивалось, спрос на него не падал. Обеспеченность денег только спросом на деньги — нормальная ситуация.
А почему, если новый биткоин «появляется прямо из воздуха» я должен поверить, что он когда-нибудь закончится? Это держится на чьём-нибудь обещании?
Ни в коем случае. Помните, мы упоминали о том, что награда за новый блок биткоина сейчас составляет 12,5 BTC? Эта цифра — непростая, и она была такой не всегда. Награда за создание первых блоков биткоина составляла 50 BTC. Но каждые 210 000 блоков награда майнерам уменьшается в два раза. По времени это происходит примерно раз в четыре года. Эта особенность — часть алгоритма многих криптовалют, если она есть, её невозможно убрать.
Разнятся только конкретные цифры. А значит, легко подсчитать общее количество токенов конкретной валюты. Для этого пользуются формулой суммы членов убывающей геометрической прогрессии (50 → 25 → 12,5 → …). Её все проходили в школе. В 2031 году размер награды при создании блока биткоина составит менее 1 BTC и продолжит стремиться к нулю.
На графике — зависимость планируемых объемов эмиссии от времени. Теперь вы сможете авторитетно объяснить, почему биткоин не бесконечен!
Насовсем эмиссия биткоина остановится в 2140 году, поскольку награда за блок не сможет превышать 10-8 BTC, мельчайшей неделимой части биткоина. Есть криптовалюты без ограничения эмиссии, как у Dogecoin, а есть те, где выпускается сразу 500 миллиардов монет, а не 21 миллион. Эти вещи лучше уточнять, интересуясь конкретным проектом. Для нас важно, что ограниченность криптовалюты подтверждается формулой вычисления суммы прогрессии, а не обещаниями политиков, как в случае с обычными деньгами.
Значит, когда будут добыты все токены, майнинг прекратится?
Вовсе нет. Хотя майнеры перестанут получать прямые выплаты за создание блока, людям всё равно придется создавать новые страницы блокнота, чтобы записывать в них транзакции, расплачиваясь криптовалютой. Стимул майнить новые блоки никуда не исчезнет — вспомните, за пересылку криптовалют вы всегда платите небольшую комиссию.
Эта комиссия выплачивается именно майнеру, создавшему блок. На одной «странице» блокчейна биткоина в среднем умещается около 2 тысяч транзакций, и сумма накапливается внушительная. Когда токены «закончатся», именно эта сумма должна, по замыслу создателя биткоина, стать основным заработком майнеров. Деньги не такие большие, как нынешнее вознаграждение, но предполагается, что цена на полностью добытую криптовалюту резко повысится, ведь новых токенов уже не будет.
Столько транзакций биткоина майнеры обслуживают в день. На пике роста цены, в декабре, почти доходило до пятисот тысяч.
А все криптовалюты майнятся одинаково?
Нет, блокчейнов — множество, и существуют они независимо друг от друга. Пришивать к ним новые страницы могут как разные люди, так и одни и те же, это невозможно узнать. Способов сшивать страницы блокчейнов тоже много, и в основном они отличаются действиями, которые выполняет компьютер майнера.
То есть нитка везде одинаково (или почти одинаково) прочная, и проверить ее целостность должно быть легко на любом блокчейне, разница в том, что где-то, к примеру, завязывают узелки только левой рукой, или только не больше одного узелка в минуту. Такие ограничения придумывают создатели блокчейнов, чтобы регулировать сложность майнинга, создавать между майнерами конкуренцию, или контролировать скорость создания новых блоков.
Создатель блокчейна биткоина, Сатоши Накамото, остался анонимным, так что мы даже не знаем, был ли это один человек или группа лиц. Но сегодня блокчейны создают команды известных программистов, организуют корпорации, устанавливают правила работы своего продукта. С ними можно связаться и получить техническую поддержку. Если проект становится успешен, они страшно богатеют, поскольку на токены их блокчейна растет спрос, а они обычно заранее резервируют себе солидную часть.
Вот столько криптовалют насчитывалось в середине 2013. Потом они перестали умещаться на графике.
Важно понимать, что хорошие новые блокчейны создаются не ради токенов, а решают практическую задачу. Об этой задаче сообщают разработчики в официальном описании проекта, но иногда она только маскирует явное намерение заработать легких денег. Чтобы не дать ICO себя обмануть, почитайте эту статью. А ещё — просто не забывайте, что блокчейн не решит никаких мировых проблем, которые не решаются с помощью дневника, записи в котором невозможно подделать. Чем сегодня можно добывать ту или иную криптовалюту — предлагаем посмотреть в нашей второй статье о майнинге.
А мы пока осторожно спустимся на один шаг ниже от абстракции про дневник со сшитыми страницами, и попробуем подробнее разобраться, как работает алгоритм майнинга.
А значит, мы уже отвечаем на второй вопрос. Что делает функцию майнинга особенной?
Функция, о которой идет речь, в математике называется криптографической хеш-функцией. Она работает со строкой чисел произвольной длины, хитрым образом перерабатывая ее в строку заранее заданной длины. Важное свойство такой функции — однонаправленность. Этим термином часто пользуются в криптографии, науке о шифрах. Помните наш «черный ящик», который изменяет числа, но мы не знаем, как именно? В данном случае «ящик» из исходного числа легко делает конечное, но по конечному никак нельзя догадаться, какое было исходным. Сконструировать подобную функцию не так-то просто. И всё же, элементарный пример однонаправленной функции изучают в начальной школе: деление с остатком. Зная делимое и делитель, легко посчитать остаток от деления. А наоборот — невозможно: зная, что остаток равен двум, в делитель — шести, мы никогда не догадаемся, что именно мы делили на шесть: четырнадцать или восемь. А может быть — пятьдесят.
Если всё еще не понимаете, то вообразите телефонную книгу: в ней имена-фамилии стоят по алфавиту, а телефоны, конечно, вразнобой. Зная, как зовут абонента (то есть аргумент функции), легко найти телефонный номер (ее значение), а вот чтобы найти абонента по известному заранее номеру, придется вручную просмотреть все номера по очереди, потратить время. Чем и занимается майнер в ходе решения математической задачи. Предоставленное им верное решение служит доказательством того, что он выполнил вычислительную работу по длинному перебору чисел.
Такой тип алгоритмов майнинга так и называется, Proof-of-Work, «доказательство работы».
В этой статье мы рассказываем в основном именно про это семейство алгоритмов, но его используют не везде. Биткоин майнят именно так, однако некоторые криптовалюты функционируют иначе.
Используя алгоритм “Proof-of-work”, майнер перебирает числа по порядку, очень много чисел одновременно. Да, он всего лишь включает на компьютере специальную программу — точно такую же вы можете скачать хоть сейчас. Задача майнера формально заключается в том, чтобы найти такой аргумент однонаправленной функции, чтобы её значение было меньше числа, которое называют «уровнем сложности». Верных ответов много, но для решения хватит и одного. Сложность добычи криптовалют — не абстрактная величина, не эмоциональная оценка, а конкретное число. Объясняем, почему так. Представьте: есть невероятных размеров два поля с заборами, одно через дорогу от другого. На одном по земле разбросаны выключатели, а на другом — лампочки. Они разбросаны совсем хаотично. Проводов нет, их нельзя отследить. Но одна лампочка обязательно включается, если мы нажмем на один выключатель. Только мы не знаем, какая именно.
Если поставить задачу «найти такой выключатель, чтобы зажигалась любая лампочка на левой половине поля через дорогу», выполнить её будет легко. Почему? Потому что мы потратим немного времени, наугад нажимая на выключатели, и скоро увидим, как загорится любая из многих нужных нам лампочек, их много лежит слева. Это интуитивно понятно, да и соответствует теории вероятности. А вот если отгородить забором тесный квадратик земли, где лежат всего несколько ламп, нам придется потратить очень много времени, наугад перебирая выключатели, прежде чем нам повезет, и мы включим одну из нужных нам.
Чем меньше лампочек, тем сложнее найти выключатели.
Перед нами — «лампочки» из примера. Майнерам понадобилось несколько минут, чтобы их обнаружить. На самом деле это — числа, и в реальности они выглядят именно так. Но всё-таки их «зажгли».
Так вот, «сложность майнинга» — это число, в конкретный момент определяющее количество подходящих нам лампочек, решений задачи. Блокчейн биткоина каждые 2016 блоков изменяет сложность на основе времени, за которое создали предыдущие 2016 блоков. Если новый блок «пришивают» к блокчейну каждые 10 минут (так задумывалось для равномерной эмиссии), то нахождение 2016 блоков займет ровно 2 недели. Чем больше отклонение от двух недель, тем больше уменьшится (или увеличится) сложность. Да, она растет не постоянно, иногда падает.
У биткоина, правда, сложность в основном растёт. Но у некоторых криптовалют — нет.
Раскрываем карты: значение функции майнинга на языке математики называется цифровой подписью, хешем (или иногда «дайджестом») блока. Это важно. Мы уже знаем, что функцию специально разработали так, чтобы нельзя было рассчитать её исходные данные, зная конечные, то есть дайджест. Приходится пробовать разные числа по очереди и подставлять их в функцию, нет другого выхода, если хотим подобрать хеш меньше определенного числа.
Раздел «со звёздочкой»
Математик может рассказать вам, что однонаправленность хеш-функции поддерживается несколькими другими свойствами.
- Сильным «лавинным эффектом». Изменение одного бита входной информации должно влиять на множество битов на выходе.
- Устойчивостью к «коллизиям». Это значит, что невозможно получить два одинаковых хеша при разных начальных данных.
- Поддержкой публичных ключей. В системе биткоина вы как бы шифруете номер транзакции двумя ключами: один из них публичный — это ваш биткоин-адрес, и с помощью него люди только проверяют, что транзакция действительно правомерна. А есть приватный ключ, секретный. Он уже даёт возможность подписывать новые транзакции, то есть в нашем случае — распоряжаться деньгами. Этот ключ нужно всячески оберегать, не пересылать никому и нигде не показывать.
Если говорить совсем точно, задача у майнера немного не такая, как мы сказали ранее: ему нужно подобрать не сам «верный» аргумент функции, а некое число, которое в сумме с хешем предыдущего блока дает «верный» аргумент. Вот наконец именно его-то майнер и ищет: «нонс» — то, что складывается с хешем предыдущего блока и вместе с ним становится аргументом однонаправленной функции. И включает нужную лампочку на поле через дорогу.
Один из блоков биткоина, который нашли вечером шестого апреля. Теперь вам знакомо многое из того, о чем здесь написано.
А почему говорят, что на майнинге сейчас уже не заработаешь, если нужно просто перебирать числа?
Потому что чисел, которые нужно перебрать, очень много. Знаете, сколько «нонсов» прямо сейчас перебирает всё сообщество майнеров биткоина? Насколько большое то поле с лампочками и как быстро по нему нужно бегать? За одну секунду все майнеры планеты вместе перебирают приблизительно по 22 миллиона триллионов чисел — этот показатель называется хешрейт (в переводе с английского — скорость хеширования). И это только биткоин.
О, еще секунда прошла. И снова кто-то где-то перепробовал подставить 22 000 000 000 000 000 000 чисел в функцию, правда, некоторые из них, возможно, были одни и те же — майнеры работают параллельно. Миллион триллионов, кстати, еще называют квинтиллионом.
Вот так рос общий хешрейт сети с момента изобретения биткоина. Кстати, на месячном графике уже нельзя увидеть признаки привычных кривых.
Вероятность случайного нахождения нужного нонса и получения награды — дробь, в числителе которой — скорость перебора чисел отдельного пользователя, а в знаменателе — общая скорость сети. Если вы майните биткоин на домашнем ПК, это примерно 500 миллионов, деленные на 22 квинтиллиона чисел в секунду. У полученной вероятности около 10 нулей после запятой. С такими шансами трудно тягаться в одиночку. Это нереалистично, дробь откровенно стремится к нулю. Поэтому майнеры сегодня не работают по одному: они объединяются и синхронизируют компьютеры, чтобы подставлять больше разных чисел в секунду. Так можно увеличить числитель дроби и рассчитывать на приличную вероятность нахождения блока.
Так распределяются мощности между главными майнинг-пулами. Они конкурируют за большие деньги.
Крупнейшие майнинг-фермы работают в Китае, некоторые — в Грузии (там дешевые тарифы на электроэнергию), но их много по всему миру. Хотя фотографии полок с чипами есть в интернете, на фермы не съездишь на экскурсию: самые крупные и прибыльные из них строго засекречены. На некоторых фермах можно арендовать мощности, заплатив за них банковской картой — этот подход еще называют «облачным майнингом».
Гигантов майнинга нужно знать в лицо
Облачный и домашний майнинг, его прибыльность, прогнозы — всё это станет предметом обсуждения статьи «Как майнить криптовалюты?» (посмотрите и её тоже, там интересно). Здесь же мы постарались объяснить, что майнинг — это не магия и не профанация, а интересная математическая концепция, приспособленная под нужды финансовой системы. Хеш-функции, которые лежат в её основе, конечно, в реальности ещё сложнее, чем то, что мы описали, и обладают рядом дополнительных свойств, про которые можно долго рассказывать.
В двадцатом веке их разрабатывали блестящие учёные для нужд защиты информации, поставив целью найти способ так «расписаться» на электронном сообщении, чтобы никто не смог подделать «роспись». Теперь эти функции эволюционировали и используются в криптовалюте.
Надеемся, что после наших объяснений вам стало немного понятнее значение слова «майнинг» и его особенности. Заглядывайте почаще к Prometheus на огонёк!