Launch Simcoin
Ein Simulationsframework für Blockchain-Netzwerke (19.12.2017)
Förderjahr 2017 / Stipendien Call #12 / ProjektID: 2235 / Projekt: Simulation of different selfish mining strategies in Bitcoin

Nach einigen Monaten harter Arbeit und mehreren kleineren und größeren Problemen kann ich heute endlich mein Simulationsframework Simcoin in die freie Wildbahn entlassen. Das implementierte Framework bildet einen Teil meiner für die Diplomarbeit verwendete Software und ermöglicht das Simulieren von Blockchain-Netzwerken auf einem einzelnen Host. Die Simulation auf einem Host ist möglich, da während der Simulation das rechenintensive Proof-of-Work deaktiviert ist. Anstelle dessen werden die Blöcke anhand eines vordefinierten Szenario erstellt, indem das Framework während der Simulation den Nodes das Erzeugen eines Blocks befehlt. Neben dem Zeitpunkt und dem Ersteller eines Blocks können in einem Szenario weiters die Anzahl der Transaktion und eine komplexe Netzwerktopologie konfiguriert werden. Dies ermöglicht die Auswirkungen verschiedenster Angriffe sowie auch die Perfomance diverser Protokolle und Protokollmodifikation zu untersuchen.

Das Framework ist in Python implementiert und verwendet Docker zur Virtualisierung des Blockchain-Netzwerkes. Durch diesen Ansatz ist es möglich die Implementierung einer Blockchain-Technologie direkt wiederzuverwenden und es ist für eine Simulation keine eigene Adaptierung notwendig. Die Simulation ist somit realitätsnah und spiegelt das tatsächliche Verhalten der Implementierung wieder mitsamt allen Protokolldetails. Weiters wird auch das unterliegenden Netzwerk mittels Docker virtualisiert. Dadurch wird die ganze Netzwerkkommunikation auf natürliche Art und Weise in die Simulation miteinbezogen wobei Latenzen im Netzwerk beim Erstellen des Simulationsszenario definiert werden können. Am Ende einer Simulation werden dann die von den Nodes erstellen Log-Files geparsed und mittels R Markdown werden unterschiedlichste Kennzahlen wie zum Beispiel stale block rate oder block propagation time berechnet und visualisiert.

Momentan ist die Simulationssoftware noch für die Referenzimplementierung von Bitcoin ausgelegt, kann aber an verschiedenste Blockchain-Protokolle angepasst werden wie zum Beispiel Bitcoin Cash, Litecoin und Ethereum. Eine weitere Verbesserungsmöglichkeit ist die Verwendung von ELK als zusätzliche Möglichkeit zur Visualisierung der Resultate. Der ELK-Stack würde eine explorative Analyse der Simulation ermöglichen und etwaige Probleme oder Fehlkonfigurationen könnten schneller behoben werden. Last but not least könnten Unix domain sockets die Perfomance des Frameworks beträchtlich verbessern. Zurzeit verwendet das Framework RPC zur Kommunikation mit den Nodes im Netzwerk, aber sobald die Referenzimplementierung von Bitcoin auch die Kommunikation über domain sockets ermöglicht, sollte die Verwendung dieser in Betracht gezogen werden.

Abschließend möchte ich mich bei meinem Betreuer Aljosha Judmayer von SBA Research für seine tatkräftige Unterstützung und bei netidee für die Förderung der Diplomarbeit mitsamt Simulationsframework bedanken.

Direkter Link zum Repository von Simcoin auf Github: https://github.com/simonmulser/simcoin.

Tags:

blockchain framework launch simulation python docker

Simon Mulser

Profile picture for user simon.mulser

Skills:

Softwareentwicklung
,
Web Development
,
Projektmanagement
,
blockchain
,
Bitcoin
,
Python
,
Java
CAPTCHA
Diese Frage dient der Überprüfung, ob Sie ein menschlicher Besucher sind und um automatisierten SPAM zu verhindern.
    Datenschutzinformation
    Der datenschutzrechtliche Verantwortliche (Internet Privatstiftung Austria - Internet Foundation Austria, Österreich) würde gerne mit folgenden Diensten Ihre personenbezogenen Daten verarbeiten. Zur Personalisierung können Technologien wie Cookies, LocalStorage usw. verwendet werden. Dies ist für die Nutzung der Website nicht notwendig, ermöglicht aber eine noch engere Interaktion mit Ihnen. Falls gewünscht, können Sie Ihre Einwilligung jederzeit via unserer Datenschutzerklärung anpassen oder widerrufen.