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 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. Není však nutné, aby každá společnost měla svůj vlastní uzel. Partneři můžou sdílet uzly.
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. Data, která nás zajímají, jsou zodpovědná strana, teplota a jestli je produkt v souladu s předpisy.
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. Hlášená teplota je transakce, která se odesílá do uzlu blockchainové transakce.
Ve scénáři zmrzliny se při odeslání zásilky prostřednictvím dodavatelského řetězce odešle transakce pokaždé, když se stav změní. 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 Dalia Pelayo Farms odešle transakci do svého blockchainového uzlu. 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 zpracovává transakci, ale stále vyžaduje ověření pomocí mechanismu konsensu. 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 pravda, protože změny dat musí probíhat ve všech uzlech. 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. Tento problém se označuje jako problém s dvojitou útratou, který řeší konsensus. 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 blockchainu, včetně ověření práce, důkazu o sázce a důkazu autority. 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 následující obrázek znázorňuje blok obsahující transakce, ke kterým došlo za 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í.
Jak můžete důvěřovat tomu, že hlavní kniha je neměnná?
Měli byste si myslet, že pokud máte kontrolu nad registrem ve vašem uzlu, stačí změnit data ve své 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 se nějaký blok změní v řetězci, pozdější bloky mají jinou hodnotu hash. Výsledkem bude, že se při ověřování zjistí nesoulad.
Důvěryhodná logika
Blockchain nám umožňuje ukládat data, která jsou konzistentní a důvěryhodná. 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. Potřebujeme také použít data ze senzorů teplot IoT, abychom věděli, jestli je teplota příliš vysoká.
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 logiku programu. V našem scénáři instance inteligentního kontraktu obsahuje data, jako je zodpovědný účastník, umístění a pokud teplota produktu nedodržuje předpisy. 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 jinou stranu, transakce se provede. 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 továrny odešle transakci, která volá funkci TransferResponsibility , aby přenesla odpovědnost za dodávku do společnosti Contoso East. Blockchainová síť odešle tuto transakci do všech uzlů. Logika inteligentního kontraktu se spouští v každém uzlu.
Co když během dodávky chladicí jednotka selže a teplota zmrzliny překročí mraz? Senzor teploty IoT sleduje teplotu zmrzliny a pravidelně odesílá transakce. Pokud teplota překročí zmrazení, 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. Zmrzlina může odmítnout dodávku a vyhnout se problémům 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.