Site icon Bitcoinvkapse.cz

Kolik výpadků měl v historii bitcoin? A co přesně se stalo?

Bitcoin split 2013

Bitcoin běží od roku 2013 bez jediného výpadku. Nedochází u něj k žádným pravidelným odstávkám z důvodu upgradu, jak vám měsíc co měsíc píší banky. Přesto se ani jemu problémy nevyhnuly, byť se to dělo jen v jeho začátcích. Kolik zásadních problémů bylo a co se stalo?

V historii Bitcoinu existují pouze dva roky, které neměly “uptime” 100 %. Těmi problémovými jsou roky 2010 a 2013.

Miliardy nových bitcoinů v roce 2010

První výpadek Bitcoinu v srpnu 2010 byl způsoben integer overflow chybou v kódu, která umožnila vytvořit miliardy bitcoinů mimo limit 21 milionů mincí. Došlo k tomu v bloku 74638, kde vstup transakce ve výši 0,5 BTC vytvořil výstupy o velikosti 184 467 440 737,09551616 BTC odeslané na tří adresy (dvě po ~92 miliardách bitcoinů a třetí za 0,01 BTC).

Co se stalo?

Kód Bitcoinu kontroloval součet výstupů transakce proti vstupu, ale používal 64bitový signed integer (int64), kde při součtu velkých výstupů došlo k přetečení do záporné hodnoty, což prošlo validací.

Laické vysvětlení

V Bitcoinu platí u transakcí pravidlo: kolik peněz dáte dovnitř (input), tolik maximálně můžete vyplatit ven (výstupy). V tomto případě útočník vložil 0,5 BTC (50 milionů satoshi) a pak navrhl výstupy tak obrovské (každý po desítkách miliard BTC), že jejich součet překročil hranici, kterou program dokázal správně zpracovat v daném „počítadle“ (64bitové číslo).

Součet pak přetekl (overflow) a místo obrovského kladného čísla se stal malým záporným číslem. To pak prošlo kontrolou, protože součet výstupů byl záporný, tedy menší než vstup 0,5 BTC a transakce byla tím pádem platná. Tak vzniklo 184 miliard bitcoinů z ničeho.

Řešení

Do 5 hodin Satoshi Nakamoto a Gavin Andresen vydali patch (commit d4c6b90), který odmítá transakce s přetečeným výstupem nebo výstupy většími než 21 milionů BTC. Síť se rozdělila – „špatný“ chain pokračoval na blocích z 74638, ale „dobrý“ chain ho díky většině upgradovaných uzlů předběhl na bloku číslo 74691. Špatná transakce tak z historie na blockchainu zmizela.

Hádka uzlů v roce 2013

Druhý výpadek Bitcoinu proběhl 11. března 2013 a trval asi 6,5 hodiny. Způsobila ho nekompatibilita mezi verzemi Bitcoin Core 0.7 a 0.8, což vedlo k dočasnému rozdělení blockchainu na dvě verze.

Technická příčina

Vytěžený blok měl více vstupů než dřív, nové uzly s Bitcoin Core 0.8 (s LevelDB) ho zvládly, ale starší uzly (s Berkeley DB) ho odmítly kvůli nedostatku databázových zámků. Kompletní popis situace v BIP 50.

Jak se to vyřešilo

Velké pooly BTCGuild (Michael Marsee) a Slush pool (Marek Palatinus) rychle downgradovaly na verzi 0.7, aby odmítaly problémový blok. Tím se většina těžební síly přesunula na „starou“ větev, která se stala nejdelší a uzly s verzí 0.8 musely reorganizovat. Incident trval několik hodiny, došlo dokonce k experimentálnímu double-spendu, ale k žádným velkým škodám nedošlo.

Při tomto problému už ale reagovala i cena bitcoinu. Strach z technických problémů sítě vyvolal paniku mezi investory, což zesílilo prodejní tlak a cena výrazně klesla – přibližně o 23 % z 48 dolarů na 37 dolarů. Obnova důvěry ale trvala jen pár hodin s cena se rychle zotavila.

Hardforky Bitcoinu

V minulosti došlo ještě k několika hardforkům, kdy se blockchain rozdělil na dva. Nešlo už ale o žádné výpadky, ale o snahu části komunity “vylepšovat” Bitcoin směrem, se kterým většina nesouhlasila. Neúspěšní vylepšovatelé si tak udělali vlastní verzi Bitcoinu, kde své úpravy prosadili a pod nejrůznějšími názvy se pokoušeli provozovat “lepší” Bitcoin. Asi nejznámější je Bitcoin Cash nebo Bitcoin Satoshi Vision. Žádný z nich ale nebyl úspěšný a nyní živoří v zapomnění.

Čtěte dále:

Exit mobile version