Блокчейн/Уровень II · Механика/2.3 Блоки и цепочка/Урок 5
Корректировка сложности каждые 2016 блоков
Двухнедельный регулятор, который поддерживает ход часов
МатериалыИнтерфейс эксплорера блоков с историей сложностиКалькулятор для вычисления отношений
Любопытство
- Почему сеть корректирует сложность раз в две недели, а не после каждого блока?
- Как децентрализованная система может договориться о математической корректировке без центрального органа, который выпускал бы обновление?
- Что происходит со скоростью создания блоков в первые дни после резкого падения глобального хешрейта?
Исследование
- Модель безопасности Bitcoin опирается на устойчивый ритм — примерно один блок в десять минут. Такой темп уравновешивает окончательность транзакций с загруженностью сети и потреблением ресурсов. Однако оборудование для майнинга быстро развивается: ASIC-майнеры со временем становятся экспоненциально эффективнее. Без вмешательства при фиксированной вычислительной сложности блоки по мере роста мощности находились бы за секунды, а не за минуты. Такая нестабильность подорвала бы свойства безопасности цепочки и усложнила бы пользователям ожидания относительно времени подтверждения.
- Чтобы поддерживать этот ритм, в Bitcoin реализована автоматическая обратная связь — ретаргетинг (пересчёт цели). Каждые 2 016 блоков — в среднем это четырнадцать дней — каждая нода независимо пересчитывает целевое значение доказательства работы. Число 2 016 получается умножением 14 дней на 144 десятиминутных интервала в сутки. Такая частота — компромисс: она достаточно высока, чтобы реагировать на значительные изменения хешрейта, и достаточно низка, чтобы сглаживать временные колебания или аномалии в участии в сети.
- При расчёте фактическое время, затраченное на майнинг предыдущих 2 016 блоков, сравнивается с ожидаемыми 20 160 минутами. Формула: Новая цель = Старая цель × (Фактическое время / Целевое время). Если майнеры находили блоки в среднем быстрее чем за десять минут, фактическое время меньше, и получается дробь меньше единицы, которая снижает целевое значение и повышает сложность. И наоборот, если блоки находились дольше, целевое значение повышается, облегчая задачу. Такая пропорциональная корректировка возвращает среднее время к отметке в десять минут.
- Чтобы краткосрочные потрясения не вызывали чрезмерных скачков, корректировка за один цикл ограничена коэффициентом четыре в любую сторону. Как бы сильно ни изменился хешрейт, одна корректировка может максимум увеличить сложность в четыре раза или уменьшить её в четыре раза. Это ограничение снижает ущерб от искажённых временных меток и сохраняет плавность изменений во время резких рыночных событий или смены поколений оборудования.
- Показательный пример — июль 2021 года, после запрета майнинга криптовалют в Китае. Глобальный хешрейт резко упал, и блоки стали находиться значительно медленнее, чем раз в десять минут. Следующая корректировка стала крупнейшим снижением сложности в истории Bitcoin: сложность упала почти на 28%, отразив уменьшение вычислительной мощности. Эта быстрая корректировка вернула среднее время блока к целевому значению в пределах одного цикла, продемонстрировав, как механизм реагирует на реальные экономические и регуляторные потрясения.
- Между корректировками сеть работает с фиксированной сложностью. Если хешрейт меняется в течение этих двухнедельных окон, время блоков будет отклоняться от десяти минут до следующего ретаргетинга. Такое запаздывание — неизбежная плата за периодическую корректировку; некоторые другие блокчейны пересчитывают цель на каждом блоке, жертвуя присущими Bitcoin простотой и предсказуемостью ради более быстрой реакции. Пользователи и майнеры могут следить за этим циклом в любом эксплорере блоков: он показывает, сколько блоков осталось до следующей корректировки, и ожидаемое изменение в процентах исходя из текущей скорости майнинга.
Ключевые факты
- Сложность пересчитывается каждые 2 016 блоков — примерно раз в две недели.
- Формула корректировки масштабирует старую цель в соответствии с отношением фактически прошедшего времени к ожидаемым 20 160 минутам.
- За один цикл сложность может измениться не более чем в четыре раза — это предотвращает экстремальные скачки.
- Из-за ошибки на единицу (off-by-one) в исходном коде при расчёте используется 2 015 интервалов, что даёт пренебрежимо малое смещение в сторону более высокой сложности.
- Корректировка в июле 2021 года стала крупнейшим снижением сложности в истории Bitcoin — почти 28%.
- Каждая нода выполняет этот расчёт независимо, что обеспечивает консенсус без централизованной координации.
Упражнение девять, шесть, три, один
9СобратьПеречислите 9 прошлых корректировок сложности из истории в эксплорере блоков, указав для каждой дату и изменение в процентах.
6СгруппироватьСгруппируйте 9 значений по размеру и направлению в 6 групп: сильный рост, умеренный рост, небольшой рост, небольшой спад, умеренный спад, сильный спад.
3Выделить главноеСократите 6 категорий до 3 типов событий, вызывающих наибольшие корректировки.
1КристаллизоватьНапишите одно предложение о том, как двухнедельный цикл Bitcoin уравновешивает скорость реакции и стабильность в децентрализованной среде.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.
- Bitcoin Core source code, pow.cpp (CalculateNextWorkRequired)
- A. M. Antonopoulos & D. A. Harding, Mastering Bitcoin, 3rd ed. (2023), ch. 12
- Bitcoin difficulty history, block 689,472 (July 2021)