TL;DR
Die Blockchains, die Sie kennen und lieben, haben eine ziemlich starre Struktur. Als Entwickler gibt Ihnen das zwei Möglichkeiten: Anwendungen innerhalb einer restriktiven Umgebung zu bauen oder den Code zu forken und Ihre eigene Chain zu erstellen. Das Erstellen einer eigenen Chain ist allerdings nicht so einfach – Sie müssen auch ein Netzwerk starten und herausfinden, welchen
Konsensmechanismus Sie verwenden wollen.
Tendermint ist eine Open-Source-Software zum Starten von Blockchains, mit der Sie Anwendungen in jeder beliebigen Sprache schreiben können. Besser noch, sie können mit anderen Blockchains kommunizieren.
Das Erstellen einer
Kryptowährung oder eines
Blockchain-Netzwerks erfordert viel mehr Aufwand als nur das Initialisieren einer Datenbank. Es erfordert ein empfindliches Gleichgewicht von Anreizen und Kompromissen zwischen Sicherheit, Dezentralisierung und Skalierbarkeit.
Es überrascht nicht, dass Teams, die die stärksten Blockchain-Ökosysteme entwickeln wollen, eine Reihe von verschiedenen Ansätzen erforscht haben. In diesem Artikel werden wir einen Blick auf einen solchen Ansatz werfen:
Tendermint.
Vieles an Tendermint wird Ihnen bekannt vorkommen, wenn Sie ein wenig über Blockchains wissen. Lassen Sie uns einige Schlüsselkonzepte wiederholen, bevor wir uns näher damit befassen.
Die Blockchain-Architektur
Tendermint ist eine Art
Blockchain-Stack. Andererseits sind Dinge wie
Bitcoin und
Ethereum das auch. Denken Sie daran, es geht nicht nur um die Blockchain-Datenbank selbst, sondern auch um das
Peer-to-Peer-Netzwerk der
Nodes, wie sie interagieren und die lustigen Sachen, die man mit Transaktionen und
Smart Contracts machen kann. Das Ziel hier ist es, dass sich alle auf einen
Zustand (wie einen Schnappschuss der Datenbank) einigen, auch wenn sie niemandem sonst vertrauen.
Zum größten Teil haben die heutigen großen Blockchains einen Weg gefunden, dies möglich zu machen. Allerdings verlassen sie sich oft auf monolithische Architektur: ein Software-Engineering-Konzept, das bedeutet, dass die Komponenten miteinander verbunden und voneinander abhängig sind. Man kann nicht einfach ein Stück davon nehmen und dieses in einem anderen Bereich verwenden.
Eine monolithische Architektur ist nicht gut, wenn Sie Flexibilität wünschen. Bei dem Gegenteil (mit modularer Architektur) können Sie einzelne Komponenten verändern, ohne sich Sorgen zu machen, dass etwas kaputt geht. Bei einer monolithischen Struktur müssen Sie sicherstellen, dass jede Komponente kompatibel bleibt, wenn Sie eine einzelne Komponente aktualisieren.
Jetzt, da wir diese Unterscheidung verstehen, können wir ein wenig mehr über das Tendermint-Protokoll sprechen.
Byzantinische Fehlertoleranz (BFT)
Sie wissen vielleicht, dass die große Innovation bei Bitcoin darin bestand, dass es etwas gelöst hat, das als das
Problem der Byzantinischen Generäle genannt wird. Wir werden nicht auf die Einzelheiten des Problems eingehen (schauen Sie sich unseren Artikel über
Byzantinische Fehlertoleranz an, wenn Sie interessiert sind). Alles, was Sie wissen müssen, ist, dass es ein Szenario beschreibt, in dem Teilnehmer in einer verteilten Umgebung kommunizieren müssen.
Diese Teilnehmer wissen nicht, ob andere lügen oder ob Nachrichten, die zwischen ihnen gesendet werden, verändert werden. Man sagt, dass ein System eine Byzantinische Fehlertoleranz (BFT) hat, wenn sich die Teilnehmer auf eine Reihe von Fakten einigen können, selbst wenn die genannten Probleme vorhanden sind.
Offensichtlich ist es in einer dezentralen Umgebung entscheidend, dies richtig zu machen. Kryptowährungen, die nicht byzantinisch fehlertolerant sind, funktionieren nicht wirklich – man bräuchte eine Art zentralisierte Partei, die koordiniert, was den Zweck vereitelt. Wie viele digitale Währungen umgeht Bitcoin dies durch die Verwendung eines
Proof of Work (PoW) Konsens-Algorithmus.
Die drei Ebenen einer Blockchain
Wir kennen also den Unterschied zwischen monolithischer/modularer Architektur und wir wissen, dass dezentrale Kryptowährungsnetzwerke byzantinisch fehlertolerant sein müssen. Lassen Sie uns die Ebenen erwähnen, die wir typischerweise in einer Blockchain sehen: die Anwendungsebene, die Konsensusebene und die Netzwerkebene.
Die Konsens- und Netzwerkebene ist die Ebene, in der die Netzwerk-Nodes miteinander kommunizieren und versuchen, sich auf eine Reihe von Fakten zu einigen. Die Anwendungsebene ist der Bereich, in dem Sie selbst etwas tun können – denken Sie an
dezentrale Anwendungen und
Smart Contracts in Ethereum oder
Custom Transactions in Bitcoin.
Zunächst eine kurze Klarstellung zur Terminologie. Wir werden die Begriffe “Tendermint” und “Tendermint Core” hier austauschbar verwenden, da wir uns nur auf die Technik konzentrieren.
Allerdings ist Tendermint der Name des Unternehmens (gegründet von Jae Kwon, dem Entwickler, der das ursprüngliche Whitepaper schrieb), während Tendermint Core die eigentliche Software ist, an der das Unternehmen arbeitet. Genauer gesagt, hat die Software zwei Hauptkomponenten: ihre Core-Consensus-Engine (Tendermint Core) und ihre Anwendungsschnittstelle (ABCI).
Tendermint Core ist ein System, das eine Fehlertoleranz erreicht. Im Wesentlichen ist es ein großer, verteilter Computer, der allen zur gleichen Zeit den gleichen Zustand anzeigt. Solange mindestens zwei Drittel der Teilnehmer ehrlich sind, funktioniert alles reibungslos. Aber das ist doch so ziemlich jede Blockchain, oder? Was macht sie so besonders?
Erstens: Der verwendete Konsensmechanismus ist
Proof of Stake (PoS). Für jede Periode wird ein zufälliger Node aus einem Validator-Set ausgewählt. Dieser Node muss dann den nächsten
Block vorschlagen (in einem so genannten
Round-Robin-System). Wenn die anderen Validatoren damit einverstanden sind, wird der neue Block hinzugefügt, und die Chain wird aktualisiert. Finalität ist sofort – anders als bei Bitcoin oder Ethereum, gibt es keine Notwendigkeit, auf
Bestätigungen zu warten, um sicher zu sein, dass Ihre Transaktion gültig ist.
Aber halt, da ist noch mehr! Die Architektur von Tendermint Core ist modular, wobei die Anwendungsebene von der Konsens- und Netzwerkebene getrennt ist. Im Klartext bedeutet das, dass Sie Ihre eigene Anwendungsebene in den Stack einfügen können. Sie müssen sich nicht um lästige Anreize oder Konsensalgorithmen kümmern.
Für den Endanwender mag das vielleicht nicht so aufregend sein. Aber für Entwickler bedeutet die Möglichkeit, ein bestehendes Framework zu nutzen, dass sie direkt in die Entwicklung von Anwendungen eintauchen können, ohne ein ganzes Netzwerk aufbauen zu müssen. Daten aus der Blockchain können an die integrierte Ebene weitergeleitet werden, was es Entwicklern ermöglicht, Software in jeder Sprache zu entwickeln.
Die Magie geschieht mit dem sogenannten Application Blockchain Interface, oder einfach ABCI. Stellen Sie sich das wie die GPIO-Pins vor, die Sie an einem Raspberry Pi-Computer haben. An diese können Sie alle möglichen Komponenten von Drittanbietern anschließen, von LEDs bis hin zu ausgeklügelten Sprinklersystemen für Ihre Pflanzen. In ähnlicher Weise ist das ABCI das, was die Grenze zwischen der Blockchain und den darauf laufenden Anwendungen definiert.
Was ist so großartig an Tendermint Core?
Die Trennung der Anwendungsschnittstelle und des Konsensmechanismus ermöglicht eine größere Flexibilität für eine Reihe von dezentralen Anwendungen, die beliebige Programmiersprachen in ihre Geschäftslogik einbinden können.
Für ein konkretes Anwendungsbeispiel, müssen Sie sich nur
Ethermint ansehen: ein Projekt, das die Ethereum-Codebasis nahm, den Proof-of-Work-Mechanismus entfernte und die Ethereum Virtual Machine auf Tendermint aufsetzte.
Dies ermöglichte ein paar interessante Dinge. Das erste ist, dass Ethereum-Entwickler ihre Smart Contracts mit Leichtigkeit auf die neue Engine portieren oder neue Contracts in der Solidity-Sprache schreiben konnten. Zusätzlich zur Bereitstellung von Ethereum-Funktionalität agiert Ethermint wie ein Proof of Stake Ethereum und gibt uns einen Einblick, wie eine
Casper-Implementierung in
Ethereum 2.0 aussehen könnte.
Blockchain-Interoperabilität
Das Versprechen eines “Internet of Blockchains” ist das, was viele an Tendermint-basierten Protokollen interessant finden. Die
Interoperabilität ist eine lang erwartete Ergänzung für den Kryptowährungsraum, da es bedeutet, dass Hunderte von individuellen Blockchains mit einander kompatibel werden würden.
Derzeit wurde eine Menge Arbeit in das
Cosmos SDK gesteckt, ein Open-Source-Framework, das es jedem erlaubt, eine anwendungsspezifische öffentliche oder private Blockchain zu erstellen. Diese Blockchains können dann über den sogenannten Cosmos Hub in das größere Cosmos-Netzwerk eingebunden werden, wo sie mit anderen kommunizieren können.
Als Blockchain-Engine hat Tendermint die Aufmerksamkeit zahlreicher Interessengruppen im Bereich der Kryptowährungen auf sich gezogen, von Entwicklern bis hin zu Endbenutzern.
Wenn die Software weiter an Zugkraft gewinnt, könnte sie sehr gut als Rückgrat für ein Internet of Blockchains dienen. Wie wir gesehen haben, sind bereits eine Handvoll Projekte mit dem Cosmos SDK gestartet, um diese Vision zu realisieren.
Haben Sie weitere Fragen zu Tendermint, Konsensalgorithmen oder der Blockchain-Technologie im Allgemeinen? Besuchen Sie
Ask Academy, wo die Community diese Fragen beantworten wird.