TL;DR
Oblíbené blockchainy mívají většinou dosti rigidní strukturu. Jako vývojář tak máte dvě možnosti: vybudovat aplikace v restriktivním prostředí, nebo udělat fork a vytvořit si vlastní blockchain. Vytvoření vlastního blockchainu není ale vůbec snadné – musíte spustit síť a vyřešit, jaký
mechanismus konsenzu použít.
Tendermint je open-source software určený ke spouštění blockchainů, který vám umožňuje psát aplikace v libovolném jazyce, a navíc jim umožňuje komunikovat s jinými blockchainy.
Vytvoření
kryptoměny nebo
blockchainové sítě vyžaduje mnohem víc úsilí než jen spustit databázi. Jde o udržení křehké rovnováhy mezi pobídkami a kompromisy ohledně zabezpečení, decentralizace a škálovatelnosti.
Není proto žádným překvapením, že týmy, které se snaží vybudovat co nejlepší blockchainové ekosystémy, prozkoumaly už celou řadu různých přístupů. V tomto článku se podíváme na jeden takový přístup –
Tendermint.
Pokud víte něco málo o blockchainech, bude vám většina informací o Tendermintu připadat povědomá. Než se ale do Tendermintu pustíme, připomeneme si pár klíčových myšlenek.
Porozumění blockchainové architektuře
Tendermint je taková
blockchainová databáze. To je ale
Bitcoin a
Ethereum taky. Nezapomínejte, že nejde jen o samotnou blockchainovou databázi, ale i o
peer-to-peer síť tvořenou
uzly, o to, jak mezi sebou komunikují, a také o všechny ty zábavné věci, které můžete s transakcemi a
chytrými kontrakty dělat. Cílem je, aby se všichni shodli na
stavu (snímku databáze) i v případě, že nikomu jinému nevěří.
Dnešní největší blockchainy ve většině případů přišly s nějakou tajnou ingrediencí, která tohle umožňuje. Často se ale spoléhají na monolitickou architekturu, což je koncepce softwarového inženýrství, ve které jsou jednotlivé součásti vzájemně propojené a jsou na sobě závislé. Nemůžete jen tak nějakou část vzít a vložit ji někam jinam.
Pokud vám záleží na přizpůsobitelnosti, monolitická architektura není moc dobrým řešením. U opačného typu modelu (s modulární architekturou) můžete jednotlivé součásti vylepšovat, aniž byste se museli bát, že něco rozbijete. U monolitické struktury musíte zajistit, že když jednu součást vylepšíte, všechny ostatní součásti zůstanou vzájemně kompatibilní.
Když už teď rozumíme tomuto rozdílu, můžeme si vysvětlit protokol Tendermint.
Byzantská odolnost proti chybám (BFT – Byzantine fault tolerance)
Možná víte, že velkou inovací, kterou přinesl Bitcoin, bylo to, že vyřešil něco, čemu se říká
problém byzantských generálů. Do detailů tohoto problému zabíhat nebudeme (pokud vás to zajímá, přečtěte si náš článek o
byzantské odolnosti proti chybám). Stačí vám, když budete vědět, že jde o situaci, ve které musí účastníci komunikovat v distribuovaném prostředí.
Tito účastníci neví, jestli ostatní lžou nebo jestli zprávy mezi nimi někdo nepozměňuje. Systém má byzantskou odolnost proti chybám, pokud se účastníci dokážou i přes tyto problémy shodnout na určitém souboru faktů.
V decentralizovaném prostředí je správná implementace takového systému zásadní. Kryptoměny, které byzantskou odolnost proti chybám nemají, nemohou vlastně fungovat – museli byste transakce koordinovat nějakou centralizovanou stranou, což pak ztrácí význam. Bitcoin tento problém, stejně jako mnoho ostatních digitálních měn, řeší algoritmem konsenzu
Proof of Work.
Tři vrstvy blockchainu
Už známe rozdíl mezi monolitickou a modulární architekturou a víme, že decentralizované kryptoměnové sítě musí mít byzantskou odolnost proti chybám. Blockchain se obvykle skládá ze tří vrstev: vrstvy pro aplikace, vrstvy s konsenzem a síťové vrstvy.
Začneme tím, že si něco vyjasníme. V této části se zaměřujeme jen na technologii Tendermintu, a tak budeme pojmy Tendermint a Tendermint Core vzájemně zaměňovat.
Tendermint je ale jinak název společnosti (kterou založil Jae Kwon – vývojář, co napsal původní bílou knihu) a Tendermint Core je samotný software, na kterém tato společnost pracuje. Abychom byli ještě přesnější, tak tento software má dvě hlavní složky: jádro mechanismu konsenzu (Tendermint Core) a jeho aplikační rozhraní (ABCI).
Tendermint Core je systém, který je odolný proti chybám. V podstatě je to velký, distribuovaný počítač, který každému současně ukazuje stejný stav. Proto všechno funguje hladce, dokud jsou alespoň dvě třetiny účastníků upřímné. Ale tak přece funguje blockchain, ne? Co je na tom tak výjimečného?
Za prvé k tomu používá mechanismus konsenzu
Proof of Stake. V každém intervalu se od validátora vybere náhodný uzel. Tento uzel pak musí v systému
každý s každým navrhnout další
blok. Pokud jsou ostatní validátoři s novým blokem spokojení, přidá se na blockchain, a ten se aktualizuje. Dokončení transakce je okamžité – na rozdíl od Bitcoinu nebo Etherea není nutné kvůli ověření platnosti transakce čekat na
potvrzení.
Ale počkejte, to není všechno! Architektura Tendermint Core je modulární a její vrstva pro aplikace je oddělená od vrstvy s konsenzem a síťové vrstvy. Jednoduše řečeno to znamená, že si na tento blockchain můžete nahrát vlastní vrstvu pro aplikace a nemusíte si dělat hlavu s otravnými pobídkami nebo algoritmy konsenzu.
Pro koncového uživatele to asi příliš zajímavé nebude, ale pro vývojáře to znamená, že mohou využít stávající rámec a pustit se přímo do vývoje aplikací, aniž by museli optimalizovat celou síť. Data z blockchainu je možné přivést do integrované vrstvy, a tak mohou vývojáři psát kód v libovolném jazyku.
Celé kouzlo spočívá v rozhraní pro blockchainové aplikace (ABCI – Application Blockchain Interface). Můžete si ho představit jako takový GPIO pin na počítači Raspberry Pi. K němu také můžete připojit všemožné komponenty od třetích stran – od LED světýlek až po propracované zavlažovací systémy. Podobným způsobem ABCI definuje hranici mezi blockchainem a aplikacemi, které na něm běží.
Co je na Tendermint Core tak úžasného?
Oddělení aplikačního rozhraní od mechanismu konsenzu umožňuje začlenění libovolného programovacího jazyka do obchodní logiky řady decentralizovaných aplikací.
Konkrétním příkladem toho, co Tendermint Core dokáže, je
Ethermint: projekt, který vzal kódovou bázi Etherea, odstranil mechanismus Proof of Work a na Tendermint Core nahrál virtuální stroj Ethereum.
Tím dosáhl několika zajímavých věcí. Za prvé mohli vývojáři Etherea snadno přenést své chytré kontrakty na nový engine nebo psát nové kontrakty v jazyce Solidity. Ethermint tak má veškerou funkcionalitu Etherea a navíc se chová jako Ethereum s mechanismem Proof of Stake, takže nám ukazuje, jak by mohla vypadat implementace
Casperu na
Ethereu 2.0.
Blockchainová interoperabilita
Protokoly postavené na Tendermintu lákají mnohé svým příslibem „internetu blockchainů“.
Interoperabilita je dlouho očekávaným přírůstkem kryptoměnového prostoru, protože by se stovky samostatných blockchainů staly vzájemně kompatibilními.
V současné době se hodně práce odvedlo na sadě nástrojů
Cosmos SDK – opensourcovém rámci, díky kterému může aplikačně specifický veřejný nebo soukromý blockchain vytvořit kdokoli. Tyto blockchainy je pak možné prostřednictvím takzvaného Cosmos Hubu připojit do širší sítě Cosmos, kde mohou komunikovat s ostatními blockchainy.
Blockchainový engine Tendermint upoutal pozornost řady účastníků kryptoměnového odvětví – od vývojářů až po koncové uživatele.
Pokud tento software bude pokračovat ve svém růstu, mohla by se z něj stát páteř pro internet blockchainů. Jak je vidět, několik projektů na sadě nástrojů Cosmos SDK už vzniklo a tuto vizi realizují.