Skip to main content

2019 | Buch

Architecture for Blockchain Applications

insite
SUCHEN

Über dieses Buch

This book addresses what software architects and developers need to know in order to build applications based on blockchain technology, by offering an architectural view of software systems that make beneficial use of blockchains. It provides guidance on assessing the suitability of blockchain, on the roles blockchain can play in an architecture, on designing blockchain applications, and on assessing different architecture designs and tradeoffs. It also serves as a reference on blockchain design patterns and design analysis, and refers to practical examples of blockchain-based applications.
The book is divided into four parts: Part I provides a general introduction to the topic and to existing blockchain platforms including Bitcoin, Ethereum, and Hyperledger Fabric, and offers examples of blockchain-based applications. Part II focuses on the functional aspects of software architecture, describing the main roles blockchain can play in an architecture, as well as its potential suitability and design process. It includes a catalogue of 15 design patterns and details how to use model-driven engineering to build blockchain-based applications. Part III covers the non-functional aspects of blockchain applications, which are cross-cutting concerns including cost, performance, security, and availability. Part IV then presents three detailed real-world use cases, offering additional insights from a practical perspective. An epilogue summarizes the book and speculates on the role blockchain and its applications can play in the future.
This book focusses on the bigger picture for blockchain, covering the concepts and technical considerations in the design of blockchain-based applications. The use of mathematical formulas is limited to where they are critical. This book is primarily intended for developers, software architects and chief information officers who need to understand the basic technology, tools and methodologies to build blockchain applications. It also provides students and researchers new to this field an introduction to this hot topic.

Inhaltsverzeichnis

Frontmatter

Blockchain in Software Architecture

Frontmatter
Chapter 1. Introduction
Abstract
In this chapter, we discuss the background of blockchain technology and introduce definitions for several terms used throughout the book. We identify some typical applications based on blockchains. Then we summarize typical functionality and non-functional properties of blockchain from the software architecture perspective and characterize blockchain as a software component within larger software systems.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 2. Existing Blockchain Platforms
Abstract
This chapter introduces some of the most prominent and representative blockchain platforms, including Bitcoin, Ethereum, and Hyperledger Fabric. Other blockchain platforms are also briefly discussed.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 3. Varieties of Blockchains
Abstract
In this chapter, we address the manifold varieties of blockchains by presenting a design taxonomy that defines dimensions and categories for classifying blockchains and ways of using them in systems. Our taxonomy captures major architecturally relevant characteristics of blockchains and indicates their support for various quality attributes. This includes performance and quality attributes of blockchain-based applications, as well as core concerns of blockchains like decentralization and the data structure used.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 4. Example Use Cases
Abstract
To convey a more concrete picture of applications of blockchain, this chapter presents four exemplar use cases, which illustrate some of the techniques and considerations discussed in the previous chapters. These use cases are also used as running examples throughout the book, but their details are not strictly necessary for understanding later parts of the book. For every use case, we give a brief background and describe their key non-functional requirements.
Xiwei Xu, Ingo Weber, Mark Staples

Architecting Blockchain-Based Applications

Frontmatter
Chapter 5. Blockchain in Software Architecture
Abstract
Software components are the fundamental building blocks for software architecture. In a blockchain-based system, a blockchain platform is a component. Viewing the blockchain as a software component helps us understand important architectural impacts it has on the performance and quality attributes of systems. These attributes can include security, privacy, scalability, sustainability, and more. We can then consider design tradeoffs regarding these quality attributes and provide rationales to support architectural decisions about whether to employ a blockchain or some conventional component.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 6. Design Process for Applications on Blockchain
Abstract
Software design is a creative process, which includes proposing and evaluating solutions to complex problems with many conflicting constraints. The final design of a software system is the result of many design choices about the selection, configuration, and integration of software, hardware, and communications components. This chapter presents a design process for architecting systems based on blockchains.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 7. Blockchain Patterns
Abstract
In this chapter, we present a collection of patterns for the design of blockchain-based applications. In software engineering, a design pattern is a reusable solution to a problem that commonly occurs within a given context during software design. A design pattern defines constraints that restrict the roles of architectural elements (processing, connectors, and data) and the interaction among those elements. Adopting a design pattern causes tradeoffs among quality attributes. Our pattern collection includes three patterns about interaction between blockchain and the external world, four data management patterns, three security patterns, and five contract structural patterns. The pattern collection provides architectural guidance for developers to build applications on blockchain.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 8. Model-Driven Engineering for Blockchain Applications
Abstract
Model-driven engineering is a methodology for using models at various levels of abstraction and for different purposes during software development. We discuss two approaches for model-driven code generation in this chapter. The first uses process models for collaborative business processes that cross organizational boundaries. The second targets registries for assets, such as land titles, cars, or digital assets. It focuses on non-fungible assets, i.e. where the specific identity of an asset is important.
Xiwei Xu, Ingo Weber, Mark Staples

Quality Impact of Using Blockchain

Frontmatter
Chapter 9. Cost
Abstract
In software architecture for blockchain-based applications, one of the most critical non-functional properties to consider is cost. The (monetary) costs of execution and storage are as important for blockchain technologies as they are for conventional technologies. However, blockchain systems have different kinds of cost models, and the cost for storing too much data on-chain can explode quickly. In this chapter, we discuss different options for storing data and the principles of cost for smart contract deployment and execution.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 10. Performance
Abstract
The performance characteristics of blockchains (especially public blockchains) are drastically different from conventional systems. In this chapter we look at how architects can predict the performance of blockchain-based applications, where a blockchain is just one component. We start with a general discussion blockchain performance characteristics and then describe how to do performance modelling and simulation for specific blockchain-based system architectures.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 11. Dependability and Security
Abstract
In this chapter, we discuss dependability and security aspects of blockchain-based applications, and analyse how the properties of dependability and security relate to these applications. As is the case throughout the book, our viewpoint for the discussion in this chapter is that of a system architect or developer using blockchain as a component. We thus analyse how blockchains impact the dependability and security of systems built upon them, in part with studies using observations from the mainstream proof-of-work blockchains Ethereum and Bitcoin.
Xiwei Xu, Ingo Weber, Mark Staples

Case Studies

Frontmatter
Chapter 12. Case Study: AgriDigital
Blockchain Technology in the Trade and Finance of Agriculture Supply Chains
Abstract
AgriDigital is an Australian-based company, which provides a platform and community approach to digitizing agriculture. Since being founded in 2015, AgriDigital has been using blockchain technology as part of their technical stack to build digital trust across agriculture supply chains. This chapter briefly introduces AgriDigital’s blockchain solution and several pilots and proof of concepts. We then discuss more of the technical details of a pilot system used to transfer title of a grain asset for payment and for supply chain provenance and traceability of organic oats. This discussion covers requirements, architectural design decisions, and outcomes.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 13. Case Study: SecureVote
Taking a Dapp from MVP to Production
Abstract
SecureVote was founded in 2016 to provide affordable, turn-key voting systems of all types and at all scales. This chapter discusses the development of Tokenvote, a general purpose, multichain governance system for blockchain-based tokens developed by SecureVote. The chapter covers many of the challenges encountered and tradeoff decisions made while taking this smart contract-based voting solution from a minimum viable product (MVP) to production. This case study focuses on how the architecture and overall design changed during development.
Xiwei Xu, Ingo Weber, Mark Staples
Chapter 14. Case Study: originChain
A Blockchain-Based Food Traceability System
Abstract
originChain is a blockchain-based application being developed by an independent third-party traceability company. The conventional system provides traceability information for products imported from overseas into China. This chapter discusses a pilot study on replacing the conventional traceability system of the company with one based on blockchain. The new architecture and its implications for performance and quality attributes (especially adaptability) are discussed.
Xiwei Xu, Ingo Weber, Mark Staples
Backmatter
Metadaten
Titel
Architecture for Blockchain Applications
verfasst von
Dr. Xiwei Xu
Dr. Ingo Weber
Dr. Mark Staples
Copyright-Jahr
2019
Electronic ISBN
978-3-030-03035-3
Print ISBN
978-3-030-03034-6
DOI
https://doi.org/10.1007/978-3-030-03035-3