Vier Architekturmusterkandidaten für Blockchain-basierte dezentrale Anwendungen

Blockchain verfügt über eine Vielzahl von Anwendungsfällen, die von der Finanzierung bis zum dezentralen Internet reichen. Die meisten Blockchain-Anwendungsfälle können jedoch mit relativ wenigen Mustern implementiert werden. Eine Mustersammlung für Blockchain-basierte Anwendungen enthält beispielsweise eine Liste von 15 Blockchain-Mustern.

Feinkörnige Muster, wie oben beschrieben, sind nützlich. Das Systemdesign erfordert jedoch ein viel höheres Maß an Abstraktionen. Es ist auch nützlich, grobkörnigere Makromuster zu haben, die wir Architekturmuster nennen. Dieser Beitrag beschreibt vier solcher Architekturmuster.

Fangen wir an. Um Muster zu beschreiben, verwende ich die Vorlage, die Aleksandra Tešanovic in Was ist ein Muster?

beschrieben hat

Architekturmuster für IAM.

Kontext: IAM-Umgebungen umfassen viele Benutzer und Dienstanbieter. IAM-Systeme bieten jedem Benutzer ein Konto und eine Reihe von Funktionen, mit denen Benutzer zu Dienstanbietern gehen, ihre Eigentumsrechte an Konten nachweisen und dann Dienste basierend auf ihren Funktionen empfangen können.

Kräfte: Es muss eine dezentrale IAM-Umgebung implementiert werden, in der ein einzelner nicht autorisierter Benutzer oder wenige Benutzer das System nicht wesentlich beeinflussen können.

Lösung: Der vorgeschlagene Musterkandidat verwendet die DID-Spezifikation des World Wide Web Consortium (W3C) und die W3C-Spezifikation für überprüfbare Ansprüche auf folgende Weise.

Nehmen wir an, Alice benötigt eine Identität (DID, eine eindeutige Kennung). Wie die Abbildung zum Erstellen einer neuen DID zeigt, erstellt Alice einen Eintrag in der Blockchain. Dieser Eintrag enthält eine zufällig generierte Kennung, einen Link zum Repository mit ihren Profildaten und einen Hash der Profildaten. Das Benutzerprofil enthält einen öffentlichen Schlüssel und eine Reihe überprüfbarer Ansprüche. Die generierte zufällige Kennung wird jetzt zu Alices DID, da nur sie den privaten Schlüssel besitzt, der dem öffentlichen Schlüssel entspricht.

Überprüfbare Ansprüche sind Delegationstoken, die von einer zuständigen Behörde unterzeichnet wurden. Der Ersteller zeichnet sie auch in einer Blockchain zusammen mit dem Hash des Anspruchs auf ähnliche Weise wie die DID auf.

Alice erhält die überprüfbaren Ansprüche in erster Linie, indem sie sich an die Behörden wendet. Beispielsweise ist die Abteilung für persönliche Registrierung oder eine gleichwertige Abteilung die zuständige Behörde für nachprüfbare Angaben zu Name, Adresse und Geburtsdatum. Unter der Annahme, dass die Behörden nachprüfbare Ansprüche stellen, demonstriert Alice zunächst, dass ihr Eigentum an der DID ein Challenge-Response-Protokoll verwendet. Anschließend reicht sie Anträge auf überprüfbare Ansprüche für ihre Attribute ein, die beispielsweise ihren Namen, ihre Adresse, ihren Abschluss und ihr Geburtsdatum enthalten können. Um ihre Profildaten zu aktualisieren, fügt Alice der Blockchain einen neuen Eintrag mit einem neuen Hash des Profils hinzu.

Im Challenge-Response-Protokoll generiert der Validator einen zufälligen Startwert, verschlüsselt ihn mit dem öffentlichen Schlüssel von Alice und fordert Alice dann auf, durch Entschlüsseln des verschlüsselten Startwerts zu demonstrieren, dass sie über den privaten Schlüssel verfügt. Da Alice den privaten Schlüssel hat, muss sie die Eigentümerin der DID sein.

Ein anderer Benutzer oder eine andere Organisation (Authentifikator), Bob, der Alice identifizieren möchte, empfängt zuerst die DID von Alice, liest alle Einträge zu dieser DID aus der Blockchain, ruft die Profildaten von Alice ab und überprüft sie. Bob kann die Identität von Alice (Identifizierung) erneut mithilfe des Challenge-Response-Protokolls überprüfen. Dann kann Bob die überprüfbaren Behauptungen bestätigen und sicher sein, dass die Behauptungen über Alice wahr sind.

Wir können die meisten IAM-Anwendungsfälle über dieses Architekturmuster legen. Zum Beispiel können wir eine Zugriffskontrolle erreichen, indem wir entweder überprüfbare Ansprüche für Aktionen ausstellen, die Benutzer ausführen sollen, oder indem wir nur Benutzer akzeptieren, deren überprüfbare Ansprüche bestimmte Eigenschaften (z. B. Alter, Stellenbeschreibung, Gruppenmitgliedschaft) aufweisen. Eine Implementierung kann sich dafür entscheiden, relevante Teilmengen der Profildaten in einer Datenbank zwischenzuspeichern, um die Leistung zu verbessern.

Architekturmuster für überprüfbaren Verlauf oder Arbeitsbereich

Kontext: Zwei oder mehr Parteien führen Transaktionen durch oder arbeiten zusammen, und ihre Aktivitäten müssen auf unbestreitbare Weise aufgezeichnet werden.

Kräfte: Es muss ein dezentrales Überwachungsprotokoll oder ein Arbeitsbereich implementiert werden, in dem ein einzelner nicht autorisierter Benutzer oder wenige Benutzer das System nicht wesentlich beeinflussen können.

Lösung: Das vorgeschlagene System zeichnet Aktivitäten auf und erstellt Einträge in der Blockchain für diese Datensätze. Der Eintrag enthält den Hash von Aktivitätsdatensätzen. Daher können die Datensätze später nicht mehr bestritten werden.

Nehmen wir zum Beispiel an, Alice möchte eine Steuer zahlen. Tax Server akzeptiert den Zahlungsantrag, erstellt eine digitale Quittung, zeichnet den Hash in der Blockchain auf und sendet die Quittung an Alice. Alice kann den Beleg überprüfen, indem sie den Hash berechnet und mit dem in der Blockchain gespeicherten Wert vergleicht. Danach kann Bob die Quittung nicht mehr ablehnen, da der Quittungs-Hash und die Quittungszeit in der Blockchain aufgezeichnet sind.

Wenn die Aktivitäten zahlreich sind, müssen möglicherweise die Leistungseinschränkungen der Blockchain umgangen werden. Daher können einige Implementierungen einen Hash mehrerer Aktivitätsdatensätze als Block anstelle eines einzelnen Aktivitätsdatensatzes aufzeichnen.

Architekturmuster für Registrierung oder Marktplatz

Kontext: Eine Registrierung ist eine Sammlung von Dateneinträgen, die über das Netzwerk gesucht und abgerufen werden können. Ein Marktplatz ist eine Registrierung, mit der Benutzer die durch Dateneingaben dargestellten Dienste oder Produkte kaufen können. Eine Registrierung kann beispielsweise ein Katalog verfügbarer APIs sein.

Kräfte: Es muss eine dezentrale Umgebung implementiert werden, in der ein einzelner nicht autorisierter Benutzer oder wenige Benutzer das System nicht wesentlich beeinflussen können.

Lösung: Das vorgeschlagene Muster funktioniert wie folgt.

Betrachten wir zunächst eine Registrierung. Bei der vorgeschlagenen Architektur zeichnet der Client die Änderung in der Blockchain auf, wenn ein Benutzer ein Registrierungsupdate ausgibt (um einen Eintrag hinzuzufügen oder zu ändern). Wenn die Daten in der Aktualisierung groß sind, kann der Blockchain-Datensatz eine Verknüpfung zu den Daten und einen Hashwert der Daten enthalten. Wenn in der Registrierung gespeicherte Daten geändert werden müssen, fügt der Registrierungsclient der Blockchain einen neuen Datensatz mit geänderten Informationen hinzu.

In der obigen Abbildung hat jeder Benutzer einen Registrierungsclient, der auf dem lokalen Computer (z. B. Laptop oder Telefon) ausgeführt wird. Jeder Registrierungsclient liest die Aktualisierungsdatensätze aus der Blockchain, überprüft die Aktualisierungsdaten anhand des in den Datensätzen enthaltenen Hashs und rekonstruiert die aktuellste Ansicht von Datensätzen aus Aktualisierungen. Durch Lesen von Blockchain-Datensätzen zu APIs, deren Hinzufügungen, Änderungen und Entfernungen kann der Registrierungsclient beispielsweise eine Ansicht erstellen, in der die aktuellen APIs angezeigt werden, die in der Registrierung enthalten sind. Um zu vermeiden, dass alle Datensätze bei jeder Verwendung der Registrierung gelesen und überprüft werden müssen, speichern Clients möglicherweise Daten in einer Datenbank und indizieren sie. Der Client sollte die Blockchain regelmäßig überprüfen und die Registrierung aktualisieren.

Blockchain eignet sich gut als “Service-Marktplatz”, da derselbe Service möglicherweise mehrmals verkauft wird. Aufgrund von Leistungsbeschränkungen sind Blockchain-basierte Marktplätze jedoch nicht für Artikel geeignet, die nur einmal verkauft werden können.

Um die Funktionalität einer Blockchain-basierten Registrierung zu veranschaulichen, schauen wir uns an, wann Alice den “Wetternachrichtendienst” auf dem Blockchain-Markt abonnieren möchte. Wenn sie ihre Anfrage sendet, erstellt die Registrierung Anmeldeinformationen für den Dienst und teilt diese mit Alice. Die Zahlung kann auf verschiedene Arten erfolgen: über Bitcoins, über einen intelligenten Vertrag, bei dem Zahlungen rechtzeitig erfolgen, oder über ein nicht gebundenes Mittel.

Architekturmuster für intelligente Verträge und verwaltete Dinge

Unter diesem Muster betrachten wir zwei Fälle. Erstens betrachten wir intelligente Verträge, und zweitens betrachten wir einen häufigen Sonderfall intelligenter Verträge: „Managed Things“.

Smart Contracts Pattern

Kontext: Mehrere Benutzer möchten einen Vertrag einhalten, der als ausführbares Programm bezeichnet wird. Der Vertrag unterliegt Zustandsübergängen gemäß den im Vertrag festgelegten Bedingungen, und zu einem bestimmten Zeitpunkt kann sich jeder auf den aktuellen Status des Vertrags einigen.

Streitkräfte: müssen eine Umgebung implementieren, in der ein einzelner nicht autorisierter Benutzer oder wenige Benutzer das System nicht wesentlich beeinflussen können.

Lösung: Intelligente Kontakte sind Teil der Blockchain-Technologien und werden von Blockchain-Implementierungen wie Ethereum unterstützt. Ein Vertrag wird in einer intelligenten Vertragssprache beschrieben und an alle Teilnehmer verteilt. Wenn sich die im Vertrag definierten Bedingungen ändern, führt jeder Teilnehmer den Vertrag aus und zeichnet den aktuellen Status in der Blockchain mithilfe des Konsensalgorithmus auf.

Muster für verwaltete Dinge

Kontext: Wir müssen den Besitz von intelligenten Dingen aus der realen Welt verfolgen. Hier sind intelligente Dinge reale Objekte, in denen Rechenlogik ausgeführt werden kann. Der Eigentümer darf die realen Dinge kontrollieren und Aktionen ausführen. Der Eigentümer kann sein Eigentum auch auf eine andere Person übertragen.

Streitkräfte: müssen eine Umgebung implementieren, in der ein einzelner nicht autorisierter Benutzer oder wenige Benutzer das System nicht wesentlich beeinflussen können.

Lösung: Im Folgenden wird die Implementierung des Musters am Beispiel von Car als verwaltetes Element beschrieben.

Wir können eine Blockchain für eine verwaltete Sache, in diesem Fall ein Auto, in zwei Schritten implementieren. Zunächst zeichnet der Hersteller die DID und den öffentlichen Schlüssel des Fahrzeugbesitzers auf. Wenn sich der Eigentümer ändert, fügt der Eigentümer einen neuen Datensatz in die Blockchain ein, der den neuen Eigentümer angibt. Zweitens ruft das Auto bei der Überprüfung des Eigentums zunächst alle Datensätze in der Blockchain ab und überprüft, ob jeder Datensatz zu diesem Zeitpunkt vom Eigentümer hinzugefügt wurde. Dies erfolgt durch Überprüfen des öffentlichen Schlüssels des Benutzers, der den Datensatz geschrieben hat, mit dem öffentlichen Schlüssel, der im vorherigen Besitzdatensatz enthalten ist. Der letzte Eigentümer in dieser gültigen Kette ist der aktuelle Eigentümer.

Nachdem der Besitzer ermittelt wurde, meldet sich das Auto bei der aktuellen Besitzerin Alice an, indem es ihren öffentlichen Schlüssel abruft und mit Alice ‘Telefon, das über den privaten Schlüssel von Alice verfügt, eine auf dem Challenge-Response-Protokoll basierende Anmeldung durchführt.

Ein solches System reduziert die Risiken, die mit ferngesteuerten Artefakten verbunden sind. In einer Nicht-Blockchain-Implementierung kann beispielsweise jemand mit Zugriff den Besitz Ihres Autos ändern. Bei dem Blockchain-basierten Modell muss ein potenzieller Angreifer jedoch den Besitzdatensatz in der Blockchain ändern, um das Auto fernsteuern zu können. Dies ist sehr schwer zu erreichen, ohne Eigentümer zu sein.

Es ist jedoch schwierig zu verhindern, dass jemand, der Zugriff auf das „Ding“ hat, die darin laufende Logik physisch ändert (z. B. durch Ersetzen der Firmware des Autos). Eine Lösung für dieses Problem besteht darin, eine Form der Selbstzerstörung aufzubauen, die ausgelöst wird, wenn Manipulationen am Artefakt festgestellt werden.

Zum Beispiel kauft Alice das Auto von Bob mit einem intelligenten Vertrag, der Bob bezahlt und den Besitz des Fahrzeugs aktualisiert. Nach der Transaktion geht Alice zum Auto, das Alices DID vom Telefon liest, ihren öffentlichen Schlüssel abruft, sie mithilfe eines Challenge-Response-Protokolls authentifiziert, indem sie mit dem Telefon kommuniziert, das über Alices privaten Schlüssel verfügt, ihren Besitz überprüft und den entsperrt Auto.

Schlussfolgerung

Wir haben vier Blockchain-basierte Architekturmuster diskutiert. Das GitHub-Dokument, Blockchain-basierte Integrationsanwendungsfälle, zeigt diese Muster in Aktion und beschreibt, wie mehr als 30 Blockchain-Anwendungsfälle mithilfe dieser vier Muster implementiert werden können.

Wenn Sie Meinungen zu den oben genannten Mustern haben oder andere Muster kennen, würde ich gerne davon hören.

Ich hoffe das war nützlich. Wenn Ihnen dies gefällt, könnte Ihnen auch eine detaillierte Blockchain-Analyse in unserem kürzlich veröffentlichten Artikel „Eine anwendungsfallorientierte Übersicht über Blockchain: Status Quo und zukünftige Richtungen“ gefallen.