Уверен, вы давно уже знаете, что майнер переводится как шахтер. Но при чем здесь шахты? Зачем криптовалюте шахтеры? Что вообще происходит, зачем все эти люди?
В прошлых публикациях я рассказал, что такое блокчейн, как в блокчейне биткойна появляются новые койны, и что же такое хэш и зачем он нужен.
Теперь у нас есть вся базовая информация для того, чтобы разобраться, в чем заключается работа майнера, и куда утекают гигаваты электроэнергии.
Если говорить самыми простыми словами, то майнер делает абсолютно бесполезную работу. На эту бесполезную работу весь блокчейн биткойна в год тратит электроэнергии больше, чем потребляет Дания, Беларусь или Болгария.
Точнее как сказать... У деятельности майнеров есть побочный положительный эффект - формирование блоков блокчейна, а так же эмиссия новых монет. Но сами вычисления, которые производятся в майнинговых фермах, не имеют совершенно никакой полезной нагрузки. В этих вычислениях не рассчитывается модель вселенной, не происходит математического моделирования новых лекарств, и даже не проверяется какая-то абстрактно-научная теория. Прямой смысл вычислений, которые производятся на мощностях майнеров, отсутствует полностью. Вся польза от этих вычислений - чисто побочная.
Точнее, именно ради этой побочной пользы всё затеяно, но выглядит все так, как если бы мы сжигали лес только ради того, чтобы получить черную краску из золы. Никого не обогрели, качественную древесину фактически выбросили, но зато у нас появилась зола, которую мы худо-бедно пустили в дело.
Действительно ли необходимо сжигать столько энергии, чтобы всё это работало? На самом деле нет. В теории.
Впрочем, вместо того, чтобы любоваться красивыми метафорами, лучше посмотрим на суть дела.
Итак, у нас есть множество копий базы данных (в сумме это блокчейн). И нам нужен способ синхронизировать эти копии (сделать их одинаковыми). Причем мы помним, что у нас нет какого-то центрального администратора всей этой базы, т.е. нужен какой-то способ, с помощью которого участники могли бы сами координировать свои действия по синхронизации этой общей базы данных.
Если все просто начнут хаотично слать друг другу сообщения о новой добавленной записи, то в сети начнется настоящий хаос. Хорошо бы, как минимум, как-то структурировать эти записи и регламентировать время, когда они попадают в базу данных.
Поэтому предложено было организовывать записи в блоки. Но кто бы этим занялся? Идея блокчейна - одноранговость, т.е. нет и не может быть какого-то одного регулятора сети. Все узлы сети равны. Надо придумать какой-то механизм, чтобы каждый участник сети мог приложить свой горячий процессор к формированию блока.
Так и решили: пусть каждый, кто захочет, сформирует блок. А чтобы не было конфликтов - все узлы состязаются в выполнении какой-то трудной задачи, и кто первый решит - тот и победил. Никому не обидно, потому что задача по сложности одинакова для всех. Ну а чтобы люди захотели ее решать, за решение задачи установили награду. Кто победит - того биткойны. Это очень отдаленно как раз и похоже на работу в шахте: приходится прилагать много усилий, и в какой-то момент кому-то везет и он находит большой алмаз. А в целом -
руда вырабатывается, алмазы находятся, лавэ мутится (сеть блокчейн работает).
Если награду не установить - ни у кого не будет стимула обслуживать сеть и решать ее задачи. Чистое волонтерство, что не во всех случаях подходит.
В общем-то, исходя из вышесказанного, понятно, что и сама математическая задача, и состязательность в её решении - идея довольно искусственная. И нужно всё это исключительно для организационных задач. Но, как ни крути, оказалось, что всё это прекрасно работает. Вот уже девять лет мы видим этому подтверждение.
В чем же заключается эта задача?
Тут-то нам и пригодится хэш, который, вообще-то, придумывался совсем для других целей. Но, блин, он очень удачно сюда вписывается.
Напомню, что хэш - это уникальная цифровая характеристика какого-то блока информации. И алгоритм вычисления хэша специально так разработан, чтобы из самого хэша восстановить исходные данные было никак нельзя. Из порядкового номера книги на полке не получится восстановить содержание книги.
Т.е. для того, чтобы для заданного хэша найти исходный текст, пришлось бы банально перебирать практически бесконечное количество случайных текстов, затем для каждого из них вычислять хэш в надежде, что однажды он совпадет. Стало быть, тут остается только перебор, и это единственный способ. А я писал в прошлый раз, что размер числа, которое генерируется некоторыми хэш-алгоритмами таков, что хватит пронумеровать все электроны во Вселенной. Ну как, поперебираем? Найдем электрон с конкретным номером?
Но это уж слишком! Поэтому в блокчейне используется более простая задачка.
В биткойне ищут не конкретное исходное значение, а такое, чтобы оно давало хэш, подчинающийся определенному неравенству. За счет этого сложность задачи можно гибко регулировать (через изменение параметра неравенства). Это как если бы в шахте можно было регулировать плотность распределения алмазов в породе. В общем-то, значение хэша для блока информации непредсказуемо, т.е., можно сказать, случайно. Поэтому задача разрешается чисто случайно (как алмаз случайно обнаруживается в алмазной шахте). Суть работы майнера очень приблизительно можно описать как копание в шахте в поисках алмазов. Поиск нужного числа среди множества ненужных.
А теперь немного конкретики
У нас есть несколько транзакций, которые надо сформировать в блок. Мы их выстраиваем, добавляем первой транзакцией "зачислить мне 12,5 биткойнов", заполняем еще некоторые обязательные поля блока (в число которых входит ссылка на предыдущий блок и его хэш - это нужно для целостности всей базы), и у нас получается блок-кандидат. Но в блоке должно быть еще одно поле, nonce. Оно совершенно бессмысленное и нужно только для того, чтобы майнеру было, чем заняться. Так вот, берем блок-кандидат, и устанавливаем nonce=0. Считаем хэш от всего блока. Блин, под неравенство не подходит. Ставим nonce=1, считаем хэш. Опять мимо.
И так - до тех пор, пока не выпадет счастливый случай. Или пока кто-то другой не найдет решение его блока-кандидата. А его блок-кандидат отличается от нашего как минимум, первой транзакцией, потому что мы в своем кандидате указываем в этой транзакции свой кошелек, а тот, другой майнер, указывает свой кошелек. Кто быстрее подберет подходящий nonce, того кошелёк и пополнится. Вот и вся суть майнинга...
Как видите, побеждает тот, кто быстрее перебирает. Кто быстрее копает руду в шахте. Один - с детским совочком, второй - с многоковшовым экскаватором. А мощность "добычи руды" измеряется в хэшах в секунду. Точнее, сейчас, пожалуй, уже в гигахэшах в секунду. Хотя нет, у всей сети биктойна это эксахэши. Дофигахэши.
Понятно, что общая мощность всех майнеров растет, и это надо как-то учитывать, иначе начнется хаос. Так вот, система раз в 2016 блоков берет и немного меняет параметр решаемого неравенства, чтобы один блок находился снова раз в 10 минут. Если майнеров станет меньше - неравенство упростится. Станет больше - усложнится. Но в среднем блок опять будет находиться раз в десять минут. Как бы регулируется плотность алмазов в шахте. Меняем вероятность нахождения решения.
Если привалило очень много майнеров - алмазов резко стало меньше. Поэтому совершенно неважно, как много майнеров есть в сети. Все они, в итоге, плац подметают ломом, т.е. совершают работу "чтобы задолбаться". Точнее, "чтобы долбаться с этими хэшами не менее десяти минут".
Так что вычисления, которые делают майнеры, совершенно бесполезны, и используются только потому, что именно эту задачу (задачу поиска нужного nonce для получения подходящего хэша) ну никак не обхитрить, только последовательный перебор в лоб, только хардкор. Только потный Ramstein.
К сожалению, пока это один из немногих способов заставить эгоистов работать на общее благо. Эгоистов - я имею в виду всех нас, человечество.
P.S. Пытаясь вспомнить название поля nonce, я перерыл несколько сайтов и поразился количеству статей на тему "майнинг на пальцах" во всем интернете. Честное слово, я до сих пор не могу взять в толк, почему эта криптовалютная тема так интересна моим подписчикам (судя по лайкам на предыдущие посты это именно так), ведь столько много отличных текстов написано? Только ленивый не майни.. эээ... не пишет об этом. Мне, конечно, удобно думать, что это я весь такой классный рассказчик, но как-то это слишком тщеславно. Дорогие друзья, не сочтите за труд, объясните мне :)
Подписывайтесь на канал "Технологии Денег" в Яндекс.Дзен и Телеграм! У меня много интересного материала!