Vysvětlení Tendermintu
Obsah
Úvod
Co byste měli vědět o Tendermintu?
Tendermint Core
Závěrem
Vysvětlení Tendermintu
Domovská stránkaČlánky
Vysvětlení Tendermintu

Vysvětlení Tendermintu

Pokročilí
Published Jan 8, 2021Updated Jan 6, 2022
6m

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.


Úvod

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.


Co byste měli vědět o Tendermintu?

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.
Vrstvu s konsenzem a síťovou vrstvu používají síťové uzly, které mezi sebou komunikují a snaží se shodnout na určitém souboru faktů. Vrstva s aplikacemi je určena pro vás – jsou to třeba decentralizované aplikace a chytré kontrakty na Ethereu nebo vlastní transakce na Bitcoinu.



Tendermint Core

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.
Na sadě nástrojů Cosmos SDK byla vytvořena řada oblíbených projektů, jako je Binance Smart Chain (BSC), KAVA, Band Protocol, Terra nebo IRISnet.


Závěrem

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í.