Die Blockchain-Technologie ist aktuell ein absolutes Hype-Thema. Überall kann man über die verschiedensten Anwendungsgebiete lesen. Manchmal sind diese sinnvoll, manchmal dem Hype geschuldet und manchmal völliger Nonsens. Dies liegt u. a. daran, dass sich bisher nur wenige tiefergehend mit der Blockchain-Technologie befasst und diese verstanden haben. Einer der besten Wege eine neue Technologie zu verstehen, ist, sie einmal selbst zu implementieren.
In diesem Workshop werden wir eine eigene Blockchain implementieren um nachzuvollziehen, was genau eigentlich eine Blockchain ist, und wann und wofür man diese einsetzen kann. Beispiele werden mit Java implementiert.
Agenda:
Theorie:
- Einführung: was ist eine Blockchain?
- Welche Anwendungsgebiete gibt es?
- Wie funktioniert eine Blockchain und welche Eigenschaften zeichnet sie aus?
- Was ist der Unterschied zwischen public vs private/permissionend Blockchains?
Praxis:
- Proof of Work
- Verifizierung eines Blocks
- Verifizierung einer Chain
Bonus:
- Smart Contracts
- Security-Aspekte von Blockchains und Smart Contracts
Die Voraussetzungen sind:
Die Teilnehmer sollten/müssen einen Laptop dabei haben. Dort sollte vorinstalliert sein:
- Ein JDK in der Version 8 (aktuelle Versionen für Windows/Mac/Linux finden sich unter https://adoptopenjdk.net).
- Git in der Version 2.15 oder höher. (aktuelle Versionen finden sich unter https://git-scm.com).
- Eine IDE mit der Java-Code kompiliert/ausgeführt werden kann und die Grade als Build-System unterstützt, z.B. Eclipse, Netbeans+Gradle-Plugin oder IntelliJ. Ich empfehle und nutze selber IntelliJ. Ddie kostenfreie Community-Version ist ausreichend: https://www.jetbrains.com/idea/download/. Teilnehmer können aber jede andere IDE nehmen, mit der sie vertrauter sind und mit der sie lieber arbeiten möchten, solange sie die genannten Voraussetzung erfüllt.
Besondere Rechte müssen auf den Laptops nicht vorhanden sein, aber Anti-Viren-Programme oder Konzern-Richtlinien machen einem immer wieder mal einen Strich durch die Rechnung. Es sollte daher auf jeden Fall möglich sein,
- sich mit dem Konferenznetzwerk (WLAN) zu verbinden,
- ein Repository von Github zu klonen und
- über den Grade-Wrapper die neuste Version zu installieren (https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:upgrading_wrapper). Dazu sind normalerweise lediglich Schreibrechte im Nutzerverzeichnis erforderlich.
Vorkenntnisse sind außer Java-Kenntnissen für die praktischen Übungen nicht erforderlich.