09 / 7362016

Difficulty Adjustment

úprava obtížnosti těžby

Jak Bitcoin přizpůsobuje náročnost těžby, aby nové bloky dlouhodobě přibývaly přibližně po deseti minutách.

Difficulty Adjustment je automatická úprava obtížnosti těžby. Když těžaři nacházejí bloky příliš rychle, pravidla hledání zpřísní; když pomalu, usnadní ho. Díky tomu může Bitcoin udržovat přibližné tempo i při velkých změnách výpočetního výkonu. Úpravu podle stejných pravidel ověřuje každý plně ověřující uzel, nerozhoduje o ní žádný správce.

Představte si, že se k těžbě připojí mnoho nových strojů. Dohromady zkoušejí více výpočtů za sekundu, takže při stejné obtížnosti nacházejí bloky v průměru rychleji. Blok je balík potvrzených transakcí a při jeho vzniku mohou vzniknout i nové bitcoiny. Bez úpravy obtížnosti by silnější stroje zrychlovaly také jejich vydávání. Těžaři při hledání opakovaně počítají hash, číselný otisk hlavičky bloku. Uspějí, když je tento výsledek dostatečně malý. Přísnější hranice znamená menší šanci na úspěch při jednom pokusu, a tedy více práce v průměru. [3]

V hlavní bitcoinové síti, nazývané mainnet, se obtížnost přepočítává každých 2 016 bloků. Při desetiminutovém průměru to vychází zhruba na dva týdny. Není to ale budík: přepočet spustí dosažení příslušného pořadového čísla bloku, jeho výšky. Pokud velká část těžařů náhle vypne stroje, na zbývající bloky se může čekat déle. Síť nejprve dokončí období se starou obtížností; žádné okamžité nouzové snížení na mainnetu nenastane. [1] [2]

Představme si, že čas použitý při přepočtu odpovídá 10 dnům místo cílových 14. Následující období bude těžší: obtížnost vzroste přibližně v poměru 14 ku 10, tedy o 40 %. Když naopak naměřené období trvá 28 dnů, obtížnost přibližně klesne na polovinu. Jde o zjednodušené příklady, které zanedbávají zaokrouhlení a předpokládají, že se neuplatní nejnižší povolená obtížnost. Pokud pak zůstane výpočetní výkon stejný, nové nastavení přiblíží očekávaný čas bloku zpět k deseti minutám. [1] [2]

Deset minut je dlouhodobý průměr, nikoli slíbená čekací doba. Dva bloky mohou přijít krátce po sobě a jindy se na další čeká podstatně déle. Navíc nemusí být vaše transakce hned v příštím bloku: záleží také na poplatku a dalších čekajících transakcích. Úprava obtížnosti neřídí cenu BTC ani nezaručuje výdělek těžařům. Nemění ani množství nových bitcoinů povolené v jednom bloku; jeho pravidelné půlení, Halving, se řídí jiným pravidlem. [2] [3]

Pravidla pracují s číselnou hranicí zvanou target. Menší target znamená těžší těžbu; číslo označované jako obtížnost tento vztah vyjadřuje obráceně. Nový target se vypočítá jako starý target krát naměřený čas děleno cílovým časem 1 209 600 sekund. Před výpočtem se naměřený čas omezí na čtvrtinu až čtyřnásobek cílové doby, aby jeden krok nebyl neomezený. Target navíc nesmí překročit nejvyšší povolenou hodnotu powLimit a do hlavičky se ukládá v kompaktním zápisu nBits. Ten má omezenou přesnost, proto jsou procenta v příkladech přibližná. [1] [2]

Bitcoin Core porovnává čas z hlavičky posledního bloku dokončeného období s časem jeho prvního bloku. Mezi 2 016 bloky je 2 015 mezer; tuto historickou zvláštnost pravidla zachovávají. Časy do hlaviček zapisují těžaři v mezích pravidel sítě. Nejsou to přesná měření okamžiku nalezení bloku ani Median Time Past, jiný časový údaj počítaný z předchozích bloků. Pro pochopení účelu úpravy tento detail znát nemusíte, ale při přesném přepočtu na něm záleží. [1]

Weby často ukazují odhad příští změny obtížnosti. Dokud období neskončí, přibývají další bloky a odhad se může měnit. Hotovou úpravu lze ověřit na vlastním uzlu: porovnat časy hraničních bloků, převést jejich nBits na číselný target a zopakovat výpočet včetně omezení a zaokrouhlení. Každý Full Node, tedy uzel samostatně ověřující pravidla Bitcoinu, požadovaný target kontroluje při přijímání bloku. Popsaný postup platí pro mainnet; testovací sítě mohou mít odlišná pravidla. [1] [2]

Pro nejúplnější obraz čtěte toto heslo společně s Proof of Work, Těžba, Timechain / Blockchain, Block Subsidy. Opačným směrem na něj odkazují také Timechain / Blockchain, Proof of Work, Těžba, Halving.

DOC · 001Bitcoin Core v29.0: retargetPrimární zdroj DOC · 002Bitcoin Core v29.0: network parametersPrimární zdroj DOC · 003Bitcoin Developer Guide — Proof of Work and difficultyPrimární zdroj
Revidováno: Primární zdroje · Nejde o investiční doporučení