Co je Proof of Work (PoW)?
Domů
Články
Co je Proof of Work (PoW)?

Co je Proof of Work (PoW)?

Pokročilí
Zveřejněno Dec 6, 2018Aktualizováno Mar 8, 2024
10m

Úvod

Proof of Work (běžně zkracován na PoW) je mechanismus, který brání dvojitým útratám. Tento algoritmus konsenzu používá většina hlavních kryptoměn. Nazýváme tak metodu, která zabezpečuje účetní knihu dané kryptoměny.

Proof of Work byl vůbec první algoritmus konsenzu a dodnes je tím nejpoužívanějším. V roce 2008 ho ve své bílé knize Bitcoinu představil Satoshi Nakamoto, ale tato technologie sahá ještě dál do minulosti. 

Raným příkladem algoritmu Proof of Work v časech, kdy ještě neexistovaly kryptoměny, je HashCash Adama Backa. Při odeslání e-mailu vyžadoval na straně odesílatele drobný výpočet, čímž se na straně příjemců redukoval spam. Tento výpočet legitimního odesílatele zprávy prakticky nic nestál, ale při odesílání hromadných e-mailů se požadovaný výpočetní výkon rychle nasčítal.


Co je dvojitá útrata?

Ke dvojité útratě dochází, když jsou stejné prostředky utraceny víc než jednou. Tento termín se používá téměř výhradně v kontextu digitálních peněz – utratit dvakrát stejnou hotovost zrovna moc dobře nelze. Když zaplatíte kávu v hotovosti pokladní, která ji vloží do pokladny, nemůžete jít do kavárny přes ulici a stejnou bankovkou zaplatit za další kávu.

V režimu digitálních peněz tato možnost existuje. Určitě jste už někdy duplikovali počítačový soubor – stačí ho kopírovat a vložit. Stejný soubor můžete odeslat e-mailem deseti, dvaceti nebo třeba padesáti lidem. 

Vzhledem k tomu, že digitální peníze jsou jen data, musíte lidem zabránit, aby stejné jednotky nekopírovali a neutráceli je na jiných místech. V opačném případě se vaše měna okamžitě zhroutí. 

Podrobnější vysvětlení dvojité útraty najdete v článku Vysvětlení problému dvojité útraty.


Proč je Proof of Work nezbytný?

Pokud jste četli našeho průvodce blockchainovou technologií, víte, že uživatele do sítě vysílají své transakce. Takové transakce ale nejsou okamžitě považovány za platné. Platné jsou až v okamžiku, kdy jsou přidány na blockchain. 
Blockchain je velká databáze, kterou si může zobrazit každý uživatel, takže je možné si ověřit, jestli už byly finanční prostředky předtím utraceny. Představte si to takto: vy a tři přátelé máte poznámkový blok. Kdykoli kdokoli z vás chce provést nějaký převod jednotek, které používáte, zapíšete to do něj – Alice zaplatí Bobovi pět jednotek, Bob zaplatí Carol dvě jednotky atd.
Má to ale ještě jeden háček – pokaždé, když uděláte nějakou transakci, odkážete se na transakci, ze které vaše prostředky pochází. Takže kdyby Bob platil Carol dvě jednotky, záznam by ve skutečnosti vypadal následovně: Bob zaplatí Carol dvě jednotky z předchozí transakce s Alicí.

Teď máme způsob, kterým můžeme jednotky sledovat. Když se Bob pokusí udělat další transakci se stejnými jednotkami, které zrovna poslal Carol, každý to bude okamžitě vědět. Skupina mu neumožní takovou transakci přidat do poznámkového bloku.

Tohle by mohlo fungovat dobře v malé skupině lidí. Všichni se dobře znají, takže by se pravděpodobně dokázali dohodnout na tom, kdo by měl do poznámkového bloku přidávat transakce. Co když ale budeme chtít použít skupinu o 10 000 lidech? Nápad s poznámkovým blokem nelze dobře škálovat, protože nikdo nebude chtít svěřit správu takového bloku cizímu člověku.

A od toho existuje Proof of Work. Zaručuje, že uživatelé nemohou utrácet peníze, které nejsou oprávněni utratit. Kombinace teorie her a kryptografie umožňuje komukoli pomocí algoritmu PoW aktualizovat blockchain (v souladu s pravidly systému).


Jak PoW funguje?

Náš poznámkový blok z předchozího příkladu je blockchain. Transakce do něj ale nepřidáváme po jedné, místo toho je shlukujeme do bloků. Ohlásíme je síti a pak je uživatelé, kteří vytvářejí blok, zahrnou do kandidátského bloku. Transakce budou považovány za platné pouze v případě, že se z kandidátského bloku stane potvrzený blok, což znamená, že byl přidán na blockchain.

Přidání bloku na blockchain ale není levná záležitost. Těžař (uživatel vytvářející blok) na blockchainu, který používá Proof of Work, musí za tuto výsadu obětovat vlastní zdroje. Těmito zdroji je výpočetní výkon, který se používá k hashování dat bloku, dokud se nenajde řešení k hádance.
Hashování dat bloku znamená, že data musí projít hashovací funkcí, ze které se vygeneruje hash bloku. Tento hash bloku funguje jako „otisk prstu“ – je to identita pro vaše vstupní data a každý blok má jedinečný hash.

Získat vstupní data z hashe bloku opačným způsobem je prakticky nemožné. Když ale vstupní data znáte, ověření správnosti hashe je pro vás naprosto triviální. Stačí vstupní data odeslat funkci a ověřit, jestli je výstup stejný.

Proof of Work od vás vyžaduje data, jejichž hash odpovídá určitým podmínkám. Vy ale nevíte, jak se k nim dostat. Vaší jedinou možností je odeslat data do hashovací funkce a ověřit, zda odpovídají podmínkám. Pokud jim neodpovídají, budete muset mírnou úpravou dat získat jiný hash. Změnou jediného znaku ve vašich datech získáte úplně jiný výsledek, takže není možné předvídat, jak by mohl výsledek vypadat.

Proto když chcete vytvořit blok, je to tipovací hra. Obvykle vezmete informace o všech transakcích, které chcete přidat do bloku, a nějaká další důležitá data a pak to všechno zahashujete. Ale vzhledem k tomu, že se vaše sada dat nebude měnit, musíte přidat informace, které jsou proměnné. Jinak by vaším výstupem byl vždy stejný hash. Těmto proměnným datům říkáme nonce. Je to číslo, které s každým pokusem změníte, abyste vždy získali jiný hash. A tomuto procesu se říká těžba.

Když si to shrneme, těžba je proces, při kterém shromažďujete blockchainová data a hashujete je pomocí nonce, dokud nenajdete správný hash. Když najdete hash, který splňuje podmínky stanovené protokolem, získáte právo vyslat na síť nový blok. V tento okamžik ostatní účastníci sítě aktualizují své blockchainy, aby zahrnovaly tento nový blok.

U hlavních kryptoměn je v dnešní době neuvěřitelně obtížné tyto podmínky uspokojit. Čím vyšší má síť hash rate, tím obtížnější je najít platný hash. Dělá se to proto, aby se bloky nenacházely příliš rychle.

Jak si asi dokážete představit, snaha uhodnout obrovské množství hashů dokáže být pro počítače velmi nákladná. Plýtváte výpočetní cykly i elektřinu. Ale když najdete platný hash, protokol vás odmění kryptoměnou.

Pojďme si zrekapitulovat, co zatím víme:

  • Těžba je nákladná.
  • Za vytvoření platného bloku získáte odměnu.
  • Když znáte vstupní data, můžete si snadno ověřit jejich hash – uživatelé, kteří se nevěnují těžbě, si mohou snadno ověřit, jestli je blok platný, aniž by na to museli vynaložit spoustu výpočetního výkonu.

Zatím všechno funguje hladce. Ale co když se pokusíte podvádět? Co vám brání ve vložení podvodných transakcí do bloku a vyprodukování platného hashe?

V tu chvíli přichází na řadu kryptografie s veřejným klíčem. V tomto článku se jí do hloubky věnovat nebudeme, ale pokud vás zajímají podrobnější informace, můžete si přečíst článek Co je kryptografie s veřejným klíčem ? Stručně řečeno používáme několik kryptografických triků, které komukoli umožňují ověřit, jestli má někdo právo přesunout finanční prostředky, které se snaží utratit.
Když vytvoříte transakci, zároveň ji podepíšete. Kdokoli na síti může porovnat váš podpis s vaším veřejným klíčem a zkontrolovat, jestli se shodují. Zkontroluje i to, jestli vlastně můžete prostředky utratit a jestli součet vašich vstupů je vyšší než součet vašich výstupů (tj. že neutrácíte víc, než máte).

Jakýkoli blok, který obsahuje neplatnou transakci, bude sítí automaticky odmítnut. Už jen samotný pokus o podvod pro vás bude nákladný. Budete plýtvat vlastními zdroji a nic za to nezískáte.

V tom spočívá krása mechanismu Proof of Work: podvádění je nákladné, ale poctivé jednání je výnosné. Každému racionálně smýšlejícímu těžaři bude záležet na návratnosti investice, takže je možné očekávat, že se bude chovat takovým způsobem, který mu zaručuje výnos.



Chcete začít s kryptoměnami? Kupte si Bitcoin na platformě Binance!



Proof of Work vs. Proof of Stake

Existuje mnoho algoritmů konsenzu, ale jedním z nejočekávatelnějších je Proof of Stake (PoS). Jeho koncept pochází z roku 2011 a zatím byl implementován v některých menších protokolech. Žádný z velkých blockchainů ho ale zatím nepoužívá.
V systémech Proof of Stake jsou těžaři nahrazeni validátory. Těžba ani závod o uhodnutí hashe nejsou potřeba. Místo toho jsou náhodně vybráni uživatelé, a když jsou vybráni, musí navrhnout („ukovat“) blok. Když je blok platný, dostanou odměnu tvořenou poplatky za transakce v bloku.
Vybrán ale nemůže být kdokoli – protokol si uživatele vybírá na základě řady faktorů. Aby mohli být uživatelé vybráni, musí uzamknout podíl (stake), což je předem stanovená částka v nativní měně blockchainu. Tento stake funguje jako kauce: stejně jako obžalovaní skládají velký obnos peněz, aby je to odradilo od nedostavení se k soudu, validátoři uzamykají svůj stake, aby je to odradilo od podvádění. Když budou jednat nečestně, o svůj stake (nebo jeho část) přijdou.
Mechanismus Proof of Stake má oproti mechanismu Proof of Work určité výhody. Mezi nejvýznamnější z nich patří menší uhlíková stopa – PoS nepotřebuje žádné vysoce výkonné těžařské farmy, takže oproti PoW spotřebuje jen zlomek elektřiny. 

Na druhou stranu není tak osvědčený jako PoW. Přestože může být mechanismus PoW vnímán jako nehospodárný, těžba je jediným mechanismem konsenzu, který se osvědčil v dostatečném měřítku. Jen za něco málo přes deset let zabezpečil transakce v hodnotě biliónů dolarů. Aby bylo možné s jistotou říct, jestli se mu dokáže mechanismus PoS v zabezpečení vyrovnat, je potřeba ho řádně otestovat ve skutečném světě. 


Závěrem

Mechanismus Proof of Work je původním řešením problému dvojité útraty, který se ukázal jako spolehlivý a bezpečný. Bitcoin dokázal, že k tomu, abychom zabránili dvojitým útratám stejných prostředků, nepotřebujeme centralizované subjekty. Účastníci decentralizovaného prostředí se díky chytrému použití kryptografie, hashovacích funkcí a teorie her dokáží na stavu finanční databáze shodnout.