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Первинне джерело
Переглянуто: Спочатку джерела · Не інвестиційна порада