Jak blockchain funguje
Když jsme si teď prošli základy blockchainu, podívejme se na to, jak funguje uvnitř. Tyto informace by vám měly pomoct při rozhodování, jestli blockchain funguje pro váš scénář.
Jak jsou data distribuovaná?
Náš scénář zahrnuje několik firem. Ve zpracovatelské mlékárně bychom mohli mít centralizovanou databázi. Žádný účastník se ale nechce stát centrální autoritou. Mohli bychom tedy použít blockchainový distribuovaný registr. Použití blockchainu eliminuje nutnost stanovit centrální autoritu. Navíc platí, že každý účastník s blockchainovým uzlem má kopii registru, aby mohl provádět vlastní auditování a integraci se svými systémy. Ale není nezbytně nutné, aby každá firma měla svůj vlastní uzel. Uzly je možné mezi partnery sdílet.
Každý uzel je k jiným uzlům připojen prostřednictvím blockchainové sítě. Například společnost Dalia Pelayo Farms, výrobce zmrzliny i jednotlivá zmrzlinářství mají své vlastní uzly, které si sami spravují. Contoso West a Contoso East jsou samostatní partneři, kteří spadají pod stejnou mateřskou společnost. Contoso má jeden uzel. Vztahy uzlů s jednotlivým společnostem nemusí být v relaci 1:1.
Změny stavu
Data v blockchainu reprezentují stav. To je důvod, proč blockchain dobře funguje s digitálními tokeny, jako jsou kryptoměny. Pokud si to představíme na příkladu fyzické měny, tak mince může být v jednom okamžiku v kapse jen jedné osoby. Pokud máte minci v kapse vy, je z hlediska aktuálního stavu ve vašem vlastnictví. Pokud ji dáte kamarádovi, stav se změní tak, že jejím vlastníkem se stane tento člověk. V našem scénáři se přesunují dodávky v rámci dodavatelského řetězce. Odpovědnost za produkt je nutné přenášet. Údaj, který nás zajímá, je odpovědný účastník, teplota a to, jestli je produkt vyhovující.
Blockchain používá transakce ke změně stavu dat z jedné hodnoty na jinou. Potřebujeme třeba vědět, jestli se zmrzlina skladuje při teplotě pod bodem mrazu. Při přepravě zmrzliny teplotní senzor pravidelně hlásí teplotu. Nahlášená teplota představuje transakci, která se odešle do transakčního uzlu blockchainu.
Ve scénáři se zmrzlinou se při přepravě dodávky v dodavatelském řetězci odešle transakce při každé změně stavu. Například tato ilustrace znázorňuje transakce u typické dodávky k výrobci zmrzliny. Při každé transakci se změní buď odpovědný účastník, nebo teplota. Aktuální stav registru tvoří transakce zpracované v daném pořadí.
Vámi odeslaná transakce zamíří do transakčního uzlu blockchainu. Řekněme, že společnost Dalia Pelayo Farms odešle dodávku mléka prostřednictvím společnosti Contoso West Shipping. Systém dodávek ve společnosti Dalia Pelayo Farms odešle transakci do jejího uzlu v blockchainu. Tato transakce přesune odpovědnost za dodávku z této zemědělské firmy na Contoso West Shipping.
Blockchain rozešle transakci do celé blockchainové sítě. Každý uzel získá kopii transakce.
Každý uzel tuto transakci zpracuje, ale ta nadále vyžaduje ověření pomocí mechanismu pro konsensus. Konsensus zajišťuje konzistenci a důvěryhodnost v distribuovaném registru.
Díky čemu můžete důvěřovat, že jsou data v registru konzistentní?
V distribuované síti je obtížné určit, co je pravdivé, protože změny dat musí probíhat napříč všemi uzly. Co se stane, když uzel výrobce zmrzliny neobdrží transakci představující dodávku? Jak se dozví, jestli mu farma odeslala mléko? Co když dojde k poruše mrazicího vozu přepravní firmy a mléko se zkazí? Má přepravní firma možnost svůj registr změnit, aby se vyhnula odpovědnosti?
K ověřování a potvrzování dat mezi všemi uzly blockchainu se používá mechanismus pro konsensus. Konsensus představuje způsob, jak se všechny decentralizované uzly můžou dostat do stejného stavu. Při přenosu hodnoty nebo odpovědnosti záleží na pořadí. Pokud například převádíte vlastnictví auta na kamaráda, nemůžete ho zároveň převádět i na kolegu z práce. Jde o tzv. problém dvojitého výdaje (double spend), který se řeší právě konsensem. Konsensus zajišťuje správné pořadí transakcí a integritu blockchainu. V rámci hledání konsensu se skupina transakcí ověřuje jako blok a síť musí zařazení bloku do blockchainu odsouhlasit.
Existuje několik algoritmů pro konsensus v blockchainu a patří mezi ně PoW (proof of work), PoS (proof of stake) a PoA (proof of authority). Každý algoritmus řeší konzistenci jiným způsobem. Jednoduše řečeno, konsensus představuje způsob, jak se distribuovaný registr dostává do všemi sdíleného stavu.
Co je blok?
Blok je cluster dat v rámci blockchainu, který uchovává informace o transakcích. Počet transakcí v bloku je obvykle založený na čase. Například tato ilustrace znázorňuje blok transakcí, k nimž došlo během posledních 10 minut.
Na základě konsensu se ověřené bloky přidají do každého uzlu v blockchainu. Vzhledem k tomu, že všechny uzly v řetězci mají stejné bloky, je registr konzistentní v celé síti. Výsledkem je, že všechny uzly obsahují stejná ověřená data v odsouhlaseném pořadí.
Díky čemu máte jistotu, že je registr nezměnitelný?
Možná se domníváte, že pokud máte nad registrem kontrolu ve svém uzlu, stačí změnit data ve vaší kopii. Jak to, že jsou data nezměnitelná?
Blockchain používá kryptografickou hodnotu hash k vytvoření propojení mezi bloky. Díky tomuto propojení bloků lze pořadí transakcí odsouhlasit na základě algoritmu pro konsensus. Kryptografická hodnota hash je algoritmus, který mapuje data libovolné velikosti na bitové vyjádření s pevnou velikostí. Můžete si to představit jako digitální otisk prstu. Bitcoin používá algoritmus hash SHA-256. Pokud použijete funkci hash SHA-256 na dokumentu stránky 100, výstupem funkce je 256bitová hodnota hash. Pokud v dokumentu změníte jenom jeden znak a znovu vygenerujete hodnotu hash, bude výstup jinou 256bitovou hodnotou hash. Teď si představte, že jako vstup do funkce hash použijeme blok dat. Výstupem bude jedinečná hodnota hash pro data v tomto bloku.
Blockchain na základě hodnot hash detekuje, jestli v blocích došlo k nějakým změnám. Zahrnutím hodnoty hash předchozího bloku při generování hodnoty hash dalšího bloku dojde ke zřetězení bloků prostřednictvím hodnot hash.
Blockchain zajišťuje důvěryhodnost tím, že na základě hodnot hash prokazuje, že se historie dat nezměnila. Tím, že se při vytváření nového bloku zahrne hodnota hash předchozího bloku, vznikne nezměnitelný řetězec transakcí v pevném pořadí.
Pokud dojde k úpravě libovolného bloku v řetězci, bude se lišit hodnota hash následných bloků. Výsledkem bude, že se při ověřování zjistí nesoulad.
Důvěryhodná logika
Blockchain nám umožňuje uchovávat data, která jsou konzistentní a kterým je možné důvěřovat. Jak přidáme logiku, která bude provádět totéž na každém uzlu?
V našem scénáři potřebujeme logiku pro přenos odpovědnosti za produkt z jednoho účastníka na druhého. Také potřebujeme na základě dat ze senzoru teploty IoT ověřovat, jestli teplota příliš nestoupla.
Decentralizovaná aplikace (DApp) je aplikace v distribuovaném výpočetním systému. V tomto modulu se zaměříme na použití blockchainového protokolu Ethereum. Aplikace Ethereum DApp se označují jako inteligentní kontrakty. Inteligentní kontrakt obsahuje logiku, která se provádí jako součást transakce. Logiku v protokolu Ethereum programujete v programovacím jazyce Solidity.
Inteligentní kontrakty se nasazují do blockchainu a odkazuje se na ně prostřednictvím adresy. Pokud chcete použít inteligentní kontrakt, vytvoříte instanci. Instance inteligentního kontraktu obsahuje stavová data a programovou logiku. V našem scénáři instance inteligentního kontraktu obsahuje data, jako je odpovědný účastník, poloha a údaj, jestli se teplota produktu nedostala mimo povolený rozsah. U instance můžeme provádět funkce pro přenos odpovědnosti nebo příjem telemetrických dat o teplotě.
Když se odpovědnost za produkt přenese na jiného účastníka, uskuteční se transakce. Logika inteligentního kontraktu aktualizuje stavová data. V našem scénáři se zmrzlinou vytvoří expediční systém výrobce zmrzliny instanci inteligentního kontraktu pro novou dodávku zmrzliny. Expediční systém výrobce odešle transakci, která vyvolá funkci TransferResponsibility – ta přenese odpovědnost za dodávku na přepravce Contoso East. Blockchainová síť odešle tuto transakci do všech uzlů. Logika inteligentního kontraktu se provede na každém uzlu.
Co když během dodávky dojde k poruše mrazicí jednotky a teplota zmrzliny překročí bod mrazu? Senzor teploty IoT sleduje teplotu zmrzliny a pravidelně odesílá transakce. Pokud je teplota nad bodem mrazu, logika inteligentního kontraktu označí zásilku jako nedodržující předpisy.
Vzhledem k tomu, že transakce je zahrnuta v řetězci bloků, existuje neměnný záznam o tom, kdy se zásilka stala nedodržující předpisy. Zmrzlinářství může dodávku odmítnout a vyhnout se tak problémům v souvislosti s bezpečností potravin.
Stejně jako data v blockchainu je inteligentní kontrakt nezměnitelný. Po nasazení není možné logiku změnit. Proto můžete důvěřovat tomu, že se logika inteligentního kontraktu vždy provádí na všech uzlech. Případné změny kódu vyžadují nasazení nového inteligentního kontraktu s novou adresou.