A Pattern Collection for Blockchain-based Applications

Blockchain is an emerging technology that enables new forms of decentralized software architectures, where distributed components can reach agreements on shared system states without trusting a central integration point. Blockchain provides a shared infrastructure to execute programs, called smart contracts, and to store data. Since blockchain technologies are at an early stage, there is a lack of a systematic and holistic view on designing software systems that use blockchain. We view blockchain as part of a bigger system, which requires patterns for using blockchain in the design of their software architecture. In this paper, we collect a list of patterns for blockchain-based applications. The pattern collection is categorized into four types, including interaction with external world patterns, data management patterns, security patterns and contract structural patterns. Some patterns are designed considering the nature of blockchain and how it can be specifically introduced within real-world applications. Others are variants of existing design patterns applied in the context of blockchain-based applications and smart contracts.

[1]  Massimo Bartoletti,et al.  Financial Cryptography and Data Security , 2017, Lecture Notes in Computer Science.

[2]  Stefan Tai,et al.  On or Off the Blockchain? Insights on Off-Chaining Computation and Data , 2017, ESOCC.

[3]  Christian Decker,et al.  Information propagation in the Bitcoin network , 2013, IEEE P2P 2013 Proceedings.

[4]  Melanie Swan,et al.  Blockchain: Blueprint for a New Economy , 2015 .

[5]  Satoshi Nakamoto Bitcoin : A Peer-to-Peer Electronic Cash System , 2009 .

[6]  Guido Governatori,et al.  Evaluation of Logic-Based Smart Contracts for Blockchain Systems , 2016, RuleML.

[7]  Cesare Pautasso,et al.  The Blockchain as a Software Connector , 2016, 2016 13th Working IEEE/IFIP Conference on Software Architecture (WICSA).

[8]  Elaine Shi,et al.  Hawk: The Blockchain Model of Cryptography and Privacy-Preserving Smart Contracts , 2016, 2016 IEEE Symposium on Security and Privacy (SP).

[9]  Steve Omohundro,et al.  Cryptocurrencies, smart contracts, and artificial intelligence , 2014, SIGAI.

[10]  Christopher D. Clack,et al.  Smart Contract Templates: essential requirements and design options , 2016, ArXiv.

[11]  Gerard G. Meszaros,et al.  A pattern language for pattern writing , 1997 .

[12]  Jan Mendling,et al.  Untrusted Business Process Monitoring and Execution Using Blockchain , 2016, BPM.

[13]  Cesare Pautasso,et al.  A Taxonomy of Blockchain-Based Systems for Architecture Design , 2017, 2017 IEEE International Conference on Software Architecture (ICSA).

[14]  Ingo Weber,et al.  On Availability for Blockchain-Based Systems , 2017, 2017 IEEE 36th Symposium on Reliable Distributed Systems (SRDS).

[15]  I. Grigg The Ricardian contract , 2004, Proceedings. First IEEE International Workshop on Electronic Contracting, 2004..

[16]  Douglas C. Schmidt,et al.  Applying Software Patterns to Address Interoperability in Blockchain-based Healthcare Apps , 2017, ArXiv.

[17]  Christopher D. Clack,et al.  Smart Contract Templates: foundations, design landscape and research directions , 2016, ArXiv.

[18]  Muneeb Ali,et al.  Blockstack: A Global Naming and Storage System Secured by Blockchains , 2016, USENIX Annual Technical Conference.