Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Blockchain: Blöcke und Hashketten

Nach dieser Lektion: Ich kann Blöcke so verketten, dass jede Änderung an einem alten Block auffällt.

Lektion, 60 Min.4 BefehleBlockchain-Lab: eine Spielzeugkette in Python zum Lesen, Brechen, Minen und Signieren

Wie fällt eine geänderte Zeile auf?

Eine Blockchain ist eine Kette von Blöcken, in der jeder Block den Hashwert seines Vorgängers enthält. So fällt jede nachträgliche Änderung an einem alten Eintrag auf.

Denken Sie an das Kassenbuch einer Fahrgemeinschaft. Wer eine alte Zeile ändert, soll erwischt werden, auch wenn niemand das Buch bewacht.

Am Ende dieser Lektion

Notiz

Ich kann Blöcke so verketten, dass jede Änderung an einem alten Block auffällt.

Schlüsselwörter

BegriffWas er bedeutet
Hashwertein Fingerabdruck fester Länge, der aus Daten berechnet wird
Blockeine Gruppe von Einträgen mit dem Hashwert des Blocks davor
Verkettungjeder Block enthält den Hashwert seines Vorgängers
BlockchainBlöcke in fester Reihenfolge, durch ihre Hashwerte verkettet
Manipulationeine unerlaubte nachträgliche Änderung von Daten
Prüfungdas Nachrechnen aller Hashwerte und Verweise einer Kette

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Die Ausgabe des Labors ist englisch

Notiz

Die Skripte im Labor geben englische Wörter aus, zum Beispiel block, previous und hash. Das gehört zum Labor und ändert sich nicht. Achten Sie auf die Zahlen und die Anfänge der Hashwerte.

Ein Hashwert ist der Fingerabdruck eines Textes

Der Hashwert ist immer gleich lang, egal wie lang der Text ist. Derselbe Text ergibt immer denselben Hashwert. Ändern Sie nur ein Zeichen, sieht der Hashwert völlig anders aus.

Das Labor hat Python mit hashlib an Bord. Zwei kurze Befehle zeigen es.

Den Hashwert von „Hallo“ berechnen

Befehl
docker exec jupyter python3 -c "print(__import__('hashlib').sha256(b'Hallo').hexdigest())"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Hashwert von „Hallo!“ berechnen

Befehl
docker exec jupyter python3 -c "print(__import__('hashlib').sha256(b'Hallo!').hexdigest())"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was beide Befehle ausgeben

Der erste Befehl gibt 64 Zeichen aus, die mit 753692ec beginnen. Der zweite gibt ebenfalls 64 Zeichen aus, aber sie beginnen mit 357a57fe.

Ein einziges Ausrufezeichen ändert den ganzen Hashwert. Genau darauf baut die Blockchain.

Jeder Block enthält den Hashwert seines Vorgängers

Ein Block hat eine Nummer, seine Einträge und den Hashwert des Blocks davor. Sein eigener Hashwert wird aus all dem berechnet. Der erste Block hat keinen Vorgänger und bekommt dafür nur Nullen.

So hängt jeder Block am Hashwert des vorigen. Die Tabelle zeigt drei Blöcke aus dem Labor.

Drei verkettete Blöcke aus dem Labor

BlockHashwert des Vorgängers (Anfang)Eigener Hashwert (Anfang)
00000000000000e13dc51
1000e13dc510007118fa7
20007118fa7000c5aaf76

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Drei Blöcke im Labor verketten

Befehl
docker exec jupyter python3 steps/link.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was das Skript ausgibt

Das Skript gibt vier Zeilen aus. Die ersten drei beginnen mit block 0, block 1 und block 2, dazu der Anfang des Vorgänger-Hashwerts und der eigene. Sie stimmen mit der Tabelle überein.

Alle eigenen Hashwerte beginnen mit 000. Das ist eine Regel, die das Labor beim Schürfen erzwingt. Die vierte Zeile fasst die Verkettung in einem Satz zusammen.

Eine Änderung zerbricht die Kette

Wer in Block 1 einen Betrag ändert, ändert dessen Hashwert. Der gespeicherte Hashwert passt dann nicht mehr zum Inhalt. Die Prüfung rechnet jeden Block nach und findet den ersten Block, bei dem das nicht stimmt.

Der Hashwert allein reicht nicht aus. Auch der Verweis auf den Vorgänger muss passen.

Eine Kette ändern und prüfen

Befehl
docker exec jupyter python3 steps/tamper.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was die vier Ausgabezeilen sagen

Die erste Zeile endet mit (True, None): gültig, kein schlechter Block. Nach der Änderung steht dort (False, 1): ungültig, Block 1 ist die Stelle.

Selbst ein gefälschter Hashwert hilft nicht, es bleibt (False, 1). Erst wenn Block 1 neu geschürft wird, ist er in Ordnung. Dann lautet die Antwort aber (False, 2), denn Block 2 verweist noch auf den alten Hashwert von Block 1.

Ein häufiger Fehler

Warnung

Viele glauben, eine gültige Kette beweise, dass jeder Eintrag wahr ist. Sie beweist nur, dass seit dem Schreiben nichts verändert wurde. Ob ein Eintrag stimmt, ist eine andere Frage.

Über dieses Lab und seinen Quellcode: Blockchain-Lab: eine Spielzeugkette in Python zum Lesen, Brechen, Minen und Signieren

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.