Сложность и таргет: саморегуляция Биткоина
Проблема, которую решает сложность
Заголовок раздела «Проблема, которую решает сложность»Биткоину с первого дня пришлось решать одну задачу: как поддерживать стабильный темп появления блоков, когда вычислительная мощность сети непрерывно меняется?
Если блоки будут появляться слишком быстро, блокчейн начнет раздуваться, транзакции не будут успевать распространяться, а форки (конкурирующие цепочки) станут постоянным явлением. Если слишком медленно — люди будут вечно ждать подтверждений. Решение Сатоши оказалось элегантным — самонастраивающийся механизм сложности, нацеленный на один блок каждые 10 минут, независимо ни от чего.
Представьте термостат. Вы выставляете желаемую “температуру” — 10-минутные блоки. Когда майнеров становится слишком много (в комнате жарко), сложность растет, чтобы “остудить” процесс. Когда майнеры уходят (в комнате холодно), сложность падает, чтобы “нагреть” обратно. Результат: блоки появляются с удивительно стабильной скоростью из года в год.
Как выглядит целевой хеш
Заголовок раздела «Как выглядит целевой хеш»Когда мы говорим, что майнер ищет “валидный” хеш, мы имеем в виду, что хеш должен быть численно меньше определенного значения, которое называется таргет (target, цель). Вот и все — хеш, интерпретированный как число, должен оказаться ниже целевого числа.
На практике это означает, что выигрышный хеш должен начинаться с определенного количества ведущих нулей. Чем больше нулей требуется, тем сложнее его найти. Упрощенная иллюстрация:
Таргет (легкий):00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Таргет (сложный):000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF“Легкий” таргет принимает любой хеш, начинающийся хотя бы с пяти нулей. “Сложный” требует двадцать один ведущий ноль. Поскольку каждый шестнадцатеричный символ имеет 16 возможных значений, каждый дополнительный ноль делает задачу примерно в 16 раз сложнее.
Помните: результаты хеширования фактически случайны. Каждый отдельный хеш имеет одинаковую (крошечную) вероятность начаться с нужного количества нулей. Повлиять на результат невозможно — остается только перебирать варианты, пока не попадется подходящий.
Цель: 10 минут между блоками
Заголовок раздела «Цель: 10 минут между блоками»Почему именно 10 минут? Это выбранный Сатоши Накамото компромисс между:
- Скоростью — чем быстрее блоки, тем быстрее подтверждаются транзакции.
- Безопасностью — более медленные блоки дают сети больше времени на достижение консенсуса, снижая вероятность “осиротевших” блоков.
- Пропускной способностью — блокам нужно время, чтобы распространиться по всему миру до всех узлов сети.
Десять минут сочли золотой серединой. Достаточно быстро для практического использования, но достаточно медленно, чтобы почти все узлы успевали увидеть новый блок до появления следующего.
Протокол не гарантирует ровно 10 минут на блок — это невозможно при вероятностном процессе. Вместо этого он нацелен на среднее значение в 10 минут на длинной дистанции, корректируя сложность.
Как корректируется сложность: цикл в 2016 блоков
Заголовок раздела «Как корректируется сложность: цикл в 2016 блоков»Коррекция сложности Биткоина происходит каждые 2 016 блоков, что занимает примерно две недели при целевом темпе в 10 минут (2 016 x 10 минут = 20 160 минут = 14 дней).
Вот как работает коррекция:
- Протокол смотрит, сколько времени реально заняла добыча последних 2 016 блоков.
- Сравнивает с тем, сколько это должно было занять (20 160 минут, ровно две недели).
- Пропорционально корректирует таргет.
Если блоки шли слишком быстро (скажем, за 12 дней вместо 14), значит, хешрейта больше, чем ожидалось. Таргет понижается (становится сложнее) — майнерам нужно искать хеши с большим количеством ведущих нулей. Сложность растет.
Если блоки шли слишком медленно (скажем, за 16 дней вместо 14), значит, хешрейт упал. Таргет повышается (становится легче) — требуется меньше ведущих нулей. Сложность падает.
Формула проста:
Новый таргет = Старый таргет x (Фактическое время / Ожидаемое время)Практический пример
Заголовок раздела «Практический пример»Допустим, текущая сложность рассчитана на то, что 2 016 блоков будут добыты за 14 дней. Но в сеть вошла крупная новая ферма, и блоки были намайнены всего за 12 дней. Коррекция:
Новый таргет = Старый таргет x (12 / 14) = Старый таргет x 0,857Таргет уменьшается примерно на 14,3%, то есть сложность возрастает примерно на 16,7%. Теперь майнерам нужно находить хеши ниже меньшего числа — это сложнее, что должно замедлить появление блоков обратно к 10-минутному темпу.
Когда сложность растет, а когда падает
Заголовок раздела «Когда сложность растет, а когда падает»За всю историю Биткоина сложность подавляющее большинство времени росла. Это логично — майнинг превратился в промышленную отрасль с массивными инвестициями в оборудование. Но сложность может и падает — иногда:
Сложность растет, когда:
- Разворачивается новое оборудование (на рынок выходят более эффективные ASIC-и)
- Растет курс биткоина, что делает майнинг выгоднее и привлекает новых участников
- В новых регионах появляется дешевое электричество
- Начинается сезон дождей в регионах с ГЭС (дешевая электроэнергия выходит на рынок)
Сложность падает, когда:
- Курс биткоина существенно снижается, делая часть майнеров убыточными
- Государственные запреты вынуждают майнеров отключаться (как запрет в Китае в 2021 году)
- Сухой сезон снижает выработку ГЭС, повышая стоимость электроэнергии
- Старое оборудование становится слишком дорогим в эксплуатации
Самое большое разовое падение сложности в истории Биткоина произошло после запрета майнинга в Китае в середине 2021 года. Хешрейт сети упал примерно на 50%, и сложность последовала за ним в течение нескольких периодов коррекции. Восстановление заняло около полугода, пока майнеры перемещались в другие страны.
Что значит “сложность 1”
Заголовок раздела «Что значит “сложность 1”»Сложность Биткоина выражается как число относительно базовой линии, называемой Difficulty 1 (сложность 1, “diff 1”). Сложность 1 соответствует максимально легкому таргету — самому высокому значению, которое протокол допускает.
Таргет для Difficulty 1:
00000000FFFF0000000000000000000000000000000000000000000000000000Когда сложность сети составляет, скажем, 80 триллионов, это означает, что текущий таргет в 80 триллионов раз труднее для попадания, чем таргет Difficulty 1. Иными словами:
Текущая сложность = Таргет Difficulty 1 / Текущий таргетЧисло сложности росло годами и сейчас исчисляется десятками триллионов. Оно полезно для сравнения того, насколько сложнее стал майнинг по сравнению с началом, но на практике большинство майнеров думают в терминах хешрейта и заработка, а не абсолютного числа сложности.
Сложность пула vs. сложность сети
Заголовок раздела «Сложность пула vs. сложность сети»Вот тут новички часто путаются, потому что майнинг-пулы используют собственную внутреннюю систему сложности, отдельную от сложности сети Биткоина.
Сложность сети
Заголовок раздела «Сложность сети»Это настоящая сложность — та, которую задает протокол Биткоина и которая определяет, достаточно ли хорош хеш для создания валидного блока. Она корректируется каждые 2 016 блоков и действует на всех одинаково. На текущий момент она находится в диапазоне 80-90+ триллионов.
Сложность пула
Заголовок раздела «Сложность пула»Пулы назначают каждому майнеру значительно более низкий порог сложности для шар (shares). Зачем? Потому что при сетевой сложности один ASIC может найти валидный хеш лишь раз в несколько десятилетий. Пулу нужны регулярные доказательства того, что вы действительно работаете, поэтому он устанавливает более низкую планку.
Например, пул может установить сложность шары на уровне 65 536 (по сравнению с сетевой сложностью 80+ триллионов). Это означает, что ваш майнер отправляет шару каждый раз, когда находит хеш ниже более легкого таргета пула. Пул использует эти шары для оценки вашего вклада в хешрейт и расчета вашей выплаты.
Некоторые пулы используют переменную сложность (vardiff), автоматически настраивая сложность шар для каждого майнера в зависимости от его хешрейта. Машина на 200 TH/s получает более высокую сложность шар, чем машина на 50 TH/s, чтобы частота отправки шар оставалась на управляемом уровне (обычно одна шара каждые несколько секунд).
Как сложность влияет на ваш доход
Заголовок раздела «Как сложность влияет на ваш доход»Зависимость между сложностью и заработком — обратно пропорциональная: когда сложность удваивается, ваш заработок на единицу хешрейта сокращается вдвое (при одинаковой награде за блок и курсе биткоина).
Упрощенная формула:
Дневной доход (BTC) ~ (Ваш хешрейт / Хешрейт сети) x Суточные награды за блокиПоскольку хешрейт сети и сложность напрямую коррелируют (растут и падают вместе), сложность можно подставить в это уравнение. Рост сложности на 10% означает примерно на 10% меньше BTC при том же хешрейте.
Вот почему понятие дохода с поправкой на сложность так важно. Майнер, который был очень прибыльным при сложности X, может едва выходить в ноль при сложности 2X. Долгосрочные бизнес-планы в майнинге обязаны учитывать прогнозируемый рост сложности.
Практические выводы
Заголовок раздела «Практические выводы»-
Не паникуйте из-за краткосрочных колебаний времени блоков. Блоки не появляются ровно каждые 10 минут — иногда два блока выходят за минуту, иногда перерыв составляет 40 минут. За 2 016 блоков все усредняется.
-
Следите за расписанием коррекции сложности. Если блоки находятся быстрее 10 минут, сложность скоро вырастет. Если медленнее — грядет снижение. Это полезно для планирования окон обслуживания.
-
Рост сложности — не всегда плохо. Если сложность выросла из-за скачка курса биткоина, ваш заработок в BTC на TH/s падает, но фиатная стоимость заработанного может оказаться даже выше.
-
Настройки сложности пула не влияют на ваш заработок. Неважно, какую сложность шар вам назначил пул — 32K или 128K — выплата будет одинаковой. Более высокая сложность пула просто означает меньше шар, но каждая “весит” больше. Это как платить рублевыми монетами или купюрами по 500 рублей — итоговая сумма одна и та же.
Краткий итог
Заголовок раздела «Краткий итог»- Биткоин использует таргет: валидный хеш блока должен быть численно ниже него. Меньший таргет = сложнее найти.
- Сложность корректируется каждые 2 016 блоков (~2 недели) для поддержания среднего времени блока в 10 минут.
- Сложность растет, когда майнеров становится больше (блоки появляются слишком быстро); падает, когда майнеры уходят (блоки идут слишком медленно).
- Коррекция ограничена четырехкратным изменением в любую сторону за один цикл.
- Difficulty 1 — это базовая линия. Текущая сложность (~80+ триллионов) означает, что таргет во столько же раз меньше самого легкого таргета.
- Сложность пула отделена от сложности сети — это внутренняя мера, которую пулы используют для отслеживания вашей работы через шары.
Далее: Шары (Shares) — как именно майнинг-пулы используют шары для справедливого измерения и вознаграждения вашего вклада.