Blockchain-Lab: eine Spielzeugkette in Python zum Lesen, Brechen, Minen und Signieren
Dieses Lab gibt allen Lernenden ein eigenes JupyterLab mit einer Spielzeug-Blockchain in schlichtem Python, kurz genug, um sie ganz zu lesen: Blöcke, die den Hash des vorigen enthalten, Mining, ein Hauptbuch, das Kontostände aus Zahlungen berechnet, eine Signatur nur aus Hashes und zwei Ketten, die sich nicht einig sind. Sechs kleine Skripte zeigen, was jede Idee tut, jedes Mal gleich.
Es ist ein Spielzeug, das die Ideen vermittelt. Es gibt keine Münze, kein Netzwerk, keinen Markt und keinen Preis, es gibt keine Ratschläge zu Geld, und es ist nicht sicher genug für den echten Einsatz. Es ist auch kein Angriffs-Lab: Jede Kopie hat keinen Weg ins Internet und keinen zu anderen Lernenden, und es wird nichts hineingeladen.
Was Lernende lernen
Wie ein Hash der Fingerabdruck von Daten ist und wie ein Block, der den Hash des vorigen enthält, eine Kette bildet. Sie brechen eine Kette, indem sie einen Betrag ändern, und sehen die Prüfung am geänderten Block scheitern; dann minen sie den Block neu und sehen sie stattdessen am nächsten scheitern. Sie erleben Mining als Ausprobieren, 15 Versuche für eine führende Null und 109028 für vier, die Arbeit wächst also schnell mit der Schwierigkeit. Sie berechnen Kontostände aus Zahlungen und sehen eine Überziehung abgelehnt, prüfen eine Signatur aus Hashes und sehen, wie ein geänderter Buchstabe sie bricht, und entscheiden einen Fork, indem sie der Kette mit mehr Arbeit folgen. Es passt zu Einführungen in IT-Sicherheit, verteilte Systeme und Datenstrukturen; prüfen Sie die genaue Formulierung in der Einheit Ihrer eigenen Prüfungsstelle, hier wird keine zitiert.
Im Browser ausführen
Das Lab startet einen einzigen Dienst, jupyter, der chain.py, ledger.py, lamport.py, ein Start-Notebook und die kurzen Skripte in seinen Arbeitsordner schreibt, ohne etwas herunterzuladen. JupyterLab verlangt kein Token, weil die Tür der Plattform schon weiß, wer es öffnet. Das Terminal neben dem Lab hat kein eigenes Python, es erreicht das des Labs mit docker exec jupyter, gefolgt vom Befehl, der darin laufen soll.
- Container-Seite öffnen. Öffnen Sie in der Leiste „Entwickeln“ und wählen Sie „Einen Container ausführen“. Die Seite kann jeder öffnen, und das Git-Lab und das SQL-Lab starten ohne Konto. Alle anderen Labs brauchen ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und klicken Sie dann auf „Starten“.
- Lab suchen. Die Karte „Beispiel-Labs“ listet alle Beispiele auf. Suchen Sie Blockchain: eine Spielzeugkette in Python.
- Auf „Starten“ klicken. „Starten“ führt das Lab unverändert mit einem einzigen Klick aus. „Zuerst die Datei bearbeiten“ öffnet die Compose-Datei, damit Sie sie vor dem Start ändern können.
- Öffnen. Auf der Seite des Labs hat die Lab-Leiste einen Link namens JupyterLab: Klicken Sie darauf, um JupyterLab im Browser zu öffnen und chain.py im Dateieditor zu lesen. Klicken Sie dann auf „Terminal öffnen“ und tippen Sie docker exec jupyter python3 steps/link.py, um drei Blöcke zu sehen, jeden mit dem Hash des vorigen.
Was Lernende abgeben sollen
Ein eigenes Notebook, das chain.py nutzt, um eine selbst gewählte Frage zu beantworten, zum Beispiel wie die Zahl der Versuche mit der Schwierigkeit wächst, was nötig ist, um einen alten Block zu ändern und die Kette gültig zu halten, oder was mit einem Fork geschieht, wenn eine Seite eine höhere Schwierigkeit hat, heruntergeladen aus JupyterLab mit File, Download. Dazu ein oder zwei Sätze in eigenen Worten, was sie gefunden haben. Nichts wird automatisch bewertet: Der Satz zeigt, ob es verstanden wurde. Für anspruchsvollere Arbeiten lassen Sie erklären, warum eine gültige Kette nicht zeigt, dass jede Zahlung darin wahr ist.
Eine Basis-Lektion zu diesem Lab
Blockchain Basics ist eine kleine Lektion, die in diesem Lab gearbeitet wird. Darin verknüpfen Lernende drei Blöcke, ändern einen Betrag und sehen die Prüfung scheitern, minen einen Block bei vier Schwierigkeiten, berechnen Kontostände und sehen eine Überziehung abgelehnt, signieren eine Nachricht und brechen die Signatur mit einem Buchstaben und entscheiden einen Fork mit der Kette, die mehr Arbeit hat.
Kostenlose persönliche Konten haben sie im Modul Basics, das auf der Startseite liegt, und jede Einrichtung kann sie aus dem Basics-Ordner der Bibliothek kopieren. Sie ist bewusst klein: Sie zeigt einer Lehrkraft, was eine im Lab gearbeitete Lektion ist, und das Lab leistet den Rest. Kopieren Sie sie in ein eigenes Modul, um sie zu ändern.
Der Code auf GitHub
Die Compose-Datei hat kein Dockerfile: Sie startet ein einziges öffentliches Standard-Image, das scipy-notebook der Jupyter Docker Stacks, auf ein datiertes Tag festgelegt, mit eigenem unprivilegiertem Konto und 512 MB Speicher, und das Spielzeug nutzt nur die Standardbibliothek von Python. Das Image steht unter BSD-3-Clause und wird von uns nicht verteilt. Die Datei schreibt beim Start jede Python-Datei aus festem Text, das Mining beginnt immer bei Nonce 0 und die Signaturschlüssel stammen aus einem festen Startwert, daher gibt jede Kopie dasselbe aus und nichts wird heruntergeladen. Die Grenzen sind ehrlich: Es ist ein einzelner Rechner und kein Netzwerk, ein Block enthält eine kurze Liste von Zahlungen, ein Signaturschlüssel signiert nur eine Nachricht, und beim Stoppen des Labs bleibt nichts erhalten, weshalb Lernende ihr Notebook vorher herunterladen.
Als Aufgabe stellen
Schreiben Sie in die Aufgabe, was abzugeben ist.
- Lab erstellen. Fügen Sie in Ihrem Modul eine Aufgabe hinzu und wählen Sie die Karte „Container-Lab“, dann „In einem GitHub-Repository“. Geben Sie https://github.com/mitsurutech/lab-blockchain-lab mit dem Branch main an. Die Compose-Datei ist standardmäßig compose.yaml. Forken Sie das Repository zuerst, wenn Sie es ändern möchten, zum Beispiel um die Spielzeugkette zu ändern.
- Veröffentlichen und ausprobieren. „Veröffentlichen“ legt den Commit fest, den Sie gesehen haben. Eine spätere Änderung im Repository verändert also kein Lab, das Sie bereits gestellt haben. Starten Sie zuerst Ihre eigene Kopie.
- Zuweisen. Weisen Sie es wie jede Aufgabe zu, auf Wunsch mit Fälligkeitsdatum, und schreiben Sie in die Aufgabe, was zu tun ist und was abgegeben werden soll.
- Abgaben bewerten. Öffnen Sie die Kopie einer lernenden Person und die abgegebene Arbeit, bewerten Sie sie und geben Sie sie mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.
Dieses Lab ausprobieren, und was es kostet
Mit einem kostenlosen persönlichen Konto können Sie die Grundlagenlektionen in diesem Lab durcharbeiten, mit genug kostenlosem Guthaben pro Monat für die meisten Lektionen und ohne Karte. Für eine Klasse sind die ersten 365 Tage für eine Schule kostenlos, für bis zu 50 Lernende; danach zahlt sie je lernender Person und Jahr, alle Labs inklusive und Lehrkräfte kostenlos.
Häufige Fragen
- Warum muss ich kein Token oder Passwort eingeben?
- Die Webseite eines Labs ist nur über die Tür der Plattform erreichbar, die schon weiß, wer Sie sind, und nur Sie und die Lehrkräfte Ihres Moduls hineinlässt. Deshalb startet JupyterLab ohne Token. Starten Sie es nicht so auf einem Rechner, den andere erreichen können.
- Warum nutzt das Terminal docker exec jupyter?
- Das Terminal des Labs enthält einige Clients, aber kein Python. docker exec jupyter führt einen Befehl im Container des Labs aus, der Python hat. JupyterLab hat außerdem ein eigenes Terminal unter File, New, Terminal.
- Ist das eine echte Blockchain?
- Es ist ein Spielzeug für die Ideen. Es zeigt, wie Hashes Blöcke verknüpfen, wie Mining ein Ausprobieren ist, wie Hauptbuch und Signatur dazupassen und wie ein Fork entschieden wird. Es hat kein Netzwerk, keine Münze und keinen Wert und ist für den echten Einsatz nicht sicher. Nichts darin ist ein Ratschlag zu Geld.