Blockchain a jeho využití - Kryptozvasty.cz
Blockchain

Blockchain a jeho využití

Jak Funguje Blockchain

Porozumět blockchainu a kryptoměnám vyžaduje pochopení širšího spektra témat. Vysvětlím pojem decentralizovaná síť a porovnám to s client/server sítěmi. Poté přejdeme na blockchain, podíváme se na blok a prozkoumáme nejpoužívanější konsensus algoritmy. Závěrem se podíváme na největší výhodu a nevýhodu blockchainu a na blízkou budoucnost.

Následující text není vyčerpávající, je však dobrým odrazovým můstkem pro další studium.

Distribuované a decentralizované sítě

Blockchain je často doprovázen slovy distribuovaná či decentralizovaná síť (nebo systém). Pojďme si tedy prvně vysvětlit tyhle pojmy a prozkoumat rozdíly s dnes běžně používaným systémem client/server.

Server, node a počítače je v textu ekvivalent pro entitu, ke které se připojuje klient, tedy uživatel sítě (např. iniciátor transakce nebo konzument obsahu).

Distribuovaná síť funguje tak, se že veškerá data ukládá na všechny počítače. Aby se data mohli změnit, musí se na tom vzájemně domluvit všechny počítače (případně většina). Tato domluva je realizována přes posílání zpráv mezi počítači na základě stanoveného protokolu.

Decentralizovaná síť je taková síť, která nemá žádný centrální bod, který by ji řídil. To znamená že všechny počítače v síti jsou si rovny a podílejí se na řízení. Pokud poběží alespoň jediný počítač, síť bude fungovat. V případě že poběží jediný počítač, bude odpovědný za utvoření konsensu což není zcela v pořádku, takže většinou se vyžaduje běh vícero počítačů. Celou síť tvoří až desítky počítačů.

Dá se říct, že decentralizované sítě jsou současně distribuované.

Klient server sítě

Klient/server sítě jsou centralizované a fungují tak, že potřebuje-li server data změnit, nemusí se na tom domlouvat s případným jiným serverem v síti. Je-li v síti více serverů, každý má právo data změnit dle své libovůle, poté může změnu distribuovat dál (většinou se replikuje databáze ne nutně se všemi servery). Každý server je tedy centrální bod sítě. Pokud je server jediný v sítí a z nějakého důvodu přestane fungovat, nefunguje celá síť. Pokud je serverů více, síť bude fungovat a klient je schopen se připojit jen tehdy pokud má daný server přístup k datům klienta.

Rozdíly mezi sítěmi

Zásadní rozdíl mezi distribuovanými a client/server sítěmi tvoří tato trojice:

  • decentralizace,
  • bezpečnost a
  • škálovatelnost.

Škálovatelnost (scalability) je vlastnost, jež síti umožní zvládat stále se zvětšující počet transakcí (které rostou s počtem lidí, kteří síť používají). Jeden počítač je fyzicky schopen zvládnout jen určitý počet transakcí.

Bezpečnost (security) je schopnost ustát útok na řídící počítače sítě. Síť musí být nadále dostupná a zákaznická data musí být ochráněna před zneužitím či ztrátou.

Klient/server sítě jsou velice dobře škálovatelné. Pokud jeden server nezvládá obsloužit všechny příchozí transakce, přidá se další server a transakce se rozdělí. Tímto způsobem může síť růst téměř do nekonečna. Je důležité, aby se klient připojil vždy na ten správný server(y), kde jsou jeho data. To je lehce řešitelný problém.

Co se týče bezpečnosti, jsou centralizované sítě méně bezpečné než sítě decentralizované. Data mění pouze jediný server, který je může (nemusí) postupně distribuovat na další servery. Distribuce dat probíhá až po změně a nějaký čas to trvá. Navíc distribude neprobíhá mezi všemi servery (objem dat může být obrovský). Pokud ve správný čas napadnete ten správný server(y), jsou vaše data ztracena, nebo změněna bez vašeho vědomí.

Když to shrneme, klient/server sítě jsou lehce škálovatelné, ale jsou méně bezpečné a nejsou decentralizované.

V decentralizovaných sítích se musí všechny počítače domluvit na navrhované změně dat (změnu navrhuje jeden počítač). Až poté co všichni (nebo většina) souhlasí se změnou probíhá uložení dat (a to na všech počítačích současně). Síť je tedy kromě přirozené decentralizace také bezpečná. Jakmile někdo zničí jediný počítač, data jsou na všech ostatních. Pokud někdo navrhne nevhodnou změnu (podvodnou transakci, změnu historie), ostatní počítače ji odmítnou a dále udržují konzistentní data. Zničit či změnit data bez utvoření konsensu vyžaduje útok na všechny počítače sítě najednou. Pravděpodobnost výrazně klesá s větším počtem počítačů.

Decentralizoavné sítě jsou tedy velice bezpečné, ale jsou špatně škálovatelné. Kdyby tedy decentralizované sítě zajistili dobrou škálovatelnost, porazili by klient/server sítě, neboť u nich se složitěji dosahuje bezpečnosti. K tomuto problému se ještě dostaneme.

Ledger a blockchain

Nadále se budeme zabývat jen decentralizovanými sítěmi a blockchainem.

Ledger (nebo také distributed-ledger) je v doslovném překladu účetní knížka, což je databáze rozprostřena na více počítačů.

Jedna z konkrétních forem ledgeru je blockchain. Blockchain je složenina slov block a chain (česky blok a řetěz). Představte si to jako skutečný řetěz, který by jste z jednoho konce stále zvětšovali přidáváním nových ok řetězu.

Blockchain dělá to samé v softwarové podobě. V daných časových intervalech neustále roste díky přidáváním nových bloků. Pro blockchain je životně důležité zajistit konzistenci (neměnnost) dat (minulých bloků) přidaných v minulosti. Historie se nesmí změnit. To je zajištěno takzvaným hashováním.

Hashing je matematický proces, který je schopen vyrobit z dat libovolné velikosti (vstup) krátký kousek textu fixní velikosti (výstup, kterému se říká „hash“). Pointa je v tom, že z hashe se nedá odvodit vstup (z jakých dat hash vznikl). Avšak když operaci zkusíte znovu se stejným vstupem, dostane vždy stejný hash. Jakmile by se na vstupu změnil byť jediný znak, bude hash vypadat zcela jinak.

Poctivý počítač zná hash minulého bloku ve svém blockchainu. Pokud přijde návrh nového bloku, zkontroluje počítač svůj hash minulého bloku s hashem, který došel v novém bloku. Pokud se oba hashe shodují, je vše v pořádku a proběhne validace dalších náležitostí bloku (např. transakce). V kladném případě bude počítače souhlasit s přidáním bloku do blockchainu a oznámí to dalším počítačům. Pokud se hashe neshodují, vyhodnotí to počítač jako pokus o podvod a také informuje ostatní počítače.

Bitcoin používá SHA-256 hashování (hashovacích funkcí je víc). Např. hash slova „blockchain“ vypadá takto:

EF7797E13D3A75526946A3BCF00DAEC9FC9C9C4D51DDC7CC5DF888F74DD434D1

Nyní zpět k blockchainu.

Každý nový blok obsahuje mj. hash minulého bloku, aktuální datum včetně času a nové transakce. Díky hashi dochází k propojení všech ok řetězu, proto blockchain. Žádný blok z historie se nemůže změnit, protože by se změnil jeho hash, což by způsobilo změnu hashe všech následujích bloků až po současnost. Dodejme, že úplně prvnímu bloku v blockchainu se říká genesis blok (blok zrození).

Blok a block time

Blok, kromě výše popsaného (režijní data), obsahuje zejména nové transakce, které mohou vypadat jinak v každém blockchainu. Blok má většinou pevnou maximální velikost a nové bloky se do blockchainu přidávají v přibližně stejných intervalech. Čím je interval kratší, tím je z pohledu uživatele transakce rychlejší. Zde velice záleží na použitém konsensus mechanismu (algoritmu) a na konkrétní práci, která se musí provést pro přidání bloku. Časy se mohou lišit od několika vteřin po minuty.

V současnosti se používají dva konsensus mechanismy. Starší Proof-of-Work (POW), který používá Bitcoin a block time (čas, za který se vytěží a přidá nový blok do blockchainu) je nastaven na 10 minut. U Litecoinu je to  2,5 minuty. Novější je Proof-of-Stake (POS), který používá například Etherum a NEO s block time 15 a 20 vteřin.

Uvědomte si, že blok má často pevně nastavenou maximální velikost, takže se do něj vejde jen určité množství transakcí. Např. Bitcoin má velikost bloku nastavenou na 1 MB a vejde se do něj pouze něco málo přes 2,500 transakcí (průměrně zabírá jedna transakce 250 Bytů). Protože se blok těží 10 minut, může Bitcoin obsloužit maximálně asi 2,500 transakcí za 10 minut. Z toho se často počítá počet transakcí, které blockchain zvládne za vteřinu (TPS). Pro Bitcoin to vychází na 3 až 7 TPS.

Detaily o blocích a transakcích můžete nalézt na internetu v takzvaných blockchain explorerech. Dá se najít např. aktuální block time, počet transakcí v bloku, poplatky atd.

Další věc, kterou pouze nakousnu. Uvědomte si, že čím rychleji těžíte blok, tím rychleji roste velikost blockchainu co se týče úložiště na HDD. Litecoin blockchain je tedy větší než Bitcoin blockchain navzdory tomu, že je Litecoin mladší. Navíc větší blok znamená větší nároky na propustnost sítě. Řešit tedy škálovatelnost přes velikost bloku (Bitcoin casch) není vždy rozumná cesta a je potřeba vyvažovat všechny aspekty.

Pokud je blockchain veřejný, může se na utváření konsensu podílet kdokoliv kdo splní podmínky. K utváření konsensu je potřeba mít přístup k blockchainu, tedy k veškeré historii sítě (a také k datům uživatelů). Existují také privátní blockchainy, které si sami vybírají počítače, které mohou v síti operovat (firma si postaví svůj blockchain který funguje jen na jejich počítačích).

Tohle má vliv zejména na důvěryhodnost blockchainu. Pokud je blockchain privátní, nemůžete si být jisti, jestli někdo zevnitř historii nezmění. Public blockchain je chráněn díky počtu počítačů, které provozují nezávislé entity.

Poplatky za transakce

V závislosti na blockchainu může transakce obsahovat také poplatek, který platí ten kdo transakci iniciuje. Poplatek se často využívá jako odměna pro ty, kdo se podílejí na utváření konsensu. V případě Bitcoinu je dostane ten, kdo vytěží blok. Velikost poplatku se může lišit. V prosinci 2017 se poplatek za transakci u Bitcoinu vyšplhal skoro na 50 dolarů. V té době byla po Bitcoinu velká poptávka a síť nezvládala zpracovávat transakce. Těžaři si vybírají ty transakce, které obsahují větší poplatky. Transakce s menším poplatkem museli čekat ve frontě a dostalo se na ně za dlouhé hodiny.

Pokud je transakcí hodně, nemusí se ta vaše dostat do aktuálního bloku, musíte tedy čekat na další (u Bitcoinu dalších 10 minut) a doufat, že budete mít větší štěstí. Některé služby (burzy) často umožní přístup k Bitcoinu až po přidání ještě dalšího bloku (aby si byli jisté, že je blok bezpečně zapsaný a že nenastane změna).

Konsensus algoritmus/protokol

Konsensus algoritmus je motor decentralizovaných sítí. Je to bezpečný způsob, jak se mohou počítače v P2P síti domluvit na jedné verzi pravdy (konsensus = shoda). V našem případě se domlouvají na přidání nového bloku do blockchainu.

P2P je síť, ve které jsou si všechny počítače rovny. Je to jen “jiný” termín pro pojem decentralizované sítě.

Každý počítač v blockchain síti může navrhnout nový blok. Aby se nový blok přidal, musí se prvně distribuovat na všechny okolní počítače (full nody) a ty jej musí verifikovat a vyjádřit souhlas s přidáním. Za tímto účelem probíhá čilá síťová komunikace mezi počítači. O konsensus algoritmu se dá také hovořit o sadě pravidel (protokolu), které popisují jak přesně komunikovat a jaké data posílat, za účelem dosažení jednotné shody mezi všemi. Setkáváme se také s pojmem „governing rules“. Jelikož se síť sama zpravuje, říká se o ní, že je autonomní.

Dobrý konsensus algoritmus musí zajistit dobrou motivaci lidí se na tvoření konsensu podílet. Lidem se musí vyplatit koupit počítač a platit za elektřinu (počítač běží 24/7).  Dále se musí zajistit, aby daný počítač nepodváděl. Za podvod by měl zaplatit, aby se mu nevyplatilo to znovu zkoušet.

Pojďme se tedy podrobně podívat na konsensus algoritmy.

Proof of Work (POW)

Základem POW je soutěž mezi těžaři (ti co chtějí přidat nový blok) o rozluštění složité matematické úlohy. Úloha se řeší stylem pokus/omyl a spočívá ve zkoušení různých variant do doby, než se ji podaří vyřešit. Najít řešení trvá přibližně stejný čas. Obtížnost úlohy se dá nastavit, což umožňuje udržovat přibližně stejný blok time s rostoucím počtem výkonu těžících počítačů. Na vyluštění je potřeba velký počítačový výkon (hash-rate, nebo-li kolik pokusů je počítač schopen udělat za vteřinu), který jde ruku v ruce s náročností na elektřinu.

Nalezení řešení úlohy je složité, jeho ověří naopak jednoduché. Jakmile tedy počítač najde řešení, pošle ho ostatním v síti na ověření. Pokud ostatní počítače souhlasí, může se zařadit nový blok. Občas se stane, že řešení najdou dva počítače současně (začnou kolovat dvě různé verze řešení). I na to je myšleno a existuje pravidlo, které určí vítěze.

Bitcoinový POW spolehlivě funguje už 10 let a nikomu se nepodařilo síť hacknout.

Motivací pro těžaře jsou jednak poplatky za transakce, které budou vloženy do blockchainu a dále daný počet mincí za nalezení bloku. Tokeny u POW se takzvaně těží, to znamená že jsou zpočátku nedostupné a do oběhu se dostávají postupně právě s každým vytěženým blokem. Toto množství postupně klesá podle přesně daným pravidel až do bodu, kdy se všechny vytěží. Poté budou mineři odměněni pouze transakčními poplatky (aby se jim to vyplatilo, bude muset být cena dané měny hodně vysoká).

Pojďme se podívat na výhody a nevýhody POW.

Bohužel, ten kdo má větší výkon má také větší šanci vytěžit blok a dostat odměnu. Tato výhoda je exponenciální (každý hash se počítá). Dále se POW algoritmu vyčítá velká spotřeba energie za počítání úkolu. Spotřeba je značná a těžaři touží po odměně. Celé to vychází z předpokladu, že těžba se vyplatí, neboť za odměnu se zaplatí energie a ještě něco zbude. Někdy více, někdy méně, záleží na aktuální ceně tokenu. Pokud někdy uslyšíte, že se těžba Bitcoinu nevyplatí, znamená to, že je Bitcoin levný a hrozí, že za vytěženou odměnu těžaři nezaplatí náklady za elektřinu.

Další velká nevýhoda POW je pomalost. Teď je to např. u Bitcoinu nastavené tak, aby těžba trvala 10 minut a blok vytěží po každé někdo jiný (ideálně, počítače se združují do poolu, aby se zvýšila jejich šance…). Jednotlivec tedy dostane odměnu jen zřídka. Kdyby se měl block time zkrátit, spotřebovalo by to méně energie.

Ještě dodejme, že když bude daný počítače podvádět (navrhne podvodný blok), ostatní mu to neschválí a podvodník tak nemá nárok na odměnu. Podvádět se tedy nevyplatí (těžba vyznívá naprázdno).

Proof of Stake (POS)

Na utváření POS konsensu se může podílet každý, kdo zamkne určité množství tokenů daného blockchainu. Se zamčenými tokeny se nedá disponovat. To je opatření proti podvodníkům. Když někdo navrhne podvodný blok (tedy takový, na kterém se většina neshodne), přijde daný počítač o zamčené tokeny. Pokud se bude chovat poctivě, budou mu tokeny vráceny. Kdo chce provozovat řídící počítač (full node), musí si tokeny koupit.

Díky zamčeným tokenům je férovost těžby více lineární, neboť každý nový počítače musí zamknout stejně velké množství. Kdo chce mít dva počítače, potřebuje 2x více peněz. Nemůže mít 1,5 počítače (u POW hraje roli každý hash navíc).

U POS plyne odměna pouze z poplatků, které jsou obsaženy v transakcích. Tokeny jsou většinou vytěženy hned na začátku, aby se dali koupit. Existují případy, kdy se vytěží jen část tokenů, druhá část se uvolňuje postupně s těžbou. Dají se najít i jiné alternativy.

Při utváření konsensu se nemusí počítat složitý matematický úkol jako u POW. Počítače se na shodě domlouvají mezi sebou. Výhoda je, že se na jednom problému podílejí všichni současně (u POW řeší problém každý sám, ale použije se výsledek  jednoho počítače – domluva na konsensu probíhá až na konci).

U POS je složitá právě ta domluva. V závislosti na blockchainu a algoritmu nějaký počítač navrhne nový blok. Jakmile je k mání návrh nového bloku, může se začít ihned ověřovat. Na ověření se velice často používá nějaká verze algoritmu Byzantine Fault Tolerance / Byzantine General Problem (BFT).

Byzantine General Problem spočívá v dosažení konsensu mezi všemi počítači, kde se předpokládá, že některé mohou záměrně podvádět (jde o to najít případné podvodníky a eliminovat jejich rozhodnutí na konsensu). Konsensus se dosáhne tehdy, když většina loajálních a poctivých počítačů udělá neanonymní rozhodnutí o jejich verzi pravdy. Jinými slovy, většina počítačů má stejnou verzi pravdy a počítače vzájemně ví, kdo se na této pravdě podílel a kdo navrhl jinou (podvodnou) pravdu. Na základě toho se pak dá ukázat na podvodníka(y), který přichází o zamčené peníze. Tím pádem se mu podvádět nevyplatilo.

Ve zkratce to funguje tak, že každý počítač posílá svoji verzi pravdy ostatním a rozesílá také všechny verze, které obdržel od ostatních počítačů (vždy kromě toho, od koho danou verzi přijal). Každý počítače tedy ví, jak rozhodl sám, jakou verzi mu poskytli ostatní počítače, a co ostatní počítače poslali ostatním počítačům. Na základě toho se rozhodne.

Výhoda POS spočívá ve výrazně menší spotřebě energie a hlavně v rychlosti utváření konsensu, ke kterému se dá dospět řádově za vteřiny. Těžařům tedy stačí menší (avšak častější) odměna a jim se stále vyplatí hledat konsensus.

Nevýhoda spočívá ve složitosti algoritmu a potencionálním hacknutí. Nutno dodat, že některé projekty hledají zcela nový POS algoritmus, od kterého si slibují větší robustnost a rychlost (případně usnadnění škálovatelnosti).

Smart kontrakt / Smart contract (SC)

SC je program, který kontroluje transfer tokenů mezi uživateli na základě dané (naprogramované) podmínky. Tyto kontrakty se také dají uložit do blockchainu stejně jako transakce.

Ne všechny blockchainy podporují smart kontrakty. Blockchainy tak zvané první generace, třeba Bitcoin a Litecoin, nepracují se smart kontrakty. Blockchainy druhé generace ano a patří mezi ně například Ethereum (který SC přivedl na svět) a NEO.

Smart kontrakty je kapitola sama pro sebe, ptoto ji zde nebude více rozebírat. V tuto chvíli stačí vědět, že mohou být součástí transakce a že se mohou realizovat na základě nějaké události.

Největší výhoda blockchainu

Největší výhoda blockchainu spočívá v zajištění důvěry mezi dvěma účastníky nějaké transakce, kteří se navzájem neznají a tudíž by si v normálním životě nedůvěřovali. Důvěra je základním faktorem lidské komunikace a to platí také pro úřady, banky, vládu a všechny ostatní. Blockchain může důvěru zajistit a umožní tak vynechání / zastoupení prostředního článku v podobě banky, úřadu, notáře apod.

První generace blockchainu umožnila důvěryhodný transfer hodnoty mezi všemi účastníky v síti (Bitcoinové transakce). Druhá generace umožňuje vytvořit důmyslnější aplikace podobné bankovním službám, umožní ukládat soubory či zajistit poctivost pro sázkové hry. Jejich potenciál se ještě zcela neprojevil.

Největší nevýhoda blockchainu

Blockchain má jednu velkou nevýhodu a to je škálovatelnost. Jelikož se na utváření konsensu podílí více počítačů, je celý proces (např. transakce, konzumace obsahu) velice pomalý v porovnání s klient/server sítěmi. Když nestíhá klient/server síť, stačí přidat nový server. Tohle bohužel v decentralizovaných sítích neplatí. Přidání nového počítače síť nezrychlý a může ji paradoxně spíše zpomalit.

Blockchain se často porovnává s VISA sítí, která hravě zvládá 2.000 transakcí za vteřinu (TSP) a ve špičce klidně 50.000 (krátkodobě, trvalý nápor by také neustála). Bitcoin zvládá průměrně 5 TPS, Ethereum je na 15 TPS. Objevují se nové blockchainy, které slibují rychlost řádově v tisících TPS. Čas ukáže, jestli s touto rychlostí zaručí také bezpečnost a decentralizovanost sítě.

O blockchainech které se snaží vyřešit problém s rychlostí se mluví jako o třetí generaci.

Současnost a blízká budoucnost

Ukazuje se, že jediný blockchain nemůže zvládnout velký počet transakcí. Objevují se nové projekty, které to řeší paralelizací, tedy paralelním během vícero blockchainů vedle sebe a to v různé formě (např. ve stromové struktuře kde uprostřed běží hlavní chain který zprostředkovává komunikaci mezi blockchainy tvořící větve). Dále vidíme různé pokusy o propojení stávajících blockchainů přes jiný blockchain. Existují také projekty, kde má každý jednotlivý uživatel svůj blockchain, transakci si ověří pouze odesilatel a příjemce (transakce tak může trvat pouze vteřinu a je zdarma).

Zcela nedávno se objevili blockchainy, které na utvoření konsensu používají umělou inteligenci.

Nápadů na vylepšení je hodně a ukáže až čas, který z nich se prosadí.

Další díl pořadu – Je Bitcoin stále králem? ->

Další příspěvek

Napsat komentář

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