proof of work vs proof of stake

Proof of Work vs Proof of Stake – studie, 1. část

Proof of Work vs Proof of Stake – Abstrakt

Studie vysvětluje a analyzuje dvě metody pro dosažení decentralizovaného konsensu v kryptoměnové síti: proof of work (POW) a proof of stake (POS). Předmětem studie je vysvětlení hashovací funkce a podstaty těžby, historie POW a vývoje těžebních zařízení, vysvětlení podstaty a motivace pro metodu POS, bezpečnost metod POW a POS, plán a architekturu Ethereum 2.0.

I. Proof of work

Hashovací funkce

Hashovací funkce tvoří základní stavební kámen velkého počtu postupů a technologií, které se pojí s blockchainem a kryptoměnami. S pomocí hashovací funkce lze vytvořit otisk dat (data fingerprint) – to znamená, že proženeme-li určitou sadu dat hashovací funkcí, získáme řetězec, který není prakticky možné získat z jiné sady dat. Příklad: aplikujeme-li na slovo bitcoin hashovací funkci SHA-256, výsledkem bude řetězec 6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b.

Řetězec získaný z hashovací funkce se nazývá hash.

Hashovací funkce mají několik základních vlastností, které z nich dělají silný nástroj v mnoha oblastech využití. Jedná se zejména o následující vlastnosti:

  • výsledkem konkrétní hashovací funkce je řetězec (hash) o fixní, předvídatelné délce (SHA-256 vrátí řetězec o délce 64 znaků, nehledě na délku vstupní sady dat – může se jednat o jedno slovo či knihu, výsledný řetězec bude mít vždy délku 64 znaků)
  • deterministická funkce (stejná funkce použitá na stejnou datovou sadu vždy vyprodukuje stejný hash)
  • jednosměrná funkce (můžeme získat hash ze sady dat, ne však sadu dat z hashe)
  • jakákoli změna ve vstupní sadě dat výrazně změní výsledný hash. Příklad:
    • bitcoin s malým “b” vrátí hash 6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b
    • Bitcoin s velkým “B” vrátí hash b4056df6691f8dc72e56302ddad345d65fead3ead9299609a826e2344eb63aa4

Hash je velmi snadné získat ze vstupní sady dat, snadné je rovněž ověření, zda konkrétní hash vyplývá z určité sady dat. Není však možné odvodit z hashe vstupní data. Jediný způsob, jak získat určitý hash, je zkoušení různých vstupních dat a pozorování výsledného hashe. Jak uvidíme v dalším textu, přesně toto je základním principem těžby.

Historie Proof of Work

Metodu proof of work (POW), kterou používá Bitcoin, vynalezl v roce 1997 kryptograf Adam Back. Funkci pod názvem “hashcash” původně zamýšlel jako prevenci e-mailového spamu, a v tomto smyslu byla i některými e-mailovými klienty používána. Backův hashcash stojí na principu, kdy každý odesílatel e-mailu (respektive jeho počítač) vykoná drobný výpočet, který nezabere příliš času při odesílání jednoho e-mailu, nicméně požadavek na větší množství výpočtů již je prohibitivně nákladný při hromadném spamování.

V bitcoinovém whitepaperu z roku 2008 pak Satoshi Nakamoto cituje Backovu práci a uvádí, že “pro implementaci timestamp serveru na bázi peer-to-peer je zapotřebí využít systém proof-of-work podobný systému Hashcash Adama Backa”.

Samotný Adam Back se na vývoji Bitcoinu podílí od samotných počátků. Byl jedním z lidí, se kterými se Satoshi radil v e-mailové komunikaci před publikací whitepaperu. V posledních letech je znám především jako CEO společnosti Blockstream, která vyvíjí sidechain Liquid a zaměstnává několik vývojářů pracujících na Bitcoin Core.

Proof of Work cyklus

Proof of work cyklus

Proof of work je úzce spjat s potvrzováním kryptoměnových transakcí. Zde si vysvětlíme POW na Bitcoinu, princip je však u všech kryptoměn těžených metodou POW stejný.

Vyjděme z obrázku výše – při potvrzení uživatelských transakcí a těžbě bloku dochází k následujícím procesům:

1) Uživatelé posílají do sítě své transakce, které musí splňovat pravidla protokolu (správný podpis, utrácení zůstatků které na adrese skutečně jsou apod.).

2) Tyto transakce shromažďují plné uzly (full nodes), které si drží databázi všech nepotvrzených transakcí. Tato databáze se nazývá memory pool.

3) Těžaři si vybírají nepotvrzené transakce z memory poolu, nejčastěji podle toho, jak velký transakční poplatek uživatel ke své transakci připojil. Z těchto transakcí si těžař sestavuje kandidátský blok – blok, který se bude pokoušet vytěžit.

4) Kandidátský blok představuje datovou sadu, která vstupuje do hash funkce (v případě Bitcoinu se jedná o funkci SHA-256). Těžařovým cílem je najít takový hash, který odpovídá zadání v podobě mining difficulty. Tento termín je zapotřebí si detailněji vysvětlit.

Mining difficulty a nonce

Mining difficulty neboli obtížnost těžby je parametr stanovovaný bitcoinovým protokolem. Difficulty zajišťuje, že těžba bitcoinových bloků je v průběhu času víceméně stejně obtížná – trvá vždy v průměru deset minut. To znamená, že i když v průběhu času výrazně rostl počet těžařů a jejich hashrate (výpočetní výkon dedikovaný k těžbě bitcoinů), bitcoinové bloky se netěží o nic rychleji.

Difficulty stanovuje cíl v podobě hodnoty, pod kterou musí být hledaný hash bloku. Čím menší je tato hodnota, tím těžší je hash nalézt. Těžař totiž nemá jinou možnost jak požadovaného hashe dosáhnout, než jej doslova hledat metodou brute forcingu – neustálého opakování hashovací funkce nad vstupní sadou dat, ve které při každém opakování (iteraci) mírně změní jednu hodnotu, aby byl výsledek hashovací funkce jiný. Hodnota, kterou těžař mění, se nazývá nonce. Těžař tudíž prohlédává celý možný rozsah hashů (2^256 možných výsledků), požadovaný hash se však nalézá v úzce stanoveném poli hodnot.

Hashovací funkce neumožňuje dopředu odhadnout, jaký bude výsledný hash. Umožňuje však odhadnutí, jak dlouho bude s určitým výpočetním výkonem trvat dosáhnout určitého hashe – a přesně toto je princip stanovování difficulty. Pokud v rozsahu posledních 2016 bitcoinových bloků (odpovídající zhruba dvěma týdnům) bylo časové rozpětí mezi bloky nižší než deset minut, difficulty se zvýší (požadovaný hash bude těžší nalézt); pokud bylo časové rozpětí vyšší než deset minut, difficulty se sníží (hash bude snadnější nalézt).

Těžař se tudíž snaží co nejrychleji nalézt požadovaný hash v cyklu změna nonce => hashovací funkce => porovnání výsledného hashe se zadáním => změna nonce. Jakmile narazí na hash odpovídající zadání, postupuje POW cyklus do další fáze.

5) Validní bitcoinový blok musí mít předepsanou formu – v hlavičce má odkaz na předcházející validní blok, nový hash odpovídající difficulty, a další metadata. Obsahem bloku jsou pak uživatelské transakce.

6) Těžař, který první nalezl správný hash, vyhrává právo připojit svůj kandidátský blok na konec blockchainu. Získává za to odměnu, která sestává ze dvou složek:

  • nově vytvořené bitcoiny: těžař získá množství bitcoinů, které předepisuje bitcoinový protokol. V počátečních letech se jednalo o 50 bitcoinů za blok, výše této odměny se však každých 210 000 bloků (zhruba 4 roky) půlí. Po halvingu v roce 2020 tak těžaři získávají 6,25 bitcoinů za blok. Toto je jediný způsob, jakým se nové bitcoiny mohou dostat do oběhu. Vlivem pravidelného půlení odměn tak nebude na světě více než 21 milionů bitcoinů. Prakticky jich nicméně v oběhu bude méně, jelikož těžaři v historii již několikrát udělali chybu při sestavování transakce připisující odměnu a některé odměny tak byly navždy ztraceny.
  • transakční poplatky: těžař získává všechny transakční poplatky z transakcí, které zařadil do těženého bloku. Role této složky odměny bude v průběhu času narůstat, jelikož protokolová odměna v podobě nových bitcoinů každých 210 000 bloků klesá.

Poznámka: obtížnost těžby se často ilustruje na tom, že hashe bitcoinových bloků začínají na vysoký počet nul. Je tomu tak proto, že hash je vyjádřen v tzv. hexadecimální soustavě, kde čím je číslo nižší, tím větší počet nul má na svém začátku.

 burza binance

Hashe aktuálních bloků si může každý prohlédnout v blockchain exploreru, například zde.

hashe aktuálních bloků

Blockchain explorer btc2.trezor.io. Sloupeček Hash je úspěšně nalezeným hashem dle zadání protokolu. 

Úloha POW

Proof of work má dvě hlavní úlohy: zajišťuje decentralizovanou shodu na jedné verzi historie a zajišťuje předvídatelnou inflaci.

Decentralizovaná shoda – Bitcoin záměrně nemá žádnou centrální koordinační stranu, která by zajišťovala clearingové služby (clearing = vypořádání transakcí a provedení změn na účtech/adresách). Clearing namísto toho provádí těžař, který v daný moment vyhraje matematickou loterii spočívající v hledání správného hashe. Tím je ze systému odstraněn prvek důvěry – vyhrávající těžaři se mění a chtějí-li “zůstat ve hře”, musejí nadále dodávat důkazy o vynaložené práci. Nikdo tak nemá privilegované postavení, které by šlo zneužít či zregulovat státními složkami.

Vzhledem k tomu, že systém POW dynamicky reaguje na výši hashrate a těžba je vysoce konkurenční, odměna za vytěžení bloku je podobná jako náklad na vytěžení bloku. Jedná se o manifestaci základního ekonomického pravidla: v dokonale konkurenčním prostředí se mezní náklady rovnají mezním výnosům (MU = MC). To odrazuje těžaře od podvádění, jelikož nevalidní bloky jsou ostatními těžaři a provozovateli uzlů odmítnuty. Těžař tak vynaloží výpočetní výkon zbytečně a je ve ztrátě.

Předvídatelná inflace – dynamická úprava difficulty zajišťuje, že bitcoinové bloky mají průměrné rozpětí 10 minut. Vzhledem k tomu, že nové bitcoiny se dostávají do oběhu pouze prostřednictvím odměny za vytěžení bloku, je konstantní časové rozpětí mezi bloky zásadní pro předvídatelnou inflaci. Inflací zde myslíme “nafukování” peněžní zásoby bitcoinu, až k hornímu limitu 21 milionů bitcoinů.

bitcoin inflace v čase

Měnová inflace bitcoinu: oranžová křivka (levá osa Y) vyjadřuje roční míru inflace, modrá křivka (pravá osa Y) vyjadřuje celkové množství bitcoinů v oběhu. Osa X vyjadřuje číslo bitcoinového bloku (v tisících). K půlení odměn ve formě nově vznikajících bitcoinů dochází každých 210 tisíc bloků.

V dalším dílu tohoto seriálu se budu věnovat vývoji těžebního hardware a PoW kryptoměnám podle jednotlivých typů.

Tento seriál vychází ze studie Proof of Work vs Proof of Stake vypracované pro Invictus mining s.r.o.

.

Podobné články

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

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