没有合适的资源?快使用搜索试试~ 我知道了~
区块链:研究与应用3(2022)100061用于去中心化应用程序设计的区块链软件模式:系统性文献综述Nicolas SiX*,Nicolas Herbaut,Camille SalinesiCentredeRechercheenInformatique,Universit'eParis1Panth'eon-Sorbonne,75231Paris,FranceA R T I C L E I N F O关键词:区块链软件模式软件设计智能合约A B S T R A C T软件模式是一种可重用的解决方案,用于在设计软件时解决给定上下文中经常出现的问题使用模式是软件架构师确保软件质量的常见做法许多模式集合已被提出用于大量的应用程序域。然而,由于该技术的新近发展,只有少数可用的集合在工业区块链应用中缺乏广泛的测试。软件架构师也很难在其应用程序中充分应用区块链模式,因为它需要深入了解区块链技术。通过系统的文献综述,本文识别了120种独特的区块链相关模式,并提出了一种由多个类别组成的模式分类法,该分类法是从提取的模式集合中构建的该集合的目的是映射、分类和描述文献中所有可用的模式,以帮助读者在区块链模式选择方面做出适当的决定。本研究还展示了这些模式的潜在应用,并确定了区块链模式与其他非区块链软件模式之间的关系。1. 介绍区块链技术是一种由区块组成的分布式账本,由一个对等网络支持,每个对等网络都拥有一个副本。每个节点都遵循相同的协议,并使用共识算法来保持其副本与其他节点的副本一致,并管理新区块的添加。用户可以与节点交互以添加交易,但理论上不可能修改和删除它们虽然第一代区块链只专注于用户之间的加密货币交易(例如,Bitcoin [1]),其中一些现在支持智能合约(例如,Ethereum [2])。智能合约是一个分散的程序,可以通过节点在链上执行。用户可以使用交易部署智能合约并与之交互。区块链本质上是完全去中心化的,没有第三方负责网络的区块链数据也是不可变和防篡改的,因为没有人可以在创建和添加区块后将其更改为区块链。由于这些属性,基于区块链的应用程序可以被信任,因为没有人可以篡改智能合约的正确执行。此外,还可以追溯区块链的状态更改历史因此,智能合约状态更改也可以重播,以实现去中心化应用程序(dApp)的完整可追溯性。近年来,区块链已经从少数人使用的利基技术迅速发展成为许多行业的有前途的解决方案,因为它的独特属性使创新软件架构和系统的设计成为可能[3]。首先,由于加密货币的原生支持,区块链能够创建或改进金融领域的用例,这些用例很难利用现有技术。例如,通过银行进行货币兑换对于消费者来说可能是一个昂贵的过程自动做市商(AMM)允许从一种加密货币到另一种加密货币的互换,而无需任何中间人使用加密货币的流动性池和智能合约来执行互换[4]。关于保险,区块链可以用于在发生事故时自动化索赔过程。在传统的保险系统中,这样的过程需要几天或几周的时间[5]。区块链在非金融领域也有许多应用,因为它能够在没有任何第三方的情况下运行,并通过使用分散的应用程序实现信任。例如,区块链可以是组织间业务流程中的平台,以监控组织的行为和数据,或者允许业务流程直接在链上执行[6]。 在这种情况下,参与者可以信任区块链存储的信息,并且智能合约中执行的操作不能被篡改。这一层分散* 通讯作者。电子邮件地址:nicolas.si univ-paris1.fr(N. SiX)。1这只有在智能合约设计良好以防止执行错误和安全问题时才有效。https://doi.org/10.1016/j.bcra.2022.100061接收日期:2021年10月14日;接收日期:2021年12月11日;接受日期:2022年1月4日2096-7209/©2022作者。由Elsevier B.V.代表浙江大学出版社出版。这是CC BY许可证下的开放获取文章(creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表区块链:研究与应用杂志主页:www.journals.elsevier.com/blockchain-research-and-applicationsN. Six等人区块链:研究与应用3(2022)1000612自动化和信任也用于其他应用,例如智能电网[7],因为区块链可以连接数千个人,以实现用户之间的能源交换市场,或医疗保健的医疗记录共享。随着区块链在许多用例中越来越多地被考虑,许多公司已经开始对区块链表现出兴趣并构建新的应用程序。 根据德勤2020年全球区块链调查2,全球1488家受访公司中有55%将区块链视为其五大战略重点之一。然而,即使越来越多的公司开始区块链项目,也只有少数成功。组织、法律和技术问题仍然阻碍着区块链的采用。关于技术问题,软件架构师在新的或现有的应用程序中包含区块链首先,他们必须考虑区块链技术的责任:根据其类型,可以观察到高延迟和低吞吐量,因为网络需要达成共识来处理新区块及其交易。数据的不变性,在某些情况下的质量,也可能是一种负担:它可能会干扰数据保护法规,如GDPR [8],或阻碍智能合约的升级和修改其次,他们必须小心智能合约的设计。由于区块链的不可否认性,智能合约中的每个漏洞都可能是导致资金损失或不稳定行为的重大安全威胁。 设计区块链也会产生额外的运行成本,这是因为公共区块链通常需要使用加密货币来支付智能合约的执行费用。在软件工程中,软件模式被用来解决这样的设计问题。它们被指定为针对常见问题的可重复解决方案,确保软件的最终设计满足预期要求。因此,选择适当的软件模式可以产生设计良好的体系结构。对于基于区块链的应用程序,这是很难实现的,基于区块链的软件架构的设计是面向区块链的软件工程(BOSE)领域的主要挑战之一[9]。不幸的是,只有少数基于区块链的模式可用,分散在文献和工业网站中软件架构师也可能难以选择适当的模式,因为它需要广泛的区块链知识来进行模式选择。对于其他技术领域,建议对模式进行系统性文献综述,以收集文献中的现有模式(见第6节)。据我们所知,这样的研究还不存在于基于区块链的模式中,尽管它对基于区块链的设计模式的最新发展有好处通过系统的文献综述,本文试图通过收集所有可用的基于区块链的模式并将其分类为有助于获取足够区块链模式的综合类别来填补这一最常提到的模式的详细描述也通过模式格式给出 本文还研究了区块链模式之间的联系以及它们与非区块链软件模式之间的联系。并对这些模式的应用领域进行了同时,本文还提出了一些基于区块链的模式的未来研究方向,因为在整个研究中发现了差距。这项研究的主要贡献是从20个不同的学术来源统一收集了160个基于区块链的软件模式,减少到120个独特的模式。还提出了一种设计模式分类法,将当前和即将到来的基于区块链的模式分类为综合类别。这些贡献已存储在GitHub3上,以便其他人可以重用这项工作旨在通过全面的分类,对许多模式的简短原理以及已识别模式,其变体和相关论文之间的映射,为读者提供本文的结构如下:第2节介绍了区块链技术和软件模式一些背景四、有效性威胁将在第5节中讨论。第6节介绍了相关的工作,第7节总结了未来的工作计划。2. 背景2.1. 区块链区块链技术的第一次实施是在2008年提出的,当时中本聪发布了一份关于比特币的白皮书,比特币是一种分散的加密货币[1]。他结合了多种先前存在的技术,如非对称加密[10],Merkle树结构[11],共识方法和哈希现金,一种加密算法,其中计算证明是困难的,验证它是一项简单的任务[12]。这种结合定义了区块链技术及其相关网络的基础。根据参考文献[13],区块链的一个可能的定义是以下定义(1):定义1. 区块链是一种不可变的只读数据结构,其中新的条目(块)通过链接到前一个块的“哈希”标识符而被附加到分类账的末尾。通常,区块包含交易,其类型取决于区块链的使用:对于比特币,交易代表用户之间的加密货币交换。区块链作为一种数据结构,由对等网络网络的每个成员都拥有区块链的副本它们使用相同的协议进行通信,以保持其副本最新。为了做到这一点,每个区块链协议都带有共识算法,这是一种在参与节点之间就交易订单达成协议的机制。举几个例子,工作量证明算法是基于一个数学挑战,节点必须解决这个数学挑战,才能将一个块附加到区块链上[14]。如果是这样,他们可以与其他人共享该块,并开始为下一个块寻找解决方案。 使用权益证明算法,参与者必须将抵押品置于风险之中,才有权创建和分享区块4。抵押品的大小决定了有权创建的区块的份额[15]。行为不端的节点将被取消其赌注。另一个值得注意的算法是实用拜占庭容错(PBFT)算法,其容忍拜占庭故障(例如,网络中的功能失调或恶意节点)[16]。领导者一旦当选,就负责将新事务从客户端广播到验证事务的备份节点,执行所需的操作,然后传播事务。如果有足够多的备份节点同意相同的结果,则该交易将被附加到区块链。对于前两个共识算法,参与者必须将具有现实价值的东西置于危险之中:计算能力或加密货币。然而,对于第三种情况,没有什么利害关系:安全网络的唯一解决方案是了解参与者,并在行为不端的情况下排除他们根据所使用的共识算法,区块链网络可以允许任何人加入和参与,也可以要求其他人批准加入,分别称为公共区块链和在给定的环境中选择正确的区块链是一个艰难的选择:公共区块链比私有区块链更分散,因为任何人都可以加入和参与,但由于大量的共识算法,可能会受到性能不佳的影响,其中私有区块链更有效,但通常由一组组织控制例如,使用工作量证明算法,比特币每秒只能处理6笔交易,而使用PBFT的 Hyperledger Fabric每秒可以处理数百笔交易2https://www2.deloitte.com/ie/en/pages/technology/articles/Global_blockchain_survey.html。3https://github.com/harmonica-project/blockchain-patterns-collection。[4]造币这个术语经常在基于PoS的区块链的上下文中使用。N. Six等人区块链:研究与应用3(2022)1000613区块链可用于交易加密货币,但也可以利用分散的应用程序,即所谓的智能合约。区块链智能合约的第一个提议可以追溯到2015年的Ether-eum [2],从那时起已经推广到许多区块链。智能合约是一种分散的链上程序,可以通过交易实例化和请求 执行智能合约函数的过程与将交易添加到区块链中的过程相同:函数由被请求的节点执行,结果与其他节点共享,这些节点也将验证函数执行的正确性。在构建去中心化应用程序时,我们可以将其链下部分与链上部分区分开来。链上部分通常由智能合约组成,链下部分由不属于网络但可能与网络交互这种区别很重要,因为它构成了4.1节中所介绍的分类法中模式之间的分离。通过其特定的行为,区块链技术具有许多有趣的特性:本质上的去中心化-没有人负责整个网络。通过扩展,基于智能合约的应用程序也是去中心化的,因为没有第三方负责执行其功能并将结果返回给其他人。安全性-每个网络参与者都可以深入区块链的内容,无论是交易还是智能合约数据。防篡改和不可变性-在添加块后不可能修改其内容它会被其他人检测到,因为区块的哈希值会改变,并与下一个区块中已经存储的然而,区块链的质量也可能是责任,这取决于上下文。区块链的透明性和不变性可能会使个人或机密数据面临风险。 即使加密,也不确定数据是否安全,因为数据解密或密钥泄漏的潜在进展。不可变性也意味着不可能逆转交易,即使它们是有害的。例如,TheDAO智能合约中利用的漏洞导致网络加密货币Ether损失了1200万美元。最后,当期望低延迟或高吞吐量时,区块链的低性能也可能是一个负担因此,任何希望在其应用程序中使用区块链的公司都必须仔细评估其影响,因为这并不总是最好的解决方案。 软件模式可以帮助降低区块链风险对最终设计的影响,通过可重复的解决方案指导区块链应用程序的设计,或确保区块链质量在最终设计中保持不变。然而,区块链仍然缺乏广泛的软件模式结构化集合。 本文将针对这一目标提出几个研究问题。2.2. 软件模式在软件工程领域,模式是工程师和架构师设计健壮和精心设计的应用程序的强大资产模式的原则最早是由Christopher Alexander在建筑领域提出的,因为他建议以一种可以重复使用的方式记录建筑设计[17]。在他的一本书[18]中,他提出了一个模式的定义,后来被其他研究人员普遍使用,即下面的定义(2):定义2.每个模式都描述了一个在我们的环境中反复出现的问题,然后描述了这个问题的解决方案的核心,这样你就可以使用这个解决方案一百万次,而不需要以同样的方式做两次。在软件工程领域,模式在1987年晚些时候出现,当时Cunninghamet al.决定应用模式方法来指导开发人员使用Smalltalk,一种面向对象的语言[19]。 后来,4名研究人员(通常称为GoF-Gangof Four)发布了一本书,定义了面向对象应用程序开发的设计模式集合[20]。从那时起,许多研究人员提出了许多用例的软件模式,例如微服务[21]和物联网[22]。它们可以分为三类:在最高抽象级别定义应用程序的一般结构(元素,连接)的架构模式,定义组织模块,类或组件以解决问题的方法的设计模式,以及在代码级别解决语言相关问题的方法。在应用程序中使用模式会带来许多好处。首先,由于现有的模式经常被其他人广泛地测试和应用,它们可以在新的设计中被重用,作为给定情况下的最佳解决方案。它们还定义了开发人员之间的共同语言,因为软件模式是用有意义的名称定义的。然而,它们的应用不一定总是系统的:将错误的模式应用到某个设计中可能弊大于利。 它们还可能增加软件的复杂性. 例如,如果所讨论的对象不敏感并且仅被一个其他对象访问,则帮助控制对对象的访问的Proxy模式是不必要的。为了易于重用,软件模式通常使用模式模板来表示。 两种最常用的模式 模 板 是 由 GoF 提出的形式( GoF 模 式 格 式 ) 和 由 ChristopherAlexander [23]提出的Alexandrian形式。在这两种方法中,模式都是由一个表达性的名称、它所适用的上下文和一个重复出现的问题来描述的。亚历山大形式也由以下内容组成:描述模式的解决方案,模式影响的力量,应用示例,结果上下文,模式深层或复杂方面的基本原理,相关模式和已知用途。GoF格式包含其他类型的信息:模式的可选分类,如果模式也以不同的名称存在,则称为字段,介绍模式可以解决的场景示例的动机,描述模式可以应用的情况的适用性,参与者(例如,类和对象)以及将它们联系起来以执行其职责的协作,模式的结构,在软件上使用它的后果,描述代码示例和要考虑的关键技术方面的实现部分,已知用途和相关模式。从现有知识编写模式的过程也是模式社区的一个研究主题例如,Meszaros和Doble [24]提出了一种用于模式编写的模式语言,从而使用模式来解决编写模式时常见的问题。Harrison [25]提出了牧羊建议,这是模式社区中使用的一种方法,通过让有经验的模式作者审查来自其他人的模式来提高模式的质量模式格式以及编写模式的方法对于以一种简洁和信息丰富的方式构造模式非常有用,因为即使具有与要编写的模式相关的领域的专业知识,也很难将模式形式化在本文中,我们选择使用简化的模式格式,因为在收集的论文中没有统一的符号来表达与Alexandrian或GoF模式格式相同的细节量的模式因此,在文献综述期间收集了作为背景和问题、解决方案和示例的专利。使用这种模式格式,构成了一个统一的模式集3. 审查进程由于遵循稳健的方法进行高质量文献综述非常重要,因此本文遵循Kitchenham等人[26]的指南进行系统性文献综述(SLR)。这项任务分为以下三个主要阶段:5https://www.coindesk.com/understanding-dao-hack-journalists。●●●N. Six等人区块链:研究与应用3(2022)10006141. 计划:在这个阶段,研究问题以及SLR的目标被引出。此外,还选择了用于检索论文的文献数据库,并给出了纳入/排除标准2. 执行:SLR按照先前设计的计划执行。研究被提取,然后过滤,剩下的论文被阅读。 分析框架用于提取必要的数据来回答研究问题。3. 报告:真实地给出SLR的结果,以及对提取的研究的质量评估。然后,将在各自的章节中对其进行讨论。3.1. 审查规划表1入选和排除标准。入选标准- 呈现一个或多个基于区块链的模式。- 这篇论文被描述为在其他公认的研究中提出了基于区块链的模式。排除标准- 这篇论文是其他研究的重复。- 本文不属于软件工程和区块链领域。- 全文无法查阅。- 这篇论文不是用英语写的。- 该论文未经同行评审。系统性文献综述计划的第一步是形成合理的研究问题。 这些问题的设计必须考虑到答案必须涉及本研究的研究目标。本研究的主要目的是从现有文献中提取一个全面统一的区块链软件模式集合然而,大量收集模式并不足以实现其可重用性和可用性;因此必须提出一个分类方案为了进一步细化提取模式的质量,我们还可以考虑这些模式的上下文:它们与现有非区块链模式的关系(例如, GoF模式[20])或其与特定技术或领域的联系。事实上,我们发现了几种与其领域或技术无法分离的模式。例如,Limitmodifiers模式直接绑定到Solidity语言中的modifier关键字,因此不适用于不支持它的区块链。这些问题都必须在研究问题中加以解决最后,系统文献综述的结果可以用来突出区块链软件模式文献中的几个研究空白,以供进一步探索。 从本研究的不同考虑出发,提出了以下研究问题:RQ1:从现有的基于区块链的模式文献中可以建立什么分类法?RQ2:现有的基于区块链的模式及其不同类别是什么?RQ3:在已识别的模式中,最常提到的模式及其变体是什么RQ4:一些模式是否等同于现有的软件模式?RQ5:文学模式的应用是什么?RQ6:目前基于区块链的模式研究存在哪些差距?选 择了 三个 图书 馆数 据库 来提 取相 关研 究 : IEEE Xplore , ACMDigital Library和Scopus。 从选定的文件滚雪球也被认为是一个数据来源,因为它可能有助于包括其他相关文件。为了查询论文数据库,必须设计一个检索我们选择使用准黄金标准(QGS)方法来选择组成查询的单词。 QGS方法包括选择一组必须出现在查询结果中的研究,然后围绕这些论文中使用的术语设计查询。因此,选择了5项研究组成本研究语料库[27由此,构成了以下查询(blockchain或blockchain-based或我们决定只包括在标题、摘要或关键词中包含这些术语的研究,以提高查询的精度。 为了预先确定SLR的过滤阶段,定义了入选和排除标准。他们提供了系统的指导方针,以包括或排除在过滤阶段,其中论文被选择为进一步阅读的论文。表1提供了选定的入选和排除标准。最后,准备了一组问题来评估所提取模式的质量Q1:论文是否清楚地提出了模式解决方案、问题和背景?QQ2:论文是否引用了使用所提出的模式的现有解决方案?QQ3:论文是否使用标准的模式演示形式(例如,GoF/Alexandian模板[23],在第2.2中描述)?对于每个问题,可以在以下选项中给出答案:“是”、“部分”和“否”。知道论文的答案可以帮助评估论文中引入的模式的质量,而知道所有论文的答案可以评估从该文献研究中获得的集合的质量为了保证提取模式的质量,我们决定只保留第一个问题的答案至少是“部分”的论文。事实上,如果没有对解决方案及其在特定上下文中解决的问题的描述,很难提取出一个清晰的模式3.2. 审查执行情况图 1给出了审查协议的图形概述,其中显示了每个步骤的剩余或排除论文的数量。在所选的三个数据库上检索到98篇论文当Scopus索引来自许多其他图书馆的论文时,发现并删除了17份重复的论文然后,根据综述计划中定义的纳入/排除标准,对论文的标题、摘要和关键词进行过滤(第3.1小节)。 32篇论文从第一次过滤中被保留下来。在阅读阶段,由于几个原因,另外18篇论文被过滤掉首先,他们中的一些人不符合我们的纳入/排除标准,因为他们在研究中没有提出任何设计模式。此外,在几篇论文中,软件模式的介绍对于数据提取来说不够清楚(QQ1)。最后,一些文件被排除在外,因为它们只是提出模式,而没有提出任何改进建议。 在阅读阶段,其他人提到的介绍基于区块链的模式的论文被添加到论文语料库中。此外,向后和向前滚雪球完成每篇论文,以完成研究的语料库。在系统性文献综述期间定期进行的向后滚雪球和向前滚雪球分别旨在分析选定论文的引文以及引用选定论文的其他论文,以发现新的相关论文。 这导致增加了52篇来自滚雪球的论文,其中46篇被过滤掉。结果是在最终语料库中增加了6项新的研究,这些研究是在向后滚雪球过程中专门发现的。因为滚雪球效应并没有产生任何新的语料库研究请注意,与前向滚雪球和通过执行查询定期纳入论文相反,在后向滚雪球过程中未排除非同行评审论文。之所以做出这一决定,是因为它们可以被认为是相关的,因为引用它们的选定论文本身就经过了同行评审。●●●●●●●●●N. Six等人区块链:研究与应用3(2022)1000615Fig. 1. 审核工艺方案。3.3. 分类构建在审查过程的同时,使用新获得的知识建立分类为了实现这样的任务,使用了分类学开发方法[32]。Nickerson等人提出的方法。首先描述了什么是分类法以及分类法开发的相关问题然后,它给出了一种满足上述问题的税收发展方法,并适用于多种情况。根据参考文献[32],分类学的一个可能的定义是下面的定义(3):定义3.分类法是一组维度,每个维度都由相互排斥和共同穷举的特征组成,例如所考虑的每个对象对于每个维度都有且只有一个特征正如定义所述,一个重要的属性是,没有对象可以在一个维度中具有两个不同的特征。此外,分类法并不意味着是完美的,可以随着时间的推移而变化,但它必须满足可用的定性属性。分类法必须简洁:太多的维度会导致应用分类法的困难它还必须是稳健的,包含足够清晰的维度和特征以区分内部包含的对象,并且是全面的,即能够将所考虑的域中的已知对象分类。最后,分类法必须是可扩展的,以适应用户的需要,并使新的对象的包含,并解释,以提供信息的性质,对象的研究。这些品质对于我们的分类法的构建特别重要:分类法的简洁性和鲁棒性将帮助读者在不同的类别中导航,以选择相关的模式(即, 知识领域),并且可扩展性将允许分类法在未来对区块链模式的研究中发展。分类法构建的第一步,如Ref.[32]这是一个定义元特征的问题。这为识别分类法的其他特征提供了基础在该分类法中,选择了两个元特征由于这项研究的重点是设计方面,我们发现它与订单模式相关,这取决于它们在区块链中的位置:在区块链中(智能合约,交易数据),或在区块链之外(与区块链交互的服务,钱包等)。然后,由于构建分类法是一个迭代过程,因此必须确定结束条件事实上,如前所述,分类法并不意味着是完美的;因此,当一个令人满意的分类法建立起来时,这个过程必须停止。当一个良好构建的分类法的所有品质都存在时,它被认为是令人满意的还可以添加其他结束条件我们选择添加的一个条件是,对象的代表性样本的所有对象都已被检查。由于模式是本研究的基石,因此对所有模式进行检查以构建准确的分类法非常重要。因此,这种分类法的构建是从概念到概念的,而不是相反:从模式中起草类别,然后进行细化以返回准确的分类法。接下来的三个步骤是分类法本身的构建。由于它们是递增的,因此必须重复,直到满足结束条件。首先,必须完成对象子集的识别在我们的例子中,子集由所有已识别的模式组成下一步是识别共同特征并对对象进行分组。 为此,设计了一种基于自然语法的算法来摄取所有模式的总和,对它们进行词形化,并识别出一组经常出现的单词(n-gram)。对于二元语法,最常见的单词组合是“智能合约”(54次),“数据存储”(11次),“Pro x y合约”(6次)和“工厂对象”(6次)。其他有趣的组合被发现:“区块链外”(5次),“限制执行”(3次)和“关键操作”(3次)。从这些组合和其他组合中,可以做出三个假设:(1)聪明N. Six等人区块链:研究与应用3(2022)1000616契约是基于区块链的模式中的一个关键主题,(2)许多传统的软件设计模式都可以在模式摘要中找到。 因此,现有的软件模式知识和新设计的模式之间可能存在联系;(3)一些重要的设计方面在模式摘要中反复出现。E-x-numerical集合名称也被用来生成类别。 例如[33],提出了专门用于智能合约天然气效率的模式。这样的集合给出了潜在类别类型的提示。利用这些假设和我们的个人知识,建立了第一个分类。由于并非所有的模式在第一次迭代中都符合定义的维度,因此进行了另外两次迭代来构建本研究中我们还发现,在文献回顾中,大多数发现的模式是设计模式,因此分类已重新从所有软件模式的设计模式。该分类法的最终版本见与RQ1相关的第4.13.4. 结果本节如实地介绍了系统的文献研究的结果 在第4节讨论每个研究问题时会给出更多细节。论文的最终语料库由20项研究组成,其中6项是通过参考文献滚雪球增加的 其中19个提出了设计模式,而只有一个提出了架构模式。 没有发现引入习语的研究。然而,发现的一些模式更多地与习惯用法而不是设计模式相关,因此被归类为习惯用法。从这20项研究中发现了160种模式,包括重复模式。首先,据说来自其他研究的模式也被添加进去,但后来被过滤掉,以确保提取阶段没有丢失任何模式。在去除重复之后,已经发现了120个独特的模式。其中104种被归类为设计模式,3种被归类为架构模式,14种被归类为习惯用法。由于在SLR期间收集了跨论文模式之间的链接,因此它们已被用于过滤大量重复。然后,使用模式名称和摘要/解决方案来筛选其他模式。 在使用这些字段删除模式时,已经采取了预防措施:在微小方面出现分歧的紧密模式被保留为单独的模式。关于对接受的论文进行的质量评估,图2显示了每个问题的答案分布。对于第一个质量问题,20篇论文中有8篇明确介绍了模式,而12篇论文可能缺乏模式细节。第二个质量问题表明,4篇论文没有提到任何实施的例子,7篇论文平均每份引用一个例子。模式,9项研究引用了2个以上的实施实例。最后,第三个质量问题表明,8篇论文使用模式格式来描述他们的模式,6篇论文使用一种形式,但缺乏模式格式中常见的重要部分,6项研究没有使用任何特定的格式。4. 讨论在本节中,每个研究问题都是使用在完成系统性文献综述过程中收集的结果来解决的每个问题的答案都在各自的小节中给出,并对这些结果进行了讨论。4.1. RQ1:从现有的基于区块链的模式文献中可以建立什么分类法?在本小节中,我们将介绍一种设计模式分类法,将设计模式分类为综合类别,以帮助决定在基于区块链的应用程序开发的特定方面使用什么模式这个分类法是使用参考文献[1]中[32],其结构详见第3.3。图3显示了所建议的设计模式分类法的图形表示。该分类法包括2个元类别,还创建了中间类别,以将类别集中在“链上模式”元类别中:“智能合约模式”,“数据管理模式”和“基于域的模式”。“链上/链下交互模式”类别旨在重新组合由与区块链交互的链下元素组成的这一类别是开发去中心化应用程序的关键,因为拟议的设计模式可能会将链下系统和软件与链上数据或智能合约联系起来。四个子类别组成这个类别。第一个是“数据交换模式”子类别,它对能够在链上智能合约和链下组件之间进行通信的模式进行了事实上,区块链不能从外部请求数据,因此需要外部服务(即,Oracle)在智能合约中推送新数据。“数据管理模式”子类别由利用链下数据但使用区块链来保证这些数据的防篡改或可信任性的设计模式组成。例如,对数据集进行散列,然后将散列存储在链上以证明数据集的完整性。“钱包和密钥模式”子类别处理分散应用程序上下文中的钱包和密钥管理。最后,图二. 质量评估答案分发(标签详见第3.1)。N. Six等人区块链:研究与应用3(2022)1000617图3. 设计模式分类法。BPM:业务流程管理模式在“基于领域的模式“中间类别中请注意,这一类别旨在随着特定领域基于区块链的模式的进步而扩展。因此,根据现有的基于领域的专利知识创建了三个特定领域的类别:“业务流程管理(BPM)模式“子类别涉及链上BPM(例如,链上活动等),“大数据模式”子类别提出了区块链在大数据中的应用,“去中心化身份模式”子类别利用区块链来创建和管理去中心化身份。第四个子类别“智能合约模式”中间类别对涉及智能合约实现和管理的模式进行分类由于确保智能合约的安全性是至关重要的,“合约安全模式”子类别重新组合了智能合约模式,这些模式处理智能合约的重入攻击、过流攻击或非法行为等安全问题。“合约效率模式”子类别本质上涉及降低利用智能合约的成本的模式,特别是在公共区块链上。它还包含其他效率方面的模式,例如数据刷新,这是智能合约的一项困难任务,因为它们无法自己执行对其他智能合约的请求。“合约访问控制模式”子类别重新组合了用于执行智能合约功能的权限和授权管理的模式。最后,例如,拥有一个PROXy智能合约,将函数调用中继到其他合约。最后一个中间类别“数据管理模式”涉及有效的链上数据管理模式。 它与“链上/链下交互模式”子类别的“数据管理模式”子类别不同,因为它只涉及位于智能合约或直接在交易中的链上数据。“迁移模式“子类别将帮助从一个来处理链上数据存储。通过系统的文献回顾,分类法已被成功地应用于模式分类。然而,它意味着是可扩展的;因此,类别可能会根据基于区块链的模式的最新发展而变化,特别是随着新的架构模式或习惯用法的出现,由于它们的稀缺性而不在此分类中这种分类对于充分使用系统性文献综述中识别的模式非常重要。例如,如果用户希望在其应用程序中实施智能合约安全措施,以保护其免受威胁或漏洞的影响,则会尝试在“合约安全模式”子类别中进行搜索,它们也是互补的:因为每个类别都涵盖了基于区块链的应用程序设计的特定方面例如,“合约安全”模式可以与“合约效率”模式一起使用,以同时提高设计智能合约的成本效率和安全性。然而,个别模式之间可能的冲突被排除在本文的范围之外,因为这些信息在检索到的论文中不存在。4.2. RQ2:现有的基于区块链的模式及其不同类别是什么?本小节介绍了在分类法定义的不同类别中发现的模式的示例为了简洁起见,并不是所有的模式都将被介绍。重点将特别放在多项研究中观察到的模式然而,这项研究的结果,包括所有模式的列表,都可以在GitHub6上找到。请注意,即使架构模式和习惯用法不在分类法之内,它们仍然会出现在小节的末尾。4.2.1. 链上/链下交互模式这第一个类别将所有模式与其链上和链下组件重新组合。它分为四个子类别。表2列出了该类别中包含的所有模式。区块链到另一个。在“加密模式”下,用于链上数据加密,https://github.com/harmonica-project/blockchain-patterns-collection。N. Six等人区块链:研究与应用3(2022)1000618表2链上/链下交互模式。子类别模式区块链作为协作业务流程执行的软件连接器关于去中心化的身份模式,5种设计模式数据交换模式数据管理模式钱包和钥匙图案交易模式Ticker tape [34]、Oracle [27,28,29,35]、ReverseOracle [27,34,35]、Pull-based inbound oracle [36]、Push-based inbound oracle [36]、Pull-based outboundoracle [36]、Push-based outbound oracle [36]状态通道[27,35],(链下)合约注册表[35],合法和智能合约对[27],链下数据存储[27,31,35,37,38,39],机密和伪匿名合约执行[40],链下签名[39],委托计算[39]主/子密钥[31],冷热钱包存储[31],密钥碎片[31]&&X-确认[27]”[ 31 ]这句话是从《易经》中引申出来的。第一种是身份识别器注册模式,它提出使用智能合约在DID(去中心化身份识别器)(域内人类的唯一身份识别器)与链下存储属性的位置之间建立映射。在这里,DID使用用于证明标识符所有权的私钥进行管理。如果密钥丢失,则可以使用Delegates列表模式来检索此所有权。为了保护用户隐私,可以使用多个标识符模式创建多个标识符标识符也可以通过区块链&社交媒体账户配对模式映射到社交媒体账户,以提高社交媒体账户和标识符的可信度。最后,双分辨率模式有助于使用DID通过自己的DID与另一个实体进行通信。第一个是实现链上智能合约和链下组件之间的通信7种模式被归类在该子类别中。最常见的模式是Oracle模式,在5篇不同的论文中介绍或提到[27由于区块链无法请求外部世界检索最新信息,因此名为Oracle的组件被设计为侦听区块链请求或指示需要某些信息的状态,然后向区块链发送交易也有人提出了相反的建议:当链下组件需要区块链数据工作时,应用反向oracle模式,因此它们会监听特定的状态变化并做出相应的反应[27,33- 35 ]。另一项研究提出了这些模式的更详细的变体,因为它们区分了数据流方向(如Oracle和反向Oracle),以及数据是从数据源中推出还是从活动组件中提取。第二个子类将7种模式分组,这些模式管理和存储链下数据,同时使用区块链作为额外的信任层。一个常见的模式有很多名字,就是链下数据存储模式[27,31,35,37它包括在链下存储大量数据,然后生成数据的哈希并将其保存在链上。因此,利用它要便宜得多,同时可以使用链上哈希来检查存储数据的完整性。 该模式在第4.3.1小节的专门部分中详细介绍。同样的概念也适用于变体。例如,状态通道模式涉及让两个或更多用户在链下执行微交易,并定期在链上存储哈希值,以证明此类交易的存在。 其他研究提出了链下法律合同和链上智能合同之间的绑定,以确保敏感数据保持在链下,而只有重要的签名和状态存储在链上[27,40]。最后,第三和第四个子类别分别是“钱包和钥匙模式”和“交易模式”。 它们分别只包含三种和一种模式:密钥分片,&冷热钱包存储和用于管理区块链钱包和密钥的&主从密钥模式[27,31],以及X确认模式[27]。虽然这些类别中只有少数模式,但它们已被添加,因为它们可能包含更多的模式。4.2.2. 链上模式-基于域的模式“基于域的已经为“大数据模式”类别确定了一种模式:大数据生态系统的区块链安 全 模 式 模 式 ( Blockchain Security Pattern for Big DataEcosystems)模式杠杆-区块链注册在数据存储上执行的“多域特征模式”子类别将12种模式分组,这些模式提出链上特征来解决多个域中发现的例如,轮询和投票模式[28,34]可用于在链上做出协作决策,时间约束访问或一次性访问模式[31]允许用户从链上授权智能合约访问链下资源,随机模式[28]可用于在链上生成随机数,这是一项困难的任务。4.2.3. 链上模式-智能合约模式“链上模式”的第二个中间类别是“智能合约模式”。 在去中心化的应用程序中,智能合约通常是最重要的部分。可以对它们执行许多敏感操作,例如存储和转移加密货币。因此,智能合约操作的最大安全性至关重要,必须实现精心设计的访问控制功能来支持它。管理它们也很困难,因为智能合约代码一旦部署就不可变。因此,链上智能合约架构必须经过充分的设计,以解决智能合约的不灵活性,并确保它们实现其初始目标,同时在需要时易于实现。最后,它们通常必须是高效的,因为对于公共区块链,开发人员和用户必须为部署和执行智能合约功能付费。这些主题中的每一个对于智能合约的开发都很重要,并且有自己的子类别,如下所示。表4列出了这一类别中的所有模式。第一个子类别“合约管理模式”是关于在去中心化应用架构中组织良好的智能合约。12种不同的模式已被标记为该子类别。其中一些解决了dApp入口点,功能和数据之间的关注点分离。最常提到的图案是ProX y表3链上模式-基于域的模式。子类别模式B
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功