You are here: University of Vienna PHAIDRA Detail o:1442648
Title (eng)
Engineering blockchain-based applications in the context of the Ethereum ecosystem
Parallel title (deu)
Entwicklung von Blockchain-basierten Anwendungen im Kontext des Ethereum-Ökosystems
Author
Alex Maximilian Wöhrer
Adviser
Uwe Zdun
Assessor
Cesare Pautasso
Assessor
Stefan Schulte
Abstract (deu)
Blockchain ist mehr als nur die Technologie hinter der Kryptowährung Bitcoin. Die Technologie kann als treibende Kraft angesehen werden, die das Potenzial besitzt, viele Bereiche zu verändern. Die Blockchain selbst basiert auf verschiedenen rechnerischen und wirtschaftlichen Konzepten, um eine betrugsfreie Vermittlungsplattform zur effizienten Abwicklung von Transaktionen zwischen sich gegenseitig misstrauenden Parteien zu schaffen. Genauer gesagt, bietet die Blockchain eine auf einem Peer-to-Peer Netzwerk basierende Infrastruktur zur dezentralen, transparenten und unveränderlichen Aufzeichnung von Transaktionen, um die Speicherung von Daten oder die autonome Ausführung von Programmen, sogenannten Smart Contracts, zu ermöglichen. Angetrieben von diesen Möglichkeiten haben in den letzten Jahren zahlreiche Unternehmen und Organisationen begonnen, sich mit der Blockchain zu beschäftigen, um sinnvolle Anwendungsbereiche zu erkunden und Anwendungen auf Basis der Technologie zu entwickeln. In diesem Zusammenhang wird allerdings in vielen Bereichen Neuland betreten, dementsprechend sind Empfehlungen für effiziente Herangehensweisen gefragt. Diese Arbeit behandelt in dieser Hinsicht technische Überlegungen und Methoden zur Erstellung von Blockchain-basierten Anwendungen. Dabei werden im Allgemeinen übergreifende Designs und Ansätze elaboriert, die sich als Best Practices für Blockchain-basierte Softwarelösungen aus Architektur-, Entwicklungs- und Implementierungssicht etabliert haben. Die Aufarbeitung geschieht im Rahmen unterschiedlicher Themenkomplexe im Kontext der bekannten Blockchain Plattform Ethereum. Viele der gewonnen Erkenntnisse lassen sich aber auch auf andere Plattformen verallgemeinern und anwenden. Zunächst werden grundlegende Architekturentscheidungen und -ansätze erarbeitet, aus denen folgt das eine hybride Architektur bestehend aus on- und off-chain Komponeten einen guten Kompromiss zwischen Dezentralisierung und Qualitätsmerkmalen wie Skalierbarkeit, Datenschutz und Benutzerfreundlichkeit bietet. Des Weiteren werden Entwurfsmuster für den Informationsaustausch über Blockchain-Grenzen hinweg mittels sogenannter Orakel ausgearbeitet, woraus sich vier grundlegende Orakelmuster in Bezug auf Datenflussdimensionen (d. h. inbound/outbound und pull/push) ergeben. Außerdem werden Entwurfsmuster für Smart Contracts erarbeitet und anhand von 18 konkreten Mustern präsentiert, die Probleme im Zusammenhang mit dem Betrieb, der Zugangskontrolle, der Verwaltung und der Sicherheit lösen. In weiterer Folge wird eine abstrakte domänenspezifischen Sprache für Smart Contracts entwickelt und studiert um die automatische Anwendung dieser Entwurfsmuster mittels Codegenerierung zu ermöglichen. Dabei wird gezeigt, dass Abstraktion und Codegenerierung ein gangbarer Weg zur Formulierung von Smart Contracts sein können um die Effizienz, Klarheit und Flexibilität von Code zu erhöhen und gleichzeitig die Fehleranfälligkeit zu verringern. Zuletzt werden typische DevOps Aktivitäten untersucht die zeigen, dass die zentralen DevOps-Konzepte und -Aktivitäten denen in anderen Bereichen ähneln, mit dem Unterschied, dass aufgrund der inhärenten Unveränderlichkeit der Blockchain strengere Tests und differenzierte Bereitstellungspraktiken erforderlich sind. Zusammenfassend trägt diese Arbeit zu einem besseren Verständnis verschiedener Themen bei, die für die Entwicklung von Blockchain-basierten Anwendungen von Bedeutung sind.
Abstract (eng)
Blockchain is more than just the technology behind the cryptocurrency Bitcoin. It can be seen as a driving force that has the potential to transform many domains. The technology is based on various computational and economic concepts to create a fraud-free intermediation platform to efficiently settle transactions between mutually distrusting parties. More specifically, the blockchain provides an infrastructure based on a Peer-to-Peer network to record transactions in a decentralized, transparent, and immutable manner to enable the storage of data or the autonomous execution of programs known as smart contracts. Driven by these possibilities, numerous companies and organizations have begun to explore blockchain in recent years to find meaningful application areas and develop applications based on the technology. In this context, new ground is being broken in many areas, and accordingly, recommendations for efficient approaches are needed. In this regard, this thesis addresses technical considerations and methods for building blockchain-based applications. In general, overarching designs and approaches are elaborated that have established themselves as best practices for blockchain-based software solutions from an architectural, development, and implementation perspective. The analysis is done in the scope of different topics in the context of the well-known blockchain platform Ethereum. However, many of the insights gained can also be generalized and applied to other platforms. First, fundamental architectural decisions and approaches are studied, from which follows that a hybrid architecture consisting of on- and off-chain components offers a good compromise between decentralization and quality attributes such as scalability, privacy, and usability. Furthermore, design patterns for data exchange across blockchain boundaries by means of so-called oracles are elaborated, resulting in four basic oracle patterns related to data flow dimensions (i.e., inbound/outbound and pull/push). Moreover, design patterns for smart contracts are devised and presented by means of 18 concrete patterns that solve problems related to operation, access control, management, and security. Subsequently, an abstract domain-specific language for smart contracts is developed and studied to enable the automatic application of these design patterns via code generation. Along the way, it is shown that abstraction and code generation can be a viable way to formulate smart contracts in order to increase the efficiency, clarity, and flexibility of code while reducing the susceptibility to errors. Last, typical DevOps activities are explored which show that core DevOps concepts and activities are similar to those in other domains, with the difference that more rigorous testing and differentiated deployment practices are required due to the inherent immutability of the blockchain. In summary, this thesis contributes to a better understanding of various topics that are important for the development of blockchain-based applications.
Keywords (deu)
BlockchainSmart contractEntwurfsmusterSoftwarearchitektur
Keywords (eng)
BlockchainSmart contractDesign patternSoftware architecture
Subject (deu)
Type (deu)
Persistent identifier
https://phaidra.univie.ac.at/o:1442648
rdau:P60550 (deu)
xviii, 191 Seiten : Illustrationen
Number of pages
211
Association (deu)
Members (1)
Title (eng)
Engineering blockchain-based applications in the context of the Ethereum ecosystem
Parallel title (deu)
Entwicklung von Blockchain-basierten Anwendungen im Kontext des Ethereum-Ökosystems
Author
Alex Maximilian Wöhrer
Abstract (deu)
Blockchain ist mehr als nur die Technologie hinter der Kryptowährung Bitcoin. Die Technologie kann als treibende Kraft angesehen werden, die das Potenzial besitzt, viele Bereiche zu verändern. Die Blockchain selbst basiert auf verschiedenen rechnerischen und wirtschaftlichen Konzepten, um eine betrugsfreie Vermittlungsplattform zur effizienten Abwicklung von Transaktionen zwischen sich gegenseitig misstrauenden Parteien zu schaffen. Genauer gesagt, bietet die Blockchain eine auf einem Peer-to-Peer Netzwerk basierende Infrastruktur zur dezentralen, transparenten und unveränderlichen Aufzeichnung von Transaktionen, um die Speicherung von Daten oder die autonome Ausführung von Programmen, sogenannten Smart Contracts, zu ermöglichen. Angetrieben von diesen Möglichkeiten haben in den letzten Jahren zahlreiche Unternehmen und Organisationen begonnen, sich mit der Blockchain zu beschäftigen, um sinnvolle Anwendungsbereiche zu erkunden und Anwendungen auf Basis der Technologie zu entwickeln. In diesem Zusammenhang wird allerdings in vielen Bereichen Neuland betreten, dementsprechend sind Empfehlungen für effiziente Herangehensweisen gefragt. Diese Arbeit behandelt in dieser Hinsicht technische Überlegungen und Methoden zur Erstellung von Blockchain-basierten Anwendungen. Dabei werden im Allgemeinen übergreifende Designs und Ansätze elaboriert, die sich als Best Practices für Blockchain-basierte Softwarelösungen aus Architektur-, Entwicklungs- und Implementierungssicht etabliert haben. Die Aufarbeitung geschieht im Rahmen unterschiedlicher Themenkomplexe im Kontext der bekannten Blockchain Plattform Ethereum. Viele der gewonnen Erkenntnisse lassen sich aber auch auf andere Plattformen verallgemeinern und anwenden. Zunächst werden grundlegende Architekturentscheidungen und -ansätze erarbeitet, aus denen folgt das eine hybride Architektur bestehend aus on- und off-chain Komponeten einen guten Kompromiss zwischen Dezentralisierung und Qualitätsmerkmalen wie Skalierbarkeit, Datenschutz und Benutzerfreundlichkeit bietet. Des Weiteren werden Entwurfsmuster für den Informationsaustausch über Blockchain-Grenzen hinweg mittels sogenannter Orakel ausgearbeitet, woraus sich vier grundlegende Orakelmuster in Bezug auf Datenflussdimensionen (d. h. inbound/outbound und pull/push) ergeben. Außerdem werden Entwurfsmuster für Smart Contracts erarbeitet und anhand von 18 konkreten Mustern präsentiert, die Probleme im Zusammenhang mit dem Betrieb, der Zugangskontrolle, der Verwaltung und der Sicherheit lösen. In weiterer Folge wird eine abstrakte domänenspezifischen Sprache für Smart Contracts entwickelt und studiert um die automatische Anwendung dieser Entwurfsmuster mittels Codegenerierung zu ermöglichen. Dabei wird gezeigt, dass Abstraktion und Codegenerierung ein gangbarer Weg zur Formulierung von Smart Contracts sein können um die Effizienz, Klarheit und Flexibilität von Code zu erhöhen und gleichzeitig die Fehleranfälligkeit zu verringern. Zuletzt werden typische DevOps Aktivitäten untersucht die zeigen, dass die zentralen DevOps-Konzepte und -Aktivitäten denen in anderen Bereichen ähneln, mit dem Unterschied, dass aufgrund der inhärenten Unveränderlichkeit der Blockchain strengere Tests und differenzierte Bereitstellungspraktiken erforderlich sind. Zusammenfassend trägt diese Arbeit zu einem besseren Verständnis verschiedener Themen bei, die für die Entwicklung von Blockchain-basierten Anwendungen von Bedeutung sind.
Abstract (eng)
Blockchain is more than just the technology behind the cryptocurrency Bitcoin. It can be seen as a driving force that has the potential to transform many domains. The technology is based on various computational and economic concepts to create a fraud-free intermediation platform to efficiently settle transactions between mutually distrusting parties. More specifically, the blockchain provides an infrastructure based on a Peer-to-Peer network to record transactions in a decentralized, transparent, and immutable manner to enable the storage of data or the autonomous execution of programs known as smart contracts. Driven by these possibilities, numerous companies and organizations have begun to explore blockchain in recent years to find meaningful application areas and develop applications based on the technology. In this context, new ground is being broken in many areas, and accordingly, recommendations for efficient approaches are needed. In this regard, this thesis addresses technical considerations and methods for building blockchain-based applications. In general, overarching designs and approaches are elaborated that have established themselves as best practices for blockchain-based software solutions from an architectural, development, and implementation perspective. The analysis is done in the scope of different topics in the context of the well-known blockchain platform Ethereum. However, many of the insights gained can also be generalized and applied to other platforms. First, fundamental architectural decisions and approaches are studied, from which follows that a hybrid architecture consisting of on- and off-chain components offers a good compromise between decentralization and quality attributes such as scalability, privacy, and usability. Furthermore, design patterns for data exchange across blockchain boundaries by means of so-called oracles are elaborated, resulting in four basic oracle patterns related to data flow dimensions (i.e., inbound/outbound and pull/push). Moreover, design patterns for smart contracts are devised and presented by means of 18 concrete patterns that solve problems related to operation, access control, management, and security. Subsequently, an abstract domain-specific language for smart contracts is developed and studied to enable the automatic application of these design patterns via code generation. Along the way, it is shown that abstraction and code generation can be a viable way to formulate smart contracts in order to increase the efficiency, clarity, and flexibility of code while reducing the susceptibility to errors. Last, typical DevOps activities are explored which show that core DevOps concepts and activities are similar to those in other domains, with the difference that more rigorous testing and differentiated deployment practices are required due to the inherent immutability of the blockchain. In summary, this thesis contributes to a better understanding of various topics that are important for the development of blockchain-based applications.
Keywords (deu)
BlockchainSmart contractEntwurfsmusterSoftwarearchitektur
Keywords (eng)
BlockchainSmart contractDesign patternSoftware architecture
Subject (deu)
Type (deu)
Persistent identifier
https://phaidra.univie.ac.at/o:1543277
Number of pages
211
Association (deu)