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

Transaktionen und Kontostände

Nach dieser Lektion: Ich kann aus einer Liste von Zahlungen die Kontostände rechnen und zu große Zahlungen ablehnen.

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

Wo steht eigentlich der Kontostand?

Ein Hauptbuch (englisch Ledger) speichert keine Kontostände, sondern Zahlungen. Den Kontostand rechnet man aus, indem man alle Zahlungen von Anfang an nachrechnet.

So kann niemand einen Kontostand heimlich ändern. Er ergibt sich immer wieder aus der Liste, die jede Person nachprüfen kann.

Am Ende dieser Lektion

Notiz

Ich kann aus einer Liste von Zahlungen die Kontostände rechnen und zu große Zahlungen ablehnen.

Schlüsselwörter

BegriffWas er bedeutet
Transaktioneine Zahlung von einem Konto an ein anderes mit einem Betrag
Hauptbuchdie geordnete Liste aller Transaktionen
Kontostanddas Guthaben, das sich aus Start und Zahlungen ergibt
Doppelausgabedasselbe Guthaben wird zweimal ausgegeben
Startguthabender Kontostand, bevor die erste Zahlung gilt

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

Den Kontostand rechnet man durch Nachspielen

Das Hauptbuch beginnt mit einem Startguthaben für jedes Konto. Dann geht man die Zahlungen der Reihe nach durch. Von einem Konto wird abgezogen, einem anderen wird gutgeschrieben.

Reicht das Guthaben für die Zahlung nicht, wird sie abgelehnt. Das Konto bleibt, wie es ist, und es geht mit der nächsten Zahlung weiter.

Ein Beispiel mit vier Zahlungen

SchrittZahlungAshaBenCaraErgebnis
Start-1050-
1Asha an Ben, 4690angenommen
2Ben an Cara, 6636angenommen
3Cara an Asha, 8636abgelehnt: Cara hat nur 6
4Ben an Cara, 3609angenommen

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

Die Ausgabe des Labors ist englisch

Notiz

Das Skript balances.py gibt englische Wörter aus: balances und refused. Die Namen Asha, Ben und Cara und alle Zahlen sind die der Tabelle.

Dieselben vier Zahlungen im Labor rechnen

Befehl
docker exec jupyter python3 steps/balances.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

Die erste Zeile zeigt die Kontostände: Asha 6, Ben 0 und Cara 9. Das ist genau die letzte Zeile der Tabelle.

Die zweite Zeile sagt, dass die Zahlung von Cara an Asha über 8 abgelehnt wurde. Cara hatte zu dem Zeitpunkt nur 6.

Eine Doppelausgabe fängt die Reihenfolge ab

Eine Doppelausgabe liegt vor, wenn jemand dasselbe Guthaben zweimal ausgeben will. Ben hat 5 und schickt 5 an Cara und 5 an Asha.

Das Hauptbuch hat eine feste Reihenfolge. Die erste Zahlung gilt, die zweite findet nur noch 0 vor und wird abgelehnt. Alle, die nachrechnen, kommen zum selben Ergebnis.

Eine Doppelausgabe nachspielen

Code: python
konten = {"Ben": 5, "Cara": 0, "Asha": 0}
zahlungen = [("Ben", "Cara", 5), ("Ben", "Asha", 5)]
# Tauschen Sie die beiden Zahlungen und starten Sie neu.
for zahlung in zahlungen:
    von = zahlung[0]
    an = zahlung[1]
    betrag = zahlung[2]
    if konten[von] >= betrag:
        konten[von] = konten[von] - betrag
        konten[an] = konten[an] + betrag
        print(von, "an", an, betrag, ": angenommen")
    else:
        print(von, "an", an, betrag, ": abgelehnt")
print(konten)

Was das Beispiel ausgibt

Die erste Zahlung heißt angenommen, die zweite abgelehnt. Am Ende steht Ben bei 0, Cara bei 5 und Asha bei 0.

Tauschen Sie die Zahlungen, und Asha bekommt das Geld statt Cara. Die Reihenfolge entscheidet. Darum muss die Kette für alle dieselbe Reihenfolge festlegen.

Ein häufiger Fehler

Warnung

Viele glauben, ein Kontostand stehe irgendwo und werde bei jeder Zahlung überschrieben. Im Hauptbuch steht nur die Liste der Zahlungen. Der Kontostand ist das Ergebnis des Nachrechnens und kann jederzeit neu entstehen.

Ü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.