Die Blockchain enträtseln

Bitcoin und die darunterliegende Blockchain-Technologie haben in letzter Zeit einen enormen Schub erfahren. Immer mehr Online-Anbieter akzeptieren Bitcoin als Zahlungsmittel und immer neue Blockchain-basierende Anwendungen werden vorgestellt. Trotzdem ranken sich diverse Rätsel und Mythen um diese neue Technologie.
Zeit für eine Klärung: Die Blockchain ist eine verteilte Datenbank, welche ihre Informationen in unveränderlichen Datensätzen speichert.
Was heisst das genau? Wie kann das funktionieren?

Bitcoin ist schnell und zuverlässig und funktioniert ohne zentrale Autorität. Die Infrastruktur von Bitcoin nutzt ein Peer-to-Peer-Netzwerk. Die Daten werden auf Tausenden von Peers gespeichert.

Wie kann das in der digitalen Welt funktionieren, in welcher alle Daten problemlos kopiert werden können, in welcher wir aber gleichzeitig mit Latenz-Zeiten im Netzwerk rechnen müssen. Wie können wir einen konsistenten Zustand in diesem verteilten Netzwerk sicherstellen? Konkret: wie können wir sicherstellen, dass der gleiche Betrag nicht doppelt ausgegeben werden kann?

Proof-of-Work

Double spending ist in einer verteilten Buchhaltung ein Problem, weil wir hier die Knoten im System darüber abstimmen lassen, welche Transaktion gültig ist. Wir müssen demnach das Konsens-Protokoll gegen die Gefahr absichern, dass ein Angreifer mit vielen falschen Identitäten (Sybil attack) versucht, eine Mehrheit im System zu erreichen und damit beliebig über die Gültigkeit der Transaktionen bestimmen kann. Die Lösung, welche Bitcoin für dieses Problem gefunden hat, heisst Proof-of-Work (PoW). Die Knoten, die über die Gültigkeit der Transaktionen bestimmen, müssen Arbeit leisten, um an der «Abstimmung» teilnehmen zu können.

Wie wird in Bitcoin abgestimmt? Die Abstimmung erfolgt in der Art und Weise, wie die Blöcke in der Bitcoin-Blockchain erzeugt werden.

Lösung mit Referenzen

Jeder Block hat eine Referenz auf seinen Vorgänger-Block. Alle Blöcke bilden auf diese Weise eine Kette. Im Block selbst werden die Transaktionen gespeichert. Dabei werden nur gültige Transaktionen in den Block aufgenommen. Der Knoten, welcher einen neuen Block erzeugt, kann jeden Versuch, einen Bitcoin ein zweites Mal auszugeben, erkennen und als ungültig verwerfen. Sind nun die Blöcke in einer Kette aufgereiht, ergibt sich eine vollständige Ordnung der Transaktionen. Wird nun noch sichergestellt, dass die Reihenfolge der Blöcke nicht verändert werden kann, ist die Reihenfolge der Transaktionen auch im Zeitverlauf unveränderlich. Genau das wird mit dem Proof-of-Work erreicht: Um einen Block zu erzeugen, muss ein grosser Aufwand an Rechenkapazität geleistet werden. Soll ein grösserer Teil der Blockchain umsortiert werden, wächst dementsprechend der Aufwand ziemlich rasch in eine Grössenordnung, welche jeden Versuch als nutzlos erscheinen lässt.

Vom Nonce zum Hash

Wie sieht das Proof-of-Work in der Blockchain aus? Die Arbeit, die ein Block-Erzeuger (Block-Miner) leisten muss, um einen neuen Block zu finden, besteht darin, aus den Informationen im Block-Kopf einen Hash zu berechnen, der eine bestimmte Form hat. Genauer, der Hash muss mit einer bestimmten Anzahl von Nullen beginnen. Zu diesem Zweck kann der Block-Miner eine der zu verarbeitenden Block-Header-Informationen, das sogenannte Nonce, frei variieren. Die Arbeit besteht also darin, dieses Nonce zu verändern und aus den so geänderten Block-Header-Informationen den Hash zu berechnen. Hat der Hash die geforderte Anzahl Nullen am Anfang, kann der Miner diesen Block mit den gespeicherten Transaktionen im Netzwerk verteilten. Hat der Hash die gewünschte Form nicht, so muss der Miner mit einem geänderten Nonce erneut einen Hash berechnen und so weiter.

Die erforderliche Anzahl Nullen, die sogenannte Schwierigkeit (Difficulty) ist keine fixer Wert. Alle zwei Wochen wird evaluiert, wie gross die Zeitdauer zwischen zwei Blöcken in der Blockchain ist. Fällt dieses Zeitintervall unter 10 Minuten, wird die Schwierigkeit erhöht. Dann müssen die Block-Miner einen Hash berechnen, der mehr Nullen am Anfang aufweist. Auf diese Weise wird sichergestellt, dass das Proof-of-Work nicht zusammenfällt, wenn sich mehr Rechner mit besseren Rechenprozessoren am Netzwerk beteiligen. Dieser Mechanismus zeigt schön, wie sich die Bitcoin-Blockchain selber stabilisiert.

Für weitere Informationen (Transaktionen, Anwendungsfälle etc.)

Kontakt

Dr. Benno Luthiger, ID WCMS, LMS & Mobile Applications, ID Software Services, Informatikdienste

IMG_8209

Posted on
in News, Software, Arbeitsplätze, Speicher, Support Tags: , , , ,

2 comments on «Die Blockchain enträtseln»

  1. Guten Tag Herr Dr. Luthiger,

    mich beschäftigt folgende Frage: Wie stellen die Betreiber des (Bitcoin)systems sicher, dass sich unter der maximalen Anzahl möglicher Hashes, die doch mit der Nonce gegeben ist, auch einer befindet, der der vorgeschrieben Form gerecht wird, also z.B. auch 4 führende Nullen enthält?

    1. Weil die Nonce nicht gegeben, sondern frei gewählt werden kann, stellt sich die Frage nicht in dieser Form. Wesentlich für das Proof-of-Work ist gerade, dass der Miner die Nonce so anpassen kann, dass der Hash aller Daten im Block für eine bestimmte Anzahl Stellen ein Null-Zeichen enthält. Führt die Hash-Berechnung mit einer bestimmten Nonce nicht zur gewünschten Form, muss eine andere ausprobiert werden.
      Die wesentliche Erkenntnis von Nakamoto zur Begründung von Bitcoin lautet, dass die Schwierigkeit mit jeder zusätzlichen Stelle, welche ein Null-Zeichen enthält, exponentiell steigt. Das bedeutet umgekehrt: Es wird sich immer eine Nonce finden lassen, welches zusammen mit den übrigen Informationen ein Hash mit den geforderten Zeichen ergibt. Wird ein Hash mit vielen Null-Stellen verlangt, dann muss sehr lange nach der passenden Nonce gesucht werden.

Leave a Reply to Benno Luthiger Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.