Thorsten, der kleine Informatikstudent

Es war in einer der ersten Vorlesungen, die ich im ersten Semester besuchte, als ich das erste mal von Pointern etwas gehört habe. Programmiererfahrung hatte ich zwar bereits etwas in Delphi/Pascal, Java (war ganz neu), und Basic, aber um Pointer konnte ich immer einen weiten Bogen machen. Fasziniert hatte mich, dass wenn man zum Beispiel eine verkettete Liste aufbaut, dass diese riesig lang werden konnte, wenn man im kleinen (bei jedem Element der Liste) den Zeiger (Pointer) einfach richtig setzt. Zeiger, nichts anderes sind Pointer – oder Adressen, für die Nicht-Informatiker. Die Adressierbarkeit von Daten ist eine der grundlegenden IT-Themen, die uns auch in der Frage nach dem 32 Bit (oder 64 Bit) Systemen beschäftigen, was nichts anderes bedeutet, als die Möglichkeit einen Bereich von 32 oder 64 Bit adressieren zu können. Die einfachste Form der Speichersparsamkeit ist es daher, dass man einen Wert nur einmal ablegt und ihn lediglich bei jeder Verwendung referenziert (einen Zeiger auf den Speicherplatz nutzt).

Die Dezentralen Identifikatoren (Decentralized Identifiers, DID) sind die Pointer der Gegenwart. Im Gegensatz zu den Rechnern von früher, bei denen man nur einen begrenzten „Speicherplatz“ eindeutig adressieren konnte, kann man mit einer DID quasi alles, auf jedem Rechner, jeden Datensatz adressieren, und ist dabei sogar nahezu konfliktfrei (jede Kennung ist einmalig, ohne dass es ein zentrales Register von allen Kennungen gibt, die erstellt wurden).

Im vorangegangenen Kapitel wurde von Datensilos gesprochen, die jeder an der Transaktion beteiligten für sich aufbaut. Diese widersprechen natürlich dem „Single-Source-Of-Truth“ (Eine Quelle der Wahrheit), die man ansonsten in der Informatik haben will, da es jeweils eine Kopie des Datensatzes ist. Besser ist es natürlich, wenn man jewgabe an Bob.eils nur einen Pointer/Zeiger speichern würde zur Quelle.

Der in meinem Haus verbaute Stromzähler hat zum Beispiel für seinen jeweils aktuellen Datensatz folgenden Zeiger:

did:ethr:6226:0x9b64616D341C70469883715B0795ccaCcD019157

Löst man diesen Zeiger auf (ruft die Daten an der Speicherstelle ab), dann erhält man neben dem aktuellen Zählerstand auch die Leistung und etliche weitere Informationen. Der Zugriffsschutz, also die Frage wer welche Felder des Datensatzes sieht, ist über die Presentation geregelt, denn beim Abruf muss man selbst sich mit seiner Identität (SSI) ausweißen. Umgangssprachlich lautet der Zugriff daher, Ich mit der Kennung XYZ will den Inhalt von DID:ABC haben und unterschreibe dies digital. Mein Zähler prüft nun die digitale Signatur des Anfragenden und antwortet mit dem entsprechenden Datensatz.

Wie oft hätte ich schon anstelle von „Kannst Du mir die Daten senden“ gerne gesagt: „Kannst Du mir einen Pointer schicken?“ . Kleine Nebenrede: Auch im ID-Ideal Projekt versenden wir fleißig Daten, obwohl eigentlich jeder die Idee hinter DIDs verstehen sollte. Excel spricht eben kein DID 🙂

TyDIDs ist geboren

Open Source lebt davon, dass es aufeinander aufbaut. Entsprechend benötigt man für die Implementierung einen ganzen Stack von unterschiedlichen Bibliotheken und Prozessen, die vorher jemand entwickelt hat, nur um an Ende des Tages wieder etwas geschaffen zu haben, was auch wieder nur ein Teil des Puzzles ist.

TyDIDs steht für Trust your Decentraliced Identifiers und verspricht, dass man Daten mit einer Zeile Code bereitstellen kann und genauso mit einer Zeile Code abrufen kann. Der Abruf meines Zählerstandes ist in der Kommandozeile mit folgender Eingabe für mich möglich:

./tydids -p 0x9b64616D341C70469883715B0795ccaCcD019157 -v -x
{
 iat: 1646005034,
 power: 2156070,
 power3: 653310,
 energyOut: 156815886085000,
 power1: 663410,
 energy: 261027579533000,
 power2: 839350,
 energy_wh: 26102758,
 energyOut_wh: 15681589,
 energyProd: 522210565826000,
 energyProd_wh: 52221057,
 energySelf_wh: 36539468,
 consumption_wh: 62642226, 
 power1_w: 663,
 power2_w: 839,
 power3_w: 653,
 power_w: 2156,
 baseCosts: 852.23,
 amortization: 0,
 energyCost: 10759.56,
 energyRevenue: 15061.57,
 energyIncome: 0,
 energySavingsSelf: 15061.57,
 energySpendings: 11611.789999999999,
 incomeSaldo: 3449.78,
 energySaldo_wh: -10421169,
 yield: 30,
 energyPrice_kwh: -0.0551,
 iss: 'did:ethr:6226:0x9b64616D341C70469883715B0795ccaCcD019157'
}

Es ist egal, wo ich mich auf der Welt befinde. Der eindeutige Zeiger zeigt brav auf den Datensatz und gibt mir ein Ergebnis in deutlich unter 100 Millisekunden.

Für das Projekt ID-Ideal benötigen wir hingegen einen Zugriff aus Node-RED, da wir hier unsere Ereignissteuerung aufbauen. Daher existiert auch eine Erweiterung hierfür, die viele Funktionen der ursprünglichen Bibliothek auch enthält.

Was haben wir nun erreicht? Alice kann am Anfang des Ladevorgangs über die DID der Stromzählers dessen Werte abrufen. An diese DID kommt sie, indem sie zum Beispiel einen QR-Code scannt oder sie per Hand eingibt. Am Ende des Ladevorgangs wiederholt sie diesen Vorgang und erhält einen höheren Zählerstand (entsprechend dem Verbrauch). Da die Daten innerhalb der Presentation (Daten hinter der DID) durch den Stromzähler digital signiert wurden, hat sie einen eindeutigen Nachweis über den Ladevorgang, welche nun Grundlage für den Vertrag mit Bob ist.

Durch die Eigenschaft (eine Zeile Code) sorgt TyDIDs dafür, dass komplexe Prozesse in viele atomare Schritte zerlegt werden. Um in den bereits eingeführten Bildern des Raumes und Tisches zu bleiben, sind zum Zeitpunkt des Ladevorgangs lediglich Alice und der Stromzähler anwesend. Der Vertrag (Transaktion) besteht am Ende aus zwei Zählerständen, zwei Zeitstempeln und natürlich den Unterschriften der beiden Parteien. Weder muss Bob in den Raum eingeladen werden noch muss der Stromzähler für den Vorgang mit Bob involviert werden. Es muss lediglich möglich sein, dass Bob die Identität des Stromzählers prüfen kann (ist es wirklich ein Stromzähler? Oder doch eher ein Gaszähler?). Hierzu kann Bob nun wieder den „Resolver“ nutzen, der bereits weiter oben beschrieben wurde.

Seiten: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Inhalt nicht verfügbar.
Bitte erlauben Sie Cookies, indem Sie auf Übernehmen Sie auf das Banner