Důkaz práce (proof of work)

Dnes se podíváme na nejznámější stěžejní mechanismus většiny (zatím, 2020) kryptosítí a postavíme odrazový můstek pro skutečné ponoření do základních funkčních vztahů v moderních veřejných distribuovaných sítí. I když jednou bude důkaz práce prehistorickým dinosaurem a jen málokdo si vzpomene, že na něm fungoval Bitcoin, tak zde na Kryptozvědavci, i po deseti letech, bude článek o tom, o co jde. Protože důkazem práce to všechno začalo. Přeji příjemné čtení.

Úvod

Důkaz práce je jedno z nejvysvětlovanějších témat na stránkách věnujících se moderní kryptografii, podobně jako u DLT bohužel i zde mnohé z nich zaměňují obecnost za konkrétnost a vysvětlují proof of work např. pouze na blockchainu, což je strašně špatně a čtenáři to akorát uzavírá mysl. Jak poté přicházejí ostatní koncepty DLT a konsensuálních mechanismů, přestane jim to dávat smysl. Proto vysvětlím důkaz práce tak, jak se má – v čisté podobě.

Před ponořením do tohoto článku byste měli vědět, co to je DLT a jak funguje. Termíny jako obecná transakce, rozhodovací aktivum, konsensuální mechanismus nebo problém dvou generálů by se měl stát součástí vaší rezervní slovní zásoby.

Proof of work (PoW) je konsensuální mechanismus používaný nejenom v blockchainu, ale i v jiných typech DLT jako např. DAG (Directed Acyclic Graph), Hashgraph nebo třeba Tempo (o všech se na Kryptozvědavci dozvíte více). Rozhodovacím aktivem je zde množství výpočetní práce spojené s konkrétními obecnými transakcemi (nemůžeme říct s bloky, protože PoW se nepoužívá pouze u blockchainu).

Princip

Hledání čísla

Správný stav DLT používající PoW je určen následovně: pro data transakce/transakcí (samozřejmě splňující pravidla protokolu, tzn. řádně elektronicky podepsané atd.) vyslaných do sítě najdi takové číslo n, které, když se přidá k těmto datům a prožene jednosměrnou hashovací funkcí, bude jeho hash (digitální otisk) menší než určité číslo y. To v praxi probíhá strojovým hádáním.

Hashovací funkce je jednosměrná, takže je extrémně těžké (lépe řečeno dodnes neexistuje postup) podle určitého čísla y dokalkulovat k transakčním datům číslo n (tzv. nonci). Kvůli tomu se nonce hádá, zkouší se všechny možné kombinace. A to trvá. Lépe řečeno, trvá to nesčetněkrát delší dobu než ověření správného výsledku, což je důležité, protože kdyby bylo pro všechny účastníky sítě těžké ověřit správné řešení, nedával by konsensus žádný smysl.

Procesu ověřování se někdy říká těžení (a lidem, kteří ho provozují, těžaři), protože k hledání nonce je použit výpočetní výkon. Číslo y se může měnit a je dáno protokolem kryptosítě (a v drtivé většině případů se také mění, protože výpočetní výkon kvůli vývoji technologií stále dle Moorova zákona roste).

Pokud takové číslo najdeš a výsledek nasdílíš do kryptosítě jako první, je transakce (jedna nebo více) oficiálně součástí DLT veřejné databáze, tzn. každý dle protokolu dané kryptosítě (ať blockchainu nebo něčeho jiného) ví, že tato data patří do decentralizované databáze a žádná jiná data tam nepatří.

Mechanismus PoW tak řeší problém shody v decentralizovaném a distribuovaném prostředí. I když někdy může sloužit pouze jako doplňkový konsensuální mechanismus (příklad z praxe IOTA), tak se teď bavme o PoW jako o primárním rozhodovacím mechanismu. Za normálních okolností by uživatelé do sítě odesílali transakce a předpokládali, že kdo odešle transakci dřív, toho záznam bude v případě konfliktu zanesen do DLT dříve.

To je ale neproveditelné, protože data se sítěmi šíří různě a hodně rychle by v případě neshody mohlo dojít ke scénáři, že se síť rozdělí, protože se nedokáže dohodnout, čímž se stane síť nekonzistentní. Pokud uživatelé mají na výběr dvě verze aktuálního stavu DLT (tzv. problém dvojitého utracení) a nemají se řídit pravidlem, kdo dřív přijde ten dřív mele (který je dlouhodobě neudržitelný), nemají žádné vodítko k tomu, který stav si vybrat. Jak jim to vodítko dát, aniž bychom správný stav jednoduše autoritativně nařídili?

U PoW je vodítkem množství výpočetní práce stojící za ověřováním.

Neshoda

Neshoda znamená, že např. v jedné transakci odesílám 10 Bitcoinů vám, zatímco v druhé 10 Bitcoinů svému kamarádovi. Tak spolehlivě zdvojím svou zásobu Bitcoinů a mohu vás podvést podle toho, ke komu dorazí jaká transakce dříve (doublespending problem, problém dvojitého utracení).

Abychom nezůstali u kryptoměny, tak v případě neshody v kryptosíti chytrých kontraktů (třeba Etherea) dojde k situaci, že v jedné smlouvě určujete takové podmínky řízení firmy, zatímco v druhé úplně jiné podmínky řízení firmy. V jedné transakci ukládám výkonnou moc nad decentralizovanou firmou (ve formě chytré smlouvy) kamarádovi A a v druhé kamarádovi B. Neshody jsou všudypřítomné a je tedy třeba jim zabránit.

Pobídka k ověřování

Těžař musí být motivován k těžení, jinak se systém rozpadne. V případě Bitcoinu a Etherea jsou těžaři motivováni přídělem nativní kryptoměny. Zároveň, výpočetního výkonu není neomezené množství a k jeho zvýšení je třeba kupovat těžební počítače.

Pokud se někdo pokusí podvádět, většinou riskuje, že veškerá jeho nahromaděná odměna ztratí hodnotu (uživatelé udělají např. u blockchainu rozvětvení hlavního řetězce a jeho prostředky budou defacto ve virtuálním zapovězeném prostoru).

Stále však může dosáhnout zisku až do okamžiku, než si uživatelé uvědomí, že někdo podvádí, tj. může dosáhnout zisku z přechodného období. Aby ale vůbec dokázal podvádět, tak čtenáře tak nějak napadne, že by musel mít zhruba nadpoloviční výpočetní výkon než celá kryptosíť. Pokud však uživatelé zaznamenají, že se někde koncentruje příliš mnoho výpočetní síly na jednom místě, může už v tu chvíli dojít k poklesu nahromaděné odměny těžaře nebo vůbec důvěry v celou kryptosíť, takže vydělat na podvodu není úplně jednoduché.

Pokud ale má nějaký těžař velmi vysoký až téměř poloviční výpočetní výkon, nedává příliš smysl toto riziko podstupovat, protože s jeho výkonem dosáhne na vysoké hodnoty odměn, čímž je vlastně implicitně motivován nepodvádět, a to je geniální. Problém nastává až tehdy, kdy je všechna nativní kryptoměna „vytěžena“, i když opět platí, že ne každá nativní kryptoměna je předem dána (jsou i inflační sítě nebo deflační sítě).

S riziky útoků, motivací ověřovatelů a motivací uživatelů operuje motivační struktura kryptosítě. Není dokázáno, že zisk z přechodného období podvodu je pro útočníka lukrativnější než ztráta dlouhodobého nízkého zisku z těžení.

Nevýhody

Konsensuální mechanismus PoW má tři zásadnější nevýhody: vazba na výpočetní výkon, cena podvodného útoku a dlouhodobě vyšší odměny za ověřování transakcí.

Cena podvodného útoku

Pokud spáchám podvod na kryptosíť s PoW mechanismem a hodnota mé odměny jako těžaře klesne v důsledku útoku na nulu, stále mohu prodat svá těžební zařízení. Navíc mi úspory z rozsahu umožní při vyšším výpočetním výkonu dosáhnout vyššího výnosu (např. dvojnásobný výkon nemusí stát dvojnásobek).

Vazba na výpočetní výkon

Vazba na výpočetní výkon je kontroverzním bodem – na jednu stranu tento způsob těžení plýtvá obrovské množství energie, na stranu druhou to ale nemusí znamenat plýtvání. Je pravda, že hodnota kryptosítě může záviset na vstupu, kterým zde výpočetní výkon je, avšak pokud spotřebuji drahý materiál na výrobu šperku, neznamená to, že má šperk alespoň takovou nebo vyšší hodnotu než spotřebovaný materiál. Hodnota je subjektivní.

V tomto ohledu se může hodnota a užitek kryptosítě skrývat ve funkčnosti – pokud např. skrz Ethereum dokážu řídit firmu rychleji, levněji a bezpečněji, tak pro mě má hodnotu.

PoW není nutnou podmínkou pro mechanismus rozhodování, protože konsensuální mechanismus se vždy váže ekonomicky. I když existuje maximální snaha nikoho nezvýhodňovat, tak nelze nikomu zabránit, aby si nakoupil velké množství rozhodovacího aktiva. Kdokoliv si může koupit těžební počítače, což znamená vyřešenou distribuci „hlasů“ v síti.

Proto je novým (2020) trendem, který nastavila druhá nejznámější kryptosíť na světě, Ethereum, používat mechanismy, které na výpočetní síle založeny nejsou, konkrétně PoS (proof of stake, záruka vkladu). Rozhodovací aktivum můžeme spolehlivě nahradit něčím méně energeticky náročným.

Dlouhodobě vyšší odměny za ověřování transakcí

Dlouhodobě vyšší odměny za ověřování transakcí jsou způsobeny exponenciálně se snižující inflací nativního tokenu, který funguje jako odměna pro těžaře (pokud se samozřejmě jedná o deflační kryptosíť). Po určité době jsou tak těžaři závislí výhradně na přidaných poplatcích k transakcím, protože odměna za „vytěžení“ transakce/transakcí (tj. bloku – platí pro blockchain) je mizivá, a to vede k extrémně vysokým poplatkům (záleží ale na tom, jak dobře se daná DLT škáluje).

Shrnutí

Proof of work (PoW) je konsensuální mechanismus DLT, kde rozhoduje výpočetní výkon, řešící problém dvojitého „utracení“, kde dvojité utracení není spojeno pouze s měnou, ale se dvěma protichůdnými záznamy vyslanými do veřejné databáze.

Funguje to tak, že těžební stroje hádají hodně rychle (s frekvencí, která se jmenuje hashrate – hash jako otisk dat z jednosměrné funkce a rate jako míra) číslo, které když přidají k transakci a proženou jednosměrnou funkcí, tak jim zpravidla vypadne číslo v nějakém daném rozsahu, který se přizpůsobuje výpočetnímu výkonu celé sítě podle protokolu, který je přirozeně všem známý.

Útok 51% na PoW je ulehčen úsporami z rozsahu a cenou zpětného odkupu použitého hardwaru (těžebních strojů). I když by se mohlo zdát, že pokud se jedná o šifrování, tak by PoW měl být přirozeně nejpreferovanější rozhodovací algoritmus (jelikož se v něm přece počítá), opak je pravdou. Rozhodovacím aktivem nemusí být vždy výpočetní výkon, protože v konečném důsledku si stejně půjde rozhodovací aktivum koupit – nemůžete tak síti vnutit co nejvyšší decentralizaci.

Nakonec, cena nativního tokenu kryptosítí používajících PoW není zcela odvozena od ceny „spálené“ elektřiny. Toto mi trvalo pochopit celkem dlouho (zhruba 2 roky). Cena nativního tokenu je skutečně odvozena z funkčnosti – pokud chci provést obecnou transakci (napsat zprávu, vytvořit chytrou smlouvu, převést digitální majetek apod.) a využít všech výhod DLT, pak pro mě má kredit či palivo, za který to můžu udělat, zcela zjevně nějakou hodnotu.

A úplně nakonec, PoW mechanismus lze aplikovat různými způsoby. V blockchainu použitý PoW jako konsensuální mechanismus znamená věřit nejdelšímu řetězci transakčních bloků, ale nikdo neříká, že dokončenost transakce musí být na pravděpodobnostní bázi (tj. transakci v hloubce šesti bloků budeme považovat za hotovou, ale lze ji teoreticky kdykoliv změnit, pokud někdo předežene hlavní řetězec). Teoreticky může být 100 % vypořádána klidně jakákoliv transakce, jejíž blok obsahuje důkaz práce, akorát by pak ty hloubější transakce nebyly bezpečnější (a mělo by to ještě pár háčků, ale chápete :-)).

PoW však nemusí plnit funkci hlavního konsensuálního mechanismu. A právě tehdy se přestává hrát na nějaký nejdelší řetězec atd.

Zdroje

Článek na Medium.com od Georgiose Konstantopoulose z 8. prosince 2017

Pinterest – zdroj obrázku v náhledu

Napsat komentář

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..