2025-12-18 11:51:12 +01:00
2025-12-18 12:31:08 +01:00
2025-11-20 13:32:57 +00:00
2025-12-18 11:43:49 +01:00
2025-11-20 14:42:23 +01:00
2025-12-18 11:43:49 +01:00
2025-12-18 12:31:31 +01:00
2025-12-18 11:36:00 +01:00
2025-12-18 12:31:31 +01:00
2025-12-18 11:51:12 +01:00
2025-12-16 13:43:48 +01:00

POLLU-BLOCK Blockchain Demonstrator

Anwendungsszenario

Dieses Repo enthält eine Applikation, die im Rahmen des Forschungsprojekts "POLLU-BLOCK" entwickelt wurde. Ziel der Applikation ist, eine Blockchain als Integritätsprüfanker zu verwenden. Aufgenommene Sensordaten aus einem Produktionsprozess werden in einer lokalen Datenbank abgespeichert. Die enthaltenen Attribute werden in einem gemeinsamen String zusammengeführt, mit SHA-256 gehasht und dieser Hashwert in der Blockchain als Datenkomponente im Block hinterlegt.

Das System ist so gestaltet, dass ein Block immer die Daten genaue eines Datenbankeintrags enthält.

Nutzerführung

Die Anwendung ist ein Kommandozeilen-Programm mit geführter Nutzerinterkation. Schritte werden der Reihe nach beschrieben. Möchte der Nutzer fortfahren, so ist an geeigneter Stelle stets eine kurze Bestätigung erforderlich. So kann die Anwendung in individuellem Tempo genutzt werden.

Szenario-Auswahl

Die Anwendung erlaubt die Auswahl zweier möglicher Anwendungsszenarien:

Datenvalidierung

In diesem Szenario werden Daten zufällig aus der Sensordatenbank ausgelesen und deren Hashwert bestimmt. Anschließend wird geschaut, ob der zu diesem Eintrag hinterlegte Block tatsächlich denselben Hashwert für die Daten besitzt. Ist dies der Fall, so gilt der Datensatz als integer. In einem realen Anwendungsfall könnte hier also sichergestellt werden, dass die Daten nicht manipuliert wurden.

Datengenerierung

Bei der Datengenerierung wird auf Basis der Vergangenheit zufällig ein vermeintlich neuer Eintrag für die Sensordatenbank generiert und dort abgespeichert. Anschließend wird gezeigt, wie die Daten gebündelt und der Blockchain übergeben werden. Danach wird tatsächlich ein Block "geschürft" oder "gemined", was je nach Rechnerausstattung und eingestellter Schwierigkeit eine gewisse Zeit dauern kann.

Ist der Mining-Prozess abgeschlossen wird analog zur Datenvalidierung geprüft, ob der Mining-Vorgang erfolgreich war und die Hashwerte in beiden Fällen übereinstimmen.

Blockchain

Das Projekt enthält eine funktionsfähige Blockchain, die nach dem Konsensus-Algorithmus Proof-of-Work (PoW) funktioniert. Es wird solange ein Baustein des Blocks, die Nonce, geändert, bis der resultierende Hashwert des gesamten Blocks einer bestimmten Schwierigkeit entspricht. Im vorliegenden Fall wird das durch die Anzahl der Null-Bits am Anfang des Hashwertes definiert. Ein guter Richtwert für Demonstrationszwecke mit Live-Mining ist ein Wert von 24 Bits, also 3 Bytes. Die Schwierigkeit kann über eine Konstante im Paket festgelegt werden. Diese ist in der Datei constants.py zu finden.

Im Hintergrund wird für jeden Hash-Lauf einmalig SHA-256 genutzt. Dieser Hash-Algorithmus wird beispielsweise auch von der Kryptowährung Bitcoin verwendet. Die Blöcke sind miteinander verbunden, indem jeder Block den Haswert seines Vorgängers enthält.

Die Implementierung der Blockchain erfolgte mithilfe von Cython und arbeitet mit OpenSSL für Hashing-Operationen. Python wird als Wrapper um diese Blockchain-Implementierung genutzt. Der Rest der Applikation ist ebenfalls in Python implementiert.

Die Blockchain wird zu Beginn geladen und validiert. Die Validierung beinhaltet die Prüfung der Hashwerte eines jeden Blocks sowie der korrekten Verkettung aller Blöcke über ihren Vorgänger-Hashwert.

Start der Anwendung

Die Anwendung wird über ein Terminal mit dem Python-Interpreter der mitgelieferten Umgebung gestartet. Hierfür steht ein Startup-Skript zur Verfügung, welches im selben Ordner wie der Interpreter abgelegt ist. Es ist darauf zu achten, dass das Skript auch mit dem Interpreter dieses Ordners ausgeführt wird und nicht mit einer Systeminstallation.

Der Start erfolgt über den Aufruf:

path\to\env> .\python.exe .\pollublock.py 

Datenbanken

Die Applikation nutzt im Hintergrund zwei Datenbanken:

  • blockchain.db: Hier werden die Daten der Blockchain persistiert. Aus dieser Datenbank heraus wird die Blockchain initialisiert. Bei einer realen Blockchain-Anwendung wären diese Informationen verteilt im Netzwerk und könnten damit nicht einfach überschrieben werden.
  • pollublock_data.db: Hier wurden die Sensordaten gespeichert, die als Datenauszug durch die Projektpartner bereitgestellt wurden. Zusätzlich werden neue Datensätze angelegt, die im Anwendungsszenario Datengenerierung entstehen.

Die Datenbanken liegen im Paketverzeichnis und dürfen nicht verändert werden. Anderenfalls kann es zu Fehlern in der Programmausführung kommen.

Description
blockchain module of the research project >POLLU-BLOCK<
Readme 3.7 MiB
2025-12-18 12:23:45 +00:00
Languages
Python 57.8%
Cython 34.7%
PowerShell 6%
C++ 0.8%
TeX 0.7%