Die Klassen und Programme wurdem mit dem Java-Editor entwickelt.
Gui-Programme basieren auf JavaFX, weswegen JavaFX in der benutzten
Java-Version enthalten sein muss oder als separates Modul unter 
Fenster/Konfiguration/Java/Interpreter/JavaFX-Ordner einzubinden ist.
Hinweise dazu findet man unter https://www.javaeditor.org/doku.php?id=de:javafx

1. Block ist Klasse eines Blocks einer Blockchain 

2. GuiEinBlock ist eine Gui-Programm, mit dem grundlegende Funktionaliäten eines Blocks gezeigt werden können:
- Berechnen des Hashs
- Minen eines Blocks: Nonce wird solange erhöht, bis der Hash mit so vielen Nullen  
  beginnt, wie die Schwierigkeit angibt
- Abhängigkeit des Hashs von Blocknummer, Schwierigkeit, Daten und Nonce
- verändert man nur ein Zeichen innerhalb der Daten, ergibt sich ein vollkommen  
  anderer Hash
- schon kleine Schwierigkeiten führen zu hohen Rechenzeiten mit enormen 
  Energieverbrauch (CPU-Auslastung)

3. SHAimDetail: Die Berechnung des Hashs kann als Blackbox mit Hilfe der Klasse MessageDigest erfolgen. 
   Alternativ kann man das auch selbst erledigen, muss sich dann aber auf die Bit-Ebene hinab begeben 
   (siehe NIST.FIPCS.180-4.pdf)

4. BlockChain ist Klasse für eine Blockchain

5. GuiBlockchain simuliert die Verkettung der Blöcke zu einer Blockchain
   In die Hashberechnung wird der Hashwert des vorherigen Blocks einbezogen.
   Ändert man einen Block, macht das alle nachfolgenden Blöcke ungültig.

6. Wallet ist Klasse eines Wallets
   Der Konstruktor erzeugt ein kryptographisches Schlüsselpaar mit dem eine 
   Transaktion signiert und verifiziert werden kann
   Neuere Java-Versionen (ab JDK 16) unterstützen nicht mehr die elliptische Kurve secp256k1
   secp256r1 wird mit neueren JDKs unterstützt
   
7. GuiWallet zeigt den öffentlichen Schlüssel, das Signieren und Verifizieren

8. GuiBlockchainMitWallet verknüpft Wallets mit der Blockchain 
   Transaktionen werden signiert
   Eine Kryptowährung ist keine verschlüsselte Währung, sondern eine signierte Währung.



Ist man mit dem Java-Editor nicht vertraut, so kann man die Batchdatei "Starten.bat" benutzen.

ECHO ON
SET Java=E:\jdks\jdk-11.0.2\bin\java.exe
SET JavaFXPfad=E:\jdks\javafx-sdk-11.0.2\lib
SET BNE_Pfad=D:\EigeneDokumente\GI\_BNE\Java\
SET ClassPfad=%BNE_Pfad%;JEClasses.jar
CD %BNE_Pfad%
set /p Programm=Welches Programm starten? 
%Java% -classpath %ClassPfad% --module-path %JavaFXPfad% --add-modules=javafx.controls,javafx.media,javafx.web %Programm%
PAUSE

Die ersten drei Pfade muss man anpassen. 
Verwendet man nicht das JDK 11, so müssen die class-Dateien mit dem Java-Compiler neu erzeugt werden.

Die Batchdatei fragt den Namen des zu startenden Programms ab. Dabei ist auf Groß-/Kleinschreibung zu achten.

