Table of Contents
Fetching ...

An Extended Pattern Collection for Blockchain-based Applications

Xiwei Xu, Cesare Pautasso, Sin Kuang Lo, Liming Zhu, Qinghua Lu, Ingo Weber

TL;DR

The paper tackles the lack of systematic architectural guidance for designing blockchain-based applications by presenting an extended collection of nineteen design patterns organized into five categories: interaction with external world, data management, security, contract structure, and user interaction. Each pattern is described in the extended pattern form (name, context, problem, forces, solution, consequences) to illuminate trade-offs and deployment considerations, with real-world examples where available. The work analyzes how to leverage blockchain's unique properties while mitigating its limitations, offering concrete guidance on using oracles, tokenisation, off-chain storage, state channels, and upgradeable contract structures. Collectively, the patterns equip developers with reusable architectural solutions to build scalable, secure, and interoperable blockchain-based systems, and they identify areas for future refinement and empirical validation.

Abstract

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 systematically organized knowledge providing a holistic view on designing software systems that use blockchain. We view blockchain as a component of a bigger software system, which requires patterns for using blockchain in the design of the software architecture. In this paper, we collect a list of patterns for blockchain-based applications. The pattern collection is categorized into five categories, including interaction with external world patterns, data management patterns, security patterns, structural patterns of contracts, and user interaction patterns. Some patterns are designed considering the nature of blockchain and how blockchains 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.

An Extended Pattern Collection for Blockchain-based Applications

TL;DR

The paper tackles the lack of systematic architectural guidance for designing blockchain-based applications by presenting an extended collection of nineteen design patterns organized into five categories: interaction with external world, data management, security, contract structure, and user interaction. Each pattern is described in the extended pattern form (name, context, problem, forces, solution, consequences) to illuminate trade-offs and deployment considerations, with real-world examples where available. The work analyzes how to leverage blockchain's unique properties while mitigating its limitations, offering concrete guidance on using oracles, tokenisation, off-chain storage, state channels, and upgradeable contract structures. Collectively, the patterns equip developers with reusable architectural solutions to build scalable, secure, and interoperable blockchain-based systems, and they identify areas for future refinement and empirical validation.

Abstract

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 systematically organized knowledge providing a holistic view on designing software systems that use blockchain. We view blockchain as a component of a bigger software system, which requires patterns for using blockchain in the design of the software architecture. In this paper, we collect a list of patterns for blockchain-based applications. The pattern collection is categorized into five categories, including interaction with external world patterns, data management patterns, security patterns, structural patterns of contracts, and user interaction patterns. Some patterns are designed considering the nature of blockchain and how blockchains 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.

Paper Structure

This paper contains 34 sections, 19 figures.

Figures (19)

  • Figure 1: Blockchain as a component within a software architecture
  • Figure 2: Centralized Oracle Pattern
  • Figure 3: Decentralized Oracle Pattern
  • Figure 4: Voting Pattern
  • Figure 5: Reverse Oracle Pattern
  • ...and 14 more figures