09 / 7362016

Difficulty Adjustment

корректировка сложности майнинга

Как Bitcoin меняет сложность майнинга, чтобы в долгосрочной перспективе средний интервал между новыми блоками был близок к десяти минутам.

Difficulty Adjustment автоматически меняет сложность поиска блока. Когда майнеры находят блоки слишком быстро, правила усложняют поиск; когда слишком медленно — облегчают. Так Bitcoin может сохранять примерно одинаковый темп даже при больших изменениях вычислительной мощности. Каждый узел, полностью проверяющий правила, одинаково проверяет и эту корректировку. Ни один администратор не назначает её по своему усмотрению.

Представьте, что к майнингу подключилось много новых устройств. Вместе они выполняют больше попыток в секунду и при той же сложности находят блоки в среднем быстрее. Блок объединяет подтверждённые транзакции; при его создании могут появиться и новые биткоины. Без корректировки более мощные машины ускоряли бы и их выпуск. Майнеры многократно вычисляют хеш — числовой отпечаток заголовка блока. Попытка успешна, если результат достаточно мал. Более строгая граница уменьшает вероятность успеха одной попытки, а значит, в среднем требуется больше работы. [3]

В основной сети Bitcoin, называемой mainnet, сложность пересчитывается каждые 2 016 блоков. При среднем времени десять минут на блок это около двух недель. Но таймера нет: пересчёт запускает достижение нужного порядкового номера блока, его высоты. Если многие майнеры внезапно выключат оборудование, ожидание оставшихся блоков может занять больше времени. Сначала сеть завершит период со старой сложностью; немедленного аварийного снижения на mainnet не предусмотрено. [1] [2]

Допустим, время, используемое при пересчёте, составляет 10 дней вместо целевых 14. Следующий период будет сложнее: сложность вырастет примерно в отношении 14 к 10, то есть на 40 %. Если измеренный период длится 28 дней, сложность примерно уменьшится вдвое. Эти упрощённые примеры не учитывают округления и предполагают, что минимально допустимая сложность не ограничивает расчёт. Если вычислительная мощность затем останется прежней, новая настройка приблизит ожидаемое время между блоками к десяти минутам. [1] [2]

Десять минут — долгосрочное среднее, а не обещанное время ожидания. Два блока могут появиться почти подряд, а другого придётся ждать гораздо дольше. Ваша транзакция тоже не обязательно попадёт в следующий блок: важны её комиссия и другие ожидающие транзакции. Корректировка не управляет ценой BTC и не гарантирует майнерам прибыль. Она также не меняет количество новых биткоинов, разрешённое в одном блоке. Его периодическое уменьшение вдвое, Halving, подчиняется отдельному правилу. [2] [3]

Правила используют числовую границу под названием target. Меньший target означает более сложный майнинг; число, называемое сложностью, выражает эту связь наоборот. Новый target равен прежнему, умноженному на измеренное время и делённому на целевое время — 1 209 600 секунд. Перед расчётом измеренное время ограничивают диапазоном от четверти до четырёхкратной целевой длительности. Так ограничивается размер одного изменения. Target также не может превышать наибольшее разрешённое значение powLimit. В заголовке он хранится в компактном представлении nBits с ограниченной точностью. Поэтому проценты в примерах приблизительные. [1] [2]

Bitcoin Core сравнивает метку времени в заголовке последнего блока завершённого периода с меткой первого. Между 2 016 блоками находится 2 015 промежутков; правила сохраняют эту историческую особенность. Метки времени записывают майнеры в пределах правил сети. Это не точные измерения момента нахождения блока и не Median Time Past — другое значение времени, вычисляемое по предыдущим блокам. Для понимания цели корректировки этот нюанс не обязателен, но при точном повторении расчёта он важен. [1]

Сайты часто показывают прогноз следующего изменения сложности. Пока период не закончился, появляются новые блоки и прогноз может меняться. Завершённую корректировку можно проверить на своём узле: сравнить время граничных блоков, преобразовать их nBits в числовые значения target и повторить расчёт с ограничениями и округлением. Каждый Full Node, то есть узел, самостоятельно проверяющий правила Bitcoin, контролирует требуемый target при принятии блока. Описанная процедура относится к mainnet; тестовые сети могут использовать другие правила. [1] [2]

Для полной картины прочитайте эту статью вместе с Proof of Work, Майнинг, Timechain / Blockchain, Block Subsidy. На эту статью также ссылаются Timechain / Blockchain, Proof of Work, Майнинг, Halving.

DOC · 001Bitcoin Core v29.0: retargetПервичный источник DOC · 002Bitcoin Core v29.0: network parametersПервичный источник DOC · 003Bitcoin Developer Guide — Proof of Work and difficultyПервичный источник
Обновлено: Сначала источники · Не является инвестиционной рекомендацией