一种基于联盟链的自适应网络的构建方法及装置与流程

文档序号:18471113发布日期:2019-08-20 20:18阅读:165来源:国知局
一种基于联盟链的自适应网络的构建方法及装置与流程

本发明涉及区块链技术领域,特别涉及一种基于联盟链的自适应网络的构建方法及装置。



背景技术:

区块链(blockchain)是借由密码学串接并保护内容的串连交易记录(又称区块)。每一个区块包含了前一个区块的加密散列、相应时间戳记以及交易数据(通常用默克尔树算法计算的散列值表示),这样的设计使得区块内容具有难以篡改的特性。用区块链所串接的分布式账本能让两方有效纪录交易,且可永久查验此交易。

区块链根据访问权限,通常可以分为公有链、联盟链和私有链。公有链是指任何人都可以根据协议接入并参共识的区块链;联盟链是指共识过程受到预选节点控制的区块链;私有链是指权限在一个组织中,并受该组织完全控制的区块链。

区块链在技术层面,通常分为共识算法、密码学、p2p网络等关键技术点。其中p2p网络技术维护整个区块链的网络拓扑,同时实现消息在整个区块链网络中的传播。在共识算法和密码学选定的情况下,p2p网络的效率,成为制约区块链系统性能的主要瓶颈。尤其是在联盟链的场景中,当区块链系统的负载较高时,在区块链中传播的消息量较大,此时消息的传播效率在很大程度上决定了区块链系统的整体性能。

在现有区块链系统中,较多使用gossip算法进行消息传播。gossip算法又被称为反熵(anti-entropy),gossip的特点为:在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节点可以通过网络连通,最终他们的状态都是一致的。

在现有区块链系统中,p2p网络的构建,通常是固定的:节点倾向于连接尽可能多或者固定个数的邻居节点。对于公有链系统,由于其性能较低,对p2p网络的要求相对较低,固定的网络结构可以满足消息传播的需求。但在联盟链的环境下,通常需要较高的系统性能,对消息传播效率的要求也较高,固定的网络结构往往成为阻碍区块链网络性能提升的瓶颈。一方面,适用于联盟链的固定的网络结构需要在区块链系统构建之初进行设定,且设定之后,如果区块链系统节点规模发生变化时无法进行调整或调整难度极大。另一方面,当联盟链系统节点规模未发生变化,但是系统吞吐量较高时,现有的基于固定网络结构的联盟链系统会由于消息传播量过大,而使网络带宽成为整个区块链系统的性能瓶颈。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种基于联盟链的自适应网络的构建方法及装置,以克服现有技术中适用于联盟链的固定的网络结构需要在区块链系统构建之初进行设定,且设定之后,如果区块链系统节点规模发生变化时无法进行调整或调整难度极大,以及固定的网络结构不能满足联盟链对系统的性能需求,阻碍联盟链网络性能的提升等问题。

为解决上述一个或多个技术问题,本发明采用的技术方案是:

一方面,提供了一种基于联盟链的自适应网络的构建方法,该方法包括如下步骤:

s1:根据联盟链中当前节点的节点列表,计算所述当前节点与所述联盟链中其他节点的逻辑距离,根据所述逻辑距离对所述节点列表中节点进行按序排序,生成排序后节点列表;

s2:在所述排序后节点列表中选取前n个节点作为与所述当前节点建立连接的候选节点,其中,n为所述排序后节点列表中节点的总数;

s3:将所述当前节点与所述候选节点依次建立连接,若连接失败,则在所述排序后节点列表中按序选择新的候选节点建立连接,直至所述当前节点连接n个节点或所述排序后节点列表中再无节点;

s4:为所述联盟链中的节点设置定时器,定时重复执行步骤s1至s3,更新所述联盟链的网络结构。

进一步的,所述步骤s1还包括:

s1.1:所述当前节点与所述联盟链中的邻居节点建立连接后,获取所述邻居节点拥有的节点列表;

s1.2:将所述邻居节点拥有的节点列表加入所述当前节点自己的列表中,生成所述当前节点的初始节点列表;

s1.3:在所述初始节点列表中选取符合预设要求的节点与所述当前节点建立连接,获取新的邻居节点拥有的节点列表加入所述初始节点列表中,生成所述当前节点的节点列表;

s1.4:重复步骤s1.1至s1.3,更新所述当前节点的节点列表。

进一步的,所述在所述初始节点列表中选取符合预设要求的节点具体包括:

计算所述当前节点与所述初始节点列表中节点的逻辑距离;

选取若干个与所述当前节点的逻辑距离最近或最远的节点作为符合预设要求的节点。

进一步的,所述步骤s2还包括:

根据所述联盟链网络的规模,设置所述候选节点的最小值,当计算获取的所述候选节点数n小于所述候选节点的最小值时,令n等于所述候选节点的最小值。

进一步的,所述步骤s2还包括:

获取所述当前节点的网络带宽使用率,当所述网络带宽使用率大于预设的阈值时,令所述候选节点数n递减1,其中,n不小于所述候选节点的最小值。

另一方面,提供了一种基于联盟链的自适应网络的构建装置,所述装置包括:

列表维护模块,用于根据联盟链中当前节点的节点列表,计算所述当前节点与所述联盟链中其他节点的逻辑距离,根据所述逻辑距离对所述节点列表中节点进行按序排序,生成排序后节点列表;

节点选取模块,用于在所述排序后节点列表中选取前n个节点作为与所述当前节点建立连接的候选节点,其中,n为所述排序后节点列表中节点的总数;

节点连接模块,用于将所述当前节点与所述候选节点依次建立连接,若连接失败,则在所述排序后节点列表中按序选择新的候选节点建立连接,直至所述当前节点连接n个节点或所述排序后节点列表中再无节点;

基础设置模块,用于为所述联盟链中的节点设置定时器,定时更新所述联盟链的网络结构。

进一步的,所述列表维护模块包括:

列表获取单元,用于所述当前节点与所述联盟链中的邻居节点建立连接后,获取所述邻居节点拥有的节点列表;

第一生成单元,用于将所述邻居节点拥有的节点列表加入所述当前节点自己的列表中,生成所述当前节点的初始节点列表;

节点连接单元,用于在所述初始节点列表中选取符合预设要求的节点与所述当前节点建立连接;

第二生成单元,用于获取新的邻居节点拥有的节点列表加入所述初始节点列表中,生成所述当前节点的节点列表。

进一步的,所述列表维护模块还包括:

距离计算单元,用于计算所述当前节点与所述初始节点列表中节点的逻辑距离;

节点选取单元,用于选取若干个与所述当前节点的逻辑距离最近或最远的节点作为符合预设要求的节点。

进一步的,所述基础设置模块还用于根据所述联盟链网络的规模,设置所述候选节点的最小值;

所述节点选取模块包括:

比较单元,用于比较计算获取的所述候选节点数n与所述候选节点的最小值的大小。

进一步的,所述节点选取模块还包括:

带宽获取单元,用于获取所述当前节点的网络带宽使用率

所述比较单元还用于比较所述网络带宽使用率与预设的阈值的大小。

本发明实施例提供的技术方案带来的有益效果是:

1、本发明实施例提供的基于联盟链的自适应网络的构建方法及装置,网络结构可以随时根据当前的节点规模进行调整,随时保持最高效率;

2、本发明实施例提供的基于联盟链的自适应网络的构建方法及装置,网络结构可以根据当前的网络带宽使用率进行调整,从而避免网络带宽成为整个区块链系统的性能瓶颈,使得区块链系统的性能得到进一步提升。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据一示例性实施例示出的基于联盟链的自适应网络的构建方法的流程图;

图2是根据一示例性实施例示出的基于联盟链的自适应网络的构建装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是根据一示例性实施例示出的基于联盟链的自适应网络的构建方法的流程图,参照图1所示,该方法包括如下步骤:

s1:根据联盟链中当前节点的节点列表,计算所述当前节点与所述联盟链中其他节点的逻辑距离,根据所述逻辑距离对所述节点列表中节点进行按序排序,生成排序后节点列表。

具体的,当前节点为联盟链中的任一节点,节点启动时,根据预先填写的种子节点接入区块链网络。通过数据共享的方式,维护全网所有节点列表,获取当前节点的节点列表。每个节点都有一个地址,通常用hash表示,当前节点根据现有kad网络中计算逻辑距离的算法,计算当前节点与当前节点的列表中每个节点的逻辑距离,例如,对两个节点的hash地址做“异或”计算,得到的值就作为两个节点之间的逻辑距离。然后以逻辑距离的升序方式或者降序方式对当前节点的节点列表中的节点进行排序,生成排序后节点列表。这里需要说明的是,本发明实施例中,逻辑距离不是实际的距离,只是一种在网络中可以代表距离的逻辑表示方法。

s2:在所述排序后节点列表中选取前n个节点作为与所述当前节点建立连接的候选节点,其中,n为所述排序后节点列表中节点的总数。

具体的,本发明实施例中的联盟链,采用现有区块链系统中使用较多gossip算法进行消息传播。由于gossip算法的特点,区块链网络中的节点,不需要连接所有的其他节点,即可获取完整的数据。当前节点所连接的节点数量会影响系统的延迟。在某些情况下,用户会选择在适当提高系统延迟的情况下,获得较高的系统可用性。综上所述,作为一种较优的实施方式,在本发明实施例中,在排序后节点列表中选取前n个节点作为与当前节点建立连接的候选节点,其中,n为排序后节点列表中节点的总数。这样设置,在联盟链中节点数量线性增长时,将与当前节点连接的节点的数量将至对数增长,减少当前节点所连接的节点数量,从而可以将由节点规模增加带来的网络开销由o(n)复杂度将至o(logn),从而提高联盟链网络系统的性能。

s3:将所述当前节点与所述候选节点依次建立连接,若连接失败,则在所述排序后节点列表中按序选择新的候选节点建立连接,直至所述当前节点连接n个节点或所述排序后节点列表中再无节点。

具体的,当前节点尝试与步骤s2中选取的候选节点依次建立连接。对于连接失败的候选节点,从排序后节点列表中,根据逻辑距离的远近,继续按序重新进行选取,直至当前节点成功与n个节点建立连接或排序后节点列表中再无节点为止。这里需要说明的是,若是节点列表中的节点是按升序排列的,则选择新的候选节点时也按照升序进行选择,反之,若是节点列表中的节点是按降序排列的,则选择新的候选节点时继续按照降序进行选择。由于在本发明实施例中,整个构建联盟链网络的过程是定期循环执行的,因此步骤s3在执行伊始,可能会有距离较近(按升序时)或距离较远(按降序时)的节点之前无法连接,而现在恢复连接的情况,因此在当前节点与候选节点建立连接时,始终要尝试建立逻辑距离最近(按升序时)或距离较远(按降序时)的n个节点,断开已有的逻辑距离较远(按升序时)或距离较近(按降序时)的节点。

s4:为所述联盟链中的节点设置定时器,定时重复执行步骤s1至s3,更新所述联盟链的网络结构。

具体的,由于联盟链网络会因为节点的规模变化以及系统负载变化而随时发生改变,节点列表中节点的在线状态也可能随时发生改变,因此联盟链网络中的各个节点都需要设置定时器,定时重复执行步骤s1至s3,更新所述联盟链的网络结构,随时保持最新的网络结构。

作为一种较优的实施方式,本发明实施例中,所述步骤s1还包括:

s1.1:所述当前节点与所述联盟链中的邻居节点建立连接后,获取所述邻居节点拥有的节点列表。

具体的,当前节点与联盟链中已有的邻居节点(peer)建立连接后,邻居节点(peer)会将其所知的节点列表告知当前节点,使当前节点获取邻居节点拥有的节点列表。

s1.2:将所述第一节点列表加入所述当前节点自己的列表中,生成所述当前节点的初始节点列表。

具体的,当前节点获取的邻居节点的节点列表加入自己的列表中,生成当前节点的初始节点列表。

s1.3:在所述初始节点列表中选取符合预设要求的节点与所述当前节点建立连接,获取新的邻居节点拥有的节点列表加入所述初始节点列表中,生成所述当前节点的节点列表。

具体的,在初始节点列表中选取符合预设要求的节点与当前节点建立连接,获取新的邻居节点(即与当前节点建立了连接的节点)拥有的节点列表加入当前节点的初始节点列表中,生成当前节点的节点列表。

s1.4:重复步骤s1.1至s1.3,更新所述当前节点的节点列表。

具体的,重复步骤s1.1至s1.3,对当前节点的节点列表进行更新,如此循环,当前节点所维护的节点列表就会近似包含全网所有的节点。

作为一种较优的实施方式,本发明实施例中,所述在所述初始节点列表中选取符合预设要求的节点具体包括:

计算所述当前节点与所述初始节点列表中节点的逻辑距离。

具体的,这里同样可以先计算当前节点与初始节点列表中节点的逻辑距离,然后根据逻辑距离远近关系升序维护当前节点的节点列表。

选取若干个与所述当前节点的逻辑距离最近或最远的节点作为符合预设要求的节点。

具体的,符合预设要求的节点的数量可以根据具体情况进行设置,作为一种示例,符合预设要求的节点的数量可以选取为初始节点列表中节点总数的对数,这样可以将由节点规模增加带来的网络开销由o(n)复杂度将至o(logn),从而提高联盟链网络系统的性能。

作为一种较优的实施方式,本发明实施例中,所述步骤s2还包括:

根据所述联盟链网络的规模,设置所述候选节点的最小值,当计算获取的所述候选节点数n小于所述候选节点的最小值时,令n等于所述候选节点的最小值。

具体的,为了保证联盟链系统的最低连接需求,可以预先设置一个候选节点的最小值,记为m。候选节点的最小值m可以根据联盟链网络的规模等联盟链的运行环境进行设置。例如,设置候选节点的最小值m=5永远成立,或者令候选节点的最小值m=n/2(n≥5时)。当计算获取的候选节点数n小于候选节点的最小值m时,令n等于候选节点的最小值。即当n<m时,令n=m,这样可以保证候选节点的数量任意时刻最小值为m。

作为一种较优的实施方式,本发明实施例中,所述步骤s2还包括:

获取所述当前节点的网络带宽使用率,当所述网络带宽使用率大于预设的阈值时,令所述候选节点数n递减1,其中,n不小于所述候选节点的最小值。

具体的,设置联盟链网络中的节点监控当前节点的网络带宽使用率,从而获取当前节点的网络带宽使用率,将当前节点的网络带宽使用率记为p,其中0<p<1。同时预先设置一个阈值,当监控到当前节点的网络带宽使用率p大于该预设的阈值时,令候选节点数n递减1,且始终保持n不小于候选节点的最小值m。例如,假设预设的阈值为0.8,则当p>0.8时,则将候选节点数n递减1。这里需要说明的是,本发明实施例中,将候选节点数n递减1只是一种示例,递减数量并不局限于1,具体的递减数量可以根据网络的具体需求进行设置。

设置当前节点的网络带宽使用率p大于该预设的阈值时,令候选节点数n递减1,且同时保持候选节点数量的最小值m。可以根据网络使用率来动态调整候选节点数量,进一步降低网络负载对联盟链系统可用性的影响。

图2是根据一示例性实施例示出的基于联盟链的自适应网络的构建装置的结构示意图,参照图2所示,该装置包括:

列表维护模块,用于根据联盟链中当前节点的节点列表,计算所述当前节点与所述联盟链中其他节点的逻辑距离,根据所述逻辑距离对所述节点列表中节点进行按序排序,生成排序后节点列表;

节点选取模块,用于在所述排序后节点列表中选取前n个节点作为与所述当前节点建立连接的候选节点,其中,n为所述排序后节点列表中节点的总数:

节点连接模块,用于将所述当前节点与所述候选节点依次建立连接,若连接失败,则在所述排序后节点列表中按序选择新的候选节点建立连接,直至所述当前节点连接n个节点或所述排序后节点列表中再无节点;

基础设置模块,用于为所述联盟链中的节点设置定时器,定时更新所述联盟链的网络结构。

作为一种较优的实施方式,本发明实施例中,所述列表维护模块包括:

列表获取单元,用于所述当前节点与所述联盟链中的邻居节点建立连接后,获取所述邻居节点拥有的节点列表;

第一生成单元,用于将所述邻居节点拥有的节点列表加入所述当前节点自己的列表中,生成所述当前节点的初始节点列表;

节点连接单元,用于在所述初始节点列表中选取符合预设要求的节点与所述当前节点建立连接;

第二生成单元,用于获取新的邻居节点拥有的节点列表加入所述初始节点列表中,生成所述当前节点的节点列表。

作为一种较优的实施方式,本发明实施例中,所述列表维护模块还包括:

距离计算单元,用于计算所述当前节点与所述初始节点列表中节点的逻辑距离;

节点选取单元,用于选取若干个与所述当前节点的逻辑距离最近或最远的节点作为符合预设要求的节点。

作为一种较优的实施方式,本发明实施例中,所述基础设置模块还用于根据所述联盟链网络的规模,设置所述候选节点的最小值;

所述节点选取模块包括:

比较单元,用于比较计算获取的所述候选节点数n与所述候选节点的最小值的大小。

具体的,本发明实施例中,设置当计算获取的候选节点数n小于候选节点的最小值时,令n等于候选节点的最小值。

作为一种较优的实施方式,本发明实施例中,所述节点选取模块还包括:

带宽获取单元,用于获取所述当前节点的网络带宽使用率

所述比较单元还用于比较所述网络带宽使用率与预设的阈值的大小。

具体的,本发明实施例中,设置当带宽使用率大于预设的阈值时,令候选节点数n递减1,且始终保持n不小于候选节点的最小值m。

综上所述,本发明实施例提供的技术方案带来的有益效果是:

1、本发明实施例提供的基于联盟链的自适应网络的构建方法及装置,网络结构可以随时根据当前的节点规模进行调整,随时保持最高效率;

2、本发明实施例提供的基于联盟链的自适应网络的构建方法及装置,网络结构可以根据当前的网络带宽使用率进行调整,从而避免网络带宽成为整个区块链系统的性能瓶颈,使得区块链系统的性能得到进一步提升。

需要说明的是:上述实施例提供的基于联盟链的自适应网络的构建装置在触发网络的构建业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于联盟链的自适应网络的构建装置与基于联盟链的自适应网络的构建方法实施例属于同一构思,即该装置是基于该基于联盟链的自适应网络的构建方法的,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1