Intro; Foreword; How to Read This Book; Acknowledgements; Legal Disclaimer for Code Samples; Contents; Part I Blockchain in Software Architecture; 1 Introduction; 1.1 What Is Blockchain and Why Should I Care?; 1.1.1 Defining Blockchain; 1.1.2 Smart Contracts and Decentralized Applications; 1.1.3 Cryptocurrencies and Tokens; 1.2 Blockchain-Based Applications; 1.2.1 Enterprise and Industry; 1.2.2 Financial Services; 1.2.3 Government Services; 1.3 Blockchain Functionality; 1.3.1 Blockchain as Data Storage; Transactions; Digital Assets; 1.3.2 Blockchain as a Computational Infrastructure
2.2.3 Smart Contract2.2.4 Paying Fees in `Gas'; 2.2.5 Decentralized Application (dapp); 2.3 Hyperledger Fabric; 2.3.1 Permissioned Blockchain; 2.3.2 Chaincode as Smart Contract; 2.3.3 Nodes; 2.3.4 Transactions; 2.3.5 Consensus; 2.4 Other Representative Blockchain Platforms; 2.5 Further Reading; 3 Varieties of Blockchains; 3.1 Fundamental Properties of Blockchain; 3.2 Decentralization; 3.2.1 Permission; 3.2.2 Deployment; 3.3 Ledger Structure; 3.4 Consensus Protocol; 3.5 Block Configuration; 3.6 Auxiliary Blockchains; 3.7 Anonymity; 3.8 Incentives; 3.9 Summary; 3.10 Further Reading
Text of Note
4 Example Use Cases4.1 Agricultural Supply Chains; 4.1.1 Key Non-functional Requirements; 4.1.2 Conventional Technology; 4.1.3 A Blockchain Solution; 4.1.4 Non-functional Property Discussion; 4.2 Open Data Registry; 4.2.1 Key Non-functional Requirements; 4.2.2 Conventional Technology; 4.2.3 A Blockchain Solution; 4.2.4 Non-functional Property Discussion; 4.3 International Money Transfers; 4.3.1 Key Non-functional Requirements; 4.3.2 Conventional Technologies; 4.3.3 A Blockchain Solution; 4.3.4 Non-functional Property Discussion; 4.4 Electricity Contract Selection and Continuous Reporting
Text of Note
4.4.1 Key Non-functional Requirements4.4.2 Conventional Technologies; 4.4.3 A Blockchain Solution; 4.4.4 Non-functional Property Discussion; 4.5 Further Reading; Part II Architecting Blockchain-Based Applications; 5 Blockchain in Software Architecture; 5.1 Blockchain as an Architectural Element; 5.2 Blockchain as Storage Element; 5.2.1 Comparison with Centralized Databases; 5.2.2 Comparison with Cloud Services; 5.2.3 Comparison with Peer-to-Peer Data Storage; 5.2.4 Comparison with Replicated State Machines; 5.3 Blockchain as Computational Element; 5.4 Blockchain as Communication Mechanism
0
8
8
8
8
SUMMARY OR ABSTRACT
Text of Note
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.