In Schritt 16 wurde die Blockchain-Datenstruktur zum unveränderlichen Nur-Hinzufüge-Datenspeicher, der als manipulationsresistentes Hauptbuch für Transaktionsdaten dient. Für das Abklären des Eigentums mithilfe einer Gruppe von Computern, die als Zeugen für das Eigentum betreffende Ereignisse dienen sollen, ist eine einzige unveränderliche Nur-Hinzufüge-Transaktionsdatenhistorie von begrenztem Wert. Daher geht es in diesem Schritt darum, ein rein verteiltes Peer-to-Peer-System aufzubauen, das die Freigabe bzw. das Teilen von Informationen über Transaktionen ermöglicht.
Wie lassen sich private Neuigkeiten am besten unter allen Mitarbeitern in einem Unternehmen verbreiten, wenn man keinen Zugriff auf den vollständigen E-Mail-Verteiler hat? Eine Möglichkeit, letztendlich garantiert alle Mitarbeiter zu erreichen, besteht darin, die Informationen mit einer oder zwei gut vernetzten und gesprächigen Personen zu teilen und sie zu bitten, diese vertraulich zu behandeln. Das funktioniert, weil es kaum Meldungen gibt, die sich schneller unter Kollegen verbreiten, als persönliche Neuigkeiten, die unter dem Siegel der Verschwiegenheit preisgegeben werden. Der Grund dafür ist einfach: Menschen sind soziale Wesen, die echtes Interesse an ihren Mitmenschen haben. Informationen über andere weiterzugeben, ist außerdem ein übliches Verhaltensmuster zum Erneuern oder Stärken gesellschaftlicher Bindungen. Dieser Schritt behandelt einen Aspekt der Blockchain, der Peer-to-Peer-Systeme in einem anderen und nahezu menschlichen Licht erscheinen lässt – es geht nämlich um den Informationsaustausch zwischen Computern mittels Kommunikation.
Die Blockchain ist ein rein verteiltes Peer-to-Peer-System zur Verwaltung von Eigentum. Sie besteht aus Einzelcomputern, die jeweils eine eigene Version eines unveränderlichen Hauptbuchs führen, das die Gesamthistorie der Transaktionsdaten enthält. Insofern entsprechen die Einzelcomputer Zeugen, die bestätigen können, ob eine bestimmte Transaktion laut ihren eigenen Erinnerungen stattgefunden hat oder nicht. Aber wie können Einzelcomputer Transaktionen überhaupt beobachten oder etwas darüber erfahren? Das Hauptziel in diesem Schritt besteht darin, sicherzustellen, dass die Einzelcomputer, aus denen das Peer-to-Peer-System besteht, über Transaktionen informiert werden und ihre eigene Transaktionsdatenhistorie führen können.
Ein rein verteiltes Peer-to-Peer-System weist keine zentrale Koordinierungs- oder Kontrollinstanz auf. Daher gibt es keine zentrale Komponente, die Daten und Nachrichten an alle Computer im System verbreitet. Gäbe es einen solchen zentralen Informationspunkt, wäre das ein Widerspruch in sich. Außerdem können technische Probleme die Verteilung verhindern – und deshalb müssen alle Knoten des Systems Informationen über sämtliche Transaktionen erhalten, ohne dass dazu eine zentrale Komponente erforderlich ist.
Die Idee besteht darin, die Computer im Peer-to-Peer-System auf ähnliche Weise Nachrichten und Daten weitergeben und austauschen zu lassen, wie Menschen Neuigkeiten verbreiten. Wenn die Knoten im Peer-to-Peer-System Informationen an ihre Peer-Knoten weitergeben, die diese wiederum an ihre eigenen Peers weitergeben, haben sich die Neuigkeiten irgendwann an alle Knoten im System verbreitet.
Im Wesentlichen kopiert das Peer-to-Peer-System die Art und Weise, wie eine Gruppe von Menschen – zum Beispiel Mitarbeiter in einem Unternehmen, ein Freundeskreis oder die Mitglieder eines Fitnessklubs – miteinander kommuniziert. Kurz gesagt beteiligen sich die Mitglieder dieser Gruppen an drei verschiedenen Arten der Konversation, die jeweils bestimmten Zwecken dienen:
Smalltalk, der aus gesellschaftlicher Sicht eine wichtige Rolle spielt, denn er ist der Kitt, der bestehende Beziehungen zusammenhält, obwohl er keine wesentlichen Themen berührt
Austausch von Neuigkeiten, also Unterhaltungen, in denen wesentliche Informationen unter den Gesprächsteilnehmern ausgetauscht werden
Vorstellen neuer Peers, also Unterhaltungen, mit denen man neue Personen zu einer vorhandenen Gruppe von Freunden oder Kollegen einlädt. Der Aufbau einer neuen Beziehung und die Aufnahme neuer Mitglieder in eine Gruppe erfordert stets eine Art Initiationsritus. An diesem Punkt werden Beitrittskandidaten über die Geschichte der Gruppe sowie ihre Werte informiert und den wichtigsten Gruppenmitgliedern vorgestellt.
Aus Computern bestehende Peer-to-Peer-Systeme sind das digitale Gegenstück zu einer Gruppe von Menschen. Den einzelnen Computer, aus denen das Peer-to-Peer-System besteht, sind Smalltalk, der Austausch von Neuigkeiten und die Aufnahme neuer Mitglieder mittels eines Initiationsritus ebenfalls nicht fremd – vielmehr sind diese Interaktionen ein wesentlicher Bestandteil in jedem Peer-to-Peer-System. Ähnlich wie Menschen, die über das gesprochene Wort miteinander kommunizieren, »unterhalten« sich auch die Computer in einem verteilten Peer-to-Peer-System, allerdings über ein digitales Netzwerk. Das größte Netzwerk, das eine gewaltige Anzahl von Computern miteinander verbindet, ist das Internet. Daher besteht die günstigste Methode für den Aufbau eines Peer-to-Peer-Systems darin, die Kommunikation zwischen den Knoten über das Internet laufen zu lassen. Das verteilte Peer-to-Peer-System mit dem Internet als Kommunikationsmedium zeichnet sich durch folgende Kriterien aus:
Jeder Computer ist über das Internet mit dem System verbunden.
Jeder Computer wird über eine eindeutige Adresse identifiziert.
Jeder Computer kann die Verbindung zum System jederzeit trennen oder neu aufbauen.
Jeder Computer führt eine unabhängige Liste der Peers, mit denen er kommuniziert.
Die Kommunikation zwischen den Knoten erfolgt anhand von Nachrichten.
Nachrichten werden über das Internet von einem Knoten zum nächsten gesendet. Zu diesem Zweck wird die eindeutige Internetadresse genutzt.
Die Tatsache, dass die Knoten über ein Netzwerk miteinander kommunizieren und die Verbindung jederzeit trennen oder wiederherstellen können, wirkt sich auf die Zustellung von Nachrichten aus. Hierfür gelten folgende Merkmale:
Es wird nicht garantiert, dass Nachrichten die Zieladressen erreichen, sie können auch verloren gehen.
Nachrichten können mehrfach eintreffen.
Nachrichten müssen nicht unbedingt in der Reihenfolge ihres Versands eintreffen.
Diese Merkmale sorgen für einige Kommunikationshürden, die sich jedoch wie folgt lösen lassen:
Nachrichten werden im Tratschstil übermittelt. Jeder Knoten, der neue Informationen empfängt, leitet diese an die Peers, mit denen er kommuniziert, weiter. Diese behandeln die eingehenden Nachrichten dann auf dieselbe Weise. So ist sichergestellt, dass letztendlich jeder Knoten die Informationen erhält, selbst wenn einige Mitteilungen verloren gehen.
Da die Nachrichten anhand ihres digitalen Fingerabdrucks oder kryptographischen Hashwerts identifiziert werden können, sind die Knoten problemlos dazu in der Lage, Duplikate zu erkennen und zu ignorieren.
Weil Transaktionsdaten und Block-Header Zeitstempel enthalten, können die Knoten diese anhand eines objektiven Kriteriums sortieren.
Die Kommunikation zwischen den Knoten, aus denen das verteilte Peer-to-Peer-System besteht, dient den folgenden drei Zwecken:
Aufrechterhalten bestehender Verbindungen
Herstellen neuer Verbindungen
Verteilen neuer Informationen
Die ersten beiden Kommunikationsarten sind hauptsächlich für das Peer-to-Peer-System selbst wichtig. Es geht darum, das Peer-Netzwerk zusammenzuhalten und digital zu organisieren. Aber der Zweck des Peer-to-Peer-Systems besteht nicht darin, sich um seiner selbst willen zu beschäftigen, sondern vielmehr darin, Eigentum zu verwalten. Dementsprechend geht es bei der dritten Kommunikationsart auch um neue Transaktionsdaten und neue Blöcke, die in die Blockchain-Datenstruktur eingetragen werden. Diese Informationen werden von jedem Knoten im System benötigt, damit die jeweils eigene Version der Transaktionshistorie fortgeführt werden kann.
Jeder Computer im Netzwerk führt eine unabhängige Liste der Peers, mit denen er kommuniziert. Diese Liste enthält nur eine Untermenge aller Knoten, die das Gesamtsystem bilden. Das ist in etwa mit Angestellten vergleichbar, die Umgang mit einigen ihrer Kollegen pflegen, die ihrerseits ebenfalls nur eine Teilmenge aller Mitarbeiter des Unternehmens darstellen. Jeder Computer überprüft regelmäßig, ob diese Peers noch verfügbar sind. Dazu wird eine kurze Nachricht mit der Bitte um Antwort an die Peers gesendet. Diese Aufforderung wird auch als Ping bezeichnet, die Antwort darauf als Pong. Peers, die wiederholt nicht auf diese Nachrichten antworten, werden aus der Kommunikationsliste entfernt. Dieses Verfahren erinnert an den Smalltalk unter Kollegen, der dazu dient, die soziale Bindung aufrechtzuerhalten.
Jeder Computer kann darum bitten, dem Peer-to-Peer-System beizutreten. Dazu sendet er eine entsprechende Anforderungsnachricht an einen beliebigen Knoten des Systems. Dieser Knoten fügt die Adresse des anfragenden Computers zur Liste der eigenen Peers hinzu und antwortet mit einer Bestätigung. Sobald der Knoten die Antwort erhält, fügt er die Adresse des Absenders zur eigenen Peer-Liste hinzu. So wird eine neue Verbindung hergestellt und das System ist um einen Knoten gewachsen. Doch eine einzelne Verbindung zum System ist riskant, denn jeder Knoten kann zu jeder Zeit eine Verbindung trennen, abgeschaltet werden oder sogar abstürzen. Beim Beitritt zu einem Peer-to-Peer-System stellt ein Computer daher normalerweise Verbindungen zu vielen verschiedenen Knoten her, die bereits Teil des Systems sind. Auf diese Art ist sichergestellt, dass die Verbindung zum Gesamtsystem auch dann bestehen bleibt, wenn einzelne Knoten ihre Verbindung trennen oder abgeschaltet werden.
Diese Kommunikationsart dient dem eigentlichen Ziel des Systems, nämlich der Verwaltung von Eigentum. Dazu werden neue Transaktionsdaten und neue Blöcke, die in die Blockchain-Datenstruktur eingetragen werden sollen, im Tratschstil weitergeleitet. Das Teilen von das Eigentum betreffenden Informationen erfolgt in folgenden drei Fällen:
Fortlaufend: Neue Informationen (zum Beispiel neue Transaktionsdaten und neue Blöcke) werden unmittelbar mit ihrem Eintreffen weiter verteilt. Jeder mit dem System verbundene Knoten empfängt letztendlich alle Neuigkeiten.
Aktualisierung: Knoten, die sich nach einer vorübergehenden Trennung wieder mit dem System verbinden, empfangen alle Transaktionsdaten und Blöcke, die sie in der Zwischenzeit verpasst haben.
Beim Beitritt: Neue Knoten, die dem System beitreten, konnten noch keine eigene Transaktionshistorie aufbauen, da sie zuvor noch nie mit dem System verbunden waren. Sie müssen also die gesamte Transaktionshistorie bis zum Zeitpunkt des Beitritts zum System erhalten. Indem eine Kopie der gesamten aktuellen Version der Blockchain-Datenstruktur an den Neuzugang übertragen wird, ist sichergestellt, dass er nach seinem Beitritt zum System ein vollwertiger Knoten wird. Diese Art der Informationsbereitstellung kann auch als Extremfall der Aktualisierung angesehen werden, nämlich als eine Aktualisierung der Gesamthistorie aller Transaktionen, die jemals im System stattgefunden haben.
Die verschiedenen Kommunikationsarten stellen sicher, dass neue Computer dem System beitreten und so zu seinem Wachstum beitragen können. Außerdem wird das System mithilfe einer Kommunikation, die dem Herstellen neuer und dem Aufrechterhalten bestehender Verbindungen dient, zusammengehalten. Und vor allem nutzt das System eine Kommunikation im Tratschstil, um zu gewährleisten, dass letztendlich alle Mitglieder des Peer-to-Peer-Systems sämtliche Transaktionsdaten und Blöcke erhalten, die in die Blockchain-Datenstruktur eingetragen werden sollen.
Dieser Schritt hat sich damit befasst, wie Einzelcomputer zu Knoten eines verteilten Peer-to-Peer-Systems werden und wie die Computer, aus denen das System besteht, miteinander kommunizieren. Insbesondere standen die Aspekte der Nachrichtenübermittlung in einem unzuverlässigen Netzwerk im Mittelpunkt. Allerdings wurde hier noch nicht untersucht, was die einzelnen Knoten nach dem Empfang der Informationen damit tun – die Verarbeitung der Informationen ist jedoch ebenso wichtig wie ihr Erhalt. Daher beschreibt der nächste Schritt, wie Transaktionsdaten von den einzelnen Knoten verarbeitet werden.
Computer in einem verteilten Peer-to-Peer-System kommunizieren über ein digitales Netzwerk miteinander.
Aufgrund der Allgegenwärtigkeit des Internets liegt es nahe, ein verteiltes Peer-to-Peer-System aufzubauen, bei dem die einzelnen Knoten über das Internet miteinander verbunden sind.
Ein Peer-to-Peer-System, in dem das Internet als Kommunikationsmedium dient, zeichnet sich durch folgende Kriterien aus:
Die Computer sind über das Internet miteinander verbunden.
Jeder Computer wird über eine eindeutige Adresse identifiziert.
Jeder Computer kann die Verbindung zum System jederzeit trennen oder neu aufbauen.
Jeder Computer führt eine unabhängige Liste der Peers, mit denen er kommuniziert.
Die Kommunikation zwischen den Knoten erfolgt anhand von Nachrichten.
Nachrichten werden über das Internet von einem Knoten zum nächsten gesendet. Zu diesem Zweck wird die eindeutige Adresse genutzt.
Aufgrund der Widrigkeiten von Netzwerken zeichnet sich die Kommunikation zwischen den Knoten durch folgende Merkmale aus:
Es wird nicht garantiert, dass Nachrichten die Zieladressen erreichen, sie können auch verloren gehen.
Nachrichten können mehrfach eintreffen.
Nachrichten müssen nicht unbedingt in der Reihenfolge ihres Versands eintreffen.
Die Blockchain begegnet den Widrigkeiten der Kommunikation über ein unzuverlässiges Netzwerk wie folgt:
Nachrichten werden im Tratschstil übermittelt. Jeder Knoten, der neue Informationen empfängt, leitet diese an die Peers, mit denen er kommuniziert, weiter. Diese behandeln die eingehenden Nachrichten dann auf dieselbe Weise.
Duplikate von Transaktionen oder Blöcken werden anhand ihrer kryptographischen Hashwerte identifiziert und herausgefiltert.
Weil Transaktionsdaten und Block-Header Zeitstempel enthalten, kann jeder Knoten die empfangenen Informationen sortieren.
Die Kommunikation zwischen den Computern, aus denen das Peer-to-Peer-System besteht, dient den folgenden drei Zwecken:
Aufrechterhalten bestehender Verbindungen
Herstellen neuer Verbindungen
Verteilen neuer Informationen
Das Weitergeben von das Eigentum betreffenden Informationen erfolgt in drei Fällen:
Fortlaufend durch Weiterleiten neuer Transaktionsdaten und neuer Blöcke an alle Knoten, die mit dem System verbunden sind
Als Aktualisierung für Knoten, die sich nach einer vorübergehenden Trennung wieder mit dem System verbinden
Beim Beitritt, indem eine Kopie der gesamten, aktuellen Version der Blockchain-Datenstruktur an die neuen Knoten übertragen wird, damit diese nach dem Beitritt zum System vollwertige Knoten werden
[1] Tanenbaum, Andrew S. und Van Steen, Maarten. Verteilte Systeme: Prinzipien und Paradigmen, 2. Auflage: Pearson Studium, 2007; Tanenbaum, Andrew S. und Wetherall, David J. Computernetzwerke, 5. Auflage: Pearson Studium, 2012.