Doppelkopf Kryptowährung Dokocoin ...

Dokocoin

Blockchain: lt. Wikipedia “… eine kontinuierlich erweiterbare Liste von Datensätzen, „Blöcke“ genannt, die mittels kryptographischer Verfahren miteinander verkettet sind”.

Beim Verständnis der Blockchain ist mir aus Jugendtagen unsere Doppelkopfrunden eingefallen. Damals wurde massiv Geld virtuell hin und her geschoben. Ich meine nicht, dass jedes Spiel nicht direkt ausgezahlt, sondern in einer Liste aufgeschrieben wurde, sondern vielmehr am Ende, wenn das Ergebnis der Liste abgerechnet werden sollte. “Wenn ich Dir jetzt 2 Mark 80 schulde, pass auf, dann hole Dir die von Ralf, den der schuldet mir noch 5 Mark dann sind wir quit ich sag ihm, dass ich ich nur noch 2 Mark 20 bekommen. Ok, aber woher weiß ich, dass das auch stimmt? Wenn wir damals schon die Blockchain gehabt hätten, wäre es einfacher gewesen, so mussten wir uns alle vertrauen … (was auch etwas Gutes hatte.)

Projektskizze:

Idee: Nehme eine einfache implementierte Blockchain. Modifiziere sie an den Stellen, die Du benötigst und schreibe ein Wallet für das Smartphone. Fertig ist die vereinfachte Kryptowährung der Dokocoin.

Vereinfachungen:

  • nur eine Blockchain, die “mined”
  • Wallet eine einfache Javascript App, Sicherheitsanforderungen werden nur rudimentär betrachtet

Veränderungen an der Blockchainimplementation:

  • node_server.py
    • Hinzufügen von Wallet Usern mit Passwörtern
    • Hinzufügen einer Login Funktion für die User
    • Spezifizierung der Block Messages in Geld- Sender, Empfänger und Summe und einer Plausibilitätsprüfung, dass nur der User, der sich authentifizert auch von seinem “Konto” Geld transferieren darf.
    • Eine Save and Load Funktion. Nach jedem Mine Vorgang wird die Blockchain gespeichert. Beim (Re)-Start wird die Blockchain neu eingelesen

Zusatz:

  • Ein Cron Mechanismus, der alle 5 Minuten einen Mine Vorgang anstößt.

Implementierung

Die Implementierung besteht aus 3 (Micro)-Services, 3 Docker Containern:

  1. Webcontainer

    • Inhalt:
      • Go Skript
      • statische html Seiten/Templates
      • CSS Dateien
      • Javascript Dateien, Wallet App
    • Design: [Bootstrap4 Material Design] (https://mdbootstrap.com/)
    • Funktion:
      1. Basisdarstellung
      2. Bereitstellung Javascriptanwendung
      3. Webrouting für Anfragen an die Blockchain
        • /login: Webwallet Anmeldung
        • /chain: liefert die Blockchain zurück
        • /new_transaction: neue Transaction
    • Javascript Anwendung:
      1. anmeldung.js
        • Funktion:
          1. Anmeldung an der “Dokocoin Blockchain”
      2. wallet.js:
        • Funktion:
          1. angemeldeten User anzeigen
          2. Kontostand anzeigen
          3. Überweisungsformular mit Bezahlknopf
          4. Anzeige aller bisherigen Transaktionen
  2. Dokocoin Blockchain Container

    • Inhalt:
      • veränderte Python Blockchain node_server.py aus der Blockchain
    • Funktion:
      • Blockchain Aktionen
  3. Cron Container

    • Inhalt:
      • Go Skript
    • Funktion:
      • HTTP Mine Request an die Blockchain