I08 Der JavaCryptoCoin

Die Blockchain in 9 Schritten – Teil 8: Der JavaCryptoCoin

Nun vollenden wir unsere Schritte zum JavaCryptoCoin und besprechen die übrigen 4 Klassen. Der erste Teil des Quellcodes wird in I07 Vorbereitung des JavaCryptoCoin besprochen. Eine kleine Warnung vorne weg – hier kommt noch eine Menge an Informationen!

Der folgende Sourcecode ist sehr kurz und knapp und enthält die Klasse „TransactionInput“. Die Grundlage unserer Währung ist, dass ein Zahlungseingang alle Geldmittel beinhaltet, die Ihr erhalten habt und noch zur Verfügung stehen. Zur Verfügung stehen Euch die noch nicht ausgegeben Gelder und auf Englisch „Unspend transactions“. Da dieser Begriff für die Programmierer zu lang ist, wird er mit dem Kürzel „UTXO“ abgekürzt:

Wenn es eine Eingangs-Klasse gibt, sollte es auch die umgekehrte Zahlungsausgangs-Klasse geben – hier ist der Sourcecode der „TransactionOutput-Klasse“.

Beide Klassen bilden das Fundament der übergeordneten und stark erweiterten Klasse „Transaction“. Die Methode „processTransaction“ ist das zentrale Element der Klasse, denn hier wird eine Zahlungstransaktion verarbeitet, ein Minimum-Betrag vorausgesetzt und die Zahlung abgelehnt, wenn nicht genügend Coins zur Verfügung stehen. Ebenfalls wird hier geprüft, ob die für die Zahlung genutzte elektronische Unterschrift richtig ist.

Nun fehlt noch die Hauptklasse für unser Glück – „JavaCryptoCoin“.

 

Damit Ihr den Programmablauf versteht hier in kurzer Form die Schritte.

  1. Zuerst werden die Variablen definiert, insbesondere zur Speicherung auf einen Datenträger
  2. Danach werden die Geldbörsen erzeugt, wobei es Wallets für zwei „echte“ Benutzer (walletA und walletB) gibt, ein Wallet existiert für den „miner“ und das Wallet mit dem Namen „coinbase“ dient der Erzeugung des „ersten“ Geldes.
  3. Im dritten Schritt wird das „Startguthaben“ von 100 Münzen erzeugt und an das walletA übertragen; dadurch beträgt das Guthaben im System nun 100 Coins auf walletA.
  4. Nun übertragen wir 40 Coins von walletA an walletB, was die Guthaben entsprechend verändert (walletA = 60 Coins, walletB = 40 Coins).
  5. Jetzt versuchen wir, 2 Mal je 25 Coins von walletB an walletA zu übertragen, was nur teilweise gelingt, da das Guthaben nicht ausreichend ist, um beide Transaktionen auszuführen.
  6. Um nachzuweisen, dass die Blockchain weiter funktioniert auch wenn ein wallet (hier walletB) nicht im System „da“ ist löschen wir das zugehörige Objekt.
  7. Wir versuchen nun, mehrere Transaktionen in einem Block zu verarbeiten. Auch hier funktioniert das nur teilweise.
  8. Nun laden wir das walletB und überprüfen das Guthaben anhand der Blockchain und es werden 86,4 Coins ausgewiesen, was zusammen mit den 13,6 Coins in walletA unser Startguthaben von 100 Coins ergibt.
  9. Abschließend werden noch einige Transaktionen durchgeführt und die notwendigen Dateien auf der Festplatte gesichert.

Damit haben wir alle Programmteile besprochen und wir lassen das Programm „richtig“ laufen. Ich habe die Konsolenausgabe hier nur teilweise angezeigt (bitte scrollen), da sie etwas länger ist:

Die Programmierung unseres JavaCryptoCoin ist „eigentlich“ beendet, um aber um ein Verhalten ähnlich zum Bitcoin darzustellen ist noch eine kleine Ergänzung notwendig, daher gibt es noch ein weiteres Kapitel.

Weiter geht es mit Teil 9: I09 Der JavaCryptoCoin komplett

Alle Quellcodes zur Blockchain findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/I-Blockchain. Alle Programme sind sowohl unter Java 8 als auch unter Java 11 lauffähig.

Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.

Letzte Aktualisierung: 12.06.2019