Proof of Work je způsob, jakým Bitcoin činí vytváření bloků nákladným a jejich kontrolu snadnou. Těžaři soutěží ve výpočtech, jejichž výsledek nelze předem odhadnout. Hledají hash, tedy digitální otisk hlavičky bloku, který jako číslo nepřekročí stanovenou mez zvanou target. Takový výsledek ostatní rychle ověří. Full Node, počítač samostatně kontrolující pravidla Bitcoinu, ale zvlášť ověřuje i transakce: samotný důkaz práce nestačí k tomu, aby byl blok platný.
Představ si losování, ve kterém nelze vítězný los chytře vypočítat předem. Těžaři znovu a znovu mění data kandidátního bloku a pokaždé spočítají jeho hash. Většina výsledků nevyhoví. Jen hash s číselnou hodnotou menší nebo rovnou aktuálnímu targetu může představovat blokový Proof of Work. Vítěze je těžké najít, ale kdokoli dokáže jeho výsledek velmi rychle zkontrolovat. Bitcoin tím nevytváří důkaz užitečného výpočtu v běžném smyslu; vytváří veřejně ověřitelný důkaz, že někdo podstoupil nákladné hledání pro konkrétní hlavičku bloku. [1] [2]
Block Header je hlavička se základními údaji o bloku; Merkle Root je souhrnný otisk jeho transakcí. Nonce je číslo, které lze při hledání měnit. ASIC je čip určený pro konkrétní výpočetní úlohu; zde opakovaně používá hashovací funkci SHA-256. Těžař nejprve sestaví kandidátní blok: vybere transakce, vytvoří Coinbase Transaction s blokovou odměnou a z transakcí vypočítá Merkle Root. Z těchto údajů, odkazu na předchozí blok, času, targetu a nonce vznikne Block Header. Specializovaný ASIC pak počítá dvojité SHA-256 hashe mnoha variant hlavičky. Neřeší postupně matematickou hádanku, u které by se blížil k odpovědi. Každý pokus je nový náhodně vypadající výsledek a předchozí neúspěch neříká, zda uspěje pokus další. [3] [1]
Hash lze číst jako velké číslo. Síťový target je nejvyšší hodnota, kterou ještě pravidla dovolí. Čím je target nižší, tím menší část všech možných hashů projde a tím více pokusů je v průměru potřeba. Pole nBits ukládá target do hlavičky v kompaktním formátu. Obtížnost je jen relativní vyjádření náročnosti tohoto cíle. Není to počet nul, množství spotřebovaných joulů ani procento výkonu jednoho těžaře. Konkrétní blok může být nalezen velmi rychle i po dlouhém čekání; pravidla předepisují výsledek, ne počet pokusů, který k němu skutečně vedl. [2] [1]
Nonce v Block Headeru má jen čtyři bajty, takže rychlý ASIC může projít celý jeho rozsah a stále nenajít vyhovující hash. Těžba se proto neomezuje na nekonečné zvyšování jediného čísla. Software může změnit extra nonce uvnitř Coinbase Transaction, pořadí či výběr transakcí nebo další dovolená data. Tím se změní Coinbase Transaction, Merkle Root a nakonec celá hlavička, takže vznikne nový prostor kandidátů. Pool zároveň rozděluje odlišnou práci mezi mnoho zařízení, aby nezkoušela stejné varianty. [3]
Hash nepřevyšující target splňuje jedinou důležitou podmínku, nikoli všechna pravidla Bitcoinu. Full Node dále kontroluje velikost a strukturu bloku, návaznost na známou historii, Coinbase Transaction, výši odměny, podpisy, skripty a to, zda vstupy odkazují na existující, dosud neutracené prostředky. Těžař tedy nemůže drahým výpočtem přinutit ostatní, aby přijali vytvoření bitcoinů nad povolený limit nebo dvojí útratu. Neplatný blok zůstává neplatný bez ohledu na vloženou energii. Platný kandidát bez dostatečného Proof of Work naopak také nemůže rozšířit aktivní řetězec. [4] [1]
Někdy dva těžaři téměř současně zveřejní dva platné bloky ve stejné výšce. Síť může krátce vidět dvě větve. Uzly mezi platnými kandidáty sledují větev s největší kumulovanou prací, kterou Bitcoin Core vyjadřuje jako chainwork. Nejde vždy o prostý počet bloků, protože bloky mohly vzniknout při různém targetu. Kdo chce přepsat potvrzenou platbu, musí vytvořit alternativní platnou historii a dohnat i překonat práci, kterou běžná větev dál přidává. Další potvrzení proto obvykle zvyšují cenu útoku, ale nevytvářejí okamžitou matematickou nevratnost. [5] [1]
Hashrate vyjadřuje, kolik hashovacích pokusů se provede za sekundu. Kdyby target zůstal navždy stejný, rostoucí celkový Hashrate by bloky postupně zrychloval a pokles výkonu by je zpomaloval. Bitcoin proto na mainnetu přepočítává target po intervalech 2 016 bloků tak, aby se dlouhodobý průměr vracel přibližně k deseti minutám na blok. Výpočet porovnává skutečný čas intervalu s cílovými dvěma týdny a změnu omezuje protokolovými mezemi. Retarget nereaguje přímo na cenu BTC, počet uživatelů ani hlasování těžařů. Deset minut je cílový průměr, ne jízdní řád pro příští blok. [2]
Samostatný těžař může na platný blok čekat velmi dlouho, proto mnoho zařízení pracuje přes mining pool. Pool nastaví lehčí interní share target a podle odevzdaných shares odhaduje, kolik práce jednotliví účastníci přispěli. Většina shares nesplňuje přísnější síťový target a do Blockchainu se nikdy nezapíše. Pokud některý výsledek splní i síťový target, pool rozešle celý kandidátní blok. O jeho přijetí nerozhoduje pool ani velikost jeho Hashrate, ale nezávislá validace jednotlivých uzlů. [3]
Fyzická zařízení při hledání hashů spotřebovávají elektřinu a odvádějí teplo. Bitcoin však do bloku neukládá účtenku za energii. Z vítězného hashe nelze určit přesný počet pokusů, spotřebované kilowatthodiny, zdroj elektřiny ani místo těžaře. Proof of Work dává historii ekonomickou obranu právě tím, že nové pokusy mají ve fyzickém světě náklady, ale vyšší spotřeba sama automaticky neznamená dokonalejší bezpečnost ani čistší provoz. Posouzení bezpečnosti musí zahrnout také validaci uzly, rozložení Hashrate a konkrétní riziko; posouzení dopadů energie zase její zdroj, čas, účinnost a alternativní využití. [1] [2]
Full Node u každého bloku sám zkontroluje předchozí hash, nBits, odvozený target a hash hlavičky. Z blokových dat můžeš porovnat height, difficulty a chainwork, ale samotný vítězný hash neodhalí totožnost ani přesnou spotřebu těžaře. Při posuzování tvrzení typu „Bitcoin je po šesti potvrzeních bezpečný“ je potřeba znát hodnotu platby, schopnosti protivníka, rozložení práce a ochotu příjemce čekat. Proof of Work není marketingová nálepka ani hlas těžařů o pravidlech. Je to úzce definovaný, snadno kontrolovatelný vstup do mechanismu, kterým uzly vybírají mezi platnými historiemi. [2] [3] [5]
Pro nejúplnější obraz čtěte toto heslo společně s Těžba, Difficulty Adjustment, Timechain / Blockchain, Full Node, Block Subsidy. Opačným směrem na něj odkazují také Bitcoin, Satoshi Nakamoto, Bitcoin Whitepaper, Timechain / Blockchain.