摘要: 将区块链技术应用到现有系统中,而不是从系统开始构建时就应用区块链技术带来了一些挑战。挑战有两点,一是对于给定的用例,很难找出区块链的哪些属性(例如不可变的、不可信的、匿名的)对这些用例是有意义的;二是很难决定架构的哪些元素应该使用区块链技术。当前的方法通常只说明区块链技术对于给定的用例是否有意义。本文提出了一种更细粒度的方法来确定应用程序体系结构的哪些元素可以受益于区块链技术。本文的方法标识了参与者、参与者信任关系和交互,得出一个混合架构(即一种将区块链技术嵌入现有软件系统或仅在某些部分使用区块链创建新系统的体系结构)。
技术介绍: 为了构建应用程序,区块链技术带来了一些特性,可以创建分散、可信、透明和防篡改的环境。但是,区块链技术也增加了额外的技术复杂性。在构建基于区块链的应用程序时,需要了解区块链技术的优势和挑战。
在本文中,我们提出了一种新的方法,该方法基于这样一个假设,即使用区块链技术并不总是对整个软件系统有用。我们的方法包括四个步骤,即识别参与者、确定参与者之间的信任关系、识别参与者之间的交互以及得出架构草案。
第一步是确定参与者,即与应用程序交互的外部系统或用户。需要确定与用例相关的参与者或系统,并考虑系统的上下文边界。
本文以建筑工匠协调和支付的系统为例进行研究。由于没有将区块链技术添加到现有系统中,因此所选的参与者主要是建筑工匠、施工监理和业主。
第二步考虑信任关系时,对“未知人士或公司”的信任度最低,对“过去有业务关系的已知合作伙伴”的信任度中等,对自己的“子公司和控股公司”的信任度较高,对“自己公司”的信任度最高。
在简化示例中,业主“B”与施工监理“S”之间有相互信任的关系,因为他们紧密合作,而“B”将承包商的协调工作委托给“S”。承包商信任施工监理“S”在用户、系统或两者的组合中发生。
图3显示了第一步中确定的参与者之间的主要交互关系。
在最后一个步骤中,将步骤1-3中收集到的结果组合起来,得出第一个架构草案。这个步骤将支持识别区块链技术使系统体系结构受益的领域。需要考虑区块链保护和传输的值,并影响将从区块链读取数据或将数据写入区块链的参与者。
图4显示了示例中信任关系和交互的叠加。出现了两个区域:A区域与B区域。在A区域,已确定的信任和交互关系建议使用集中式软件系统作为解决方案。B区域与A区域不同,因为只有一小部分参与者彼此信任。在A区和B区之间的交汇处,施工主管“S”作为这两个信任和互动区域之间的连接。
基于信任和交互关系,区块链技术的使用似乎在我们的系统的某些领域非常有用,特别是用于文档和支付目的。
本文主要贡献: 本文提出了一种更细粒度的方法来确定应用程序体系结构的哪些元素可以受益于区块链技术。基于建筑业主、施工监理和承包商之间的传递信任关系的简化示例,我们解释了区块链技术在某些领域的有效性。
致谢: 本文由南京大学软件工程系2018硕士生乔力翻译转述。