Erweiterung der Miniblocks Blockchain um Proof of Authority und Proof of Stake.
| Proof of Work | Proof of Authority | Proof of Stake |
|---|---|---|
![]() |
![]() |
![]() |
Miniblocks, Blockchain, Java, Bitcoin, Zeitsynchronisation, NTP, Proof of Work, Proof of Stake, Proof of Authority, Aura, Clique, Peercoin, Ouroboros, BABE.
Das Ziel dieser Arbeit ist es, die Applikation Miniblocks um die Funktionalität von Proof of Authority (PoA) und Proof of Stake (PoS) zu erweitern. Zukünftige Studierende, welche sich für das Modul 'Blockchain' einschreiben und daran teilnehmen, sollen ihre erlernten Theorie-Kenntnisse an einem konkreten Beispiel vertiefen und anwenden können.
Sowohl PoA als auch PoS setzen voraus, dass die Zeit zwischen einzelnen Peers im Netzwerk synchron läuft. Aus diesem Grund ist die Umsetzung einer Zeitsynchronisation ebenfalls Bestandteil dieser Arbeit.
Folgende Basisanforderungen müssen umgesetzt werden:
Zusätzlich sollen die folgenden zwei Erweiterungen realisiert werden:
Die FHNW bietet an ihrem Standort in Brugg Windisch den Informatikstudierenden das Modul 'Blockchain' (BLCH) an. Die Teilnehmerinnen und Teilnehmer lernen die verschiedenen Komponenten einer Blockchain und dessen Funktionsweise kennen. Sie implementieren in Java eine eigene Blockchain-Software mit dem Namen 'Miniblocks'. Die Applikation erlaubt die Verwaltung von Daten in einem Account Model, akzeptiert Transfer-Transaktionen und verwendet als Konsensus-Mechanismus einen Proof-of-Work basierten Ansatz. Die einzelnen Knoten im Peer-to-Peer Netzwerk kommunizieren über HTTP im JSON Format.
Im Blockchain Modul werden zusätzlich zu dem Proof of Work Mechanismus die Mechanismen Proof of Authority sowie Proof of Stake vorgestellt, welche in Miniblocks noch nicht implementiert sind. Da PoA und PoS fehlen, gibt es folglich keine Programmierübungen zu diesen Mechanismen. Die Studierenden haben deshalb zurzeit keine Möglichkeit, mit den anderen Konsens-Mechanismen zu experimentieren.
Das Ziel, sowohl die Basisanforderungen als auch die Erweiterungen für Miniblocks zu implementieren, wurde erreicht. Die neuen Komponenten unterstützen nach wie vor den modularen Aufbau der Applikation, was einen einfachen Austausch des Konsens-Algorithmus sowie des Zeitmoduls erlaubt. Dies ermöglicht künftigen Studierenden, welche das Modul 'Blockchain' an der FHNW besuchen, die einfache Nutzung der neuen Komponenten. Die Tatsache, dass die zwei Konsens-Algorithmen und die dazugehörenden Erweiterungen auf den Unterlagen des Unterrichts basieren, hilft den Studierenden beim raschen Verstehen des Aufbaus sowie des Codes der beiden Algorithmen.
Die in diesem Projekt getätigte Arbeit kann grob in fünf Arbeitspakete eingeteilt werden. Beim Ersten Paket handelt es sich um die Entwicklung des Zeitsynchronisationsmoduls. Dieses konnte unabhängig von den Konsens-Algorithmen implementiert werden, weshalb es als Erstes umgesetzt wurde. Es wurden mehrere Zeitsynchronisationsmodule entwickelt, welche das Network Time Protocol zur Synchronisation der Zeit zwischen den Knoten im Netzwerk verwenden.
Das zweite Arbeitspaket befasste sich mit dem Proof of Authority Konsens-Algorithmus. Hierbei lag der Fokus darauf, einen Algorithmus umzusetzen, welcher auf den Unterrichtsunterlagen basiert. Zusätzlich zu den Unterrichtsunterlagen wurden die bekannten PoA Algorithmen Aura und Clique analysiert und im theoretischen Teil dieser Arbeit miteinander verglichen. Die Analyse der Algorithmen führte zur Implementation des Proof of Authority Konsens-Algorithmus von Miniblocks. Das Resultat dieses Arbeitspakets ist ein stabiler und zuverlässiger Konsens-Algorithmus, welcher eine gute Basis für die Erweiterung der dynamischen Liste von Autoritäten bildet.
Im dritten Arbeitspaket galt es den Proof of Stake Konsens-Algorithmus für die Miniblocks Blockchain umzusetzen. Auch dieser basiert auf den Konzepten aus dem Unterricht sowie den analysierten Konsens-Algorithmen Ouroboros und BABE. Gleich wie bei PoA wird auch in PoS die Zeit in Epochen und Slots aufgeteilt. Die Zuteilung der Slot Leader auf die Slots funktioniert jedoch unterschiedlich. Während Slots in Proof of Authority gemäss Round Robin zugewiesen werden, wird in Proof of Stake die Zuteilung über eine Zufallsfunktion gelöst, welche die nächsten Slot Leader einer Epoche anhand des jeweiligen Stakes auslost. Der umgesetzte, deterministische Zufallszahlenalgorithmus stellt sicher, dass jeder Slot einen Slot Leader erhält, was eine hohe Blockdichte ermöglicht.
Im vierten Arbeitspaket wurde die dynamische Liste von Autoritäten für die Proof of Authority Blockchain von Miniblocks realisiert. Bestandteil dieses Pakets war die Implementierung von Transaktionen, über welche neue Autoritäten in den Zustand der PoA Blockchain aufgenommen werden können und somit die Berechtigung erhalten, am Konsens-Algorithmus teilzunehmen und Blöcke zu produzieren. Auch das Entfernen von Autoritäten aus dem Zustand der Blockchain wurde in diesem Arbeitspaket realisiert. Sowohl das Hinzufügen als auch das Entfernen ist über Vorschläge umgesetzt worden, über welche die aktiven Autoritäten abstimmen können. Erst bei Annahme des Vorschlags durch mindestens 50% der Autoritäten wird die entsprechende Aktion ausgeführt.
Die Erweiterung der Proof of Stake Blockchain um die Slashing Transaktion wurde im letzten Arbeitspaket realisiert. Mit dieser Transaktion wird das Nothing at Stake Problem gelöst, welches auch im Unterricht behandelt wird. Die Transaktion wird verwendet, um Slot Leader zu bestrafen, welche mehr als einen Block in ihrem Slot erzeugen. In Miniblocks ist die Generierung von mehreren Blöcken in einem Slot durch denselben Knoten generell nicht möglich, da dies direkt im Quellcode unterbunden wurde. Bemerkt ein Knoten dennoch mehrere Blöcke in einem Slot, kann davon ausgegangen werden, dass es sich um einen Angriff auf die Blockchain handelt, welcher über die Slashing Transaktion bestraft werden muss. Hierzu wird ein Anteil des Stake des Angreifers auf den Account des Erzeugers der Slashing Transaktion überwiesen.
Fachhochschule Nordwestschweiz FHNW
Hochschule für Technik
Institut für mobile und verteilte Systeme
Bahnhofstrasse 6
5210 Windisch