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.)
- Slides (Präsentation vom Do. 31.8.2017)
- Video der Präsentation (Präsentation «Die Blockchain enträtseln» vom Do. 31.8.2017)
Kontakt
Dr. Benno Luthiger, ID WCMS, LMS & Mobile Applications, ID Software Services, Informatikdienste
Posted on
in News, Software, Arbeitsplätze, Speicher, Support