Tendermint uitgelegd
StartpaginaArtikelen

Tendermint uitgelegd

Gemiddeld
3w ago
6m

TL;DR

De blockchains die je kent en vertrouwd mee bent, hebben een behoorlijk rigide structuur. Dit geeft je als ontwikkelaar twee opties: je kunt applicaties bouwen binnen een beperkte omgeving, of de code forken en je eigen chain maken. Het maken van je eigen chain is niet zo eenvoudig: je moet ook een netwerk starten en uitzoeken welk consensusmechanisme je gaat gebruiken.

Tendermint is open-source software voor het lanceren van blockchains waarmee je applicaties in elke taal kunt schrijven. Beter nog, ze kunnen ook communiceren met andere blockchains.


Inleiding

Een cryptocurrency of blockchain-netwerk maken vereist veel meer dan alleen het initialiseren van een database. Er moet een delicaat evenwicht zijn tussen stimuli en afwegingen op het gebied van veiligheid, decentralisatie en schaalbaarheid.
Het is geen verrassing dat teams die de sterkste blockchain-ecosystemen wilden bouwen, een aantal verschillende benaderingen hebben onderzocht. In dit artikel zullen we een van die benaderingen bekijken: Tendermint.


Wat je moet weten over Tendermint

Als je een beetje kennis van blockchains hebt, zal veel van Tendermint je bekend voorkomen. Laten we een paar sleutelconcepten samenvatten voordat we er verder op ingaan.


De architectuur van blockchain begrijpen

Tendermint is een soort blockchain-stack, net zoals Bitcoin en Ethereum dat zijn. Onthoud dat het niet alleen om de blockchain-database zelf gaat, maar ook om de peer-to-peer-netwerken van nodes, de manier waarop ze samenwerken en de leuke dingen die je kunt doen met transacties en smart contracts. Het doel is hier dat iedereen het eens is over een bepaalde toestand (zoals een momentopname van de database), zelfs als er geen onderling vertrouwen is.
Voor het grootste deel hebben de huidige grote blockchains het recept bedacht dat dit mogelijk maakt. Zij vertrouwen echter vaak op monolitische architectuur: een concept binnen softwareontwikkeling dat inhoudt dat componenten onderling verbonden en van elkaar afhankelijk zijn. Je zou er niet zomaar een stuk uit kunnen halen en dat op iets anders aansluiten.
Monolithische architectuur is niet ideaal als je op zoek bent naar flexibiliteit. In het tegenovergestelde type model (met modulaire architectuur) kun je afzonderlijke componenten aanpassen zonder dat je je zorgen hoeft te maken dat er iets kapot gaat. Met een monolithische structuur moet je ervoor zorgen dat elke component compatibel blijft wanneer je alleen een ander component aanpast. 

Nu we dit onderscheid begrijpen, kunnen we dieper ingaan op het Tendermint-protocol.


Byzantijnse fouttolerantie (BFT)

Je weet misschien wel dat de grote innovatie van Bitcoin was dat het het probleem van Byzantijnse generaals oploste. We zullen niet ingaan op de details van dit probleem (lees vooral ons artikel over Byzantijnse fouttolerantie als je daar interesse in hebt). Het enige dat je nu hoeft te weten, is dat het een scenario beschrijft waarin deelnemers moeten communiceren in een gedistribueerde omgeving. 
Deze deelnemers weten niet of anderen liegen of dat de onderling verzonden berichten zijn aangepast. Van een systeem wordt gezegd dat het Byzantijnse fouttolerantie (BFT) heeft als deelnemers het eens kunnen worden over bepaalde informatie zonder direct met elkaar te communiceren.
Het is duidelijk dat het in een gedecentraliseerde omgeving cruciaal is om dit goed te doen. Cryptocurrency's zonder Byzantijnse fouttolerantie werken niet echt: je hebt een soort gecentraliseerde coördinatie van partijen nodig, wat het doel van gedistribueerde systemen teniet doet. Net als veel andere digitale valuta lost Bitcoin dit op met een Proof of Work (PoW)-consensusalgoritme.


De drie lagen van een blockchain

We kennen nu het verschil tussen monolitische en modulaire architectuur van een blockchain en we weten dat gedecentraliseerde cryptocurrency-netwerken Byzantijnse fouttolerantie moeten hebben. Laten we nu de lagen benoemen waaruit een blockchain doorgaans bestaat: de applicatielaag, de consensuslaag en de netwerklaag.
De consensus- en netwerklagen zijn de lagen waar netwerkknooppunten met elkaar communiceren en proberen om het eens te worden over een reeks feiten. De applicatielaag is waar je zelf dingen kunt doen: denk daarbij aan gedecentraliseerde applicaties en smart contracts op Ethereum of op maat gemaakte transacties in Bitcoin.



Tendermint Core

Eerst een korte verduidelijking van de terminologie. We gebruiken de termen “Tendermint” en “Tendermint Core” hier door elkaar heen, omdat we ons alleen richten op de technologie.

Tendermint is de naam van het bedrijf (opgericht door de ontwikkelaar Jae Kwon, die het originele whitepaper schreef), terwijl Tendermint Core de naam is van de software waar het bedrijf aan werkt. Meer specifiek heeft de software twee hoofdcomponenten: de kernconsensus-engine (Tendermint Core) en de applicatie-interface (ABCI).

Tendermint Core is een systeem dat fouttolerant is. In feite is het een grote, gedistribueerde computer die iedereen tegelijkertijd dezelfde staat laat zien. Zolang minstens tweederde van de deelnemers eerlijk is, werkt alles soepel. Maar dat is vrijwel elke blockchain, toch? Wat maakt Tendermint zo bijzonder?

Ten eerste maakt het gebruikte consensusmechanisme gebruik van Proof of Stake (PoS). Voor elke periode wordt een willekeurige node uit een set van validators geselecteerd. Deze node moet dan het volgende block voorstellen (in iets dat een round-robin systeem heet). Als de andere validators er blij mee zijn, wordt het nieuwe block geaccepteerd en wordt de chain bijgewerkt. Finaliteit is onmiddelijk en in tegenstelling tot Bitcoin of Ethereum, hoef je niet te wachten op een X aantal bevestigingen die aangeven dat je transactie geldig is.

En er is meer! De architectuur van Tendermint Core is modulair, waarbij de applicatielaag gescheiden is van de consensus- en netwerklagen. In gewone taal betekent dit dat je je eigen applicatielaag in de stack kunt pluggen. Je hoeft je dan geen zorgen te maken over vervelende stimuli of consensusalgoritmen.

Dit is misschien niet al te spannend voor de eindgebruiker, maar voor ontwikkelaars betekent de mogelijkheid om een bestaand framework te gebruiken dat ze meteen kunnen beginnen met het bouwen van een applicatie, zonder eerst een heel netwerk op te moeten starten. Gegevens van de blockchain kunnen naar de geïntegreerde laag worden doorgestuurd, waardoor ontwikkelaars software in elke taal kunnen schrijven.

Deze magie wordt mogelijk gemaakt door iets dat de Application Blockchain Interface wordt genoemd, of simpelweg ABCI. Zie dit als de GPIO-pinnen die een Raspberry Pi-computer heeft. Daar kan je allerlei componenten van derden op aansluiten, van leds tot uitgebreide sprinklerinstallaties voor je planten. Op een vergelijkbare manier definieert de ABCI de grens tussen de blockchain en de applicaties die erop worden uitgevoerd.


Wat is er zo geweldig aan Tendermint Core?

De scheiding van de applicatie-interface en het consensusmechanisme biedt meer flexibiliteit voor een reeks gedecentraliseerde applicaties om alle programmeertalen in hun bedrijfslogica op te nemen.

Voor een tastbaar voorbeeld van een van de mogelijkheden waar dit voor zorgt, hoef je alleen maar te kijken naar Ethermint: een project dat de codebase van Ethereum pakte, het Proof of Work-mechanisme eruit verwijderde en de Ethereum Virtual Machine bovenop Tendermint schroefde.
Dit maakte een aantal interessante dingen mogelijk. Ten eerste kunnen Ethereum-ontwikkelaars hun smart contracts gemakkelijk kunnen overzetten naar de nieuwe engine of nieuwe contracten schrijven in de taal Solidity. Naast het aanbieden van functionaliteit met Ethereum, fungeert Ethermint als een Proof of Stake-versie van Ethereum. Hierdoor kunnen we een idee krijgen van hoe een Casper-implementatie eruit zou kunnen in Ethereum 2.0.


Blockchain-interoperabiliteit

De belofte van een “internet van blockchains” is wat het Tendermint-protocol voor veel mensen aantrekkelijk maakt. Interoperabiliteit is een langverwachte toevoeging voor de cryptocurrency-ruimte, omdat het betekent dat honderden afzonderlijke blockchains onderling compatibel zouden worden.
Momenteel is er veel werk gestoken in de Cosmos SDK, een open-source framework waarmee iedereen een applicatiespecifieke publieke of private blockchain kan maken. Deze blockchains kunnen vervolgens worden aangesloten op het bredere Cosmos-netwerk, via een mechanisme dat de Cosmos Hub wordt genoemd, waar ze met anderen kunnen communiceren.
Er zijn talloze populaire projecten gebouwd met de Cosmos SDK, zoals Binance Smart Chain (BSC), KAVA, Band Protocol, Terra en IRISnet.


Tot slot

Als blockchain-engine heeft Tendermint de aandacht getrokken van tal van belanghebbenden op het gebied van cryptocurrency's, van ontwikkelaars tot eindgebruikers.

Mocht de software aan populariteit winnen, dan zou het goed kunnen functioneren als ruggengraat voor een internet van blockchains. Zoals we hebben gezien, zijn er met de Cosmos SDK al een handvol projecten gestart om deze visie te realiseren.

Heb je nog meer vragen over Tendermint, consensusalgoritmes of blockchain-technologie in het algemeen? Ga dan naar ons Q&A-platform, Ask Academy, waar de Binance-community al je vragen graag zal beantwoorden.