Daten in einer Blockchain speichern.
Ein Thema, was wir aus Gesprächen mit unseren Kunden erfahren, ist die Sicherheit Ihrer Daten und in diesem Zusammenhang immer wieder die Frage nach der Blockchain-Technologie.
Lassen Sie uns daher ein Paar wesentliche Dinge erläutern.
Warum sollten Sie Daten in der Blockchain speichern wollen?
Die erste Frage, die Sie sich stellen müssen, lautet: "Warum wollen Sie eine Blockchain verwenden?"
Wenn Sie die Antwort momentan nicht kennen, benötigen Sie keine Blockchain. Inzwischen lassen Sie sich nicht vom Hype, der von einigen Leuten darum veranstaltet wird, verwirren!
Warum bin ich so direkt dabei? Nun, lassen Sie es mich so sagen. Blockchain ist Mist! - außer in Fällen, bei denen 2, 3 Rahmenbedingungen zutreffen.
Die Blockchaintechnologie ist langsam, komplex, teuer und schwer zu bearbeiten.
Blockchain zu wählen, weil es hip und trendy ist, ist wie der Versuch mit einem Panzer ein Rennen zu gewinnen. Es mag beeindruckend aussehen und Sie sind kugelsicher, aber schließlich verlieren Sie das Rennen sehr schnell.
Wo Blockchain wirklich sinnvoll ist
Sie sollten Blockchain nur verwenden, wenn ein oder mehrere Punkte für Ihren Anwendungsfall zutreffen:
- Manipulationsnachweis
Sie möchten feststellen können, wann sich ein Datensatz geändert hat. Sie benötigen den Nachweis, dass / wann es (nicht) geändert wurde.
- Dezentralisierung
Sie möchten keiner zentralen Institution ihre Daten anvertrauen. Stattdessen möchten Sie dem Netzwerk die Kontrolle über die Daten übertragen, da Sie den zentralen beteiligten Parteien nicht vertrauen können.
- Transparenz
Sie möchten, dass Ihre Daten für alle sichtbar sind, um Vertrauen aufzubauen.
Sie sollten also immer das richtige Werkzeug für den jeweiligen Job wählen.
Verwenden von Transaktionen zum Speichern von Daten in der Blockchain
Blockchains, insbesondere solche, die einen Zahlungsnachweis hosten sollen, verwenden ein Transaktionsmodell.
"A sendet Geld an B" ist zum Beispiel eine Transaktion. Diese Transaktion enthält die Adresse des Absenders (A), die Adresse des Empfängers (B) und den überwiesenen Geldbetrag. Dieser Ansatz ist sehr intuitiv, wenn es um Geldtransaktionen geht, aber wie um alles in der Welt sollen wir Daten mit diesem Konzept speichern?
Um unsere benutzerdefinierten Daten in der Blockchain zu speichern, müssen wir unsere Daten in Transaktionen packen, um sie speichern zu können.
Verwenden eines Protokolls
Einige Blockchains bieten die Möglichkeit, Daten an eine Transaktion innerhalb ihrer Protokolle anzuhängen. In diesem Fall können wir unsere Daten einfach an unsere Transaktion anhängen. Wenn das nicht der Fall ist, müssen wir etwas kreativer werden.
Einige Blockchains verfügen nicht über diese Funktion. In diesem Fall können wir mithilfe von Adressen immer noch eine kleine Datenmenge in der Kette speichern.
Um einige Daten zu speichern, verschlüsseln wir sie einfach (falls erforderlich) und verwenden sie als Adresse, an die eine Transaktion gesendet werden soll. Auf diese Weise werden die Daten in der Blockchain gespeichert. Anstatt ein Nutzdatenfeld innerhalb der Transaktion zu verwenden, werden die Daten in die Empfangsadresse codiert.
Der Nachteil dieser Technik ist, dass die Datenmenge nicht größer sein kann als die Adressgröße der Blockchains (und die ist winzig). Außerdem müssen wir nicht nur die Transaktionsgebühr bezahlen, sondern auch ein bisschen Geld verbrennen.
Das heißt, weil wir nicht die Adresse besitzen, an die wir die Transaktion senden, geht das Geld, das wir überweisen, verloren.
Warum ist das Speichern von Daten in der Kette ein Problem?
Das größte Problem beim Speichern von Daten in einer Blockchain ist die Datenmenge, die Sie speichern können. Dies liegt entweder daran, dass der Betrag durch das Protokoll begrenzt ist, oder an den enormen Transaktionsgebühren, die Sie zahlen müssten.
Die Kosten für die Speicherung von Daten
Warum ist das Speichern von Daten in der Kette so teuer? Weil die Datenmenge, die Sie speichern, von jedem vollständigen Knoten auf diesem Planeten gespeichert werden muss. Jeder, der die Blockchain herunterlädt, lädt auch Ihre Daten herunter.
Dies ist der Grund, warum selbst das Speichern von einem Kilobyte Sie ein kleines Vermögen kosten kann.
Beim Speichern von Daten in der Blockchain zahlen wir meistens einen Grundpreis für die Transaktion selbst plus einen Betrag pro Byte, den wir speichern möchten. Wenn es sich um intelligente Verträge handelt, zahlen wir auch für die Ausführungszeit des intelligenten Vertrags.
Wie viele Daten können in einer Blockchain gespeichert werden?
Trotzdem ist die Datenmenge, die wir speichern können, sehr begrenzt. Um Ihnen ein Gefühl zu geben, erlauben die meisten Ketten etwas im Bereich von einem Kilobyte oder weniger.
Theoretisch könnten wir diese Einschränkung umgehen, indem wir unsere Daten in viele kleine Teile aufteilen. Dies würde es uns ermöglichen, größere Dateien / Daten zu speichern, würde aber auch unsere Kosten erheblich erhöhen. Dies liegt daran, dass wir den (großen) Grundpreis der Transaktion mehrmals zahlen müssten.
Schließlich ist die Datenmenge, die wir speichern können, recht begrenzt.
Speichern sensibler Informationen in der Blockchain
Ein weiteres Problem beim Speichern von Daten in der Blockchain tritt auf, wenn wir persönliche oder vertrauliche Daten speichern möchten.
Eigentlich gibt es hier zwei Probleme:
- Wenn wir eine öffentliche Blockchain wie Ethereum wählen würden, wären die von uns gespeicherten Daten für alle verfügbar. Dies liegt daran, dass in einem Blockchain-Netzwerk (fast) jeder Teilnehmer eine Kopie der gesamten Kette hat. Aber selbst wenn Sie sich entschließen würden, eine eigene private Kette aufzubauen, würde jeder Teilnehmer eine Kopie erhalten. Der Unterschied besteht darin, dass wir die Kontrolle darüber haben, wer dem Netzwerk beitritt und eine Kopie erhält.
- Die meisten persönlichen oder vertraulichen Informationen müssen irgendwann gelöscht werden. Besonders angesichts der neuen DSGVO. Leider ist das Löschen von Daten aus der Kette nicht beabsichtigt.
Eine Lösung für dieses Problem könnte die Verschlüsselung der Daten sein. Der Nachteil dieses Ansatzes ist, dass wir uns jetzt mit Verschlüsselten Daten (die woanders gespeichert werden müssen) und deren Verteilung befassen müssen.
Eine andere Lösung könnte darin bestehen, Hashes der Daten anstelle der Daten selbst zu speichern. Wir werden diesen Ansatz in einem späteren Kapitel genauer diskutieren.
Wo sind meine Daten geblieben? Abfragen von Daten aus der Blockchain
Nun gut. Trotz der oben beschriebenen Probleme haben wir es irgendwie geschafft, unsere Daten in die Blockchain zu bekommen ...
Wie bekommen wir die Daten zurück, falls wir sie brauchen?
Eine Blockchain ist kein SQL Server, auf dem wir unsere Daten abfragen können.
Tatsächlich erlauben die meisten Blockchains das Herunterladen von Transaktionen nur anhand ihrer ID (Hash).
Wie lösen wir all diese Probleme?
So speichern Sie große Datensätze in der Blockchain
Wenn das Speichern von Daten in der Blockchain so viele Nachteile mit sich bringt, ist es dann überhaupt sinnvoll, etwas in der Blockchain zu speichern?
Ja, ist es!
Es stellt sich heraus, dass es viele Möglichkeiten gibt, Daten in der Blockchain zu speichern. Das Speichern der Rohdaten ist eine davon.
Aber was sind die anderen Optionen?
Speichern von Hashes in der Blockchain
Eine Möglichkeit, die Vorteile einer Blockchain zu nutzen, ohne ein Vermögen für Transaktionen zu zahlen, besteht darin, nur den Hash der Daten in der Blockchain zu speichern.
Was ist ein Hash? Ein Hash ist eine generierte Zeichenfolge, die unter Verwendung unserer eingegebenen Daten berechnet wird. Bei gleicher Eingabe ist der Ausgabe-Hash immer der gleiche. Andere Eingaben führen zu einem anderen Hash.
Auf diese Weise können wir anhand des Hashs feststellen, ob unsere Daten geändert wurden.
Verwenden traditioneller Speichermechanismen Das einzige, was wir in der Blockchain speichern, ist der Hash unserer Daten. Im Vergleich zu unseren Daten ist der Hash sehr klein, sodass die Kosten einer Transaktion relativ niedrig sind.
Die Rohdaten können beliebig gespeichert werden. Zum Beispiel könnten wir eine relationale Datenbank oder nur ein Dateisystem verwenden.
Wir müssen lediglich sicherstellen, dass wir unseren Rohdaten die ID (den Hash) der Blockchain-Transaktion zuweisen. In einer relationalen Datenbank würden wir eine weitere Spalte hinzufügen, um die Transaktions-ID zu speichern.
Auf diese Weise können wir die Vorteile herkömmlicher Speichermechanismen (wie Abfragen) nutzen und gleichzeitig den Manipulationsnachweis der Blockchain erhalten.
Jedes Mal, wenn Zweifel an den Daten bestehen, können wir die Rohdaten hashen und mit dem Hash in der zugewiesenen Transaktion in der Blockchain vergleichen.
Abhängig von Ihrem Speichermechanismus gehen Vorteile wie Dezentralisierung und Transparenz verloren.
Speichern einer Teilmenge der Daten in der Blockchain
Wir können diese Vorteile bis zu einem gewissen Grad zurückgewinnen, indem wir den Hash der Daten und Teile der Daten in der Blockchain speichern.
Abhängig von den Teilen der Daten erhalten wir etwas Transparenz zurück, da die Daten jetzt wieder öffentlich zugänglich sind.
Außerdem wird die Teilmenge der Daten dezentral gespeichert, anstatt in einer zentralen Datenbank gespeichert zu werden.
Optionen zum Speichern von Daten außerhalb der Kette
Wie wir bereits festgestellt haben, ist es wahrscheinlich eine gute Idee, einen Off-Chain-Mechanismus zum Speichern großer Datenmengen zu verwenden.
Wie immer gibt es viele Möglichkeiten zur Auswahl. Einige sind völlig altmodisch und andere wurden in den letzten Jahren entwickelt, um insbesondere mit Blockchain zu arbeiten.
Traditionelle Datenbank
Beginnen wir mit der offensichtlichen Wahl. Eine traditionelle Datenbank wie MySQL oder sogar eine etwas modernere MongoDB.
Vorteile
- Starke Abfragefähigkeiten
- Günstiger Speicher für große Datenmengen
Nachteile
- Die Möglichkeit der Nichterreichbarkeit
- Kontrolliert von einer zentralen Institution
- Fehlende Transparenz
Verteilte Datenbank
In einer verteilten Datenbank werden die Daten über viele Knoten an vielen Standorten repliziert. Dies führt zu einer Redundanz im Falle eines Ausfalls einer einzelnen Maschine. Es kann auch die Latenz für weltweite Anwendungen reduzieren. Beispiele könnten MongoDB mit aktivierten Replikatsätzen oder Cloud-Lösungen wie Azure CosmosDB sein.
Vorteile
- genügend starke Abfragefähigkeiten
- Günstiger Speicher für große Datenmengen im Vergleich zur Blockchain
- Redundanz der Daten
Nachteile
- Kontrolliert von einer zentralen Institution
- Fehlende Transparenz
- Verteiltes Dateisystem
Verteilte Dateisysteme speichern ihre Dateien auch auf vielen Computern. Dies dient wiederum dazu, im Falle eines Fehlers Redundanz zu schaffen. Der Unterschied zu verteilten Datenbanken besteht darin, dass ein Dateisystem nicht über die starken Abfragefunktionen verfügt. Stattdessen kann nur auf Dateien zugegriffen werden, wenn der Name / Pfad der Datei bekannt ist.
Einige verteilte Dateisysteme wie IPFS (Inter-Planetary File System) sind auch als Gemeinschaftsanstrengung gedacht. Genau wie bei Blockchain gibt es ein öffentliches Netzwerk, in dem jeder seine Dateien speichern kann. Der Unterschied besteht darin, dass nicht jeder eine Kopie der Daten speichern muss. Eine Redundanz von x Kopien wird als ausreichend angesehen.
Vorteile
- Speicher für große Datenmengen im Vergleich zur Blockchain
- Redundanz der Daten
- Transparenz
- Dezentral
Nachteile
Fazit
In diesem Kapitel haben wir einen Überblick über die Probleme und Lösungen zum Speichern (großer Datenmengen) in der Blockchain erhalten.
Ich hoffe, Sie haben jetzt ein Gefühl für die Situation und die möglichen Richtungen. Schließlich liegt es an Ihnen, die richtige Lösung für Ihren speziellen Anwendungsfall zu wählen.
(Aus dem englischen von Lukas Marks, https://malcoded.com/posts/storing-data-blockchain/)