# Architectural Patterns for Blockchain Systems and Application Design
## 6 Discussion  
Software patterns exist at different levels of abstraction, such as design patterns, architectural patterns, and architectural styles. They capture complementary design aspects that, to some extent, overlap. However, each pattern type offers a set of models and mechanisms to address these aspects [12; 43]. As already stated, architectural patterns describe the high-level structures of software systems in terms of their major components and the interactions between these components. Such patterns provide major system structures in which multiple design decisions about functional requirements, non-functional requirements, and physical constraints are realized [12; 43]. Architectural tactics are design decisions that affect how individual quality attribute requirements are controlled [43]. The emergence of blockchain technology has led to significant advancements in various industries. However, the development of blockchain applications is a complex process that requires a deep understanding of the technology and its underlying architecture [8]. This study has identified and categorized patterns that are essential to blockchain systems' structural, interactional, transactional, and security aspects. Each pattern category represents a specific architectural view that helps blockchain application developers focus on one design aspect. All these patterns contribute toward a framework for the development of robust, scalable, secure, and efficient blockchain systems. One of the main findings from this contribution is that blockchain platforms are evolving mostly to overcome protocol-related issues such as scalability and performance. For example, POA is a public side chain that enables a cross-chain-bridging architecture within the Ethereum ecosystem. Moreover, Hive was forked from the Steem blockchain to offer more decentralization and uncontrolled token ownership. Furthermore, the identified patterns also provide industry policymakers and regulators with a framework for engaging with blockchain-based systems. In another respect, considering reusable architectural patterns can reduce the number of concerns that blockchain application architects and developers need to address. The patterns provide blueprints to help with design decision-making and fulfill application-specific NFRs and quality requirements. For example, the interoperability and scalability of blockchain applications can be fulfilled with the blockchain broker pattern, and the reliability can be accomplished with the distributed off-chain pattern, coupled with the P2P on-chain pattern. Certainly, there should be a trade-off between the different quality requirements when designing an application according to the use case needs. The originality of the proposed patterns lies in their suitability for blockchain systems and their ability to provide a standardized approach to developing blockchain applications, addressing the need for a clear architecture in the complex field of blockchain, which can reduce the development time and improve the quality of the final product. As these patterns are industry-derived, they are proven to be useful to describe the architectures of existing applications and can be customized to suit the specific requirements of different new applications. However, this proposal has some limitations. The proposed patterns are not exhaustive. They are a good starting point for the development of blockchain applications, but they do not cover all aspects of blockchain architecture. This is a work in progress; therefore, there may be specific requirements of a blockchain application that are not adequately addressed by the proposed patterns and may require additional architectural patterns or modifications to the existing ones. As blockchain technology evolves, there may be a need to introduce additional patterns or fine-tune the existing ones to suit emerging technological trends.