Resumen
Blockchain technology has gained popularity in various applications, including finance transactions and beyond. However, developing blockchain application systems is challenging due to stringent quality requirements, such as performance, scalability, and security. Software architecture plays a critical role in realizing key quality requirements. Nonetheless, little work has been performed on software architectures for blockchain applications since blockchain application development is still a new field. This paper proposes twelve architectural patterns for blockchain application software architectures based on 400 cross-industry real-world applications available on the Internet. We determine the key components of each application guided by a blockchain application taxonomy we developed. We then identify typical architectural patterns from the interactions of these components guided by well-known software patterns, such as peer-to-peer, layered, pipe-filter, and access control. Based on the roles of these patterns, we organize them into four architectural views comprising four structural, two interactional, four transactional, and two security patterns. We describe each pattern in detail using a standard form and demonstrate the patterns through a real-world blockchain application. The use of patterns can be valuable in addressing blockchain?s unique challenges, but creativity remains essential in crafting innovative solutions. Mixing architectural patterns according to varying requirements can help developers communicate effectively.