Blockchain a decentralizované databázové systémy
Každý blockchain je databází, avšak ne každá databáze je blockchainem. V případě blockchainu, jak název napovídá, jde o ukládání dat po blocích. V případě relačních databází k ukládání dat do struktur definovaných databázovým systémem. Oba typy databází lze provozovat jak centralizovaně, tak decentralizovaně.
Tento souhrn shrnuje decentralizovaná uložiště dat, a to jak na bázi blockchainu tak i klasických relačních databází. Principem decentralizovaných databází je nabízení robustních a stabilních systémů pro ukládání dat bez dozoru a vlivu centrální strany. Jestliže tedy hledáte způsoby, jak ukládat decentralizovaně v čase neměnná data, tento souhrn je určen právě pro Vás.
Osnova článku - přehled decentralizovaným ukládáním
Ukládání dat do blockchainu
Blockchain je typem databáze, do které lze pouze vkládat nové záznamy, a to prostřednictvím zařazení transakce do aktuálního bloku vkládaného na konec blockchainu. Blockchainová databáze je tímto krokem rozšířena o poslední události, čímž dochází ke změně stavů při assetech obsažených v dané transakci (změna držených jednotek měny, majitele tokenů apod.).
O zařazení nového bloku do blockchainu se stará validátor, který dle konkrétního mechanismu konsenzu blockchainu může být označován i přidruženými názvy, jako je například Miner v případě Proof of Work sítí. Vyjma tvorby a vkládání bloků do blockchainu, validátor obvykle buď přímo je, nebo je propojen s uzlem sítě. Uzel drží data blockchainu a skrze APIs umožňuje k nim přístup a interakci s daným blockchainem.
Jak software pro uzly, tak validátory (dále jen klienti) jsou zpravidla vyvíjeni paralelně a nezávisle více týmy blockchainových vývojářů, s využitím různých programovacích jazyků a přístupů. Díky tomu existuje paralelně několik nezávislých softwarových klientů, jejichž datový výstup (output) je z principu fungování blockchainu totožný. Jestliže jsou tito klienti rozdistribuování mezi provozovateli uzlů a validátorů rovnoměrně, daný blockchain se vyznačuje robustností a stabilitou - v případě projevení se chyby v některém z klientů není narušena funkčnost sítě - síť je jednoduše spravována zbylými funkčními klienty bez oné chyby, kteří jsou v převaze.
S množstvím rozdílných klientů, a tedy i přístupů, přichází i rozdílné způsoby správy ukládaných dat při blockchainových uzlech. Ukládaná klíčová data jsou napříč klienty shodná, nicméně struktura jejich uložení může být rozdílná. Co je však shodné, je ukládání dat po blocích. Samotná architektura ukládaných dat ovlivňuje nároky na velikost uložiště, počty I/O, možnou funkcionalitu i nezbytný výkon pro správu. Efektivní optimalizovaná velikost souborů hraje ve světě blockchainu prim, jelikož v rámci globální distribuce se každý přenesený a ukládaný bajt počítá. Velká transakční velikost prodlužuje dobu transferu a zpracování, která ani v kritickém případě nesmí překročit čas bloku (blocktime). Nadměrná velikost dat zapisovaných do blockchainu nadměrně a setrvale v čase zvyšuje nároky pro provoz validačních uzlů držících tato data v onom blockchainu (v blockchainu jsou drženy veškeré transakce od bodu vzniku zvaného genesis do současnosti). Při zájmu o dosažení co nejvyšší decentralizace, objem dat je nutné držet co nejmenší. Vývojáři dnes pracují s metodami, jak blockchainy zpětně pročišťovat o zbytná data (pruning) a do budoucna hledají způsoby, jak se do budoucna bez starších dat kompletně obejít.
V závislosti od konkrétního blockchainu tedy může být zbytné zjišťovat, jak jsou v něm konkrétní data uložena. Může se to totiž lišit od typu softwarového klienta. Spíše bychom se měli zaměřit na cenu uložení dat, kdy daná cena je kvantifikována cenou zápisu těchto dat do blockchainu. Zapsaná data, není-li definováno jinak, nemají expiraci, jsou tedy do blockchainu zapsána napořád. Čtení veřejných dat je skrze API rozhraní zdarma.
Je zřejmé, že standardní blockchainy profilované na transakce účetních jednotek a tokenů nejsou na ukládání velkých dat vhodné. Samotné transakce zde jsou schopny nést jednotky kilobajtů informace. Ukládány a drženy jsou na všech uzlech v síti. Chtěli-li bychom takto do blockchainu uložit například 1GB dat, museli bychom provést velké množství transakcí, z nichž každá bude ukládat v rámci právě těženého bloku pouze oněch pár kilobajtů z našeho gigabajtu. Tento typ uložiště, kdy data jsou uložena přímo na blockchainu, nazýváme on-chain. Samotná cena uložení dat je sumou všech transakčních poplatků. Bez ohledu na aktuální cenu transakcí, která je v čase proměnlivá na základě poptávky, transakční poplatky při ukládání velkých dat jsou astronomické, jdoucí v závislosti od blockchainu klidně i do statisíců až milionů dolarů.
Ukládání jakýchkoliv dat, vyjma dat jednoduchých transakcí, je tedy z pohledu ceny na veřejných distribuovaných účetních knihách, typu Bitcoin, Ethereum a další, nerealistické. Z pohledu běžného obsahu internetového prostředí - smluv, recenzí, mediálních souborů apod. - je třeba se dívat na decentralizovaná řešení, která jsou na tento typ velkých dat uzpůsobena. Tento typ uložení, kdy data jsou uložena mimo blockchain, nazýváme off-chain.
Účelem on-chain ukládání je dosáhnout maximální bezpečnost, transparentnost a dostupnosti ukládaných dat v čase. Tyto vlastnosti vychází z architektury sítě, kdy databáze není uložena u jednoho konkrétního provozovatele, ale u všech účastníků sítě. Ti si jsou navzájem supervizory - každý dohlíží na každého, čímž se tvoří síťová důvěra v data na daném blockchainu.
Nevýhodou on-chain uložiště je limitované vyhledávání - a to jak rychlostí tak filtračními dotazy.
Ukládání dat do decentralizovaných relačních databází
Ukládání dat prostřednictvím decentralizovaných relačních databází spadá mezi tzv. Off-chain (tedy mimo blockchain) typ ukládání. Účelem off-chain ukládání je nabídnout soubory libovolných velikostí s co nejnižšími náklady při zachování dostatečné bezpečnosti, robustnosti a dostupnosti. Jestliže potřebujeme při off-chain řešení důkaz o neměnnosti dat, lze kombinovat on-chain a off-chain způsob uložení, kdy off-chain uložiště nese samotná data a on-chain je uložen otisk (hash) těchto dat.
Pojem decentralizovaný v tomto případě znamená využití řešení, kdy jsou data na úrovni protokolu zašifrována a následně rozdistribuovat ve veřejné síti. Nejedná se o využívání clusterů, respektive automatické replikace dat v rámci centralizovaných serverů rozmístěných v různých geo lokacích. Jde o decentralizovaný systém založený na konsenzu, jako je tomu u blockchainu - kdykoli chce uzel nějaká data zapsat, vytvoří záznam a rozešle jej všem uzlům v síti, načež na základě konsensuálního algoritmu prověřujícího oprávněnost zápisu poté určené uzly v síti daný zápis do sebou spravované databáze zapíšou.
Řešení ukládání dat v relačních databázích
Hašování
Hašování - nákladově efektivní způsob ukládání dat, kdy je v blockchainu uložena pouze hash hodnota daných dat.
Samotný hash je vygenerovaný řetězec, který je vypočítán pomocí našich vstupních dat, uložených v systému souborů. Se stejným vstupem bude výstupní hash vždy stejný. Jiný vstup má za následek další hash. Samozřejmě, k nezpracovaných datům, vážícím se k onu hashi, je nutné přiřadit id (hash) blockchainové transakce. V relační databázi lze např. přidat další sloupec pro uložení ID transakce.
Kontrola nezměnitelnosti pak spočívá ve vygenerování si hashe k uloženého souboru dat v relační databázi nebo systému souborů (vygenerování hashe je jednoduchá a rychlá funkce) a jeho porovnání se zápisem v blockchainu.
Hash dat je poměrně minimální z hlediska datové velikosti, náklady jsou tedy nízké.
Použitím hashovacího mechanismu můžeme využít výhod tradičních mechanismů ukládání (jako je použití dotazů), a přitom stále získávat důkazy o manipulaci s blockchainem. Nicméně je třeba mít na paměti, že v závislosti na zvoleném úložném mechanismu (kde jsou nezpracovaná data uložena) může dojít ke ztrátě výhod, jako je decentralizace a transparentnost.
Cassandra
Apache Cassandra je open-source distribuovaná databáze NoSQL, která poskytuje lineární škálovatelnost a vysokou dostupnost bez kompromisů ve výkonu.
Psaná v jazyce Java, Cassandra dokáže zpracovat velké množství dat na mnoha komoditních serverech a poskytuje vysokou dostupnost bez jediného bodu selhání. Využívá konsensuální mechanismus Paxos.
Cassandra rozděluje řádky a každý řádek obsahuje tabulky, které mají požadovaný primární klíč. Díky tomuto rozdělení může Cassandra distribuovat tyto řádky mezi více sítí a zařízení. Upravy v celé síti probíhají při přidání a odebrání řádků a oddílů do sítě.
Cassandra má několik funkcí, které z ní dělají jedinečnou databázi založenou na blockchainu.
Distribuce
V Cassandře není žádný centrální uzel ani jediný kontrolní bod. Řádky a oddíly jsou rozmístěny po celém clusteru. Neexistuje žádný hlavní cluster, protože každý cluster je klient i server a je identický.
Tolerantní k chybám
Cassandra je tolerantní k chybám, protože je distribuována a nemá jedinečný kontrolní bod. Je to proto, že každý uzel v clusteru má kopii databáze, takže pokud je napaden jeden uzel v clusteru, nespadne celý systém. Data havarovaného uzlu jsou stále v ostatních uzlech v clusteru, tedy v bezpečí.
Jazyk dotazu
Struktura Cassandry je docela podobná SQL v tom, že má řádky, tabulky a sloupce. Cassandra však nepoužívá jazyk SQL pro dotazování na data. Místo toho má svůj vlastní dotazovací jazyk Cassandra Query Language (CQL).
TiesDB
Ties Network Database je důkladnou úpravou informační základny Cassandra. Jde o decentralizovanou aplikaci designovánu pro ukládání nefinančních dat a prohledávání jejich dokumentů. Rovněž umožňuje pokročilé vyhledávání a úpravy dokumentů.
TiesDB získává většinu předností ze skrytých informačních bází NoSQL a zahrnuje byzantskou adaptaci na vnitřní selhání a motivátory. Tyto přednosti se mohou proměnit v otevřenou informační základnu a umožnit, aby zahrnovala bohaté aplikace na Ethereum a dalších blockchainech s chytrými dohodami. Do informační báze může zapisovat každý klient. V každém případě jsou klienti rozpoznáni podle jejich otevřeného klíče a všechny výzvy jsou odsouhlaseny.
Jakmile je záznam vytvořen, připomíná svého tvůrce, který se promění v majitele záznamu. Poté může být záznam jedinečně změněn vlastníkem. Každý může prohlížet všechny záznamy, protože informační základna je otevřená. Všechny souhlasy jsou sledovány na vyžádání a replikaci. Na zvláštní souhlasy lze dohlížet prostřednictvím zvláštní smlouvy.
ChainifyDB
ChainifyDB je blockchainové řešení pro databáze. Poskytuje vrstvu, skrze kterou lze zapojit databáze do sítě ChainifyDB. Řešení rovněž synchronizuje záznamy databází v rámci sítě připojených databází.
Jakmile je záznam vložen do jedné databáze, ChainifyDB komunikuje přidání všem ostatním uzlům databáze. Dohodnou se na určitém konsensu a záznam se zapisuje do databází, takže záznamy jsou decentralizované, neměnné a transparentní.
Rozdíl mezi ChainifyDB a jinými databázemi založenými na blockchainu je v tom, že každý blok má svou vlastní databázi/úložiště. ChainfyDB nemá vlastní databázi; používá databáze, které mu byly poskytnuty, a zapojuje do nich blockchainovou vrstvu. Jinými slovy, ChainifyDB poskytuje blockchainovou vrstvu pro již existující databáze. Funguje s Vote konsenzem.
Funkce databázového řešení ChainifyDB:
End-to-end šifrování
Komunikace mezi zapojenými databázemi v síti ChainifyDB je vysoce šifrovaná.
Webové rozhraní
Základní údaje, komponenty a nastavení údržby chainifyDB lze spouštět z webového rozhraní. Na rozdíl od jiných DB řešení nevyžaduje mnoho nástrojů k nastavení.
Bezproblémově invazivní
ChainifyDB lze bez problémů připojit nebo zapojit do jakýchkoli datových úložišť nebo databází, aniž by to ovlivnilo aplikace běžící na databázích.
BigChainDB
BigchainDB je databáze založená na blockchainu poháněná MongoDB. Umožňuje přidat do běžné aplikace decentralizovanou a blockchainovou technologii. Stojí na konsenzuálním algoritmu Raft.
Vlastnosti databáze jsou následující:
Neměnnost
Záznamy uložené v BigchainDB jsou odolné proti neoprávněné manipulaci. Záznamy jsou neměnné, což znamená, že jakmile je záznam ověřen a uložen v databázi, nelze jej nikdy nahradit ani změnit.
Decentralizace
Databáze je decentralizovaná v P2P síti. Neexistuje jediný bod kontroly. Každý uzel v síti Bigchain má lokální kopii databáze MongoDB a používá Tendermint pro síťové a konsenzuální protokoly.
ednou z výhod použití Tendermintu je, že používá byzantskou odolnost proti chybám (BFT), která umožňuje blockchainu dohodnout se na tom, jaký bude další blok, i když je až polovina uzlů v síti vadná. Pokud tedy hacker získá přístup k jedné z databází MongoDB uzlu, síť může tuto konkrétní databázi odstranit a nadále fungovat.
Podpora více aktiv
V databázi lze ukládat majetek různých typů. Uživatelé v uzlech mohou vydávat jakákoli aktiva v síti Bigchain.
Dle BlockchainDB může aktivum charakterizovat jakýkoli fyzický nebo digitální objekt, na který si vzpomenete, jako je auto, soubor dat, právo duševního vlastnictví atd.
-
Vysoký výkon
BigchainDB byl vytvořen s ohledem na výkon. Použití Tendermintu umožňuje BigchainDB dosáhnout vysokého výkonu.
Tendermintu trvá zpracování velkých transakcí a jejich odeslání do nového bloku jen několik sekund. To je v rozporu s představou, že provádění transakcí v blockchainu zabere spoustu času. BigchainDB funguje velmi dobře v mnoha scénářích, zejména v obchodech dodavatelského řetězce, kde je potřeba organizovat data a zajistit neměnnost a transparentnost.
CovenantSQL
CovenantSQL je blockchain SQL databáze. Podle oficiálního webu CovenantSQL propojuje zdroje nečinného úložiště pomocí konsensuálního protokolu a jeho cílem je lépe usnadnit vývoj DApp s plnou podporou SQL.
CovenantSQL poskytuje infrastrukturu, na které lze stavět decentralizované aplikace, stejně jako na Ethereu. Mezi jeho mnoha případy použití lze CovenantSQL použít při správě aktiv a integrovat do řešení IoT. Běží na konsenzuálním mechanismu Raft.
Výběr funkcí:
Decentralizace
Stejně jako technologie blockchainu, kterou implementuje, je CovenantSQL do značné míry decentralizován přes P2P síť. Díky tomu je odolný vůči chybám a neovladatelný jedinou entitou.
SQL
SQL je nejrozšířenější a nejoblíbenější databázový dotazovací jazyk na světě. CovenantSQL jej používá kvůli jeho popularitě a možnosti přidat k němu extra pákový efekt blockchainu.
Neměnnost
Blockchain CovenantSQL činí databázi neměnnou. Všechny přicházející záznamy musí být před odesláním do databáze prověřeny všemi uzly v síti.
CovenantSQL poskytuje infrastrukturu, kde mohou vývojáři nad ní stavět decentralizované aplikace. Je to stejné jako to, co můžeme dělat na Ethereu. CovenantSQL lze použít při správě majetku a také jej lze integrovat do řešení IoT.
Modex BCDB
Modex Blockchain Database (BCDB) je middleware softwarový produkt, který poskytuje přístup typu plug-and-play pro organizace, které chtějí vyvíjet blockchainový software.
Modex BCDB sedí uprostřed mezi klientskou aplikací a její databází. Přístup je odlišný od jiných blockchainových DB. Zapojuje se do DB a upravuje jejich konektory a poskytuje mezi nimi blockchainovou vrstvu. Běží na konsenzu Proof Of Stake.
Výběr funkcí Modex BCDB:
Podpora více blockchainů
Modex BCDB je flexibilní v tom, že může používat jiné blockchainové frameworky. V současné době používá framework Hyperledger Sawtooth a používá Tendermint protokol ve svých síťových a konsenzuálních protokolech. Lze použít i další frameworky, např. Ethereum a Hyperledger Fabric.
Podpora více databází
Modex BCDB podporuje více databází. Uzel může používat MongoDB, zatímco jiný uzel může používat MySQL, Modex BCDB s nimi může bezproblémově pracovat a synchronizovat data bez jakékoli konfigurace a portování do podporované databáze.
-
Správa dat
Modex BCDB dokáže perfektně spravovat data bez kompromisů v oblasti bezpečnosti. Modex BCDB ví, kdy a kterému uzlu může vystavit některá nebo všechna data. Úplný uzel v síti Modex BCDB je vystaven všem datům, částečný uzel je vystaven pouze datům, která jeho API požadovala, a privátní uzel je vystaven pouze soukromým datům jemu a nikomu jinému.
Postchain
Postchain je blockchainová platforma vyvinutá společností Chromeby ve Švédsku. Postchain je blockchainový rámec stejně jako Ethereum nebo Hyperledger; má síť uzlů, které udržují sadu dat prostřednictvím konsensuálního algoritmu ověření autority.
Postchain ukládá tato data do SQL databáze, která se liší od všech ostatních blockchainových frameworků. Transakční logiku Postchainu lze také definovat v kódu SQL. To je to, co dělá Postchain databází založenou na blockchainu.
Transakce se nezapisují do databáze přes SQL kód. Postchain má validátory, které fungují na každém uzlu v síti Postchain. Transakce jsou odesílány prostřednictvím vysoce šifrovaných a podepsaných zpráv. Validátoři vyzvednou zprávy a spustí se synchronizovaně, aby ověřili důkaz a zdroj zpráv. Tato synchronizace se provádí tak, že všechny uzly v sítích mají ve svých databázích stejný stav.
ProvenDB
ProvenDB je databázová služba, která kombinuje databázi MongoDB s charakteristikami blockchainu - používáním ProvenDB používáte databázi MongoDB s blockchainem.
Vlastnosti ProvenDB:
- Digitální úložiště dat odolné proti neoprávněné manipulaci
- Neměnné úložiště dat; jakmile je záznam vložen do databáze ProvenDB, nelze jej nikdy změnit, upravit ani smazat. Zůstává „připnutý“ v databázi
- Vysoce zabezpečená blockchain databáze, kterou můžete použít k ukládání všech druhů citlivých dat, jako jsou finanční záznamy, které jsou odolné vůči změnám, duševní vlastnictví, právní dokumenty, veřejné záznamy a další
ProvenDB je dobrá volba, pokud chcete používat MongoDB a také využít blockchain ve svých aplikacích. ProvenDB poskytuje rozhraní REST API, která můžete použít k provádění transakcí odolných proti neoprávněné manipulaci a ukládání dokumentů.
ProvenDB poskytuje zabezpečenou databázi pro datové inženýry, která je šifrovaná a odolná proti neoprávněné manipulaci.
Distribuovaná databáze
K ukládání dat lze použít distribuční databáze jako MongoDB, Apache a Rethink DB. Jsou rychlé a všestranné, ale nemají byzantské ověření. To znamená, že jakýkoli hacker může poškodit celou informační základnu, protože všechna centra informací si navzájem zcela důvěřují.
Kdy volit centralizovanou relační databázi, kdy decentralizovanou, a kdy blockchain?
Dle kterých parametrů se rozmýšlet mezi použitím standardní databáze, decentralizované databáze a blockchainem? V principu je to velmi snadné - začnete s běžnou databází. Stačí pro váš use case? → Používáte ji. Nestačí? Přejdete na decentralizovanou. Opět nestačí? Zkusíte blockchain.
Zde je seznam dalších parametrů, které při výběru databázového řešení hrají roli:
Nákladovost
- Tradiční databáze jsou snadno dostupným a rozšířeným typem databází. Jejich provozní náklady jsou velmi nízké, stejně tak lze snadno nalézt kvalifikované pracovníky pro jejich správu i vývoj.
- Při blockchainu nelze náklady jednoznačně kvantifikovat, jsou odvislé od mnoha faktorů.
Odolnost proti chybám
Správně zvolený blockchain zajišťuje nejrobustnější a nejodolnější DB, jakou si dokážete představit. Oproti tradiční centralizované databázi se nemusíte obávat klasického hacku a manipulace dat.
Výkon
Moderních databáze, jako například SQL, Redis nebo MongoDB, jsou navrženy s ohledem na maximální výkon. Čtení a zápis jsou zde při zaindexování velmi výkonné bez jakékoli optimalizace ze strany správce.
Blockchain je pravým opakem. Zápis je relativně pomalý kvůli konsenzuálnímu procesu, jež samotnému schválení a zápisu předchází. Pokud je prioritou vysokorychlostní výkon, měli byste místo blockchainu použít tradiční databázi.
Bezpečnost
Transparentnost, a s ní související bezpečnost, je jednou ze základních vlastností blockchainu. Přesto, blockchainovou síť lze používat i soukromě v rámci vámi vybraných uzlů. Tradiční databáze lze také vytvářet a používat veřejně i soukromě, nicméně zajištění bezpečnosti je zde plně v rukou provozovatele.
Ukládání dat v jednotlivých Blockchainech
-
Bitcoin
V bitcoinu data zahrnují celou historii všech bitcoinových transakcí. Pokud má jeden uzel chybu, používá tisíce dalších uzlů jako referenční bod, aby se opravoval.
-
Corda
Open source blockchainová platforma, která nepoužívá globální broadcasting. Může snížit náklady na vedení záznamů a zároveň zefektivnit obchodní operace. Komunikaci mezi uzly (peery) lze ověřit bez nutnosti stahování celých dat díky použití grafů a trvalých front.