115 / 736NC

Nakamoto Consensus

Jak se Bitcoin shodne na historii plateb

Bitcoin nemá centrální účetní. Společnou historii skládá z nezávislého ověřování pravidel, těžby a výběru platného řetězce s největší nahromaděnou prací.

Nakamoto Consensus je označení pro způsob, jakým Bitcoin hledá společnou platnou historii transakcí bez centrálního rozhodčího. Full Node, tedy počítač s programem ověřujícím pravidla, nejprve odmítne neplatné bloky. Z platných větví pak vybírá tu s největší nahromaděnou prací. Další potvrzení zvyšují jistotu platby za určitých bezpečnostních podmínek; nedělají z ní okamžitě nevratný zápis.

Anna pošle platbu Petrovi. Mohla by ale podepsat i druhou transakci, která utrácí stejné prostředky ve prospěch Evy. Podepsat tu znamená vytvořit pomocí soukromého klíče, tajného číselného údaje, ověřitelný důkaz oprávnění k platbě. Ostatní mohou podpis zkontrolovat, aniž by tento tajný údaj znali. Oba podpisy mohou být pravé, přesto se obě platby do jedné platné historie nevejdou. Navíc Petr a Eva mohou zprávy dostat v opačném pořadí. Bitcoin proto potřebuje víc než ověřování podpisů: způsob, jak se shodnout na pořadí a zabránit dvojímu utracení. Nakamoto Consensus spojuje pravidla, Proof of Work, výběr větve a odměny těžařům. Satoshiho whitepaper, původní technický popis Bitcoinu, tento pozdější název nepoužívá. [1] [4]

Petrův Full Node není hlasovací lístek. Blok sdružuje transakce do dávky, která se připojuje ke společné historii. Výstup transakce je záznam částky a podmínek, za nichž ji lze později utratit. Program Full Node sám kontroluje transakce a bloky: zda jsou utrácené výstupy dosud neutracené, zda jsou splněny podmínky jejich utracení a zda nevzniká více nových bitcoinů, než pravidla dovolují. Těžař může nabídnout blok, ale nemůže tyto kontroly obejít. Neplatný blok zůstává neplatný i s obrovským množstvím práce. Porovnávání větví přichází až mezi platnými možnostmi; společná historie předpokládá kompatibilní pravidla účastníků. [2] [3]

Kdyby měl každý připojený počítač jeden hlas, útočník by si mohl vytvořit spoustu zdánlivě nezávislých účastníků. Tomu se říká Sybil Attack. Proof of Work místo počítání jmen váže váhu větve na prokazatelnou výpočetní práci. Těžař opakovaně počítá hashe, digitální otisky dat, a hledá výsledek splňující předepsanou podmínku. Pokusy stojí energii a vybavení, zatímco nalezený výsledek se snadno ověří. Mnoho síťových identit samo o sobě další práci nepřidá; nejde o ověřování občanek ani hlasování všech uzlů. [1] [4]

Těžař sestaví kandidátní blok a mění údaje jeho hlavičky, tedy stručného souhrnu bloku, dokud její hash jako číslo není menší nebo roven platnému cíli. Neřeší tím užitečnou rovnici ani neprolamuje šifrování: hledá vzácný výsledek. Dva těžaři mohou uspět téměř současně. Část sítě nejdřív uvidí jeden blok, část druhý, takže krátce existují dvě platné větve. To samo není havárie. Za běžných podmínek šíření bloků další práce umožní uzlům přejít na společnou silnější větev. [1] [8]

Sílu větve měří chainwork, součet práce přiřazené jednotlivým blokům podle jejich cílové hodnoty. Není to měřič elektřiny ani záznam skutečného počtu pokusů. Jeden těžař mohl mít štěstí hned a jiný čekat dlouho; při stejném cíli mají jejich platné bloky stejnou váhu. Full Node volí dostupnou platnou větev s největším součtem. Zkratka „nejdelší řetězec“ proto znamená nejvíc práce, nikoli nutně nejvíc bloků. Přechod na jinou větev se nazývá reorganizace; platba z opuštěného bloku může být zařazena znovu, pokud zůstává platná. [1] [2] [3] [7]

Jakmile je Annina platba v přijatém bloku, má jedno potvrzení. Každý další blok nad ním přidává další. K nahrazení této historie by soupeřící větev musela dohnat její práci. Za předpokladu poctivé většiny výpočetního výkonu a dostatečně rychlého šíření bloků riziko úspěšného přepsání s hloubkou obvykle klesá. To je pravděpodobnostní finalita: postupně větší jistota, nikoli matematická nemožnost změny. Počet potvrzení, se kterým Petr přijme platbu, závisí i na její hodnotě a riziku. Žádné univerzální číslo nezaručí bezpečí za všech okolností. [1] [4]

Kdyby po příchodu rychlejších strojů zůstala podmínka stejná, bloky by přibývaly rychleji. Difficulty Adjustment proto na hlavní síti přepočítává cílovou hodnotu po každých 2016 blocích podle předchozích časových značek. Směřuje k průměru deset minut na blok, tedy přibližně dvěma týdnům na tento úsek. Jednotlivý blok ale může přijít mnohem dřív nebo později. Úpravu spustí počet bloků, nikoli datum v kalendáři; když náhle vypadne velká část výkonu, dosažení dalšího přepočtu může trvat déle. Nejde o okamžitý regulátor ani přesné hodiny. [2] [8]

Nově vydané bitcoiny, tedy bloková subvence, a transakční poplatky odměňují těžaře za bloky, které zůstanou v přijaté historii. To motivuje k jejímu rozšiřování, ale nenahrazuje bezpečnostní předpoklady. Většina výpočetního výkonu může přepisovat platné větve, vynechávat platby a zkusit zvrátit vlastní útratu. Nemůže však přinutit Full Node přijmout neplatný podpis, nadlimitní emisi nebo utracení cizích prostředků bez oprávnění. Ani hranice 50% není vypínač bezpečnosti: některé útoky mají šanci i pod ní. Poctivost nevzniká pouhou existencí odměny. [1] [2] [3]

Vraťme se k Petrovi. Pokud mu útočník ovládne všechna spojení, může mu ukazovat neúplný obraz dění. Eclipse Attack znamená právě takové síťové izolování; samotný počet potvrzení pak nemusí říkat totéž jako při dobrém spojení se zbytkem sítě. Také rozdělení sítě na oddělené části komplikuje shodu. Bezpečnost proto závisí nejen na podílu útočníkova výkonu, ale i na šíření zpráv a poctivém ověřování. Formální výzkum Bitcoin Backbone tyto podmínky výslovně modeluje. Procento výkonu bez popisu síťových podmínek není úplné vysvětlení bezpečnosti. [4]

Klasické postupy BFT (Byzantine Fault Tolerance), tedy dohody i za přítomnosti chybujících nebo škodících účastníků, často počítají s předem známou skupinou. Příklady OM (Oral Messages) a PBFT (Practical Byzantine Fault Tolerance) mají vlastní podmínky a pravidla výměny zpráv. Bitcoin řeší otevřenou účast pomocí práce a pravděpodobnostního ustalování historie; není pouhým přejmenováním těchto postupů. Zároveň výběr silnější platné větve sám nemění pravidla platnosti. Změna pravidel vyžaduje, aby účastníci přijali odpovídající software a slučitelné podmínky. Těžaři tedy pomáhají rozhodnout, která platná historie pokračuje, nikoli co musí být pro všechny platné. [5] [6] [9]

Pro nejúplnější obraz čtěte toto heslo společně s Bitcoin, Proof of Work, Difficulty Adjustment, Konsensuální pravidla, Těžba, Full Node. Opačným směrem na něj odkazují také Bit Gold, Reusable Proofs of Work, Byzantine Generals Problem, Sybil Attack.

DOC · 001Satoshi Nakamoto — Bitcoin: A Peer-to-Peer Electronic Cash SystemPrimární zdroj DOC · 002Bitcoin Developer Guide — Block ChainDokumentace DOC · 003Bitcoin Core v29.0 — Chainstate validationDokumentace DOC · 004The Bitcoin Backbone ProtocolPrimární zdroj DOC · 005The Byzantine Generals ProblemPrimární zdroj DOC · 006Bitcoin Optech — Soft fork activationPrimární zdroj DOC · 007Bitcoin Core v29.0 — Block proof and chainworkPrimární zdroj DOC · 008Bitcoin Core v29.0 — Proof of Work and retargetingPrimární zdroj DOC · 009Castro & Liskov — Practical Byzantine Fault Tolerance (1999)Primární zdroj
Revidováno: Primární zdroje · Nejde o investiční doporučení