Академия майнинга
- Главная
- Академия
- Введение в майнинг
Как работает майнинг биткоина: блок, хеш, nonce, халвинг
Как работает майнинг биткоина: блок, хеш, nonce, халвинг
Майнинг биткоина — это непрерывный перебор значений, при котором устройство вычисляет хеш заголовка блока, меняя в нём число nonce, пока результат не окажется меньше целевого значения, заданного сложностью сети. Тот, кто первым находит такой хеш, добавляет блок в цепочку и получает награду: субсидию блока плюс комиссии транзакций. Подобрать нужное значение можно только перебором, а проверить его любой узел может мгновенно, на этом и держится безопасность сети.
Блок и его заголовок
Блокчейн Bitcoin — это цепочка блоков, где каждый содержит набор транзакций и ссылку на предыдущий блок. Именно ссылка делает цепочку неизменяемой: чтобы подменить транзакцию в старом блоке, пришлось бы пересчитать и этот блок, и все последующие.
Для майнинга важна не вся информация блока, а его заголовок — 80 байт данных, из которых устройство вычисляет хеш. В заголовок входят:
- версия правил протокола;
- хеш предыдущего блока — звено, связывающее блоки в цепочку;
- корень Меркла — единый хеш, представляющий все транзакции блока: изменение любой транзакции изменит корень, а значит, и весь заголовок;
- время создания блока;
- bits — закодированное целевое значение сложности;
- nonce — число, которое майнер подбирает.
Первой в блоке идёт особая транзакция, называемая coinbase: в ней майнер создаёт новые монеты и указывает, кому они достанутся, а также забирает комиссии со всех остальных транзакций блока.
Хеш: почему его нельзя подобрать «умом»
Хеш-функция превращает любые данные в строку фиксированной длины. Bitcoin использует SHA-256, применённый дважды. Свойства функции таковы: из одинаковых данных всегда получается один и тот же результат; малейшее изменение входа полностью меняет выход; по результату невозможно восстановить исходные данные или предсказать, как нужно изменить вход, чтобы получить заданный результат.
Последнее свойство и делает майнинг честной лотереей. Единственный способ получить хеш с нужными свойствами — перебирать варианты. Меняя nonce, вы получаете совершенно новый непредсказуемый хеш. Каждая попытка — независимое испытание, и вероятность успеха у неё одна и та же. Поэтому шанс найти блок пропорционален только числу попыток, то есть хешрейту.
Nonce, extranonce и цель сложности
Задача формулируется так: хеш заголовка, рассматриваемый как очень большое число, должен быть меньше целевого значения (target). Чем меньше target, тем меньше подходящих хешей и тем сложнее блок найти. Наглядно это выглядит как требование к хешу начинаться с определённого количества нулей, хотя на самом деле условие числовое.
Поле nonce занимает 4 байта, то есть около четырёх миллиардов значений. Современные ASIC перебирают их за доли секунды. Когда nonce исчерпан, майнер меняет другие данные, например время или так называемый extranonce в coinbase-транзакции, что меняет корень Меркла, и перебор начинается заново. На практике пулы раздают устройствам разные диапазоны, чтобы никто не повторял чужую работу. Как задание доходит до ASIC и как найденные решения возвращаются пулу, объясняет статья «Что такое Stratum».
Сложность: как сеть держит ритм в десять минут
Мощность майнеров в сети постоянно меняется: появляются новые модели ASIC, подключаются и отключаются фермы. Если бы условие оставалось неизменным, блоки то выходили бы каждую минуту, то раз в сутки. Чтобы этого избежать, протокол регулярно подстраивает сложность. Целевое время между блоками — около десяти минут. Каждые 2016 блоков, то есть примерно раз в две недели, сеть сравнивает фактическое время их создания с ожидаемым и корректирует сложность: если блоки находились быстрее, сложность растёт, если медленнее — падает.
Практический вывод для майнера: сложность в долгой перспективе растёт вместе с вводом новых мощностей. Если ваш хешрейт не меняется, а сеть растёт, ваша доля сокращается, и доход в монетах при прочих равных снижается. Поэтому любые расчёты окупаемости надо делать с запасом на рост сложности.
Стоит отметить, что сложность влияет не на скорость вашего устройства, а на то, какая доля попыток оказывается успешной. ASIC по-прежнему делает столько же хешей в секунду, но каждый из них с меньшей вероятностью окажется «выигрышным». Поэтому рост сложности невозможно компенсировать настройками: единственный ответ на него — более эффективное оборудование или более дешёвая электроэнергия. Сети с другими алгоритмами, например Litecoin, устроены похожим образом, но у каждой свои параметры блока и интервалы пересчёта сложности.
Чтобы почувствовать масштаб, представьте лотерею, где в каждом тираже у вашего билета одинаковый крошечный шанс. Если ваш хешрейт составляет миллионную долю хешрейта сети, то в среднем вам достаётся одна миллионная часть блоков, то есть примерно один блок на миллион блоков, что при десятиминутном ритме означает около двадцати лет ожидания. Это среднее, а не расписание: блок можно найти завтра, а можно не найти десятилетие. Эта арифметика — главная причина, по которой одиночный майнинг с несколькими устройствами практически не применяется.
Награда: субсидия и комиссии
Награда за блок состоит из двух частей.
- Субсидия — новые монеты, создаваемые протоколом. Это единственный способ выпуска Bitcoin.
- Комиссии — сумма комиссий, которые отправители транзакций заплатили за попадание в блок. При высокой нагрузке на сеть их доля заметно растёт.
Отдельно о комиссиях: размер блока ограничен, поэтому транзакции конкурируют за место. Майнер при сборке блока в первую очередь берёт те, что платят больше, и именно так формируется «рыночная» цена перевода. Для майнера это означает, что доход от комиссий колеблется вместе с загруженностью сети, и его нельзя планировать так же жёстко, как субсидию.
Размер субсидии не постоянен. Именно здесь вступает в игру халвинг.
Халвинг
Халвинг — это сокращение субсидии вдвое, которое происходит каждые 210 000 блоков, примерно раз в четыре года. Изначально награда составляла 50 BTC за блок; после халвингов 2012, 2016, 2020 и 2024 годов она снижалась и на момент последнего составляет 3,125 BTC. Следующее сокращение ожидается примерно в 2028 году. Из-за такого графика общий выпуск Bitcoin ограничен: максимум будет составлять 21 миллион монет, а последние монеты будут выпущены лишь около 2140 года, после чего награда майнеров будет состоять из комиссий.
Для майнера халвинг означает резкое сокращение дохода в монетах на ту же мощность. Выживают те, чьё оборудование достаточно эффективно, а электроэнергия достаточно дешёвая, чтобы работа оставалась осмысленной при новой награде. Ближайшие даты и динамику награды можно посмотреть на странице «Халвинг». У Litecoin принцип поиска блока тот же, но алгоритм другой (Scrypt), и свой график сокращения награды.
Что происходит, когда блок найден
- Устройство, нашедшее подходящий хеш, отправляет блок соседним узлам.
- Узлы проверяют: корректность хеша, соответствие сложности, допустимость каждой транзакции, отсутствие двойной траты.
- Если проверка успешна, блок распространяется дальше и добавляется в цепочку каждым узлом.
- Все майнеры немедленно бросают старое задание и начинают работу над следующим блоком, ссылающимся на только что найденный.
Иногда два майнера находят блок почти одновременно. Тогда сеть временно разделяется: одни узлы видят одну версию, другие другую. Конфликт разрешается сам: как только появляется следующий блок, побеждает более длинная цепочка, а блок проигравшей стороны становится «осиротевшим» и его награда пропадает. Именно поэтому транзакции считаются надёжно подтверждёнными не сразу, а спустя несколько блоков.
Где здесь место пула
Описанная лотерея справедлива, но слишком редка для небольшого участника. Пул объединяет мощности и вместо блоков платит вам за шары, то есть за «почти подходящие» хеши, которые доказывают, что вы действительно работаете. Это даёт регулярные начисления без ожидания собственной удачи. Роль разных участников сети, включая пулы и промышленные фермы, описана в статье «Кто такие майнеры». Общее введение для новичков — в статье «Что такое майнинг».
Частые вопросы
Сколько времени занимает один блок?
В среднем около десяти минут, но это именно среднее. Отдельные блоки находятся за минуту, другие за полчаса: процесс случайный.
Что такое nonce простыми словами?
Число, которое майнер меняет в заголовке блока, чтобы получать разные хеши. Это единственная «ручка», позволяющая перебирать варианты, пока не найдётся подходящий.
Почему сложность майнинга растёт?
Потому что растёт общая мощность сети. Сложность подстраивается так, чтобы блоки продолжали выходить раз в десять минут, независимо от числа майнеров.
Что будет, когда добудут все 21 миллион биткоинов?
Субсидия прекратится, и майнеры будут получать только комиссии за транзакции. Произойдёт это не раньше следующего столетия по текущему графику халвингов.
Почему нельзя просто подобрать хеш быстрее?
Из-за свойств хеш-функции нельзя вычислить подходящий nonce, не перебирая значения. Ускорить процесс можно только увеличением числа попыток в секунду, то есть более мощным и эффективным оборудованием.