Blockchain (Bitcoin) als Datenbank?

16

Ich habe diesen BBC News Artikel gelesen und der folgende Auszug hat meine Aufmerksamkeit erregt. Es klingt wie Always On Availability Groups oder High Availability Mirroring, möglicherweise mit automatisch eingeschlossener Sicherheit.

Ist Blockchain eine potenziell realisierbare Datenbanklösung für moderne Anwendungen mit hohem Transaktionsvolumen?

Es ist ziemlich leicht zu erkennen, wie wertvoll Transaktionen mit geringem Volumen sind, wie zum Beispiel persönliche Krankenakten, aber was ist mit Datenbanken mit hohem Volumen?

Was ist eine Blockchain?

Blockchains basieren auf Kryptografie, damit mehrere Computer Änderungen an einem globalen Datensatz vornehmen können, ohne dass ein zentraler Akteur erforderlich ist.

Das Entfernen des Mittelsmanns senkt die Kosten in fast allen Bereichen.

Die Blockchain ist ein Hauptbuch, das alles, was mit einer Sammlung von Daten geschieht, die als "Block" bezeichnet werden, in einer chronologischen Reihenfolge oder "Kette" aufzeichnet.

Als Währung ist dies eine wichtige Funktion, da die Benutzer sicher sein können, dass ihr digitales Geld einzigartig ist. So ist jede Banknote in Ihrem Portemonnaie ein Unikat.

"Mit der Blockchain-Technologie können wir Assets erstellen, da Sie digitale Informationen ohne Kopieren übertragen können", sagt Adam Ludwin, Geschäftsführer von Chain.com, das Blockchain-Netzwerke aufbaut.

Blockchain kann verwendet werden, um den Verlauf aller Arten von Informationen zu verfolgen und deren Wert zu erhalten, sodass Ärzte beispielsweise medizinische Aufzeichnungen aktualisieren können.

Da jede Änderung an einer Blockchain gleichzeitig im gesamten Netzwerk vorgenommen wird, gehen keine Informationen verloren und das System behält seine Transparenz bei, da Änderungen nicht rückgängig gemacht werden können. Ein spezieller Schlüssel ist erforderlich, um Änderungen an jedem Block vorzunehmen, damit Einzelpersonen ihre Aufzeichnungen schützen können, indem sie diesen Schlüssel schützen.

James Jenkins
quelle

Antworten:

15

Ist Blockchain eine potenziell realisierbare Datenbanklösung für moderne Anwendungen mit hohem Transaktionsvolumen ?

Die Blockchain-Technologie weist im Allgemeinen einige Merkmale auf, die es schwierig machen, mit hohen Volumina zu arbeiten.

Schauen Sie sich zum Beispiel Bitcoin an. Die durchschnittlichen Transaktionen pro Tag betrugen nie mehr als 300.000: Transaktionen pro Tag (Quelle blockchain.info)

Bildbeschreibung hier eingeben

Noch wichtiger ist, dass die mittlere Bestätigungszeit für eine Transaktion ungefähr 8 Minuten beträgt !: Mittlere Transaktionsbestätigungszeit (nur mit Gebühr) und ein schönes Bild von Quandl :

Bildbeschreibung hier eingeben

Wie viele Computer auf der ganzen Welt sind nun für die Speicherung der Bitcoin-Datenbank verantwortlich? Ich bin kein Experte für Bitcoin, aber ich denke, dass die gesamte Transaktionshistorie in der Blockkette gespeichert ist. Daher behalten alle Computer, die am Bitcoin-Netzwerk teilnehmen, im Wesentlichen eine Kopie der gesamten Datenbank (die Transaktionen natürlich, nicht die Kontoinformationen) und geheime Schlüssel, die in der persönlichen Brieftasche aufbewahrt werden).

Wir können nur schätzen, wie viele es sind, aber ich würde vermuten, dass es mehr als eine Million sind. 300.000 Transaktionen an einem Tag mit einer Million Computern klingen nicht nach hohem Volumen. Und 8 Minuten zur Bestätigung?

Ein modernes RDBMS in einer anständigen Hardware kann problemlos bis zu 1K-Transaktionen pro Sekunde ausführen. Das sind ungefähr 86 Millionen Transaktionen pro Tag. Die Bestätigungszeit? Dies hängt von der Größe der Transaktion ab (wie viele Tabellen und Zeilen es betrifft), aber für eine kleine Transaktion vom Typ Bitcoin (42 Münzen von Konto A entfernen und 42 Münzen zu Konto B hinzufügen) sind es Millisekunden.

Zusammenfassend ist der Unterschied in Volumen und Zeit heute 1000- bis 100000-fach.

Wenn die Blockchain-Technologie dieses Problem in Zukunft löst, kann sie möglicherweise in Anwendungen mit mittlerem oder hohem Volumen verwendet werden. Wir können Diskussionen und Vorschläge lesen, wie das Problem gelöst werden sollte - viele der in den Links genannten Unternehmen arbeiten tatsächlich an diesen Problemen -, aber wir haben noch keine funktionierende Lösung oder ein Produkt mit hohem Volumen und hoher Geschwindigkeit gesehen.

ypercubeᵀᴹ
quelle
Ein weiteres Problem, das ich mit der Blockchain habe, ist, dass sie verdammt inkonsistent ist. Es ist alles unter Last und der Client, der die Transaktionen verarbeitet, ist nicht "dediziert", sodass ein Haufen herausfallen oder hinzugefügt werden kann. 8 Minuten klingen ungefähr richtig, vielleicht waren die letzten 10 Minuten ein oder zwei zusätzliche Minuten, damit die Genehmigung alle Kunden erreicht? Ich bin mir nicht sicher, wer weiß, mit mehr Knoten ist es vielleicht ausgefallen! So oder so tolle Links. Vielen Dank.
Ali Razeghi
2
In diesem Artikel unter technologyreview.com/s/540921/… wird eine konzeptionelle Beschränkung von sieben Transaktionen pro Sekunde angegeben.
a_horse_with_no_name
@a_horse_with_no_name-Seitenketten können problemlos ohne harte Grenzen skaliert werden und müssen noch mit der Bitcoin-Blockchain synchronisiert werden, die transparent gehandhabt werden kann.
Jangorecki
16

Ich bin sehr vertraut mit Kryptowährung und Datenbanken, und ich kann Ihnen sagen, dass es überhaupt keine großartige DB-Engine ist.

Verwenden der Blockchain als Live-Datenbank:

Betrachten Sie es als eine erste normalisierte Form ohne wirklich gute eingebaute Suchfunktion oder Indizierung, was die Blockchain angeht. Grundsätzlich ein Excel-Arbeitsblatt ohne Rechenfunktionen, das Ihnen nur Lese- / Schreibfunktionen mit vielen Überprüfungs- und Validierungsfunktionen bietet. Eine Blockchain ist eine großartige Möglichkeit, um zu überprüfen, ob Ihre Daten bereinigt und korrekt sind, bevor Sie sie in eine Datenbank stellen, mit der Sie sie anders abfragen, indizieren usw.

Vorteile der Blockchain:

Die Blockchain ist in diesem Fall lediglich ein Ledger und eine API für PUT- und GET-Anforderungen. Das ist alles. Die Blockchain ist interessant, da Sie eine Mehrheit von Knoten benötigen, um die Transaktion als gültig zu übergeben, und es gibt keine Rollbacks, sobald sie festgeschrieben ist, ist sie festgeschrieben. Wenn also jemand versucht, eine gefälschte Transaktion zu tätigen, wird sie abgefangen, es sei denn, die Person, die sie durchführt, verfügt über einen Pool mit einer starken Mehrheitsbeteiligung. Dann können sie es in ihrem Pool validieren, bevor jemand es ablehnen kann. Das ist die Stärke der Blockchain. Überprüfung der Richtigkeit der Daten. Es ist auch normalerweise ziemlich langsam. Bei normaler Belastung dauert es ungefähr 10 Minuten, bis die Validierung abgeschlossen ist. Bei starker Belastung steigt die Zeit deutlich an.

Nachdem Sie mithilfe der Blockchain überprüft haben, dass die Transaktionen gültig und nicht betrügerisch sind, können Sie diese Daten in eine Datenbank importieren und damit arbeiten, wie Sie möchten. Ich habe einige Erfahrungen damit, aber beachte, dass jede einzelne Transaktion auf der aktuellen Bitcoin-Architektur aufgezeichnet wird und daher einige interessante Informationen zu analysieren sind.

Abfragen von Daten aus dem Blockchain-Schema in einem DBMS:

Hier ist das Bitcoin-Diagramm, mit dem Sie das Schema in PostgreSQL erstellen können. Mit diesem können Sie es dann in ein relationales DBMS stellen: https://bitcointalk.org/index.php?topic=38246 Bildbeschreibung hier eingeben

Dieses Code-Repo ist auch hilfreich, wenn Sie die Daten in ein echtes RDBMS importieren möchten: https://github.com/bitcoin-abe/bitcoin-abe

Was für ein DBMS Sie verwenden sollten, hängt von Ihrem Anwendungsfall ab. Wenn Sie die Transaktionen / Brieftaschen-IDs analysieren möchten, um einige Muster zu sehen, oder BI-Arbeit leisten möchten, würde ich eine relationale Datenbank empfehlen. Wenn Sie eine Live-Aufnahme mit mehreren Kryptocoins einrichten möchten, würde ich etwas empfehlen, das das Transaktionsprotokoll nicht benötigt, sodass eine MongoDB-Lösung gut wäre. Ich denke nicht, dass Sie sich um Elastic Search Sorgen machen müssen, es sei denn, Sie möchten alle Cryptocoins gleichzeitig live aufzeichnen und es für den automatischen Handel oder etwas ähnlich Verrücktes verwenden. :)

Ali Razeghi
quelle
8

2014 haben wir ascribe.io mit der Prämisse erstellt, Bitcoin als Datenbank für Patentansprüche zu verwenden. Bei der Veröffentlichung haben wir das Netzwerk gestoppt, da es den Durchsatz nicht bewältigen konnte, die Latenz mindestens 10 Minuten betrug und wir durch das, was wir in OP_RETURN ablegen konnten, eingeschränkt waren. Dies zwang uns, die eigentliche digitale Datei in Bezug auf den Anspruch in Amazon S3 zu speichern . Wir haben festgestellt, dass Bitcoin in seiner jetzigen Form niemals eine hohe Transaktionsdatenbank sein kann.

Aber die Idee, ob wir eine Datenbank im Blockchain-Stil haben könnten - dezentrale Steuerung, Unveränderlichkeit (Manipulationssicherheit) und Live-Assets im Netzwerk - blieb uns erhalten. Mitte 2014 begannen wir mit der Arbeit an BigchainDB

Kurz gesagt: Wir können 100.000 tps mit einer Latenz von 100 ms verarbeiten und haben eine Kapazität von Petabytes. Der Code ist unser BigchainDB Github, die technische Dokumentation hier und das grundlegende Denken in unserem Whitepaper .

Wenn Sie einen Anwendungsfall für eine hochtransaktionsfähige, dezentrale Datenbank haben, haben wir BigchainDB genau dafür erstellt.

Bruce Pon
quelle
2

Von Bitcoin abgeleitete Blockchain ist langsam und teuer; Die Datenmenge, die in einem Block gespeichert werden kann, ist sehr gering. Die Mechanismen hinter Blockchains (Distribute Ledgers) sollen einen unbestechlichen, stark replizierten Datenspeicher bereitstellen. Peer-to-Peer ist weniger ein wesentliches Merkmal als eine "politische Anforderung", um das Auftreten einer zentralen Kontrolle zu vermeiden. Ich arbeite seit 18 Monaten daran, ein hochleistungsfähiges verteiltes Hauptbuch zu erstellen (eine Instanz finden Sie unter metrognomo.com), das Bitcoin so wenig wie möglich kostet. Letztendlich ähnelt ein verteiltes Hauptbuch einer sequentiellen Datei, die hinzugefügt, aber nach dem Hinzufügen nicht mehr bearbeitet werden kann. Dies ist für einige Anwendungen eine wertvolle Sache, aber nicht das, was die meisten Leute als Datenbank betrachten.

London
quelle