-
Die vorliegende Erfindung betrifft das Gebiet der verteilten Datenbanksysteme und spezieller eine Einrichtung und ein Verfahren zum Ermitteln einer Konsensversion eines Transaktionsbuchs und eine Einrichtung und ein Verfahren zum Überwachen eines verteilten Datenbanksystems.
-
In einem, etwa mit Blockketten-Technologie implementierten, verteilten Datenbanksystem können Transaktionen ohne Clearing-Stelle oder besonderes Vertrauensverhältnis zwischen den Transaktionspartnern basierend auf einem Konsens zwischen den Transaktionspartnern transparent und manipulationsgeschützt realisiert werden. Ein Transaktionsdatensatz kann hierbei Programmcode umfassen oder referenzieren, der beim Bestätigen der Transaktion in dem verteilten Datenbanksystem zur Ausführung kommt (sog. "Smart Contract"). Ein derartiges transparentes und manipulationsgeschütztes verteiltes Datenbanksystem eignet sich als IT-Infrastrukturplattform zur Steuerung eines kritischen industriellen Automatisierungssystems und dergleichen.
-
Mit zunehmender Komplexität der Smart Contracts steigt die zum Bestätigen und Übernehmen einer Transaktion in ein Transaktionsbuch des verteilten Datenbanksystems aufzubringende Rechenleistung. Bei herkömmlichen verteilten Datenbanksystemen kann daraus das Problem entstehen, dass hochwertige, wie beispielsweise besonders komplexe, Transaktionen nicht oder nur verspätet bestätigt werden und/oder ein Transaktionsdurchsatz sinkt.
-
Ferner kann, wenn kein Proof-of-Work zum Einsatz kommt oder der Rechenaufwand für das Prüfen bestimmter Transaktionen beim Bilden von Blöcken in der gleichen oder einer höheren
-
Größenordnung liegt als die Schwierigkeit des Erbringens eines Proof-of-Work, ein böswilliger Knoten unter Auslassen komplexer Transaktionen schneller Blöcke bilden als ein Knoten, der alle Transaktionen berücksichtigt. So besteht ein Risiko, dass der böswillige Knoten den Mehrheitskonsens des verteilten Datenbanksystems beeinflussen oder dominieren kann.
-
Vor diesem Hintergrund besteht eine Aufgabe der vorliegenden Erfindung darin, ein verbessertes verteiltes Datenbanksystem zu ermöglichen.
-
Demgemäß wird eine Einrichtung zum Ermitteln einer Konsensversion eines Transaktionsbuchs eines verteilten Datenbanksystems unter einer Anzahl Pfade aus verketteten Blöcken vorgeschlagen. Die Einrichtung umfasst eine erste Einheit zum Erhalten einer Anzahl Pfade, wobei ein jeweiliger Pfad eine Anzahl verketteter Blöcke umfasst; eine zweite Einheit zum Bestimmen einer Blockgüte des jeweiligen Blocks des jeweiligen Pfads; eine dritte Einheit zum Bestimmen einer Pfadgüte des jeweiligen Pfads in Abhängigkeit der Blockgüten der Anzahl verketteter Blöcke des Pfads; und eine vierte Einheit zum Ermitteln, aus der Anzahl Pfade, desjenigen Pfads mit der höchsten Pfadgüte und Bereitstellen des ermittelten Pfads als die Konsensversion des Transaktionsbuchs des verteilten Datenbanksystems.
-
Insbesondere kann das verteilte Datenbanksystem aus einer Anzahl Knoteneinrichtungen gebildet sein. Ein Transaktionsbuch des verteilten Datenbanksystems kann als Kette oder Pfad von bestätigten Blöcken repräsentiert werden. Die Verkettung kann mittels Verkettungsprüfsummen gebildet sein. Eine jeweilige der Anzahl Knoteneinrichtungen kann eine Kette von bestätigten Blöcken speichern, die eine Konsensversion des Transaktionsbuchs repräsentiert. Insbesondere kann das verteilte Datenbanksystem ein Blockketten-Netzwerk bzw. eine Blockchain sein.
-
Insbesondere umfasst ein jeweiliger Block eine Anzahl Transaktionen.
-
Eine Anzahl der Knoteneinrichtungen kann eine jeweilige blockbildende Knoteneinrichtung sein, welche aus in dem verteilten Datenbanksystem bereitgestellten unbestätigten Transaktionen unbestätigte Blöcke bildet und den übrigen Knoteneinrichtungen in dem verteilten Datenbanksystem bereitstellt. Das Bereitstellen kann jeweils durch direkte, indirekte oder Peer-to-Peer-Übermittlung erfolgen. Aufgrund von zeitlichen Konkurrenzen und/oder Verzögerungen beim Bereitstellen kann eine Situation entstehen, in der eine der Knoteneinrichtungen aus den ihr von der Anzahl blockbildenden Knoteneinrichtungen bereitgestellten unbestätigten Blöcken mehr als einen Pfad aus verketteten Blöcken bilden kann. Anders ausgedrückt kann eine Kette aus verketten Blöcken, die in der Knoteneinrichtung gespeichert ist, in mehrere Pfade verzweigt sein.
-
Eine jeweilige vorgeschlagene Einrichtung zum Ermitteln einer Konsensversion des Transaktionsbuchs (im Weiteren auch "Pfadermittlungseinrichtung") kann insbesondere einer jeweiligen der Knoteneinrichtungen zugeordnet und insbesondere ein Teil davon sein. Mittels der ihr zugeordneten vorgeschlagenen Pfadermittlungseinrichtung kann die jeweilige Knoteneinrichtung ermitteln, welcher der mehreren Pfade aus verketteten Blöcken diejenige Kette ist, die die Konsensversion des Transaktionsbuchs des verteilten Datenbanksystems repräsentieren soll. Eine derartige Verwendung der vorgeschlagenen Pfadermittlungseinrichtung kann Teil einer Konsensregel bzw. eines Konsensverfahrens des verteilten Datenbanksystems sein.
-
Bei der vorgeschlagenen Pfadermittlungseinrichtung wird vorteilhafterweise nicht notwendigerweise der längste Pfad, sondern der Pfad mit der höchsten Pfadgüte als die Konsensversion des Transaktionsbuchs ermittelt.
-
Eine Pfadgüte kann hierbei als Maß für die Blockgüten der von dem Pfad umfassten Blöcke aufgefasst werden. Eine Blockgüte kann als ein Maß für die Qualität des Blocks und/oder als Maß für den zum Bilden des Blocks von einer blockbildenden Knoteneinrichtung aufgebrachten Aufwand betrachtet werden.
-
Vorteilhafterweise kann somit verhindert werden, dass böswillige blockbildende Knoteneinrichtungen mit vergleichsweise geringem Aufwand eine große Anzahl Blöcke minderer Güte bilden und dadurch den Mehrheitskonsens des verteilten Datenbanksystems beeinflussen bzw. dominieren. Somit kann die Manipulationssicherheit des verteilten Datenbanksystems erhöht werden.
-
Insbesondere können Pfade, die durch Hinzufügen eines Blocks minderer Güte gebildet werden, nicht als Konsensversion in Betracht kommen; somit können bevorzugt Blöcke höherer Güte in das Transaktionsbuch aufgenommen werden, während Blöcke minderer Güte vom Konsens ausgeschlossen sein können.
-
Somit kann vorteilhaft ein Anreiz für die blockbildenden Knoteneinrichtungen geschaffen werden, Blöcke hoher Güte zu bilden. Dadurch kann ein hoher Transaktionsdurchsatz auch für hochwertige bzw. komplexe Transaktionen stabil gewährleistet werden. Der Betrieb des verteilten Datenbanksystems kann verbessert werden.
-
Eine "Anzahl" bedeutet vorliegend eine Anzahl von eins oder mehr.
-
"Erhalten" bedeutet vorliegend insbesondere, dass die Pfadermittlungseinrichtung in einer Weise Lesezugriff auf die Anzahl Pfade erhält, dass die weiteren Funktionen der vorgeschlagenen Pfadermittlungseinrichtung durchführbar werden. Sofern die Pfadermittlungseinrichtung Teil einer Knoteneinrichtung des verteilten Datenbanksystems ist, kann sie insbesondere die Anzahl Pfade aus einer Speichereinheit der Knoteneinrichtung einlesen. Ist die Pfadermittlungseinrichtung extern zu der Knoteneinrichtung bereitgestellt, kann sie die Anzahl Pfade über eine Netzwerkübermittlung oder dergleichen von dieser empfangen.
-
Entsprechend bedeutet "Bereitstellen" vorliegend insbesondere, dass die Pfadermittlungseinrichtung den ermittelten Pfad, der die Konsensversion des Transaktionsbuchs des verteilten Datenbanksystems repräsentiert (im weiteren auch "Konsenspfad"), an die ihr zugeordnete Knoteneinrichtung übermittelt, beispielsweise durch Schreiben in einen Speicherbereich, Übertragen per Netzwerk oder dergleichen.
-
"Transaktion" bezeichnet vorliegend insbesondere eine als eine Einheit in dem verteilten Datenbanksystem speicher- bzw. bestätigbare Menge an Informationen. Eine Transaktion kann derart aufgefasst werden, dass die von der Transaktion umfassten Daten einen von dem Transaktionsbuch des verteilten Datenbanksystems beschriebenen Zustand in einen neuen gültigen Zustand überführen. Eine Transaktion kann insbesondere Programmcode - einen so genannten Smart Contract - umfassen oder referenzieren, der die Abwicklung der Transaktion regelt und beim Bestätigen der Transaktion zur Ausführung kommen kann. Unter "Bestätigen einer Transaktion" kann das Einfügen der Transaktion in das verteilte Datenbanksystem bzw. dessen Transaktionsbuch verstanden werden.
-
"Block" bezeichnet vorliegend insbesondere einen gemäß einer Konsensregel des verteilten Datenbanksystems gebildeten Datenblock. Ein jeweiliger Block kann neben der Anzahl von Transaktionen weiterhin insbesondere umfassen: eine Anzahl von kryptographischen Transaktionsprüfsummen, die eine jeweilige Transaktion gegen Manipulationen schützen kann, und/oder eine einzelne Datenblockprüfsumme, die die gesamte Anzahl von Transaktionen gegen Manipulationen schützen kann; eine kryptographische Verkettungsprüfsumme, die eine Prüfsumme eines vorangehenden Blocks in einem jeweiligen Pfad von Blöcken darstellt und somit den vorangehenden Abschnitt des Pfads vor Manipulationen schützten kann; sowie einen Nachweiswert, der ein berechtigtes Interesse einer Knoteneinrichtung, die den Block gebildet hat, am reibungslosen Betrieb des Datenbanksystems dokumentiert, wie beispielsweise ein Proof-of-Work, ein Proof-of-Stake, eine Signatur eines Mitglieds eines Backbone aus privilegierten Knoteneinrichtungen (Permissioned Ledger) und dergleichen.
-
Unter "Bestätigen einer Transaktion" in dem Transaktionsbuch des verteilten Datenbanksystems kann insbesondere verstanden werden, dass eine Transaktion von einer blockbildenden Knoteneinrichtung in einen von dieser gebildeten unbestätigten Block aufgenommen wird, der unbestätigte Block den weiteren Knoteneinrichtungen bereitgestellt wird und eine Mehrzahl, bevorzugt alle, der weiteren Knoteneinrichtungen den unbestätigten Block und die darin umfasste unbestätigte Transaktion dadurch bestätigen, dass sie den unbestätigten Block an den Konsenspfad anfügen, d.h. an denjenigen Pfad von bestätigten Blöcken, der nach dem Anfügen von der jeweiligen vorgeschlagenen Pfadermittlungseinrichtung der jeweiligen Knoteneinrichtung als die Konsensversions des Transaktionsbuchs ermittelt wird.
-
Das Transaktionsbuch kann beispielsweise ein Haupttransaktionsbuch (engl. "general ledger" oder "main chain") oder ein Seitentransaktionsbuch (engl. "side ledger" oder "side chain") des verteilten Datenbanksystems sein.
-
Die Pfadgüte des jeweiligen Pfads kann beispielsweise als Summe, als Mittelwert, als Median oder dergleichen der bestimmten Blockgüte der Anzahl verketteter Blöcke des Pfads ermittelt werden. Eine Formel zum Bestimmen der Pfadgüte anhand der bestimmten Blockgüten kann fest vorgegeben sein und/oder in einer Parametrisierungstransaktion in dem Transaktionsbuch des verteilten Datenbanksystems bestätigt sein.
-
Die jeweilige Einheit, zum Beispiel erste Einheit, zweite Einheit, dritte Einheit, vierte Einheit, kann hardwaretechnisch und/oder auch softwaretechnisch implementiert sein. Bei einer hardwaretechnischen Implementierung kann die jeweilige Einheit als Vorrichtung oder als Teil einer Vorrichtung, zum Beispiel als Computer oder als Mikroprozessor oder als Steuerrechner eines Fahrzeuges ausgebildet sein. Bei einer softwaretechnischen Implementierung kann die jeweilige Einheit als Computerprogrammprodukt, als eine Funktion, als eine Routine, als Teil eines Programmcodes oder als ausführbares Objekt ausgebildet sein.
-
Gemäß einer Ausführungsform ist die vierte Einheit ferner dazu eingerichtet, den ermittelten Pfad als die Konsensversion des Transaktionsbuchs des verteilten Datenbanksystems bereitzustellen, sofern die Pfadgüte des ermittelten Pfads nicht unter einer Mindestpfadgüte liegt.
-
Anders ausgedrückt kann die vierte Einheit, wenn die Pfadgüte des ermittelten Pfads unter der Mindestpfadgüte liegt, den ermittelten Pfad nicht als die Konsensversion des Transaktionsbuchs des verteilten Datenbanksystems bereitstellen, und/oder eine explizite Mitteilung darüber bereitstellen, dass keine Konsensversion des Transaktionsbuchs bereitgestellt werden konnte.
-
Tritt ein solcher Fall ein, kann insbesondere eine Knoteneinrichtung, der die vorgeschlagene Pfadermittlungseinrichtung zugeordnet ist, keinen der Pfade, die sie aus den ihr bereitgestellten unbestätigten Blöcken gebildet hat, als neue Konsensversion des Transaktionsbuchs ermitteln. Die Knoteneinrichtung kann ihren Betrieb mit einer bisherigen Konsensversion des Transaktionsbuchs fortsetzen. Die bisherige Konsensversion kann insbesondere ein Abschnitt der in der Knoteneinrichtung gespeicherten Kette von Blöcken vor der Verzweigung sein. Anders ausgedrückt kann in einem solchen Fall die Knoteneinrichtung keinen der ihr bereitgestellten unbestätigten Blöcke bestätigen. Somit kann vorteilhaft ein Bestätigen eines oder mehrerer unbestätigter Blöcke solange verzögert werden, bis es gelingt, aus den bereitgestellten unbestätigten Blöcken einen Pfad zu bilden, der mindestens die Mindestpfadgüte aufweist.
-
Denkbar ist hierbei auch ein Fall, in welchem der Pfadermittlungseinrichtung ein einzelner Pfad (eine Anzahl von eins von Pfaden) bereitgestellt wird und die vierte Einheit keine Konsensversion des Transaktionsbuchs bereitstellen kann, weil die ermittelte Pfadgüte des einzelnen Pfads unter der Mindesttransaktionsgüte liegt.
-
Beispielsweise ist denkbar, dass auch die in der Knoteneinrichtung gespeicherte Kette von Blöcken vor der Verzweigung nicht die erforderliche Mindestpfadgüte erreicht. In einem solchen Fall kann die Knoteneinrichtung, der die Pfadermittlungseinrichtung zugeordnet ist, ihren Betrieb ohne Konsensversion des Transaktionsbuchs fortsetzen. Hierbei können an die Knoteneinrichtung gerichtete Anfragen nach Inhalten des Transaktionsbuchs so lange mit einer Fehlermeldung abschlägig beschieden werden, bis es der Knoteneinrichtung erneut gelingt, einen Pfad zu bilden, der von der vierten Einheit der Pfadermittlungseinrichtung als die Konsensversion des Transaktionsbuchs bereitgestellt wird.
-
Die Mindestpfadgüte kann eine vorbestimmte Mindestpfadgüte sein. Die Mindestpfadgüte kann auch abhängig von einer Wartezeit seit einem vergangenen Ermitteln der Konsensversion des Transaktionsbuchs definiert sein, wobei insbesondere eine Beziehung zwischen der Wartezeit und der Mindestpfadgüte derart eingerichtet sein kann, dass die Mindestpfadgüte mit zunehmender Wartezeit abnimmt.
-
Gemäß einer Ausführungsform weist die vorgeschlagene Pfadermittlungseinrichtung ferner eine fünfte Einheit auf, die dazu eingerichtet ist, einen Pfad aus der Anzahl Pfade zu entfernen, wenn ein Block der Anzahl Blöcke des Pfads eine Blockgüte aufweist, die geringer als eine erste Schwelle ist, und/oder wenn eine Pfadgüte des Pfads geringer als eine zweite Schwelle ist.
-
"Entfernen" bedeutet hierbei insbesondere, dass veranlasst wird, dass der zu entfernende Pfad nicht länger als Kandidat beim Ermitteln eines Konsenspfads in Betracht kommt und somit aus dem Mehrheitskonsens ausgeschlossen wird. Beispielsweise kann die Pfadermittlungseinrichtung den zu entfernenden Pfad durch einen Schreibzugriff auf eine Speichereinheit der ihr zugeordneten Knoteneinrichtung löschen oder einen Löschbefehl per Netzwerk oder dergleichen an die ihr zugeordnete Knoteneinrichtung übermitteln.
-
Die jeweilige Schwelle kann eine vordefinierte, absolute Schwelle sein. Alternativ dazu kann die erste Schwelle ein vordefinierter Bruchteil einer durchschnittlichen Güte alle der Blöcke des Pfads und/oder alle der Blöcke der Anzahl Pfade sein, und/oder die zweite Schwelle kann ein vordefinierter Bruchteil einer durchschnittliche Pfadgüte aller der Anzahl Pfade sein.
-
Demgemäß kann vorteilhafterweise ein für den stabilen Betrieb des verteilten Datenbanksystems nachteiliger Pfad aus minderwertigen Blöcken aus dem Mehrheitskonsens des verteilten Datenbanksystems ausgeschlossen werden. Die Stabilität und Manipulationssicherheit des Betriebs des verteilten Datenbanksystems kann erhöht werden.
-
Gemäß einer weiteren Ausführungsform ist die zweite Einheit dazu eingerichtet, die Blockgüte des jeweiligen Blocks in Abhängigkeit von der Güte eines von dem Block umfassten Nachweiswerts zu bestimmen.
-
Der Nachweiswert kann insbesondere ein Proof-of-Work bzw. Arbeitsnachweis oder ein Proof-of-Stake bzw. Vorhaltenachweis sein.
-
Der Arbeitsnachweis oder Proof-of-Work kann beispielsweise ein wahlfreier Wert oder Nonce-Wert sein, der so gewählt ist, dass er eine bestimmte Anforderung erfüllt. Beispielsweise kann die Anforderung lauten, dass eine kryptographische Prüfsumme, wie etwa ein Hash-Wert, des gesamten Blocks eine vordefinierte Schwelle über- oder unterschreitet. Aufgrund einer Unumkehrbarkeitseigenschaft kryptographischer Prüfsummenfunktionen kann es schwierig und nur durch Ausprobieren möglich sein, einen derartigen Arbeitsnachweis zu erstellen. Das Vorhandensein eines solchen Arbeitsnachweises in einem Block kann aufgrund des zu seiner Erbringung notwendigen Rechenaufwands das berechtigte Interesse der Knoteneinrichtung, die den Block gebildet hat, am reibungslosen Betrieb des Datenbanksystems dokumentieren. Ein Block, der keinen gültigen Arbeitsnachweis enthält, kann verworfen und nicht in das Transaktionsbuch des verteilten Datenbanksystems aufgenommen werden.
-
Unter einer Güte des Nachweiswerts kann ein Maß dafür verstanden werden, in wieweit der Nachweiswert die an ihn gestellte Anforderung erfüllt und/oder übererfüllt. Beispielsweise kann eine Güte des Arbeitsnachweises ein Maß dafür sein, wie niedrig oder wie hoch der Hash-Wert des gesamten Blocks einschließlich des Arbeitsnachweises ist.
-
Demgemäß kann ein Block mit einem Arbeitsnachweis höherer Güte gegenüber einem Block mit einem Arbeitsnachweis minderer Güte bevorzugt werden.
-
Vorteilhaft ist diese Ausführungsform beispielsweise bei einem zeitgetakteten verteilten Datenbanksystem, in dem in vorgegebenen fixen Zeittakten ein Block erstellt werden soll, beispielsweise, um Echtzeitanforderungen zu erfüllen, und nicht unbegrenzt auf die Fertigstellung eines Arbeitsnachweises gewartet werden kann. Eine solche fixe Taktung kann dadurch realisiert werden, dass an den Arbeitsnachweis keine starre Anforderung gestellt wird, sondern vielmehr unter Verwendung der vorgeschlagenen Pfadermittlungseinrichtung bei der Konsensbildung solche Blöcke und Pfade bevorzugt werden, die einen Arbeitsnachweis von möglichst höher Güte umfassen, also beispielsweise einen möglichst niedrigen Hashwert des gesamten Blocks ergeben.
-
Analoge Überlegungen gelten für einen Vorhaltenachweis oder Proof-of-Stake. Auch hier kann die von dem blockbildenden Knoten für eine Konsensfindung über die Aufnahme des gebildeten Blocks vorzuhaltende Menge an Kryptotoken vorteilhaft flexibel anstatt mit einem fixierten Schwellwert gestaltet werden.
-
Gemäß einer weiteren Ausführungsform ist die zweite Einheit dazu eingerichtet, die Blockgüte des jeweiligen Blocks in Abhängigkeit von der Anzahl der Transaktionen des Blocks zu bestimmen.
-
Somit kann vorteilhaft ein Anreiz für blockbildende Knoteneinrichtungen des verteilten Datenbanksystems geschaffen werden, möglichst viele Transaktionen in die von ihnen gebildete Blöcke aufzunehmen. Ein Transaktionsdurchsatz des verteilten Datenbanksystems kann dadurch erhöht werden. Dies kann besonders dann vorteilhaft sein, wenn das Aufnehmen einer Transaktion in einen zu bildenden Block mit einer hohen Rechenlast zum Prüfen der Transaktion verbunden ist.
-
Gemäß einer weiteren Ausführungsform ist die zweite Einheit dazu eingerichtet, für jede der Anzahl Transaktionen des jeweiligen Blocks eine Transaktionsgüte zu bestimmen und die Blockgüte eines jeweiligen Blocks in Abhängigkeit von den bestimmten Transaktionsgüten der Anzahl Transaktionen des Blocks zu bestimmen.
-
Eine Transaktionsgüte der jeweiligen Transaktion kann dabei insbesondere in Abhängigkeit von der Art der Transaktion und/oder dem Inhalt der Transaktion bestimmt werden.
-
Die Güte des jeweiligen Blocks kann beispielsweise als Summe, als Mittelwert oder dergleichen der bestimmten Transaktionsgüten der Anzahl Transaktionen des Blocks ermittelt werden. Eine Formel zum Bestimmen der Blockgüte anhand der bestimmten Transaktionsgüten kann fest vorgegeben sein und/oder in einer Parametrisierungstransaktion in dem Transaktionsbuch des verteilten Datenbanksystems bestätigt sein.
-
Ein oder mehrere Kriterien zur Bestimmung der Transaktionsgüte können abhängig vom Anwendungsfall eingerichtet sein. Beispielsweise kann einer Transaktion, die Steuer- oder Messwerte für ein industrielles Automatisierungssystem umfasst, eine höhere Güte zuerkannt werden als einer administrativen Transaktion, wie etwa einer Kryptotoken-Transaktion.
-
So kann vorteilhaft ein Anreiz für die blockbildenden Knoteneinrichtungen des verteilten Datenbanksystems geschaffen werden, bevorzugt Transaktionen von hoher Güte, wie beispielsweise Transaktionen, die für einen Betreiber des verteilten Datenbanksystems besonders relevant oder kritisch sind, in die gebildeten Blöcke aufzunehmen.
-
Gemäß einer weiteren Ausführungsform kann die zweite Einheit dazu eingerichtet ist, die Transaktionsgüte der jeweiligen Transaktion in Abhängigkeit einer rechnerischen Komplexität der Transaktion zu bestimmen.
-
Unter einer "rechnerischen Komplexität" der Transaktion kann eine Rechenlast verstanden werden, die eine blockbildende Knoteneinrichtung beim Bilden des die Transaktion umfassenden Blocks aufgebracht hat, um die Transaktion auf Gültigkeit zu prüfen. Sofern beispielsweise die Transaktion einen Smart Contract enthält oder referenziert, kann diese Rechenlast erheblich sein.
-
Es kann somit vorteilhaft ein Anreiz für blockbildende Konteneinrichtungen dafür geschaffen werden, rechenlastintensive Transaktionen in zu bildende Blöcke aufzunehmen.
-
Gemäß einer weiteren Ausführungsform ist die zweite Einheit dazu eingerichtet, die Transaktionsgüte der jeweiligen Transaktion in Abhängigkeit einer zeitlichen Differenz zwischen einem Zeitstempel der Transaktion und einem Zeitstempel des die Transaktion umfassenden Blocks zu bestimmen.
-
Wird beispielsweise eine Transaktionsgüte bei kleiner zeitlicher Differenz als höher bewertet als eine Transaktionsgüte bei mittlerer zeitlicher Differenz, wobei die mittlere zeitliche Differenz größer ist als die kleine zeitliche Differenz, so kann vorteilhaft ein Anreiz dafür geschaffen werden, dass in dem verteilten Datenbanksystem bereitgestellte Transaktionen zeitnah bestätigt werden.
-
Wird ferner beispielsweise eine Transaktionengüte bei einer hohen zeitlichen Differenz, die größer ist als die mittlere und die kleine zeitliche Differenz, als höher bewertet als die Transaktionsgüte bei der mittleren zeitlichen Differenz, so kann ein Anreiz dafür geschaffen werden, dass Transaktionen, die beispielsweise aufgrund einer Überlastsituation zunächst unberücksichtigt geblieben sind, schlussendlich doch erfolgreich bestätigt werden.
-
Gemäß einer weiteren Ausführungsform ist die zweite Einheit ferner dazu eingerichtet, die bestimmte Blockgüte des jeweiligen Blocks gemäß einem vorgegebenen Fairness-Kriterium zu erhöhen, wobei das vorgegebene Fairness-Kriterium eine Erhöhung der Blockgüte in Abhängigkeit davon vorsieht, in welchem Maße die von dem Block umfassten Transaktionen Transaktionen unterschiedlicher Transaktionsgüte und/oder Transaktionen unterschiedlichen Typs sind.
-
Gemäß den vorgenannten Ausführungsformen kann die zweite Einheit derart eingerichtet sein, dass ein Block umso mehr bevorzugt und umso schneller in dem Transaktionsbuch bestätigt wird, je höher die Güte der von ihm umfassten Transaktionen ist. Um zu vermeiden, dass, etwa bei hohem Transaktionsaufkommen, Transaktionen mit niedriger Güte gar nicht in dem Transaktionsbuch des verteilten Datenbanksystems bestätigt werden, kann gemäß der vorliegenden Ausführungsform das Fairness-Kriterium vorsehen, dass eine Blockgüte dann erhöht wird, wenn beispielsweise ein vorbestimmter Anteil der in dem Block umfassten Transaktionen eine niedrige Transaktionsgüte aufweist. Hierdurch kann ein Nachteil, den eine blockbildende Konteneinrichtung in Form einer geringeren Bestätigungswahrscheinlichkeit des von ihr gebildeten Blocks erleiden würde, wenn sie Transaktionen niedriger Transaktionsgüte in den Block aufnimmt, vorteilhaft zu einem gewissen Maße kompensiert werden. Anders ausgedrückt können Transaktionen gemäß ihrer Transaktionsgüte priorisiert werden, im Speziellen können jedoch einige Transaktionsdatensätze eines jeweiligen Blocks für Transaktionen mit niedriger Transaktionsgüte reserviert werden, um deren schlussendliche Bestätigung durch das Transaktionsbuch gewährleisten zu können.
-
Unter "niedriger Transaktionsgüte" ist hierbei eine Transaktionsgüte zu verstehen, die beispielsweise niedriger als ein vorbestimmter Schwellwert ist, und/oder eine Transaktionsgüte, die niedriger als ein vorbestimmter Bruchteil einer maximalen oder einer mittleren Transaktionsgüter aller von dem jeweiligen Block umfassten Transaktionen ist.
-
Analoge Überlegungen gelten für Transaktionen unterschiedlichen Typs. Zwar können, was unter Aspekten der Echtzeiteignung vorteilhaft ist, Blöcke mit Mess- und Steuerwert-Transaktionen durch Zuweisen einer hohen Blockgüte bevorzugt werden; mit dem vorgeschlagenen Fairness-Kriterium kann jedoch vorteilhaft erreicht werden, dass für blockbildende Knoteneinrichtungen ein Anreiz besteht, auch einige Transaktionen anderen Typs in einen jeweiligen zu bildenden Block aufzunehmen.
-
Gemäß einer weiteren Ausführungsform ist die dritte Einheit dazu eingerichtet, die jeweilige Pfadgüte ferner in Abhängigkeit von einem statistischen Parameter einer Verteilung der bestimmten Blockgüten der verketteten Blöcke des jeweiligen Pfads zu bestimmen.
-
Der Parameter kann beispielsweise ein Mittelwert, eine Standardabweichung, eine Varianz, ein Quartilsabstand und dergleichen sein.
-
Demgemäß können vorteilhaft die Pfadgüte betreffende Auffälligkeiten eines Pfads entdeckt werden, die bei einer rein summarischen Betrachtung der Summe der Blockgüten unentdeckt bleiben können. Bei einem solchen statistische Test als auffällig identifizierte Pfade können vorteilhaft bei der Konsensfindung unberücksichtigt bleiben.
-
Die vorstehenden Ausführungsformen können kombiniert worden.
-
Denkbar ist insbesondere eine Kombination aus der Ausführungsform, bei welcher die Blockgüte des jeweiligen Blocks in Abhängigkeit von der Güte eines von dem Block umfassten Nachweiswerts bestimmt wird und der Nachweiswert ein Arbeitswert ist, mit der Ausführungsform, bei welcher die zweite Einheit dazu eingerichtet ist, die Blockgüte des jeweiligen Blocks in Abhängigkeit von den bestimmten Transaktionsgüten der Anzahl Transaktionen des Blocks zu bestimmen, und der Ausführungsform, bei welcher die zweite Einheit dazu eingerichtet ist, die Transaktionsgüte der jeweiligen Transaktion in Abhängigkeit einer rechnerischen Komplexität der Transaktion zu bestimmen.
-
Hierdurch kann insbesondere vorteilhaft ein Ausgleich zwischen dem Rechenaufwand für das Erbringen des Arbeitsnachweises des Blocks und dem Rechenaufwand für das Überprüfen der jeweiligen Transaktionen des Blocks erzielt werden. Anders ausgedrückt kann bei einem Block mit rechnerisch komplexen Transaktionen eine Anforderung an den Arbeitsnachweis verringert sein und bei einem Block mit rechnerisch einfachen Transaktionen eine Anforderung an den Arbeitsnachweis erhöht sein. Ob sich ein Block in einer Konkurrenzsituation gegenüber einem anderen Block als nächster Block der Konsensversion des Transaktionsbuchs durchsetzen kann, kann vorteilhaft von dem kombinierten Rechenaufwand zum Bilden des Arbeitsnachweises und zum Prüfen der Transaktionen des Blocks, wie etwa zum Ausführen von Smart Contracts und dergleichen, abhängig gemacht werden. Hierdurch kann ein stabiler Betrieb eines verteilten Datenbanksystems auch bei Vorhandensein vieler komplexer Smart Contracts gewährleistet werden.
-
Ein solches, von einer Kombination von Ausführungsformen der vorgeschlagenen Pfadermittlungseinrichtung implementiertes Konsensverfahren, bei dem sowohl die Güte des Arbeitsnachweises als auch die Güte der Transaktionen bei der Konsensbildung berücksichtigt werden, kann auch als "Proof of Quality" bezeichnet werden.
-
Gemäß einer weiteren Ausführungsform wird eine Konteneinrichtung vorgeschlagen, die zur Teilnahme an einem verteilten Datenbanksystem eingerichtet ist, das eine Blockketten-Technologie implementiert, wobei die Knoteneinrichtung eine Einrichtung nach einer der vorstehenden Ausführungsformen umfasst.
-
Anders ausgedrückt kann die vorgeschlagene Pfadermittlungseinrichtung Teil der Knoteneinrichtung sein.
-
Gemäß einer weiteren Ausführungsform wird ein verteiltes Datenbanksystem vorgeschlagen, das eine Blockketten-Technologie implementiert und mehrere miteinander vernetzte Knoteneinrichtungen nach der vorstehenden Ausführungsform umfasst.
-
Gemäß einem zweiten Aspekt wird ein Verfahren zum Ermitteln einer Konsensversion eines Transaktionsbuchs eines verteilten Datenbanksystems unter einer Anzahl Pfade aus verketteten Blöcken vorgeschlagen. Das Verfahren umfasst: Erhalten einer Anzahl Pfade, wobei ein jeweiliger Pfad eine Anzahl verketteter Blöcke umfasst; Bestimmen einer Blockgüte des jeweiligen Blocks des jeweiligen Pfads; Bestimmen der Pfadgüte des jeweiligen Pfads in Abhängigkeit der Blockgüten der Anzahl verketteter Blöcke des Pfads; und Ermitteln, aus der Anzahl Pfade, desjenigen Pfads mit der höchsten Pfadgüte und Bereitstellen des ermittelten Pfads als die Konsensversion des Transaktionsbuchs des verteilten Datenbanksystems.
-
Das genannte vorgeschlagene Verfahren kann auch als Pfadermittlungsverfahren bezeichnet werden.
-
Die für die vorgeschlagene Pfadermittlungseinrichtung beschriebenen Ausführungsformen und Merkmale gelten für das vorgeschlagene Pfadermittlungsverfahren entsprechend.
-
Gemäß einem dritten Aspekt wird eine Vorrichtung zum Überwachen eines verteilten Datenbanksystems vorgeschlagen, das eine Blockketten-Technologie implementiert. Die Vorrichtung umfasst: eine erste Einheit zum Erhalten eines Transaktionsbuchs des verteilten Datenbanksystems, wobei das Transaktionsbuch eine Anzahl verketteter Blöcke umfasst; eine zweite Einheit zum Bestimmen einer Blockgüte des jeweiligen Blocks des Transaktionsbuchs; eine dritte Einheit zum Bestimmen einer Pfadgüte des Transaktionsbuchs in Abhängigkeit der Blockgüten der Anzahl verketteter Blöcke des Transaktionsbuchs; und eine sechste Einheit zum Melden, dass eine Knoteneinrichtung des verteilten Datenbanksystems missbräuchlich betrieben wird, in Abhängigkeit von den bestimmten Blockgüten und/oder der bestimmten Pfadgüte des Transaktionsbuchs.
-
Das "Transaktionsbuch" kann hierbei insbesondere einen Pfad von verketten Blöcken umfassen, der von dem verteilten Datenbanksystem, insbesondere von einer Mehrzahl von Knoteneinrichtungen des verteilten Datenbanksystems, als Repräsentation der Konsensversion des Transaktionsbuchs behandelt wird.
-
Die für die vorgeschlagene Pfadermittlungseinrichtung, insbesondere für deren erste Einheit, zweite Einheit und dritte Einheit, vorgeschlagenen Ausführungsformen, Merkmale und Vorteile, gelten, mutatis mutandis, auch für die vorgeschlagene Überwachungsvorrichtung.
-
Im Speziellen kann die vorgeschlagene Pfadermittlungseinrichtung vorteilhaft ermöglichen, zu verhindern, dass Pfade minderer Güte als Konsensversion des Transaktionsbuchs ermittelt werden. Mit korrespondierenden Merkmalen, insbesondere der ersten, zweiten und dritten Einheit, kann die vorgeschlagene Überwachungseinrichtung ermöglichen, nachträglich zu erkennen, ob ein Pfade minderer Güte als Konsensversion des Transaktionsbuchs ausgewählt worden ist.
-
Das "Melden" kann insbesondere das Ausgeben einer Warnmeldung an einen Betreiber des verteilten Datenbanksystems umfassen, beispielsweise durch Versand einer Nachricht oder durch Anzeigen eines visuellen Hinweises. In Reaktion auf eine solche Meldung kann der Betreiber notwendige Überprüfungs- oder Wartungsmaßnahmen veranlassen, wie beispielsweise einen Sicherheitsaudit.
-
Das "Melden" kann ferner insbesondere das Übermitteln einer Nachricht an eine oder mehrere programmgesteuerte Einrichtungen umfassen. Insbesondere ist denkbar, dass die Überwachungseinrichtung diejenigen der Knoteneinrichtungen des verteilten Datenbanksystems identifiziert, die für das Bilden und/oder Bestätigen des Transaktionsbuchs, insbesondere von Blöcken minderer Güte des Transaktionsbuchs, verantwortlich sind, und diese Knoteneinrichtungen bei den übrigen der Knoteneinrichtungen des verteilten Datenbanksystems und/oder bei einer zentralen Steuereinrichtung des verteilten Datenbanksystems meldet. Die auf diese Weise gemeldeten Knoteneinrichtungen können in Reaktion auf eine solche Meldung vorübergehend oder dauerhaft automatisiert von der Teilnahme an dem verteilten Datenbanksystem bzw. an der Konsensfindung des verteilten Datenbanksystems ausgeschlossen werden.
-
Gemäß einem vierten Aspekt wird ein Verfahren zum Überwachen eines verteilten Datenbanksystems, das eine Blockketten-Technologie implementiert, vorgeschlagen. Das Verfahren umfasst: Erhalten eines Transaktionsbuchs des verteilten Datenbanksystems, wobei das Transaktionsbuch eine Anzahl verketteter Blöcke umfasst; Bestimmen einer Blockgüte des jeweiligen Blocks des Transaktionsbuchs; Bestimmen einer Pfadgüte des Transaktionsbuchs in Abhängigkeit der Blockgüten der Anzahl verketteter Blöcke des Transaktionsbuchs; und Melden, dass eine Knoteneinrichtung des verteilten Datenbanksystems missbräuchlich betrieben wird, in Abhängigkeit von den bestimmten Blockgüten und/oder der bestimmten Pfadgüte des Transaktionsbuchs.
-
Die für die vorgeschlagene Überwachungsvorrichtung beschriebenen Ausführungsformen und Merkmale gelten für das vorgeschlagene Überwachungsverfahren entsprechend.
-
Weiterhin wird ein Computerprogrammprodukt vorgeschlagen, welches auf einer programmgesteuerten Einrichtung die Durchführung des wie oben erläuterten Verfahrens gemäß dem zweiten Aspekt und/oder des wie oben erläuterten Verfahrens gemäß dem vierten Aspekt veranlasst.
-
Ein Computerprogrammprodukt, wie z.B. ein Computerprogramm-Mittel, kann beispielsweise als Speichermedium, wie z.B. Speicherkarte, USB-Stick, CD-ROM, DVD, oder auch in Form einer herunterladbaren Datei von einem Server in einem Netzwerk bereitgestellt oder geliefert werden. Dies kann zum Beispiel in einem drahtlosen Kommunikationsnetzwerk durch die Übertragung einer entsprechenden Datei mit dem Computerprogrammprodukt oder dem Computerprogramm-Mittel erfolgen.
-
Nähere Einzelheiten und weitere Varianten von auf Blockketten-Technologie basierenden verteilten Datenbanksystemen, auf die die vorgeschlagene Blockbildungs-Einrichtung, die vorgeschlagene Knoteneinrichtung und die vorgeschlagenen Verfahren anwendbar sind, werden im Folgenden erläutert.
-
Sofern es in der nachstehenden Beschreibung nicht anders angegeben ist, beziehen sich die Begriffe "durchführen", "berechnen", "rechnergestützt", "rechnen", "feststellen", "generieren", "konfigurieren", "rekonstruieren" und dergleichen vorzugsweise auf Handlungen und/oder Prozesse und/oder Verarbeitungsschritte, die Daten verändern und/oder erzeugen und/oder die Daten in andere Daten überführen, wobei die Daten insbesondere als physikalische Größen dargestellt werden oder vorliegen können, beispielsweise als elektrische Impulse. Insbesondere sollte der Ausdruck "Computer" möglichst breit ausgelegt werden, um insbesondere alle elektronischen Geräte mit Datenverarbeitungseigenschaften abzudecken. Computer können somit beispielsweise Personal Computer, Server, speicherprogrammierbare Steuerungen (SPS), Handheld-Computer-Systeme, Pocket-PC-Geräte, Mobilfunkgeräte und andere Kommunikationsgeräte, die rechnergestützt Daten verarbeiten können, Prozessoren und andere elektronische Geräte zur Datenverarbeitung sein.
-
Unter "rechnergestützt" kann im Zusammenhang mit der Erfindung beispielsweise eine Implementierung des Verfahrens verstanden werden, bei dem insbesondere ein Prozessor mindestens einen Verfahrensschritt des Verfahrens ausführt.
-
Unter einem Prozessor kann im Zusammenhang mit der Erfindung beispielsweise eine Maschine oder eine elektronische Schaltung verstanden werden. Bei einem Prozessor kann es sich insbesondere um einen Hauptprozessor (engl. Central Processing Unit, CPU), einen Mikroprozessor oder einen Mikrokontroller, beispielsweise eine anwendungsspezifische integrierte Schaltung oder einen digitalen Signalprozessor, möglicherweise in Kombination mit einer Speichereinheit zum Speichern von Programmbefehlen, etc. handeln. Bei einem Prozessor kann es sich beispielsweise auch um einen IC (integrierter Schaltkreis, engl. Integrated Circuit), insbesondere einen FPGA (engl. Field Programmable Gate Array) oder einen ASIC (anwendungsspezifische integrierte Schaltung, engl. Application-Specific Integrated Circuit), oder einen DSP (Digitaler Signalprozessor, engl. Digital Signal Processor) oder einen Grafikprozessor GPU (Graphic Processing Unit) handeln. Auch kann unter einem Prozessor ein virtualisierter Prozessor, eine virtuelle Maschine oder eine Soft-CPU verstanden werden. Es kann sich beispielsweise auch um einen programmierbaren Prozessor handeln, der mit Konfigurationsschritten zur Ausführung des genannten erfindungsgemäßen Verfahrens ausgerüstet wird oder mit Konfigurationsschritten derart konfiguriert ist, dass der programmierbare Prozessor die erfindungsgemäßen Merkmale des Verfahrens, der Komponente, der Module oder anderer Aspekte und/oder Teilaspekte der Erfindung realisiert.
-
Unter einer "Speichereinheit", einem "Speichermodul" und dergleichen kann im Zusammenhang mit der Erfindung beispielsweise ein flüchtiger Speicher in Form von Arbeitsspeicher (engl. Random-Access Memory, RAM) oder ein dauerhafter Speicher wie eine Festplatte oder ein Datenträger verstanden werden.
-
Unter einem "Modul" kann im Zusammenhang mit der Erfindung beispielsweise ein Prozessor und/oder eine Speichereinheit zum Speichern von Programmbefehlen verstanden werden. Beispielsweise ist der Prozessor speziell dazu eingerichtet, die Programmbefehle derart auszuführen, damit der Prozessor Funktionen ausführt, um das erfindungsgemäße Verfahren oder einen Schritt des erfindungsgemäßen Verfahrens zu implementieren oder realisieren. Ein Modul kann beispielsweise auch ein Knoten des verteilten Datenbanksystems sein, der beispielsweise die spezifischen Funktionen/Merkmale eines entsprechenden Moduls realisiert. Die jeweiligen Module können beispielsweise auch als separate bzw. eigenständige Module ausgebildet sein. Hierzu können die entsprechenden Module beispielsweise weitere Elemente umfassen. Diese Elemente sind beispielsweise eine oder mehrere Schnittstellen (z. B. Datenbankschnittstellen, Kommunikationsschnittstellen - z. B. Netzwerkschnittstelle, WLAN-Schnittstelle) und/oder eine Evaluierungseinheit (z. B. ein Prozessor) und/oder eine Speichereinheit. Mittels der Schnittstellen können beispielsweise Daten ausgetauscht (z. B. empfangen, übermittelt, gesendet oder bereitgestellt werden). Mittels der Evaluierungseinheit können Daten beispielsweise rechnergestützt und/oder automatisiert verglichen, überprüft, verarbeitet, zugeordnet oder berechnet werden. Mittels der Speichereinheit können Daten beispielsweise rechnergestützt und/oder automatisiert gespeichert, abgerufen oder bereitgestellt werden.
-
Unter "umfassen", insbesondere in Bezug auf Daten und/oder Informationen, kann im Zusammenhang mit der Erfindung beispielsweise ein (rechnergestütztes) Speichern einer entsprechenden Information bzw. eines entsprechenden Datums in einer Datenstruktur/Datensatz (die z. B. wiederum in einer Speichereinheit gespeichert ist) verstanden werden.
-
Unter "zuordnen", insbesondere in Bezug auf Daten und/oder Informationen, kann im Zusammenhang mit der Erfindung beispielsweise eine rechnergestützte Zuordnung von Daten und/oder Informationen verstanden werden. Beispielsweise wird einem ersten Datum hierzu mittels einer Speicheradresse oder eines eindeutigen Identifizierers (engl. unique identifier (UID)) ein zweites Datum zugeordnet, in dem z. B. das erste Datum zusammen mit der Speicheradresse oder des eindeutigen Identifizierers des zweiten Datums zusammen in einem Datensatz gespeichert wird.
-
Unter "bereitstellen", insbesondere in Bezug auf Daten und/oder Informationen, kann im Zusammenhang mit der Erfindung beispielsweise ein rechnergestütztes Bereitstellen verstanden werden. Das Bereitstellen erfolgt beispielsweise über eine Schnittstelle (z. B. eine Datenbankschnittstelle, eine Netzwerkschnittstelle, eine Schnittstelle zu einer Speichereinheit). Über diese Schnittstelle können beispielsweise beim Bereitstellen entsprechende Daten und/oder Informationen übermittelt und/oder gesendet und/oder abgerufen und/oder empfangen werden.
-
Unter "bereitstellen" kann im Zusammenhang mit der Erfindung beispielsweise auch ein Laden oder ein Speichern, beispielsweise einer Transaktion mit entsprechenden Daten verstanden werden. Dies kann beispielsweise auf oder von einem Speichermodul erfolgen. Unter "Bereitstellen" kann beispielsweise auch ein Übertragen (oder ein Senden oder ein Übermitteln) von entsprechenden Daten von einem Knoten zu einem anderen Knoten der Blockkette oder des verteilten Datenbanksystems (bzw. deren Infrastruktur) verstanden werden.
-
Unter "Smart-Contract-Prozess" kann im Zusammenhang mit der Erfindung insbesondere ein Ausführen eines Programmcodes (z. B. der Steuerbefehle) in einem Prozess durch das verteilte Datenbanksystem bzw. deren Infrastruktur verstanden werden.
-
Unter einer "Prüfsumme", beispielsweise eine Datenblockprüfsumme, eine Datenprüfsumme, eine Knotenprüfsumme, eine Transaktionsprüfsumme, eine Verkettungsprüfsumme oder dergleichen, kann im Zusammenhang mit der Erfindung beispielsweise eine kryptographische Prüfsumme oder kryptographischer Hash bzw. Hash-Wert verstanden werden, die insbesondere mittels einer kryptographischen Hashfunktion über einen Datensatz und/oder Daten und/oder eine oder mehrere der Transaktionen und/oder einem Teilbereich eines Datenblocks (z. B. der Block-Header eines Blocks einer Blockkette oder Datenblock-Header eines Datenblocks des verteilten Datenbanksystems oder nur einem Teil der Transaktionen eines Datenblocks) gebildet oder berechnet werden. Bei einer Prüfsumme kann es sich insbesondere um eine Prüfsumme/n oder Hash-Wert/e eines Hash-Baumes (z. B. Merkle-Baum, Patricia-Baum) handeln. Weiterhin kann darunter insbesondere auch eine digitale Signatur oder ein kryptographischer Nachrichtenauthentisierungscode verstanden werden. Mittels der Prüfsummen kann beispielsweise auf unterschiedlichen Ebenen des Datenbanksystems ein kryptographischer Schutz/Manipulationsschutz für die Transaktionen und die darin gespeicherten Daten (sätze) realisiert werden. Ist beispielsweise eine hohe Sicherheit gefordert, werden beispielsweise die Prüfsummen auf Transaktionsebene erzeugt und überprüft. Ist eine weniger hohe Sicherheit gefordert, werden beispielsweise die Prüfsummen auf Blockebene (z. B. über den ganzen Datenblock oder nur über einen Teil des Datenblocks und/oder einen Teil der Transaktionen) erzeugt und überprüft. Unter einer "Datenblockprüfsumme" kann im Zusammenhang mit der Erfindung eine Prüfsumme verstanden werden, die beispielsweise über einen Teil oder alle Transaktionen eines Datenblocks berechnet wird. Ein Knoten kann dann beispielsweise die Integrität/Authentizität des entsprechenden Teils eines Datenblocks mittels der Datenblockprüfsumme prüfen/feststellen. Zusätzlich oder alternativ kann die Datenblockprüfsumme insbesondere auch über Transaktionen eines vorhergehenden Datenblocks/Vorgänger-Datenblocks des Datenblocks gebildet worden sein. Die Datenblockprüfsumme kann dabei insbesondere auch mittels eines Hash-Baumes, beispielsweise einem Merkle-Baum [1] oder einem Patricia-Baum, realisiert werden, wobei die Datenblockprüfsumme insbesondere die Wurzel-Prüfsumme des Merkle-Baumes bzw. eines Patricia-Baumes bzw. eines binären Hash-Baumes ist. Insbesondere werden Transaktionen mittels weiterer Prüfsummen aus dem Merkle-Baum bzw. Patricia-Baum abgesichert (z. B. unter Verwendung der Transaktionsprüfsummen), wobei insbesondere die weiteren Prüfsummen Blätter im Merkle-Baum bzw. Patricia-Baum sind. Die Datenblockprüfsumme kann damit beispielsweise die Transaktionen absichern, indem die Wurzel-Prüfsumme aus den weiteren Prüfsummen gebildet wird. Die Datenblockprüfsumme kann insbesondere für Transaktionen eines bestimmten Datenblocks der Datenblöcke berechnet werden. Insbesondere kann eine solche Datenblockprüfsumme in einen nachfolgenden Datenblock des bestimmten Datenblocks eingehen, um diesen nachfolgenden Datenblock beispielsweise mit seinen vorhergehenden Datenblöcken zu verketten und insbesondere damit eine Integrität des verteilten Datenbanksystems prüfbar zu machen. Hierdurch kann die Datenblockprüfsumme beispielsweise die Funktion der Verkettungsprüfsumme übernehmen oder in die Verkettungsprüfsumme eingehen. Der Header eines Datenblocks (z. B. eines neuen Datenblocks oder des Datenblocks für den die Datenblockprüfsumme gebildet wurde) kann beispielsweise die Datenblockprüfsumme umfassen.
-
Unter "Transaktionsprüfsumme" kann im Zusammenhang mit der Erfindung eine Prüfsumme verstanden werden, die insbesondere über eine Transaktion eines Datenblocks gebildet wird. Zusätzlich kann beispielsweise eine Berechnung einer Datenblockprüfsumme für einen entsprechenden Datenblock beschleunigt werden, da hierfür beispielsweise bereits berechnete Transaktionsprüfsummen gleich als Blätter z. B. eines Merkle-Baumes verwendet werden können.
-
Unter einer "Verkettungsprüfsumme" kann im Zusammenhang mit der Erfindung eine Prüfsumme verstanden werden, die insbesondere einen jeweiligen Datenblock des verteilten Datenbanksystems den vorhergehenden Datenblock des verteilten Datenbanksystems angibt bzw. referenziert (in der Fachliteratur insbesondere häufig als "previous block hash" bezeichnet) [1]. Hierfür wird insbesondere für den entsprechenden vorhergehenden Datenblock eine entsprechende Verkettungsprüfsumme gebildet. Als Verkettungsprüfsumme kann beispielsweise eine Transaktionsprüfsumme oder die Datenblockprüfsumme eines Datenblocks (also ein vorhandener Datenblock des verteilten Datenbanksystems) verwendet werden, um einen neuen Datenblock mit einem (vorhandenen) Datenblock des verteilten Datenbanksystems zu verketten. Es ist beispielsweise aber auch möglich, dass eine Prüfsumme über einen Header des vorhergehenden Datenblocks oder über den gesamten vorhergehenden Datenblock gebildet wird und als Verkettungsprüfsumme verwendet wird. Dies kann beispielsweise auch für mehrere oder alle vorhergehenden Datenblöcke berechnet werden. Es ist beispielsweise auch realisierbar, dass über den Header eines Datenblocks und der Datenblockprüfsumme die Verkettungsprüfsumme gebildet wird. Ein jeweiliger Datenblock des verteilten Datenbanksystems umfasst jedoch vorzugsweise jeweils eine Verkettungsprüfsumme, die für einen vorhergehenden Datenblock, insbesondere noch bevorzugter den direkt vorhergehenden Datenblock, des jeweiligen Datenblockes berechnet wurde bzw. sich auf diesen beziehen. Es ist beispielsweise auch möglich, dass eine entsprechende Verkettungsprüfsumme auch nur über einen Teil des entsprechenden Datenblocks (z. B. vorhergehenden Datenblock) gebildet wird. Hierdurch kann zum Beispiel ein Datenblock realisiert werden, der einen integritätsgeschützten Teil und einen ungeschützten Teil umfasst. Damit ließe sich beispielsweise ein Datenblock realisieren, dessen integritätsgeschützter Teil unveränderlich ist und dessen ungeschützter Teil auch noch später verändert werden kann. Unter integritätsgeschützt ist dabei insbesondere zu verstehen, dass eine Veränderung von integritätsgeschützten Daten mittels einer Prüfsumme feststellbar ist.
-
Die Daten, die beispielsweise in einer Transaktion eines Datenblocks gespeichert werden, können insbesondere auf unterschiedliche Weise bereitgestellt werden. Anstelle der Daten, z. B. Nutzerdaten wie Messdaten, Messwerte, Steuerwerte, oder Daten/Eigentumsverhältnisse zu Assets, kann beispielsweise eine Transaktion eines Datenblocks nur die Prüfsumme für diese Daten umfassen. Die entsprechende Prüfsumme kann dabei auf unterschiedliche Weise realisiert werden. Dies kann z. B. eine entsprechende Datenblockprüfsumme eines Datenblocks (mit den entsprechenden Daten) einer anderen Datenbank oder des verteilten Datenbanksystems sein, eine Transaktionsprüfsumme eines Datenblocks mit den entsprechenden Daten (des verteilten Datenbanksystems oder einer anderen Datenbank) oder eine Datenprüfsumme, die über die Daten gebildet wurde.
-
Zusätzlich kann die entsprechende Transaktion einen Verweis oder eine Angabe zu einem Speicherort (z. B. eine Adresse eines Fileservers und Angaben, wo die entsprechenden Daten auf dem Fileserver zu finden sind; oder eine Adresse einer anderen verteilten Datenbank, welche die Daten umfasst) umfassen. Die entsprechenden Daten könnten dann beispielsweise auch in einer weiteren Transaktion eines weiteren Datenblocks des verteilten Datenbanksystems bereitgestellt werden (z. B. wenn die entsprechenden Daten und die zugehörigen Prüfsummen in unterschiedlichen Datenblöcken umfasst sind). Es ist beispielsweise aber auch denkbar, dass diese Daten über einen anderen Kommunikationskanal (z. B. über eine andere Datenbank und/oder einen kryptographisch gesicherten Kommunikationskanal) bereitgestellt werden.
-
Auch kann beispielsweise zusätzlich zu der Prüfsumme ein Zusatzdatensatz (z. B. ein Verweis oder eine Angabe zu einem Speicherort) in der entsprechenden Transaktion abgelegt sein, der insbesondere einen Speicherort angibt, wo die Daten abgerufen werden können. Das ist insbesondere dahingehend vorteilhaft, um eine Datengröße der Blockkette oder des verteilten Datenbanksystems möglichst gering zu halten.
-
Unter "sicherheitsgeschützt" kann im Zusammenhang mit der Erfindung beispielsweise ein Schutz verstanden werden, der insbesondere durch ein kryptographisches Verfahren realisiert wird. Beispielsweise kann dies durch Nutzung des verteilten Datenbanksystems für das Bereitstellen oder Übertragen oder Senden von entsprechenden Daten/Transaktionen realisiert werden. Dies wird vorzugsweise durch eine Kombination der verschiedenen (kryptographischen) Prüfsummen erreicht, indem diese insbesondere synergetisch zusammenwirken, um beispielsweise die Sicherheit bzw. die kryptographische Sicherheit für die Daten der Transaktionen zu verbessern. Anders gesagt kann insbesondere unter "sicherheitsgeschützt" im Zusammenhang mit der Erfindung auch "kryptographisch geschützt" und/oder "manipulationsgeschützt" verstanden werden. Dabei kann "manipulationsgeschützt" auch als "integritätsgeschützt" bezeichnet werden.
-
Unter "Verketten der/von Datenblöcken eines verteilten Datenbanksystems" kann im Zusammenhang mit der Erfindung beispielsweise verstanden werden, dass Datenblöcke jeweils eine Information (z. B. Verkettungsprüfsumme) umfassen, die auf einen anderen Datenblock oder mehrere andere Datenblöcke des verteilten Datenbanksystems verweisen bzw. diese referenzieren [1] [4] [5].
-
Unter "Einfügen in das verteilte Datenbanksystem" und dergleichen kann im Zusammenhang mit der Erfindung beispielsweise verstanden werden, dass insbesondere eine Transaktion bzw. die Transaktionen oder ein Datenblock mit seinen Transaktionen an einen oder mehrere Knoten eines verteilten Datenbanksystems übermittelt wird. Werden diese Transaktionen beispielsweise erfolgreich validiert (z. B. durch den/die Knoten), werden diese Transaktionen insbesondere als neuer Datenblock mit mindestens einem vorhandenen Datenblock des verteilten Datenbanksystems verkettet [1][4][5]. Hierzu werden die entsprechenden Transaktionen beispielsweise in einem neuen Datenblock gespeichert. Insbesondere kann dieses Validieren und/oder Verketten durch einen vertrauenswürdigen Knoten (z. B. einen Mining Node, ein Blockketten-Orakel oder eine Blockketten-Plattform) erfolgen. Insbesondere kann dabei unter einer Blockketten-Plattform eine Blockkette als Dienst (engl. Blockkette als Service) verstanden werden, wie dies insbesondere durch Microsoft oder IBM vorgeschlagen wird. Insbesondere können ein vertrauenswürdiger Knoten und/oder ein Knoten jeweils eine Knoten-Prüfsumme (z. B. eine digitale Signatur) in einem Datenblock hinterlegen (z. B. in denen von ihnen validierten und erzeugten Datenblock, der dann verkettet wird), um insbesondere eine Identifizierbarkeit des Erstellers des Datenblockes zu ermöglichen und/oder eine Identifizierbarkeit des Knotens zu ermöglichen. Dabei gibt diese Knoten-Prüfsumme an, welcher Knoten beispielsweise den entsprechenden Datenblock mit mindestens einem anderen Datenblock des verteilten Datenbanksystems verkettet hat.
-
Unter "Transaktion" bzw. "Transaktionen" können im Zusammenhang mit der Erfindung beispielsweise ein Smart-Contract [4] [5], eine Datenstruktur oder ein Transaktionsdatensatz verstanden werden, der insbesondere jeweils eine der Transaktionen oder mehrere Transaktionen umfasst. Unter "Transaktion" bzw. "Transaktionen" können im Zusammenhang mit der Erfindung beispielsweise auch die Daten einer Transaktion eines Datenblocks einer Blockkette (engl. Blockchain) verstanden werden. Eine Transaktion kann insbesondere einen Programmcode umfassen, der beispielsweise einen Smart Contract realisiert. Beispielsweise können im Zusammenhang mit der Erfindung unter Transaktion auch eine Steuertransaktion und/oder Bestätigungstransaktion verstanden werden. Alternativ kann eine Transaktion beispielsweise eine Datenstruktur sein, die Daten speichert (z. B. die Steuerbefehle und/oder Vertragsdaten und/oder andere Daten wie Videodaten, Nutzerdaten, Messdaten etc.).
-
Insbesondere ist unter "Speichern von Transaktionen in Datenblöcken", "Speichern von Transaktionen" und dergleichen ein direktes Speichern oder indirektes Speichern zu verstehen. Unter einem direkten Speichern kann dabei beispielsweise verstanden werden, dass der entsprechende Datenblock (des verteilten Datenbanksystems) oder die entsprechende Transaktion des verteilten Datenbanksystems) die jeweiligen Daten umfasst. Unter einem indirekten Speichern kann dabei beispielsweise verstanden werden, dass der entsprechende Datenblock oder die entsprechende Transaktion eine Prüfsumme und optional einen Zusatzdatensatz (z. B. einen Verweis oder eine Angabe zu einem Speicherort) für entsprechende Daten umfasst und die entsprechenden Daten somit nicht direkt in dem Datenblock (oder der Transaktion) gespeichert sind (also stattdessen nur eine Prüfsumme für diese Daten). Insbesondere können beim Speichern von Transaktionen in Datenblöcken diese Prüfsummen beispielsweise validiert werden, so wie dies beispielsweise unter "Einfügen in das verteilte Datenbanksystem" erläutert ist.
-
Unter einem "Programmcode" (z. B. ein Smart Contract) kann im Zusammenhang mit der Erfindung beispielsweise ein Programmbefehl oder mehrere Programmbefehle verstanden werden, die insbesondere in einer oder mehreren Transaktionen gespeichert sind. Der Programmcode ist insbesondere ausführbar und wird beispielsweise durch das verteilte Datenbanksystem ausgeführt. Dies kann beispielsweise mittels einer Ausführungsumgebung (z. B. einer virtuellen Maschine) realisiert werden, wobei die Ausführungsumgebung bzw. der Programmcode vorzugsweise Turing-vollständig sind. Der Programmcode wird vorzugsweise durch die Infrastruktur des verteilten Datenbanksystems ausgeführt [4][5]. Dabei wird zum Beispiel eine virtuelle Maschine durch die Infrastruktur des verteilten Datenbanksystems realisiert.
-
Unter einem "Smart Contract" kann im Zusammenhang mit der Erfindung beispielsweise ein ausführbarer Programmcode verstanden werden [4][5] (siehe insbesondere Definition "Programmcode"). Der Smart Contract ist vorzugsweise in einer Transaktion eines verteilten Datenbanksystems (z. B. eine Blockkette) gespeichert, beispielsweise in einem Datenblock des verteilten Datenbanksystems. Beispielsweise kann der Smart Contract auf die gleiche Weise ausgeführt werden, wie dies bei der Definition von "Programmcode", insbesondere im Zusammenhang mit der Erfindung, erläutert ist.
-
Unter "Proof-of-Work" oder "Proof-of-Work-Nachweis" kann im Zusammenhang mit der Erfindung beispielsweise ein Lösen einer rechenintensiven Aufgabe verstanden werden, die insbesondere abhängig vom Datenblock-Inhalt/Inhalt einer bestimmten Transaktion zu lösen ist [1] [4] [5]. Eine solche rechenintensive Aufgabe wird beispielsweise auch als kryptographisches Puzzle bezeichnet.
-
Unter einem "verteilten Datenbanksystem", das beispielsweise auch als verteilte Datenbank bezeichnet werden kann, kann im Zusammenhang mit der Erfindung beispielsweise eine dezentral verteilte Datenbank, eine Blockkette (engl. Blockchain), ein distributed Ledger, ein verteiltes Speichersystem, ein distributed ledger technology (DLT) based system (DLTS), ein revisionssicheres Datenbanksystem, eine Cloud, ein Cloud-Service, eine Blockkette in einer Cloud oder eine Peer-to-Peer-Datenbank verstanden werden. Auch können beispielsweise unterschiedliche Implementierungen einer Blockkette oder eines DLTS verwendet werden, wie z. B. eine Blockkette oder ein DLTS, die mittels eines Directed Acylic Graph (DAG), eines kryptographischen Puzzles, einem Hashgraph oder eine Kombination aus den genannten Implementierungsvarianten [6][7]. Auch können beispielsweise unterschiedliche Konsensregeln bzw. Konsensusverfahren (engl. consensus algorithms) implementiert werden. Dies kann beispielsweise ein Konsensusverfahren mittels eines kryptographischen Puzzles, Gossip about Gossip, Virtual Voting oder eine Kombination der genannten Verfahren sein (z. B. Gossip about Gossip kombiniert mit Virtual Voting) [6][7]. Wird beispielsweise eine Blockkette verwendet, so kann diese insbesondere mittels einer Bitcoin-basierten Realisierung oder einer Ethereum-basierten Realisierung umgesetzt werden [1][4][5]. Unter einem "verteilten Datenbanksystem" kann beispielsweise auch ein verteiltes Datenbanksystem verstanden werden, von dem zumindest ein Teil seiner Knoten und/oder Geräte und/oder Infrastruktur durch eine Cloud realisiert sind. Beispielsweise sind die entsprechenden Komponenten als Knoten/Geräte in der Cloud (z. B. als virtueller Knoten in einer virtuellen Maschine) realisiert. Dies kann beispielsweise mittels VM-Ware, Amazon Web Services oder Microsoft Azure erfolgen. Aufgrund der hohen Flexibilität der erläuterten Implementierungsvarianten können insbesondere auch Teilaspekte der genannten Implementierungsvarianten miteinander kombiniert werden, indem z. B. ein Hashgraph als Blockkette verwendet wird, wobei die Blockkette selbst z. B. auch blocklos sein kann.
-
Wird beispielsweise ein Directed Acylic Graph (DAG) verwendet (z. B. IOTA oder Tangle), sind insbesondere Transaktionen oder Blöcke oder Knoten des Graphen miteinander über gerichtete Kanten miteinander verbunden. Dies bedeutet insbesondere, dass (alle) Kanten (immer) die gleiche Richtung haben, ähnlich wie dies z. B. bei Zeit ist. Mit anderen Worten ist es insbesondere nicht möglich, rückwärts (also entgegen der gemeinsamen gleichen Richtung) die Transaktionen oder die Blöcke oder die Knoten des Graphen anzulaufen bzw. anzuspringen. Azyklisch bedeutet dabei insbesondere, dass es keine Schleifen bei einem Durchlaufen des Graphen gibt.
-
Bei dem verteilten Datenbanksystem kann es sich beispielsweise um ein öffentliches verteiltes Datenbanksystem (z. B. eine öffentliche Blockkette) oder ein geschlossenes (oder privates) verteiltes Datenbanksystem (z. B. eine private Blockkette) handeln.
-
Handelt es sich beispielsweise um ein öffentliches verteiltes Datenbanksystem, bedeutet dies, dass neue Knoten und/oder Geräte ohne Berechtigungsnachweise oder ohne Authentifizierung oder ohne Anmeldeinformationen oder ohne Credentials dem verteilten Datenbanksystem beitreten können bzw. von diesem akzeptiert werden. Insbesondere können in einem solchen Fall die Betreiber der Knoten und/oder Geräte anonym bleiben.
-
Handelt es sich bei dem verteilten Datenbanksystem beispielsweise um ein geschlossenes verteiltes Datenbanksystem, benötigen neue Knoten und/oder Geräte beispielsweise einen gültigen Berechtigungsnachweis und/oder gültige Authentifizierungsinformationen und/oder gültige Credentials und/oder gültige Anmeldeinformationen, um dem verteilten Datenbanksystem beitreten können bzw. von diesem akzeptiert zu werden.
-
Bei einem verteilten Datenbanksystem kann es sich beispielsweise auch um ein verteiltes Kommunikationssystem zum Datenaustausch handeln. Dies kann beispielsweise ein Netzwerk oder ein Peer-2-Peer Netzwerk sein.
-
Unter "Datenblock", der insbesondere je nach Kontext und Realisierung auch als "Glied" oder "Block" bezeichnet sein kann, kann im Zusammenhang mit der Erfindung beispielsweise ein Datenblock eines verteilten Datenbanksystems (z. B. eine Blockkette oder eine Peer-to-Peer-Datenbank) verstanden werden, die insbesondere als Datenstruktur realisiert ist und vorzugsweise jeweils eine der Transaktionen oder mehrere der Transaktionen umfasst. Bei einer Implementierung kann beispielsweise die Datenbank (oder das Datenbanksystem) ein DLT basiertes System (DLTS) oder eine Blockkette sein und ein Datenblock ein Block der Blockkette oder des DLTS. Ein Datenblock kann beispielsweise Angaben zur Größe (Datengröße in Byte) des Datenblocks, einen Datenblock-Header (engl. Block-header), einen Transaktionszähler und eine oder mehrere Transaktionen umfassen [1]. Der Datenblock-Header kann beispielsweise eine Version, eine Verkettungsprüfsumme, eine Datenblockprüfsumme, einen Zeitstempel, einen Proof-of-Work-Nachweis und eine Nonce (Einmalwert, Zufallswert oder Zähler, der für den Proof-of-Work-Nachweis verwendet wird) umfassen [1][4][5]. Bei einem Datenblock kann es sich beispielsweise auch nur um einen bestimmten Speicherbereich oder Adressbereich der Gesamtdaten handeln, die in dem verteilten Datenbanksystem gespeichert sind. Damit lassen sich beispielsweise blocklose (engl. blockless) verteilte Datenbanksysteme, wie z. B. die IoT Chain (ITC), IOTA, und Byteball, realisieren. Hierbei werden insbesondere die Funktionalitäten der Blöcke einer Blockkette und der Transaktionen miteinander derart kombiniert, dass z. B. die Transaktionen selbst die Sequenz oder Kette von Transaktionen (des verteilten Datenbanksystems) absichern (also insbesondere sicherheitsgeschützt gespeichert werden). Hierzu können beispielsweise mit einer Verkettungsprüfsumme die Transaktionen selbst miteinander verkettet werden, indem vorzugsweise eine separate Prüfsumme oder die Transaktionsprüfsumme einer oder mehrerer Transaktionen als Verkettungsprüfsumme dient, die beim Speichern einer neuen Transaktion in dem verteilten Datenbanksystem in der entsprechenden neuen Transaktion mit gespeichert wird. In einer solchen Ausführungsform kann ein Datenblock beispielsweise auch eine oder mehrere Transaktionen umfassen, wobei im einfachsten Fall beispielsweise ein Datenblock einer Transaktion entspricht.
-
Unter "Nonce" kann im Zusammenhang mit der Erfindung beispielsweise eine kryptographische Nonce verstanden werden (Abkürzung für: "used only once"[2] oder "number used once"[3]). Insbesondere bezeichnet eine Nonce einzelne Zahlen- oder eine Buchstabenkombination, die vorzugsweise ein einziges Mal in dem jeweiligen Kontext (z. B. Transaktion, Datenübertragung) verwendet wird.
-
Unter "vorhergehende Datenblöcke eines (bestimmten) Datenblockes des verteilten Datenbanksystems" kann im Zusammenhang mit der Erfindung beispielsweise der Datenblock des verteilten Datenbanksystems verstanden werden, der insbesondere einem (bestimmten) Datenblock direkt vorhergeht. Alternativ können unter "vorhergehende Datenblöcke eines (bestimmten) Datenblockes des verteilten Datenbanksystems" insbesondere auch alle Datenblöcke des verteilten Datenbanksystems verstanden werden, die dem bestimmten Datenblock vorhergehen. Hierdurch kann beispielsweise die Verkettungsprüfsumme oder die Transaktionsprüfsumme insbesondere nur über das dem bestimmten Datenblock direkt vorhergehenden Datenblock (bzw. deren Transaktionen) oder über alle dem ersten Datenblock vorhergehenden Datenblöcke (bzw. deren Transaktionen) gebildet werden.
-
Unter einem "Blockketten-Knoten", "Knoten", "Knoten eines verteilten Datenbanksystems", "Knoteneinrichtung" und dergleichen, können im Zusammenhang mit der Erfindung beispielsweise Geräte (z. B. Feldgeräte, Mobiltelefone), Rechner, Smart-Phones, Clients oder Teilnehmer verstanden werden, die Operationen (mit) dem verteilten Datenbanksystem (z. B. eine Blockkette) durchführen [1][4][5]. Solche Knoten können beispielsweise Transaktionen eines verteilten Datenbanksystems bzw. deren Datenblöcke ausführen oder neue Datenblöcke mit neuen Transaktionen in das verteilte Datenbanksystem mittels neuer Datenblöcke einfügen bzw. verketten. Insbesondere kann dieses Validieren und/oder Verketten durch einen vertrauenswürdigen Knoten (z. B. einem Mining Node) oder ausschließlich durch vertrauenswürdige Knoten erfolgen. Bei einem vertrauenswürdigen Knoten handelt es sich beispielsweise um einen Knoten, der über zusätzliche Sicherheitsmaßnahmen verfügt (z. B. Firewalls, Zugangsbeschränkungen zum Knoten oder Ähnliches), um eine Manipulation des Knotens zu verhindern. Alternativ oder zusätzlich kann beispielsweise ein vertrauenswürdiger Knoten beim Verketten eines neuen Datenblocks mit dem verteilten Datenbanksystem, eine Knotenprüfsumme (z. B. eine digitale Signatur oder ein Zertifikat) in dem neuen Datenblock speichern. Damit kann insbesondere ein Nachweis bereitgestellt werden, der angibt, dass der entsprechende Datenblock von einem bestimmten Knoten eingefügt wurde bzw. seine Herkunft angibt. Bei den Geräten (z. B. dem entsprechenden Gerät) handelt es sich beispielsweise um Geräte eines technischen Systems und/oder industriellen Anlage und/oder eines Automatisierungsnetzes und/oder einer Fertigungsanlage, die insbesondere auch ein Knoten des verteilten Datenbanksystems sind. Dabei können die Geräte beispielsweise Feldgeräte sein oder Geräte im Internet der Dinge sein, die insbesondere auch ein Knoten des verteilten Datenbanksystems sind. Knoten können beispielsweise auch zumindest einen Prozessor umfassen, um z. B. ihre computerimplementierte Funktionalität auszuführen.
-
Unter einem "Blockketten-Orakel" und dergleichen können im Zusammenhang mit der Erfindung beispielsweise Knoten, Geräte oder Rechner verstanden werden, die z. B. über ein Sicherheitsmodul verfügen, das beispielsweise mittels Software-Schutzmechanismen (z. B. kryptographische Verfahren), mechanische Schutzeinrichtungen (z. B. ein abschließbares Gehäuse) oder elektrische Schutzeinrichtungen implementiert ist (z. B. Tamper-Schutz oder ein Schutzsystem, das die Daten des Sicherheitsmoduls bei einer unzulässigen Nutzung/Behandlung des Blockketten-Orakels löscht). Das Sicherheitsmodul kann dabei beispielsweise kryptographische Schlüssel umfassen, die für die Berechnung der Prüfsummen (z. B. Transaktionsprüfsummen oder Knotenprüfsummen) notwendig sind.
-
Unter einem "Rechner" oder einem "Gerät" kann im Zusammenhang mit der Erfindung beispielsweise ein Computer(system), ein Client, ein Smart-Phone, ein Gerät oder ein Server, die jeweils außerhalb der Blockkette angeordnet sind bzw. kein Teilnehmer des verteilten Datenbanksystems (z. B. der Blockkette) sind (also keine Operationen mit dem verteilten Datenbanksystem durchführen oder diese nur abfragen, ohne jedoch Transaktionen durchzuführen, Datenblöcke einfügen oder Proof-of-Work-Nachweise berechnen), verstanden werden. Alternativ kann insbesondere auch unter einem Rechner ein Knoten des verteilten Datenbanksystems verstanden werden. Mit anderen Worten kann insbesondere unter einem Gerät ein Knoten des verteilten Datenbanksystems verstanden werden oder auch ein Gerät außerhalb der Blockkette bzw. des verteilten Datenbanksystems verstanden werden. Ein Gerät außerhalb des verteilten Datenbanksystems kann beispielsweise auf die Daten (z. B. Transaktionen oder Steuertransaktionen) des verteilten Datenbanksystems zugreift und/oder von Knoten (z. B. mittels Smart-Contracts und/oder Blockketten-Orakel) angesteuert werden. Wird beispielsweise eine Ansteuerung bzw. Steuerung eines Gerätes (z. B. ein als Knoten ausgebildetes Gerät oder ein Gerät außerhalb des verteilten Datenbanksystems) durch einen Knoten realisiert, kann dies z. B. mittels eines Smart Contracts erfolgen, der insbesondere in einer Transaktion des verteilten Datenbanksystems gespeichert ist.
-
Weitere mögliche Implementierungen der Erfindung umfassen auch nicht explizit genannte Kombinationen von zuvor oder im Folgenden bezüglich der Ausführungsbeispiele beschriebenen Merkmale oder Ausführungsformen. Dabei wird der Fachmann auch Einzelaspekte als Verbesserungen oder Ergänzungen zu der jeweiligen Grundform der Erfindung hinzufügen.
-
Weitere vorteilhafte Ausgestaltungen und Aspekte der Erfindung sind Gegenstand der Unteransprüche sowie der im Folgenden beschriebenen Ausführungsbeispiele der Erfindung. Im Weiteren wird die Erfindung anhand von bevorzugten Ausführungsformen unter Bezugnahme auf die beigelegten Figuren näher erläutert.
- Fig. 1 zeigt eine Pfadermittlungseinrichtung und zwei aus verketten Blöcken gebildete Pfade gemäß einem ersten Ausführungsbeispiel;
- Fig. 2 zeigt ein Pfadermittlungsverfahren gemäß dem ersten Ausführungsbeispiel;
- Fig. 3 zeigt ein verteiltes Datenbanksystem gemäß einer Weiterbildung des ersten Ausführungsbeispiels;
- Fig. 4 zeigt eine Konteneinrichtung des verteilten Datenbanksystems gemäß einer Weiterbildung des ersten Ausführungsbeispiels;
- Fig. 5 zeigt eine Überwachungseinrichtung und ein Transaktionsbuch eines verteilten Datenbanksystems gemäß einem zweiten Ausführungsbeispiel;
- Fig. 6 zeigt ein Überwachungsverfahren gemäß dem zweiten Ausführungsbeispiel; und
- Fig. 7 zeigt Details eines Pfads aus verketten Blöcken gemäß bevorzugten Varianten des ersten und/oder zweiten Ausführungsbeispiels.
-
In den Figuren sind gleiche oder funktionsgleiche Elemente mit denselben Bezugszeichen versehen worden, sofern nichts anderes angegeben ist.
-
Fig. 1 zeigt eine Einrichtung 10 zum Ermitteln einer Konsensversion eines Transaktionsbuchs (6 in Fig. 3) eines verteilten Datenbanksystems (im Weiteren: "Pfadermittlungseinrichtung 10"). Die Pfadermittlungseinrichtung 10 weist eine erste Einheit 101, eine zweite Einheit 102, eine dritte Einheit 103 und eine vierte Einheit 104 auf.
-
Weiterhin zeigt Fig. 1 einen ersten Pfad 4 und einen zweiten Pfad 5 aus verketteten Blöcken 61 bis 67. Der erste Pfad 4 ist eine Abfolge der miteinander verketteten Blöcke 61, 62, 63, 64 und 65. Der zweite Pfad 5 ist eine Abfolge der miteinander verketteten Blöcke 61, 62, 66, 67. Jeder der Blöcke 61 bis 67 umfasst mindestens eine Transaktion (71-79 in Fig. 7) des Transaktionsbuchs (6 in Fig. 3).
-
Das Arbeitsprinzip der Pfadermittlungseinrichtung 10 wird nun anhand von Fig. 2 beschrieben, die ein Verfahren zum Ermitteln der Konsensversion des Transaktionsbuchs (6 in Fig. 3) des verteilten Datenbanksystems (1 in Fig. 3) gemäß dem ersten Ausführungsbeispiel zeigt. Es wird außerdem auch auf Fig. 1 Bezug genommen.
-
In Schritt S101 erhält die erste Einheit 101 die Pfade 4, 5.
-
In Schritt S102 bestimmt die zweite Einheit 102 für jeden der Blöcke 61-67 jedes der Pfade 4, 5 eine jeweilige Blockgüte.
-
In Schritt S103 bestimmt die dritte Einheit 103 die Pfadgüte des Pfads 4 anhand der Blockgüten der Blöcke 61-65 des Pfads 4, und bestimmt die Pfadgüte des Pfads 5 anhand der Blockgüten der Blöcke 61, 62, 66, 67.
-
In Schritt S104 ermittelt die vierte Einheit 104 unter den Pfaden 4, 5 denjenigen Pfad 4, 5, für den die höchste Blockgüte bestimmt wurde, und stellt den einen ermittelten Pfad 4, 5 als die Konsensversion des Transaktionsbuchs (6 in Fig. 3) des verteilten Datenbanksystems (1 in Fig. 3) bereit.
-
Beispielsweise kann die vierte Einheit 104 ein Kennzeichen für den ermittelten Pfad 4, 5 oder den ermittelten Pfad 4, 5 an diejenige Einheit bereitstellen, von der sie die Pfade 4, 5 erhalten hat, etwa an eine Blockbestätigungs-Einheit (203 in Fig. 4) einer Knoteneinrichtung (20 in Fig. 4) des verteilten Datenbanksystems (1 in Fig. 3).
-
Wird die Pfadermittlungseinrichtung 10 zum Ermitteln der Konsensversion des Transaktionsbuchs (6 in Fig. 3) des verteilten Datenbanksystems (1 in Fig. 3) verwendet, kann vorteilhafterweise nicht notwendigerweise der längste Pfad 4, sondern derjenige der Pfade 4, 5 mit der höchsten Pfadgüte ausgewählt werden. Hierdurch kann vorteilhaft ein Anreiz zum schnellen und stabilen Bestätigen von Blöcken 61-67 hoher Güte geschaffen und gleichzeitig kann die Manipulationssicherheit des verteilten Datenbanksystems (1 in Fig. 3) gewahrt werden.
-
Fig. 3 zeigt ein verteiltes Datenbanksystem 1 gemäß einer Weiterbildung des ersten Ausführungsbeispiels.
-
Das verteilte Datenbanksystem 1 umfasst eine Anzahl Knoteneinrichtungen 20-24, die mittels eines Netzwerks 2 miteinander vernetzt sind. Beispielsweise kann jede der Knoteneinrichtungen 20-24 Transaktionen und/oder Blöcke in dem verteilten Datenbanksystem 1 derart bereitstellen, dass mehrere, bevorzugt alle, der Knoteneinrichtungen 20-24 diese auf direktem, indirekten Wege oder mittels Peer-to-Peer-Kommunikation empfangen.
-
Das verteilte Datenbanksystem 1 speichert ein aus einer Anzahl verketteter Blöcke 61-65 gebildetes Transaktionsbuch 6.
-
Genauer speichert eine jeweilige Knoteneinrichtung 20-24 eine jeweilige von ihr als Konsensversion betrachtete Repräsentation des Transaktionsbuchs 6, und eine Konsensregel des verteilten Datenbanksystems 1, die von den Knoteneinrichtungen 20-24 implementiert wird, sorgt dafür, dass in einer Mehrzahl der und bevorzugt in allen der Knoteneinrichtungen 20-24 die Repräsentation des Transaktionsbuchs 6 gespeichert ist.
-
Fig. 4 zeigt Details der Knoteneinrichtung 20 des verteilten Datenbanksystems 1. Es wird weiterhin auch auf Fig. 3 und Fig. 1 Bezug genommen.
-
Die Knoteneinrichtung 20 weist eine Speichereinheit 201 auf. In der Speichereinheit 201 sind die Anzahl Pfade 3, 4 aus den verketteten Blöcken 61-67 gespeichert. Einer der Pfade oder ein Abschnitt davon, beispielsweise ein aus den Blöcken 61, 62 gebildeter Pfadabschnitt, wird von der Knoteneinrichtung 20 als Konsensversion des Transaktionsbuchs 6 behandelt. Somit ist in der Speichereinheit 201 der jeweiligen Knoteneinrichtung 20-24 insbesondere eine vollständige Instanz des Transaktionsbuchs 6 des verteilten Datenbanksystems 1 gespeichert.
-
Die Knoteneinrichtung 20 weist ferner eine Blockbildungs-Einheit 202 auf. Die Blockbildungs-Einheit 202 empfängt eine Anzahl in dem verteilten Datenbanksystem 1 bereitgestellte unbestätigte Transaktionen, bildet aus diesen gemäß der Konsensregel des verteilten Datenbanksystems 1 einen unbestätigten Block (nicht gezeigt), der den letzten Block 62 der in der Speichereinheit 201 gespeicherten Konsensversion des Transaktionsbuchs 6 referenziert, und stellt diesen in dem verteilten Datenbanksystem 1 bereit. Außerdem fügt die Blockbildungs-Einheit 202 den von ihr gebildeten unbestätigten Block an die in der Speichereinheit 201 gespeicherte Konsensversion des Transaktionsbuchs 6 an, wodurch dieser zu dem neuen letzten Block 63 der Konsensversion des Transaktionsbuchs 6 wird.
-
Die Knoteneinrichtung 20 weist ferner eine Blockbestätigungs-Einheit 203 auf. Die Blockbestätigungs-Einheit 203 empfängt einen von einer anderen Knoteneinrichtung 21-24 in dem verteilten Datenbanksystem 1 bereitgestellten unbestätigten Block. Die Blockbestätigungs-Einheit 203 prüft den empfangenen unbestätigten Block gemäß der Konsensregel des verteilten Datenbanksystems 1. Insbesondere prüft die Blockbestätigungs-Einheit 203, welchen der Blöcke 61-63 der unbestätigte Block referenziert. Referenziert der unbestätigte Block keinen der Blöcke 61-63, wird er verworfen. Andernfalls wird der empfangene unbestätigte Block an den von ihn referenzierten Block 61-63 angefügt. Hierbei kann es ggf. zur Verzweigung der Konsensversion des Transaktionsbuchs 6 in eine Anzahl Pfade 4, 5 kommen.
-
Angenommen, die Blockbestätigungs-Einheit 203 empfängt, nachdem die Blockbildungs-Einheit 202 den Block 63 an die Instanz des Transaktionsbuchs 6 angefügt hat, welche durch den Pfadabschnitt aus den Blöcken 61, 62, 63 des Pfads 4 repräsentiert wird, in dieser zeitlichen Reihenfolge die weiteren Blöcke 64, 66, 65 und 67. In diesem Fall fügt die Blockbestätigungs-Einheit 203 den Block 64, der den Block 63 referenziert, an den Block 63 des Pfads 4 an. Anschließend fügt die Blockbestätigungs-Einheit 203 den Block 66 an den Block 62 an, wobei der neue Pfad 5 entsteht. Sodann fügt die Blockbestätigungs-Einheit 203 den Block 65 an den Pfad 4 an und fügt den Block 67 an den Pfad 5 an. Fraglich ist nun, welcher der Pfade 4 oder 5 nun als die Konsensversion des Transaktionsbuchs 6 behandelt werden soll.
-
Die Blockbestätigungs-Einheit 203 umfasst die Pfadermittlungseinrichtung 10 gemäß einer Weiterbildung des ersten Ausführungsbeispiels, welche neben der ersten Einheit 101, zweiten Einheit 102, dritten Einheit 103 und vierten Einheit 104 optional die fünfte Einheit 105 aufweisen kann.
-
Die Blockbestätigungs-Einheit 203 nutzt die Pfadermittlungseinrichtung 10, um unter der Anzahl in der Speichereinheit 201 gespeicherter Pfade 4, 5 denjenigen Pfad 4, 5 zu ermitteln, den sie als die Konsensversion des Transaktionsbuchs 6 behandelt.
-
Beispielsweise kann die Pfadermittlungs-Einrichtung 10 den Pfad 4 auswählen, sofern alle der Blöcke 61-67 dieselbe Güte aufweisen, da in diesem Falle Pfad 4 der längere unter den Pfaden 4, 5 ist. Anders gesagt kann die von der Pfadermittlungs-Einrichtung 10 ermittelte Pfadgüte eines jeweiligen der Pfade 4, 5 von dessen Länge, das heißt von der Anzahl Blöcke 61-65 bzw. 61, 62, 66, 67 des jeweiligen Pfads 4, 5 abhängen.
-
Sofern jedoch die Blöcke 61-67 unterschiedliche Blockgüten aufweisen, sind Fälle denkbar, in denen der Pfad 5 ausgewählt wird, wenn eine Pfadgüte des Pfads 4 selbst unter Berücksichtigung der höheren Länge des Pfads 4 immer noch niedriger ist als eine Pfadgüte des kürzeren Pfads 5.
-
Wird nun beispielsweise im Rahmen eines Lesezugriffs auf das verteilte Datenbanksystem 1 aus der Speichereinheit 201 ein Abschnitt des Transaktionsbuchs 6 des verteilten Datenbanksystems 1 abgerufen, gibt die Speichereinheit 201 den abgerufenen Abschnitt desjenigen der Pfade 4, 5 aus, der von der Pfadbestimmungs-Einrichtung 10 als die Konsensversion des Transaktionsbuchs ermittelt und bereitgestellt worden ist.
-
Die Struktur der Knoteneinrichtungen 21-24 des Datenbanksystems 1 kann der Struktur der Knoteneinrichtung 20 entsprechen und wird daher nicht erneut beschrieben.
-
In dem beschriebenen Datenbanksystem 1 gemäß der Weiterbildung kann vorteilhaft verhindert werden, dass eine der Knoteneinrichtungen 20-24 Blöcke geringer Güte in schnellerer Abfolge bilden kann, als die anderen Knoteneinrichtungen 20-24 Blöcke von höherer Güte als der geringen Güte bilden. So kann verhindert werden, dass die eine der Knoteneinrichtungen 20-24 den Mehrheitskonsens in dem verteilten Datenbanksystems 1 zu ihren Gunsten manipulieren kann. Außerdem kann das Bilden von Blöcken mit der höheren Güte dadurch honoriert werden, dass solche Blöcke mit höherer Wahrscheinlichkeit Teil der Konsensversion des Transaktionsbuchs 6 werden.
-
Die Pfadermittlungseinrichtung 10 der Blockbestätigungs-Einheit 203 aus Fig. 4 kann optional die fünfte Einheit 105 aufweisen. Die fünfte Einheit 105 ist dazu eingerichtet, einen Pfad 4, 5 aus der Anzahl von Pfaden 4, 5, die in der Speichereinheit 201 gespeichert sind, unter einer der folgenden Bedingungen zu löschen: mindestens einer der Anzahl Blöcke 61-67 des Pfads 4, 5 weist eine Güte auf, die geringer als eine erste Schwelle ist, und/oder mindestens einer der Anzahl Pfade 4, 5 weist eine Pfadgüte auf, die geringer als eine zweite Schwelle ist.
-
Auf diese Weise kann ein Pfad 4, 5, der einen grob missbräuchlichen Block von zu geringer Güte umfasst und/oder ein Pfad 4, 5, der eine zu geringe relative oder absolute Güte aufweist, aus dem Mehrheitskonsens ausgeschlossen werden.
-
Fig. 5 zeigt eine Vorrichtung 30 zum Überwachen eines verteilten Datenbanksystems (im Weiteren als "Überwachungsvorrichtung 30" bezeichnet) gemäß einem zweiten Ausführungsbeispiel. Die Überwachungsvorrichtung 30 umfasst eine erste Einheit 301, eine zweite Einheit 302, eine dritte Einheit 303 und eine sechste Einheit 306.
-
Weiterhin zeigt Fig. 5 das Transaktionsbuch 6, welches eine Abfolge von verketten Blöcken 61 bis 65 umfasst und somit gleichartig strukturiert ist wie der jeweilige Pfad 4, 5 (Fig. 1), die für das erste Ausführungsbeispiel beschrieben wurde.
-
Das Arbeitsprinzip der Überwachungsvorrichtung 10 wird anhand von Fig. 6 beschreiben, die ein Verfahren zum Überwachen eines verteilten Datenbanksystems gemäß dem zweiten Ausführungsbeispiel zeigt, sowie weiterhin unter Bezugnahme auch auf Fig. 5.
-
In Schritt S301 erhält die erste Einheit 301 das Transaktionsbuch 6.
-
In Schritt S302 bestimmt die zweite Einheit 302 für jeden der Blöcke 61-65 eine Blockgüte.
-
In Schritt S303 bestimmt die dritte Einheit 303 die Pfadgüte des Transaktionsbuchs 6 anhand der Blockgüten der Blöcke 61-65.
-
Es sei angemerkt, dass die erste Einheit 301, die zweite Einheit 302 und die dritte Einheit 303 der Überwachungsvorrichtung 30 gemäß dem zweiten Ausführungsbeispiel funktional der ersten Einheit 101, der zweiten Einheit 301 bzw. der dritten Einheit 103 der Pfadermittlungseinrichtung 10 (Fig. 1) gemäß dem ersten Ausführungsbeispiel entsprechen.
-
In Schritt S306 bestimmt die sechste Einheit 306 in Abhängigkeit von den bestimmten Blockgüten und/oder der bestimmten Pfadgüte des Transaktionsbuchs 6, ob eine Knoteneinrichtung (20-24 in Fig. 3) des verteilten Datenbanksystems (Fig. 1), in welchem das Transaktionsbuch 6 gespeichert ist, missbräuchlich betrieben wird. Ist dies der Fall, gibt die sechste Einheit 306 eine entsprechende Meldung aus.
-
Gemäß einer Weiterbildung wird die Überwachungsvorrichtung 30 aus Fig. 5 mit dem verteilten Datenbanksystems 1 aus Fig. 3 kombiniert. Es wird auf Fig. 5 und Fig. 3 Bezug genommen. Die Überwachungsvorrichtung 30 kann als separate Einheit, als Teil des verteilten Datenbanksystems 1, als zu dem verteilten Datenbanksystem 1 externe und kommunikativ mit diesem gekoppelte Einheit, oder als Teil einer oder mehrerer der Knoteneinrichtungen 20-24 bereitgestellt sein.
-
Die erste Einheit 301 kann das Transaktionsbuch 6 durch Abfragen der Speichereinheit (201 in Fig. 4) einer oder mehrerer der Knoteneinrichtungen 20-24 erhalten.
-
Insbesondere kann die sechste Einheit 306 bestimmen, dass mindestens eine der Konteneinrichtungen 20-24 missbräuchlich betrieben wird, wenn eine der Blockgüten, die von der zweiten Einheit 302 bestimmt werden, unter einer Schwelle liegt. Die Schwelle kann eine vordefinierte absolute Schwelle oder ein vordefinierter Bruchteil eines Mittelwerts der ermittelten Blockgüten des Transaktionsbuchs 6 sein.
-
Insbesondere kann die sechste Einheit 306 bestimmen, dass mindestens eine der Knoteneinrichtungen 20-24 missbräuchlich betrieben wird, wenn die ermittelte Pfadgüte des Transaktionsbuchs 6 unter einer vordefinierten absoluten Schwelle liegt. Jede der genannten Bedingungen legt den Verdacht nahe, dass mindestens diejenige der Knoteneinrichtungen 20-24, die den oder die Blöcke 61-65 mit geringer Blockgüte erstellt hat, missbräuchlich betrieben wird, und dass möglicherweise auch weitere der Knoteneinrichtungen 20-24, die den fraglichen Block 61-65 bestätigt und in ihre jeweilige Konsensversion des Transaktionsbuch 6 aufgenommen haben, missbräuchlich und/oder fehlerhaft betrieben werden.
-
Die in diesem Fall ausgegebenen Meldung der Überwachungsvorrichtung 30 kann beispielsweise im Rahmen eines Intrusion Detection Systems (IDS) genutzt werden, um ein automatisiertes Abschalten der missbräuchlich betriebenen der Knoteneinrichtungen 20-24 zu veranlassen, und/oder um einen Betreiber des verteilten Datenbanksystems 1 über einen notwendigen Audit des verteilten Datenbanksystems 1 zu informieren.
-
Fig. 7 zeigt Details eines Pfads 7 aus verketten Blöcken 61-63 gemäß bevorzugten Varianten des ersten und/oder zweiten Ausführungsbeispiels. Die Beschreibung von Fig. 7 erfolgt unter Rückbezug auf die Figuren 3, 4 und 5.
-
Der in Fig. 7 gezeigte Pfad 7 ist aus den Blöcken 61, 62 und 63 gebildet. Es kann sich bei dem Pfad 7 um einen der in der Speichereinheit 201 eines Knotens 20 des verteilten Datenbanksystems 1 gespeicherten Pfade handeln und/oder um das von der Überwachungsvorrichtung 30 empfangene Transaktionsbuch 6.
-
Die im Folgenden beschriebenen Vorgänge des Ermittelns einer Block- und/oder Pfadgüte können sich auf Funktionalität der zweiten Einheit 102 der Pfadermittlungseinrichtung 10 gemäß dem ersten Ausführungsbeispiel und/oder der zweiten Einheit 302 der Überwachungsvorrichtung 30 gemäß dem zweiten Ausführungsbeispiel beziehen.
-
Ein jeweiliger Block 61, 62, 63 des Pfads 7 umfasst einen Nutzdatenabschnitt, der eine Anzahl von Transaktionen 71-73, 74-76, 77-79 umfasst, sowie einen Kopfdatenabschnitt, der insbesondere einen Datenblock-Hashwert 614, 624, 634, einen Verkettungs-Hashwert 612, 622, 632 und einen Nachweiswert 611, 621, 631 und optional einen Zeitstempel 613, 623, 633 umfasst.
-
Die Transaktionen 71-79 umfassen jeweils Nutzdaten des verteilten Datenbanksystems 1. Im Speziellen kann eine jeweilige Transaktion 71-79 Daten und/oder Programmcode (sog. Smart Contracts) umfassen, welche einen Übergang von einem von dem Zustand des verteilten Datenbanksystems 1 vor dem Bestätigen der Transaktion 71-79 in einen Zustand des verteilten Datenbanksystems 1 nach dem Bestätigen der Transaktion 71-79 beschreiben. Durch Nachverfolgen des Pfads 7 und Nachvollziehen der einzelnen Transaktionen 71-79 kann der von dem Pfad 7 beschriebene Zustand des verteilten Datenbanksystems 1 zu jedem aktuellen und vergangenen Zeitpunkt transparent nachvollzogen werden.
-
Der jeweilige Datenblock-Hashwert 614, 624, 634 ist ein kryptographischer Hashwert, der die Transaktionen 71-73, 74-76, 77-79 des jeweiligen Blocks 61, 62, 63 gegen Manipulationen schützt. Insbesondere kann der Datenblock-Hashwert 614, 624, 634 ein Wurzelwert eines Merkle- oder Patricia-Hashbaums sein.
-
Der jeweilige Zeitstempel 613, 623, 633 ist ein optionales Merkmal und kann den Zeitpunkt (Datum und Uhrzeit) bezeichnen, zu dem der entsprechende Block 61, 62, 63 gebildet wurde.
-
Der jeweilige Verkettungs-Hashwert 612, 622, 632 ist ein Hashwert des jeweils vorangehenden Blocks 61, 62. Insbesondere ist der Verkettungs-Hashwerkt 622 ein Hashwert des gesamten Blocks 61. Der Verkettungs-Hashwert 632 ist ein Hashwert des gesamten Blocks 62. Der jeweilige Verkettungs-Hashwert 612, 622, 632 kann die Reihenfolge der Verkettung der Blöcke 61, 62, 63 definieren sowie den Pfad 7 gegen Manipulationen sichern. Würde etwa die Transaktion 71 nachträglich manipuliert, würde dadurch nicht nur der Datenblock-Hashwert 614 invalidiert, sondern auch der Verkettungs-Hashwerte 622 und jeder nachfolgende Verkettungs-Hashwert 632.
-
Der jeweilige Nachweiswert 611, 621, 631 ist ein Wert, der dazu dient, ein berechtigtes Interesse der Konteneinrichtung 20-24, die den jeweiligen Block 61, 62, 63 gebildet hat, an der Aufnahme des Blocks 61, 62, 63 in das Transaktionsbuch 6 des verteilten Datenbanksystems 1 zu dokumentieren. Der Nachweiswert 611, 621, 631 ist insbesondere derart eingerichtet, dass er auf nachprüfbare Weise eine Menge von durch die Blockbildungs-Einrichtung 202 (Fig. 4) des betreffenden Knotens 20-24 aufgewandter Rechenleistung (sog. Proof-of-Work), eine für eine bestimmte Dauer vorgehaltene Menge an Kryptotoken (sog. Proof-of-Stake) oder eine Menge anderweitig eingesetzter Ressourcen dokumentiert.
-
Die Anforderung der Konsensregel, dass ein jeweiliger Block 61, 62, 63 einen solchen Nachweiswert 611, 621, 631 enthalten soll, damit er von einer Blockbestätigungs-Einrichtung 203 der jeweiligen Knoteneinrichtung 20-24 des verteilten Datenbanksystems 1 erfolgreich bestätigt werden kann, erschwert bzw. verteuert das Bilden eines korrekten, der Konsensregel entsprechenden Blocks 61-63. Dies kann dem Manipulationsschutz dienen, da ein nachträgliches Verändern des Pfades 7 auch ein erneutes ressourcenaufwändiges Bestimmen veränderter Nachweiswerte 611, 621, 631 erforderlich machen kann.
-
Es folgt eine Beschreibung von Varianten, auf welche Weise die Pfadermittlungseinrichtung 10 eine Blockgüte des jeweiligen Blocks 61-63 und die Pfadgüte des Pfads 7 bestimmen kann.
-
Allgemein ist eine Pfadgüte P des Pfads 7 eine Funktion der Blockgüten B der Blöcke 61, 62, 63 des Pfads 7:
-
Gemäß einer Variante ist die Pfadgüte P eine Summe der Blockgüten B der Blöcke 61, 62, 63 des Pfads 7:
-
Demgemäß kann eine Pfadgüte von der Anzahl der Blöcke des Pfads abhängen. Sind alle Blockgüten Bi zweier Pfade 7 identisch, wird der längere der Pfade 7 als Konsensversion des Transaktionsbuchs 6 ermittelt. Es kann jedoch auch ein kürzerer der Pfade 7 als Konsensversion des Transaktionsbuchs 6 ermittelt werden, wenn die Blöcke 61-63 des kürzeren der Pfade 7 im Mittel eine höhere Blockgüte B aufweisen.
-
Gemäß einer Variante ist die Blockgüte B des jeweiligen Blocks 61, 62, 63 eine Funktion einer Nachweisgüte N des Nachweiswerts 611, 621, 631 des jeweiligen Blocks 61, 62, 63.
-
Insbesondere kann der jeweilige Nachweiswert 611, 621, 631 ein relativer oder Best-Effort-Proof-of-Work sein. Beispielsweise kann eine an den Nachweiswert 611, 621, 631 gestellte Anforderung lauten, dass der Nachweiswert 611, 621, 631 derart zu wählen ist, dass ein Hashwert des gesamten Blocks 61, 62, 63 möglichst klein ist. Aufgrund einer Unumkehrbarkeitseigenschaft kryptographischer Hashfunktionen kann ein entsprechender Nachweiswert 611, 621, 631 nur durch Ausprobieren ermittelt werden, und je mehr Rechenleistung aufgewandt wird, desto besser kann die gestellte Anforderung erfüllt werden.
-
Ein solcher relativer Proof-of-Work 611, 621, 631 kann beispielsweise vorteilhaft sein, wenn gefordert ist, den jeweiligen Block 61, 62, 63 binnen einer vorgegeben Zeitspanne mit Garantie bilden und bestätigen zu können. In diesem Fall kann das Ausprobieren zum Ermitteln des Nachweiswerts 611, 621, 631 abgebrochen werden, wenn die Zeitspanne abgelaufen ist, und der bis dahin ermittelte beste Nachweiswert 611, 621, 631 verwendet worden, wobei sich dann Nachweiswerte 611, 621, 631 von unterschiedlicher Güte ergeben können.
-
Gemäß einer Variante ist die Blockgüte B des jeweiligen Blocks 61, 62, 63 eine Funktion einer Transaktionsgüte T jeder der Transaktionen 71-73, 74-76, 77-79 des Blocks 61, 62, 63.
-
Die Transaktionsgüte T der jeweiligen Transaktion 71-79 kann beispielsweise abhängen von einer Menge von transferierten Kryptotokens, von einer Echtzeitbedürftigkeit der Transaktion 71-79 und/oder von einer Art der Transaktion (beispielsweise Messwert-/Steuerwerttransaktion, Kryptotoken-Transaktion, Smart Contract, Parametrisierungstransaktion etc.). Somit kann einem Block 61-63, der Transaktionen 71-79 umfasst, die in dem verteilten Datenbanksystem 1 mit Priorität zu bestätigen sind, eine höhere Güte zugewiesen werden.
-
Gemäß einer Variante ist die Transaktionsgüte T abhängig von einer rechnerischen Komplexität der Transaktion 71-79.
-
Unter einer "rechnerischen Komplexität" der jeweiligen Transaktion 71-79 kann eine Rechenlast verstanden werden, die die Blockbildungs-Einheit 202 beim Bilden des die Transaktion 71-79 umfassenden Blocks 61-63 aufbringen musste, um die Transaktion 71-79 auf Gültigkeit zu prüfen. Sofern beispielsweise die Transaktion einen Smart Contract enthält oder referenziert, kann diese Rechenlast erheblich sein.
-
Die rechnerische Komplexität der jeweiligen Transaktion 71-79 kann beispielsweise durch Messen der Rechenlast bzw. Ausführungszeit erfasst werden, die die Blockbestätigungseinheit 203 zum Prüfen der Transaktion 71-79 auf Gültigkeit verwendet. Alternativ hierzu kann die rechnerische Komplexität der jeweiligen Transaktion 71-79 auch durch Codeanalyse erfasst werden. Beispielsweise können die von der Transaktion referenzierten Smart Contracts ermittelt werden, deren Ausführungszeiten von vorangegangenen Ausführungen derselben Smart Contracts bekannt sein können, und die bekannten Ausführungszeiten der referenzierten Smart Contracts können aufsummiert werden, um die gesamte zum Prüfen der Transaktion 71-79 auf Gültigkeit aufzubringende Rechenlast zu ermitteln.
-
Besonders vorteilhaft kann die Blockgüte B des jeweiligen Blocks 61, 62, 63 sowohl von der Nachweisgüte N des Nachweiswerts 611, 621, 631 als auch von den rechnerischen Komplexitäten der Transaktionen 71-73, 74-76, 77-79 des Blocks 61, 62, 63 abhängen.
-
Beispielsweise kann eine Konsensregel des verteilten Datenbanksystems 1 derart gestaltet werden, dass ein zum Erstellen eines gültigen, d.h. einer vorgegebenen Mindestgüteanforderung entsprechenden Blocks 61-63 aufzuwendende Rechenlast konstant ist. Auf diese Weise können die zum Aufbringen des Arbeitsnachweises 611, 622 und 631 erforderliche Rechenlast und die zum Prüfen der Transaktionen 71-73, 74-76, 77-79, insbesondere zum Ausführen der entsprechenden Smart Contracts, aufzubringende Rechenlast aufeinander abgestimmt werden.
-
Dadurch kann vorteilhaft einer Situation entgegengewirkt werden, bei welcher eine Konteneinrichtung 20-24 des verteilten Datenbanksystems 1, die eine rechnerisch komplexe Transaktion 71-79 in einen von ihrer Blockbildungseinrichtung 202 zu bildenden Block 61-63 aufnimmt, aufgrund der zum Prüfen der rechnerisch komplexen Transaktion 71-79 erforderliche Rechenlast im Wettbewerb mit den anderen Knoteneinrichtungen 20-24 dadurch benachteiligt ist, dass der von ihr gebildete Block mit der rechnerisch komplexen Transaktion 71-79 wegen der höheren Rechenlast später fertiggestellt wird. Vielmehr kann die Blockbildungseinrichtung 202 ohne Benachteiligung bei der Konsensfindung umso weniger Rechenlast für das Ermitteln des Nachweiswerts 611, 621, 631 aufbringen, je mehr Rechenlast sie für das Prüfen der Transaktionen 71-73, 74-76, 77-79 des Blocks 61-63 aufgewendet hat.
-
Somit kann dafür gesorgt werden, dass das verteilte Datenbanksystem 1 Transaktionen 71-79, die komplexe Smart Contracts umfassen oder referenzieren, zügig und stabil bestätigen kann.
-
Gemäß einer Variante weisen die Transkationen 71-79 jeweils einen Zeitstempel (nicht gezeigt) auf, der einen Zeitpunkt des Erstellens der Transaktion 71-79 und/oder einen Zeitpunkt des Bereitstellens der Transaktion 71-79 an das verteilte Datenbanksystem 1 angibt. Der jeweilige Block 61-63 weist jeweils einen Zeitstempel 613, 623, 633 auf, der einen Zeitpunkt des Bildens des Blocks 61-63 angibt. Die Transaktionsgüte T der jeweiligen Transaktion 71-73, 74-76, 77-79 des jeweiligen Blocks 61-63 ist abhängig von einer zeitlichen Differenz zwischen dem Zeitstempel der Transaktion 71-79 und dem Zeitstempel 613, 623, 633 des Blocks 61-63. Diese zeitliche Differenz kann auch als Zeitstempelgüte C bezeichnet werden.
-
Durch geeignetes Einrichten der Abhängigkeit der Transaktionsgüte T von der zeitlichen Differenz kann beispielsweise ein Anreiz dafür geschaffen werden, eine Transaktion 71-79 möglichst bald in einen zu bildenden Block 61-63 aufzunehmen, und/oder ein Anreiz dafür, eine schon lange auf Aufnahme in einen zu bildenden Block 61-63 wartende Transaktion 71-79 in den zu bildenden Block 61-63 aufzunehmen.
-
Somit können auch rechnerisch wenig komplexe Transaktionen 71-79 zu einer hohen Blockgüte B des Blocks 61-63 beitragen, sofern sie in kurzer Zeit nach ihrem Bereitstellen an das verteilte Datenbanksystem 1 bereits in einen gebildeten Block 61-63 aufgenommen worden sind. Hierdurch kann ein Ausgleich zwischen komplexen und einfachen, aber zeitkritischen Transaktionen 71-79 geschaffen werden.
-
Gemäß einer Variante kann nach Bestimmen der Blockgüte B des jeweiligen Blocks 61-63 eine Verteilung der Transaktionsgüten T der Transaktionen 71-79 analysiert werden. Die Blockgüte B kann gemäß einem Fairness-Kriterium erhöht werden, sofern der Block 61-63 Transaktionen unterschiedlicher Transaktionsgüte und/oder Transaktionen unterschiedlichen Typs umfasst.
-
Anders ausgedrückt kann einerseits das Bilden von Blöcken 61-63 mit besonders hochwertigen Blockgüten honoriert werden. Andererseits kann auch honoriert werden, wenn eine vordefinierte Anzahl der Transaktionsdatensätze 71-73, 74-76, 77-79 des jeweiligen Blocks 61-63 für Transaktionen 71-79 von minderer Transaktionsgüte verwendet wird. Somit kann dafür gesorgt werden, dass auch Transaktionen 71-79 minderer Güte von dem verteilten Datenbanksystem 1 bestätigt werden können. Es kann somit über das Fairness-Kriterium eine adaptive Partitionierung des Transaktionsdurchsatzes des verteilten Datenbanksystems 1 einerseits für hochpriore bzw. hochwertige und andererseits für administrative, niederwertige Transaktionen 71-79 erzielt werden.
-
Gemäß einer Variante ist die Blockgüte B des jeweiligen Blocks 61, 62, 63 abhängig von der Anzahl der Transaktionen 71-73, 74-76, 77-79 des Blocks 61, 62, 63. Beispielsweise kann die Blockgüte B des jeweiligen Blocks 61, 62, 63 als Summe der Transaktionsgüten T der Transaktionen 71-73, 74-76, 77-79 des Blocks 61, 62, 63 ermittelt werden. Hierdurch kann ein Anreiz geschaffen werden, möglichst viele Transaktionen 71-79 in den Block 61, 62, 63 aufzunehmen.
-
Gemäß einer Variante kann die Pfadgüte P des Pfads 7 abhängig von einem statistischen Parameter einer Verteilung der bestimmten Blockgüten B der Blöcke 61-63 des Pfads 7 bestimmt und/oder nach angepasst werden. Beispielsweise könnte in die Bestimmung der Pfadgüte P eine Varianz oder dergleichen der Blockgüten B der Blöcke 61, 62, 63 einfließen.
-
Diesem Vorschlag liegt der Gedanke zugrunde, dass bei einem großen verteilten Datenbanksystem 1 mit einem hohen und diversen Transaktionsdurchsatz sich im Rahmen der Konsensfindung unter Verwendung der vorgeschlagenen Pfadermittlungseinrichtung 10 mit ihren block- und pfadgütenabhängigen Ermittlungskriterien sich in dem Transaktionsbuch 6 des verteilten Datenbanksystems 1 eine im Mittel konstante Blockgüte B einstellen sollte. Weist ein Pfad 7 zu große Schwankungen der Blockgüten B seiner Blöcke 61-63 auf, kann dies ein Hinweis auf Manipulationsversuche sein. Eins solcher Pfad 7 kann vorteilhaft als verdächtig erkannt und aus der Konsensfindung ausgeschlossen bzw. als potentielles Problem an einen Betreiber gemeldet werden.
-
Die beschriebenen Varianten können vom Fachmann einzeln ausgewählt und/oder nach Bedarf miteinander kombiniert werden. Im allgemeinsten Fall kann eine Pfadgüte P und können die Blockgüten B
i des Pfads 7 somit gemäß den Formeln
ermittelt werden.
-
Die Formeln und ihre Parameter zum Ermitteln jeweiliger Pfadgüten P, Blockgüten B, Transaktionsgüten T, Zeitstempelgüten C, Nachweisgüten N und dergleichen (im Weiteren "Gütebestimungsparameter") können in der jeweiligen Pfadermittlungseinrichtung 10 und/oder Überwachungsvorrichtung 30 fest vorgegeben sein.
-
Besonders vorteilhaft können die Gütebestimmungsparameter jedoch in einer Parametrisierungstransaktion 71-79 der Konsensversion des Transaktionsbuchs 6 abgelegt und insbesondere von der Pfadermittlungseinrichtung 10 von dort abgerufen werden.
-
Somit ist es möglich, die Gütebestimmungsparameter im Laufe der Zeit im Abhängigkeit eines Betriebszustands des verteilten Datenbanksystems 1 anzupassen. Eine solche Anpassung kann manuell und/oder automatisch erfolgen. Bei einer automatischen Anpassung kann ein Smart Contract mit Regeln zum Anpassen der Gütebestimmungsparameter in dem Transaktionsbuch 6 des verteilten Datenbanksystems 1 gespeichert sein. Der Smart Contract kann insbesondere Code zum maschinellen Lernen umfassen. Somit könnte eine automatische Anpassung automatisch durch Mehrheitskonsens zwischen den Knoteneinrichtungen 20-24 erfolgen. Somit kann dem verteilten Datenbanksystem 1 die Fähigkeit verliehen werden, Aspekte seiner Konsensregel, insbesondere die Gütebestimmungsparameter, anhand deren Eigenschaften von Pfaden und Blöcken bei der Konsensfindung beurteilt werden, adaptiv an sich ändernde Nutzungsmuster oder sonstige in dem verteilten Datenbanksystem 1 auftretende oder dem verteilten Datenbanksystem 1 beispielsweise über ein Orakel bekannt gemachte Bedingungen anzupassen.
-
Obwohl die vorliegende Erfindung anhand von Ausführungsbeispielen beschrieben wurde, ist sie vielfältig modifizierbar.
-
Zusammenfassend wird eine Pfadgüte eines jeweiligen Pfads aus verketten Blöcken eines verteilten Datenbanksystems anhand einer Blockgüte des jeweiligen Blocks bestimmt. Die bestimmte Pfadgüte wird zum Ermitteln der Konsensversion des Transaktionsbuchs unter mehreren möglichen Pfaden benutzt und/oder zur Überprüfung der Konsensversion des Transaktionsbuchs zum Erkennen von missbräuchlichem Betrieb.
-
Mit der vorgeschlagenen Lösung kann Flexibilität beim Anpassen der Konsensregel eines verteilten Datensystems an gewünschte Eigenschaften wie schnelles Bestätigen umfangreicher oder komplexer Transkationen, hoher und gleichmäßiger Transaktionsdurchsatz, Zeitbeschränkungen beim Bilden von Blöcken und dergleichen erlangt und gleichzeitig ein Missbrauch durch böswillige Knoteneinrichtungen, insbesondere ein Missbrauch der gewonnenen Flexibilität, verhindert werden.
Referenzen
-
- [1] Andreas M. Antonopoulos "Mastering Bitcoin: Unlocking Digital Cryptocurrencies", O'Reilly Media, December 2014
- [2] Roger M. Needham, Michael D. Schroeder "Using encryption for authentication in large networks of computers" ACM: Communications of the ACM. Band 21, Nr. 12 Dezember 1978,
- [3] Ross Anderson "Security Engineering. A Guide to Building Dependable Distributed Systems" Wiley, 2001
- [4] Henning Diedrich "Ethereum: Blockchains, Digital Assets, Smart Contracts, Decentralized Autonomous Organizations", CreateSpace Independent Publishing Platform, 2016
- [5] "The Ethereum Book Project/Mastering Ethereum" https://github.com/ethereumbook/ethereumbook, Stand 5.10.2017
- [6] Leemon Baird "The Swirlds Hashgraph Consensus Algorithm: Fair, Fast, Byzantine Fault Tolerance", Swirlds Tech Report SWIRLDS-TR-2016-01, 31.5.2016
- [7] Leemon Baird "Overview of Swirlds Hashgraph", 31.5.2016
- [8] Blockchain Oracles https://blockchainhub.net/blockchain-oracles/