Hyperledger Sawtooth Sawtooth-Blockchain für unternehmenskritische Anwendungen

Anna Kobylinska und Filipe Martins |

Anbieter zum Thema

Den Smart-Contracts-Code anderer Plattformen ausführen, die Geschäftslogik in beliebigen Sprachen coden, Transaktionen „hardwarebeschleunigt“ validieren und das eingesetzte Konsensverfahren zur Laufzeit austauschen – zu gut, um wahr zu sein? Hyperledger Sawtooth hat es vorgemacht.

Sawtooth ist eine modulare Plattform zum Erstellen, Bereitstellen und Ausführen von verteilten Ledgern.
Sawtooth ist eine modulare Plattform zum Erstellen, Bereitstellen und Ausführen von verteilten Ledgern.
(Logo: The Linux Foundation / Unsplash)

Unternehmenskritische Anwendungen müssen sowohl die Datenintegrität des Transaktionsprotokolls wahren als auch ein hohes Tempo der Transaktionsverarbeitung an den Tag legen. Hyperledger Sawtooth versucht, diese beiden Ziele miteinander zu vereinbaren und hierbei das gesamte Privacy-Spektrum von berechtigungsfreien bis hin zu berechtigungspflichtigen Blockchains abzudecken – die Quadratur des Kreises?

Hyperledger Sawtooth hat es in sich. Das quelloffene Framework ruft eine modulare Blockchain-Plattform mit einer zur Laufzeit austauschbaren Konsensusengine und „einsteckbaren“ Erweiterungen ins Leben.

Dank dieser Architektur kann sich eine Sawtooth-Blockchain zur Laufzeit an neue Anforderungen anpassen – ohne die Notwendigkeit eines Netzwerk-Neustarts. Autarke Transaktionsteilnehmer führen die Umstellung dezentral durch und brauchen sich dennoch gegenseitig nicht zu vertrauen.

Mit Sawtooth und Fabric hat Hyperledger unter seiner Schirmherrschaft zwei scheinbar ähnliche quelloffene Blockchains. Beide unterstützen benutzereigene Geschäftslogik (die sogenannten „smarten Verträge“ in Ethereum-Lingo). Doch hier enden auch wieder die Gemeinsamkeiten.

Hyperledger Fabric ist berechtigungsbasiert (Engl. permissioned). Die Entsprechung von Ethereums smarten Verträgen nennt sich hier Chaincode. Die berechtigungspflichtige Natur von Fabric basiert auf dem Konzept der sogenannten Channels.

Bei einem Channel in Hyperledger Fabric handelt es sich nicht, wie der Name suggeriert, um einen privaten Kommunikationskanal, sondern um eine geschlossene Gruppe von Netzwerkknoten, eine Art „privater Verein“. Die Mitglieder eines solchen privaten „Vereins“ führen ein gemeinsames Kassenbuch; Auftragskoordinations-Knoten (Engl. order node) des Vereins können an alle Mitglieder des „Clubs“ private Benachrichtigungen übermitteln. Der Zugriff von außen ist nicht erlaubt.

Im Gegensatz zu Fabric lässt sich Sawtooth wahlweise als eine berechtigungsbasierte oder eine berechtigungsfreie Blockchain aufsetzen.

Mit Sawtooth ist es also beispielsweise möglich, eine Konsortium-kontrollierte Blockchain aufzusetzen, die von mehreren Unternehmen gleichzeitig modifiziert werden kann, ohne dass sich diese autarken Marktakteure gegenseitig in die Quere kommen. Es ist aber auch möglich, die Mitwirkung anonymer Teilnehmer zu erlauben.

Dicht isoliert

Die Bereitstellung benutzereigener Geschäftslogik kann in Sawtooth sowohl on-chain als auch off-chain erfolgen. Hyperledger Sawtooth isoliert den Kern des eigenen Ledgers von der anwendungsspezifischen Ausführungsumgebung der Geschäftslogik.

Die Erweiterbarkeit von Sawtooth erstreckt sich erstaunlicherweise sogar auf die unterstützten Transaktionsengines des Frameworks. Sawtooth kann nicht nur den Vertragscode anderer Blockchain-Plattformen wie Ethereum integrieren, sondern auch smarte Verträge in WebAssembly und DAML (Digital Asset Modelling Language, einer quelloffenen Smart-Contract-Entwicklungssprache von der Digital Asset Holdings, LLC) ausführen.

Ein-Klick-Bereitstellung: Schematische Darstellung der Architektur von Sextant, einer Blockchain-Managementplattform von BTP (Blockchain Technology Partners), einem Mitglied von Hyperledger.
Ein-Klick-Bereitstellung: Schematische Darstellung der Architektur von Sextant, einer Blockchain-Managementplattform von BTP (Blockchain Technology Partners), einem Mitglied von Hyperledger.
(Bild: Hyperledger)

Für die Integration von Ethereums Vertragscode in Solidity zeichnet in Hyperledger Sawtooth das Seth-Framework verantwortlich. (Seth ist ein Akronym für Sawtooth-Ethereum Integration Project – der Sinn und Zweck dieser Initiative ist eigentlich selbsterklärend.) Truffle, das führende Entwicklungswerkzeug der Ethereum-Gemeinde, unterstützt ja auch schon die Ausgabe von Ethereums smartem Vertragscode via Seth an Sawtooth ab der Version 1.1 (Codename Bumper).

Sawtooth 1.1 debütierte außerdem eine neue Smart-Contract-Engine namens Sabre zum Ausführen von smarten Verträgen in WebAssembly (WASM). Ein quelloffener On-Chain-Interpreter namens wasmi von Parity Technologies macht es möglich. WebAssembly ist ein W3C-standardisiertes Kompilierungsziel für Programmiercode aus beliebigen Sprachen, den bereits alle führenden Webbrowser unterstützen.

Sicherheit durch Disaggregation

Ausführbarer On-chain-Code zur Umsetzung benutzereigener Geschäftslogik kann gravierende Sicherheitslücken eröffnen. Dieses Problem plagt unter anderem die Ethereum-Plattform.

Smarte Verträge auf Ethereum entstehen in einer Turing-vollständigen Sprache und können so ein sehr breites Spektrum an Vorgängen zum Ausdruck bringen. Die resultierende semantische Komplexität erhöht jedoch das Risiko von Programmierfehlern. Bugs in der Implementierung intelligenter Verträge eröffnen Angriffsvektoren für Cyberattacken gegen die Blockchain und deren Vermögenswerte.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Viele Blockchain-Frameworks setzen zur Risikobegrenzung auf eine feste Transaktionssemantik der smarten Verträge und/oder nutzen formale Überprüfungstechniken zum Validieren von benutzereigenem Code. Die Entwickler von Sawtooth haben eine andere Herangehensweise gewählt.

Zur Wahrung der Integrität der Blockchain setzt Hyperledger Sawtooth auf einen Ansatz namens „Economy of Mechanism“. Dieses Theorem besagt, dass die Disaggregation eines Systems – also das Zerschlagen in kleine Teileinheiten – die Sicherheit der Gesamtheit steigert. Mit der reduzierten Komplexität der Einzelteile verbessert sich die Auditierbarkeit des Gesamtsystems.

Bei Sawtooth findet der Ansatz u.a. in den Transaktionsfamilien praktische Anwendung.

„Einsteckbare“ Transaktionsfamilien

Eine Transaktionsfamilie in Hyperledger Sawtooth beschreibt eine Untermenge von Operationen, die zur Umsetzung von Transaktionen des betreffenden Typs vorab validiert und zugelassen wurde. Transaktionsfamilien stellen den Entwicklern vorgefertigte Bauelemente zur Verfügung, mit deren Hilfe sich die gewünschte Geschäftslogik implementieren lässt.

Die Netzwerkteilnehmer einer Sawtooth-Blockchain dürfen zur Risikobegrenzung nur ganz bestimmte Vorgänge ausführen. Mit einer beschränkten Auswahl an zulässigen Operationen und ohne problematische Konstruktionen wie Schleifen ist es sehr schwierig, die Transaktionsfamilien zum Angriff gegen die Blockchain zu missbrauchen.

Eine Transaktionsfamilie macht die unterstützte Funktionalität mit Hilfe sogenannter Transaktions-APIs verfügbar.

Verlauf der Transaktionsverarbeitung in einer echten Implementierung der Blockchain-Softwareschmiede MobiDev.
Verlauf der Transaktionsverarbeitung in einer echten Implementierung der Blockchain-Softwareschmiede MobiDev.
(Bild: mobidev.biz)

Für die Off-Chain-Verarbeitung der Geschäftslogik zeichnen in Sawtooth die sogenannten Transaktionsprozessoren (TP) verantwortlich. Bei einem TP handelt es sich um einen Langzeit-Prozess, der auf einem Netzwerkknoten in Isolation von dem Sawtooth-Kern läuft. Diese Off-Chain-Implementierung resultiert in einer erhöhten Sicherheit und einer bemerkenswerten Flexibilität. Sawtooth kann die benötigte Geschäftslogik in beliebigen Sprachen ausführen, darunter auch etwa Rust, Python, Kotlin oder C++ zusätzlich zu Go, Java und JavaScript. Zum Vergleich: Hyperledger Fabric unterstützt Chaincode nur in Go, Java und JavaScript.

Ein Transaktionsprozessor (TP) in Hyperledger Sawtooth besteht aus zwei Hauptkomponenten: einer processor-Klasse und einer (anwendungsspezifischen) handler-Klasse. Die Letztere beinhaltet die Geschäftslogik der betreffenden Transaktionsfamilie.

Der Handler einer Transaktionsfamilie nimmt den Payload der Transaktion entgegen, analysiert diesen, führt die erforderliche Geschäftslogik aus und übergibt die resultierenden Änderungen an den derzeit aktiven Validator. An eine processor-Klasse lassen sich im Übrigen mehrere handler-Klassen anbinden.

Die Architektur eines Validator-Knoten in Hyperledger Sawtooth.
Die Architektur eines Validator-Knoten in Hyperledger Sawtooth.
(Bild: Hyperledger)

Ein Validator-Knoten kann nur solche Transaktionen billigen, für die es über einen Transaktionsprozessor verfügt; den Letzteren gilt es also zu installieren. Ein gefälschter Transaktionsprozessor würde im Übrigen auf dem betreffenden Knoten einen Fork der Blockchain erzeugen; die übrigen Knoten würden den Fork ignorieren, gemeinsam Konsens erreichen und ohne den Betrüger weitermachen.

Die Quadratur des Kreises

Hyperledger Sawtooth entstand ursprünglich bei Intel unter dem Namen Sawtooth Lake. Der Chip-Riese hatte die Codebasis unter eine Apache-2.0-Lizenz gestellt und zu Hyperledger beigesteuert. Intels Vermächtnis kommt unter anderem beim (optionalen) PoET-Konsensmodul zum Tragen, der in der Standardkonfiguration die Validator-Knoten aussucht.

Bei PoET (Proof of Elapsed Time) handelt es sich um einen byzantinisch fehlertoleranten Konsensmechanismus zur Gewährleistung schneller Transaktionsfinalität und der Integrität der Blockchain in sehr großen Blockchain-Netzwerken. PoET-SGX setzt auf eine vertrauenswürdige Ausführungsumgebung auf der Basis SGX-fähiger Intel-Hardware in Sawtooth 1.0. In dieser Implementierung trumpft Sawtooth mit einem sehr hohen Transaktionsdurchsatz auch in sehr umfangreichen Netzwerken (mehr dazu im Bericht „Konsensus-Engines auf dem Prüfstand“), ist jedoch nicht kompatibel mit Sawtooth 1.1. Über die byzantinische Fehlertoleranz von PoET-SGX wacht auf Hardwareebene Intels SGX-Technologie, welche aber die Bereitstellung in einer Cloud-Umgebung ausschließt.

„Hardwarebeschleunigt“: Schematische Darstellung der Funktionsweise des Konsensverfahrens PoET auf der Basis von Intels SGX-Technologie.
„Hardwarebeschleunigt“: Schematische Darstellung der Funktionsweise des Konsensverfahrens PoET auf der Basis von Intels SGX-Technologie.
(Bild: Intel)

PoET CFT, eine PoET-Simulation ohne SGX-Hardware, lässt sich auch in einer virtualisierten Cloud-Umgebung ausführen. Dieses Verfahren bietet jedoch keine byzantinische Fehlertoleranz, was den Sinn und Zweck der ganzen Übung in Frage stellt.

Eine neue Implementierung namens PoET2 soll die Vorteile beider Ansätze verbinden: Es bietet byzantinische Fehlertoleranz dank einer SGX-Enclave, sichert jedoch auf Grund des Verzichts auf Intels PSE (Platform Services Enclave) keinerlei Daten zwischen den Reboots (nicht einmal den ECDSA-Schlüssel). Als Resultat daraus muss der Knoten zwar die Initialisierung der SGX-Enclave nach dem Reboot wiederholen, aber dafür funktioniert das Ganze auch mit Knoten, die virtualisiert in einer Cloud-Umgebung laufen.

Konsensverfahren der PoE-Familie sollen helfen, den Datendurchsatz zu maximieren; sie sind jedoch bei Weitem nicht die einzigen unterstützten Mechanismen der dezentralen Entscheidungsfindung in Sawtooth. Eine leistungsstarke Alternative bietet u.a. das PBFT-Verfahren (Practical Byzantine Fault Tolerance), allerdings kann es nicht genauso reibungslos skalieren wie das „hardwarebeschleunigte“ PoET-SGX oder PoET2. (Kurz zur Klarstellung: Es handelt sich hierbei natürlich nicht um „Hardwarebeschleunigung“ im gewöhnlichen, sondern im übertragenen Sinne.)

Sawtooth verfügt zum Glück über die Fähigkeit, das Konsensverfahren zur Laufzeit zu wechseln. Eine einzige Transaktion genügt und die Knoten schalten einfach um. Kein anderes der führenden Blockchain-Frameworks bietet eine vergleichbare Möglichkeit.

Fazit

Hyperledger Sawtooth bietet Entwicklern von Blockchain-Anwendungen der Enterprise-Klasse ein sehr bemerkenswertes Leistungsspektrum. Die durchdachte Modularität erlaubt es, die Blockchain-Plattform an sich dynamisch ändernde Anforderungen zur Laufzeit anzupassen.

Über die Autoren: Anna Kobylinska und Filipe Pereira Martins arbeiten für McKinley Denali Inc. (USA).

(ID:46289364)