CN117240900B - 基于软件定义网络的区块链节点发现与组网方法及装置 - Google Patents
基于软件定义网络的区块链节点发现与组网方法及装置 Download PDFInfo
- Publication number
- CN117240900B CN117240900B CN202311490463.6A CN202311490463A CN117240900B CN 117240900 B CN117240900 B CN 117240900B CN 202311490463 A CN202311490463 A CN 202311490463A CN 117240900 B CN117240900 B CN 117240900B
- Authority
- CN
- China
- Prior art keywords
- node
- target
- information
- block chain
- blockchain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000006855 networking Effects 0.000 title claims abstract description 63
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012795 verification Methods 0.000 claims description 57
- 230000004044 response Effects 0.000 claims description 23
- 230000002776 aggregation Effects 0.000 claims description 20
- 238000004220 aggregation Methods 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 16
- 238000004422 calculation algorithm Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种基于软件定义网络的区块链节点发现与组网方法及装置,该方法包括:建立目标区块链节点与软件定义网络控制器之间的网络连接关系,并通过该网络连接关系获取软件定义网络控制器的流表中存储的区块链节点集合信息,根据区块链节点集合信息,将目标区块链节点加入区块链网络。可见,实施本发明能够在新节点加入区块链网络时直接通过软件定义网络控制器获取区块链网络中区块链节点的节点信息,提高新节点发现区块链网络并与现有节点建立初始连接的速度,同时能够重复利用软件定义网络控制器的计算能力、网络位置以及路由信息等资源,进而提高节点发现和建立连接的效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于软件定义网络的区块链节点发现与组网方法及装置。
背景技术
随着互联网的快速发展,区块链作为一种去中心化形式的分布式数据库,能够在资产数字化、供应链、金融、物联网以公共服务等领域提高流通效率,促进产业结构的发展和调整。
目前,区块链系统中的每个终端节点都是平等的,当需要将新节点加入区块链系统中时,需要先找到一个与新节点相邻最近的节点,然后建立该节点与新节点直接的连接,再通过该节点将新节点与其他区块链节点连接。然而,这种加入方式的整体耗时较高,对节点间的网络连通性要求较高,导致新节点加入区块链的效率较低。因此,提出一种在新节点加入区块链网络时,能够提高新节点加入区块链网络的效率的技术方案显得尤为重要。
发明内容
本发明提供了一种基于软件定义网络的区块链节点发现与组网方法及装置,能够在新节点加入区块链网络时,提高新节点加入区块链网络的效率。
为了解决上述技术问题,本发明第一方面公开了一种基于软件定义网络的区块链节点发现与组网方法,所述方法包括:
当检测到目标区块链节点对应的节点加入请求时,根据所述节点加入请求,在所述目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系;
获取所述目标区块链节点对应的区块链节点信息获取请求,并根据所述区块链节点信息获取请求和所述网络连接关系,获取所述软件定义网络控制器的流表中存储的区块链节点集合信息,所述区块链节点集合信息包括区块链网络中的每个区块链节点的第一节点信息;
根据所述区块链节点集合信息,将所述目标区块链节点加入所述区块链网络。
作为一种可选的实施方式,在本发明第一方面中,在所述根据所述区块链节点集合信息,将所述目标区块链节点加入所述区块链网络之后,所述方法还包括:
获取所述目标区块链节点的第二节点信息,所述第二节点信息包括所述目标区块链节点的节点地址信息和/或节点路由信息;
根据所述目标区块链节点的第二节点信息、所述区块链节点集合信息以及预设的最短路径算法,计算所述目标区块链节点到所述区块链网络中的每个所述区块链节点的路由信息,得到路由信息集合;
根据所述目标区块链节点的第二节点信息和所述路由信息集合,更新所述流表中存储的区块链节点集合信息。
作为一种可选的实施方式,在本发明第一方面中,在所述根据所述区块链节点信息获取请求和所述网络连接关系,获取所述软件定义网络控制器的流表中存储的区块链节点集合信息之前,所述方法还包括:
获取所述区块链网络中所有所述区块链节点对应的第一节点信息,每个所述区块链节点对应的第一节点信息包括该区块链节点对应的节点地址信息、节点路由信息、网络位置信息和以及连接关系信息中的至少一种;
将每个所述区块链节点对应的第一节点信息存储到所述软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息。
作为一种可选的实施方式,在本发明第一方面中,所述将每个所述区块链节点对应的第一节点信息存储到所述软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息,包括:
生成每个所述区块链节点的第一节点信息对应的数据包,并将所述数据包发送到所述软件定义网络控制器中的开放流交换机;
通过所述开放流交换机对所述数据包进行解析,得到所述数据包对应的包头数据;
将所述包头数据与所述软件定义网络控制器的流表对应的流表项匹配域进行匹配,当所述包头数据与所述流表项匹配域相匹配时,将所述数据包存储到所述流表中,得到所述区块链网络对应的区块链节点集合信息。
作为一种可选的实施方式,在本发明第一方面中,在所述根据所述目标区块链节点的第二节点信息和所述路由信息集合,更新所述流表中存储的区块链节点集合信息之后,所述方法还包括:
根据所述路由信息集合,确定与所述目标区块链节点直接连接且相邻最近的第一目标区块链节点以及所述第一目标区块链节点的地址信息;
根据所述第一目标区块链节点的地址信息,获取所述第一目标区块链节点中的第一数据集合对应的第一数据标识;
根据预设的选取规则,在与所述目标区块链节点直接连接的所有区块链节点中选取除所述第一目标区块链节点之外的第二目标区块链节点,并确定所述第二目标区块链节点的地址信息;
根据所述第二目标区块链节点的地址信息,获取所述第二目标区块链节点中的第二数据集合的第二数据标识;
将所述第一数据标识和第二数据标识进行对比,当所述第一数据标识和所述第二数据标识相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中。
作为一种可选的实施方式,在本发明第一方面中,所述第一数据集合包括至少一个第一数据块,所述第二数据集合包括至少一个第二数据块;
所述将所述第一数据标识和第二数据标识进行对比,当所述第一数据标识和所述第二数据标识相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中,包括:
根据所述第一数据标识,确定所述第一目标区块链节点中每个所述第一数据块对应的第一哈希值,并根据所述第二数据标识,确定所述第二目标区块链节点中每个所述第二数据块对应的第二哈希值;
对每个所述第一数据块对应的第一哈希值进行计算,得到第一目标哈希值,并对每个所述第二数据块对应的第二哈希值进行计算,得到第二目标哈希值;
将所述第一目标哈希值与所述第二目标哈希值进行对比,当所述第一目标哈希值和所述第二目标哈希值相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中。
作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
获取预设的验证信息,并按照预设的加密秘钥对所述验证信息进行加密;
在所述区块链网络的所有所述区块链节点中确定用于接收所述验证信息的接收节点,并将所述验证信息从所述目标区块链节点发送到所述接收节点;
通过所述加密秘钥在所述接收节点对所述验证信息进行解密,得到目标信息,并对所述目标信息的内容进行验证,当所述目标信息与所述验证信息的内容相匹配时生成响应消息,并将所述响应消息从所述接收节点发送到所述目标区块链节点;
当所述目标区块链节点在预设时长内接收到所述响应消息时,确定所述目标区块链节点与所述接收节点之间通信成功。
本发明第二方面公开了一种基于软件定义网络的区块链节点发现与组网装置,所述装置包括:
网络连接模块,用于当检测到目标区块链节点对应的节点加入请求时,根据所述节点加入请求,在所述目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系;
第一获取模块,用于获取所述目标区块链节点对应的区块链节点信息获取请求,并根据所述区块链节点信息获取请求和所述网络连接关系,获取所述软件定义网络控制器的流表中存储的区块链节点集合信息,所述区块链节点集合信息包括区块链网络中的每个区块链节点的第一节点信息;
节点加入模块,用于根据所述区块链节点集合信息,将所述目标区块链节点加入所述区块链网络。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括:
第二获取模块,用于在所述节点加入模块根据所述区块链节点集合信息,将所述目标区块链节点加入所述区块链网络之后,获取所述目标区块链节点的第二节点信息,所述第二节点信息包括所述目标区块链节点的节点地址信息和/或节点路由信息;
计算模块,用于根据所述目标区块链节点的第二节点信息、所述区块链节点集合信息以及预设的最短路径算法,计算所述目标区块链节点到所述区块链网络中的每个所述区块链节点的路由信息,得到路由信息集合;
更新模块,用于根据所述目标区块链节点的第二节点信息和所述路由信息集合,更新所述流表中存储的区块链节点集合信息。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括:
第三获取模块,用于在所述第一获取模块根据所述区块链节点信息获取请求和所述网络连接关系,获取所述软件定义网络控制器的流表中存储的区块链节点集合信息之前,获取所述区块链网络中所有所述区块链节点对应的第一节点信息,每个所述区块链节点对应的第一节点信息包括该区块链节点对应的节点地址信息、节点路由信息、网络位置信息和以及连接关系信息中的至少一种;
存储模块,用于将每个所述区块链节点对应的第一节点信息存储到所述软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息。
作为一种可选的实施方式,在本发明第二方面中,所述存储模块将每个所述区块链节点对应的第一节点信息存储到所述软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息的方式具体包括:
生成每个所述区块链节点的第一节点信息对应的数据包,并将所述数据包发送到所述软件定义网络控制器中的开放流交换机;
通过所述开放流交换机对所述数据包进行解析,得到所述数据包对应的包头数据;
将所述包头数据与所述软件定义网络控制器的流表对应的流表项匹配域进行匹配,当所述包头数据与所述流表项匹配域相匹配时,将所述数据包存储到所述流表中,得到所述区块链网络对应的区块链节点集合信息。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括:
第一确定模块,用于在所述更新模块根据所述目标区块链节点的第二节点信息和所述路由信息集合,更新所述流表中存储的区块链节点集合信息之后,根据所述路由信息集合,确定与所述目标区块链节点直接连接且相邻最近的第一目标区块链节点以及所述第一目标区块链节点的地址信息;
第四获取模块,用于根据所述第一目标区块链节点的地址信息,获取所述第一目标区块链节点中的第一数据集合对应的第一数据标识;
选取模块,用于根据预设的选取规则,在与所述目标区块链节点直接连接的所有区块链节点中选取除所述第一目标区块链节点之外的第二目标区块链节点,并确定所述第二目标区块链节点的地址信息;
所述第四获取模块,还用于根据所述第二目标区块链节点的地址信息,获取所述第二目标区块链节点中的第二数据集合的第二数据标识;
数据同步模块,用于将所述第一数据标识和第二数据标识进行对比,当所述第一数据标识和所述第二数据标识相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中。
作为一种可选的实施方式,在本发明第二方面中,所述第一数据集合包括至少一个第一数据块,所述第二数据集合包括至少一个第二数据块;
所述数据同步模块将所述第一数据标识和第二数据标识进行对比,当所述第一数据标识和所述第二数据标识相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中的方式具体包括:
根据所述第一数据标识,确定所述第一目标区块链节点中每个所述第一数据块对应的第一哈希值,并根据所述第二数据标识,确定所述第二目标区块链节点中每个所述第二数据块对应的第二哈希值;
对每个所述第一数据块对应的第一哈希值进行计算,得到第一目标哈希值,并对每个所述第二数据块对应的第二哈希值进行计算,得到第二目标哈希值;
将所述第一目标哈希值与所述第二目标哈希值进行对比,当所述第一目标哈希值和所述第二目标哈希值相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中。
作为一种可选的实施方式,在本发明第二方面中,所述第一获取模块,还用于获取预设的验证信息,并按照预设的加密秘钥对所述验证信息进行加密;
所述装置还包括:
第二确定模块,用于在所述区块链网络的所有所述区块链节点中确定用于接收所述验证信息的接收节点,并将所述验证信息从所述目标区块链节点发送到所述接收节点;
验证模块,用于通过所述加密秘钥在所述接收节点对所述验证信息进行解密,得到目标信息,并对所述目标信息的内容进行验证,当所述目标信息与所述验证信息的内容相匹配时生成响应消息,并将所述响应消息从所述接收节点发送到所述目标区块链节点;
所述第二确定模块,还用于当所述目标区块链节点在预设时长内接收到所述响应消息时,确定所述目标区块链节点与所述接收节点之间通信成功。
本发明第三方面公开了另一种基于软件定义网络的区块链节点发现与组网装置,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明第一方面公开的基于软件定义网络的区块链节点发现与组网方法。
本发明第四方面公开了一种计算机存储介质,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行本发明第一方面公开的基于软件定义网络的区块链节点发现与组网方法。
与现有技术相比,本发明实施例具有以下有益效果:
本发明实施例中,建立目标区块链节点与软件定义网络控制器之间的网络连接关系,并通过该网络连接关系获取软件定义网络控制器的流表中存储的区块链节点集合信息,根据区块链节点集合信息,将目标区块链节点加入区块链网络。可见,实施本发明能够在新节点加入区块链网络时直接通过软件定义网络控制器获取区块链网络中区块链节点的节点信息,提高新节点发现区块链网络并与现有节点建立初始连接的速度,同时能够重复利用软件定义网络控制器的计算能力、网络位置以及路由信息等资源,进而提高节点发现和建立连接的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种基于软件定义网络的区块链节点发现与组网方法的流程示意图;
图2是本发明实施例公开的另一种基于软件定义网络的区块链节点发现与组网方法的流程示意图;
图3是本发明实施例公开的一种SDN控制器更新流表的流程示意图;
图4是本发明实施例公开的一种基于软件定义网络的区块链节点发现与组网装置的结构示意图;
图5是本发明实施例公开的另一种基于软件定义网络的区块链节点发现与组网装置的结构示意图;
图6是本发明实施例公开的又一种基于软件定义网络的区块链节点发现与组网装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或端没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或端固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明公开了一种基于软件定义网络的区块链节点发现与组网方法及装置,能够在新节点加入区块链网络时直接通过软件定义网络控制器获取区块链网络中区块链节点的节点信息,提高新节点发现区块链网络并与现有节点建立初始连接的速度,同时能够重复利用软件定义网络控制器的计算能力、网络位置以及路由信息等资源,进而提高节点发现和建立连接的效率。以下分别进行详细说明。
实施例一
请参阅图1,图1是本发明实施例公开的一种基于软件定义网络的区块链节点发现与组网方法的流程示意图。其中,图1所描述的基于软件定义网络的区块链节点发现与组网方法可以应用于基于软件定义网络的区块链节点发现与组网装置中,其中,基于基于软件定义网络的区块链节点发现与组网装置可以包括用于控制区块链节点发现与组网的控制装置,控制装置可以包括智能服务器或者智能平台中的任意一种,智能服务器包括本地服务器或者云服务器,本发明实施例不做限定。如图1所示,该基于软件定义网络的区块链节点发现与组网方法可以包括以下操作:
101、当检测到目标区块链节点对应的节点加入请求时,根据节点加入请求,在目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系。
本发明实施例中,可选的,目标区块链节点为需要加入区块链网络的新区块链节点,节点加入请求可以用于通知网络层控制平面的软件定义网络(Software DefinedNetworking,SDN)控制器与目标区块链节点建立网络连接,软件定义网络控制器是一种网络架构,OpenFlow是一种软件定义网络控制器的网络协议,软件定义网络控制器利用OpenFlow协议将路由器的控制平面(Control Plane)从数据平面(Data Plane)中分离,改以软件方式实现,从而使得将分散在各个网络设备上的控制平面进行集中化管理成为可能,该架构可使网络管理员在不更动硬件设备的前提下,以中央控制方式用程序重新规划网络,为控制网络流量提供了新方案,目标区块链节点与软件定义网络控制器之间的网络连接关系可以用于传输软件定义网络控制器中存储的区块链网络中的区块链节点集合信息,本发明不做限定。
102、获取目标区块链节点对应的区块链节点信息获取请求,并根据区块链节点信息获取请求和网络连接关系,获取软件定义网络控制器的流表中存储的区块链节点集合信息。
本发明实施例中,可选的,区块链节点信息获取请求可以用于获取软件定义网络控制器的流表中存储的区块链节点集合信息,区块链节点集合信息可以包括区块链网络中每个区块链节点的第一节点信息,每个区块链节点的第一节点信息可以包括该区块链节点的节点路由信息,还可以包括该区块链节点的网络位置信息、网络地址信息以及连接关系信息等中的一种或多种,网络连接关系可以用于通过该网络连接关系时目标区块链节点接收区块链节点集合信息,本发明不做限定。
103、根据区块链节点集合信息,将目标区块链节点加入区块链网络。
本发明实施例中,可选的,根据区块链节点集合信息,可以使目标区块链节点与区块链网络中的区块链节点建立路由连接,并通过共识机制完成目标区块链节点加入区块链网络,其中,共识机制可以包括POW(Proof of Work,工作量证明)、POS(Proof of Stake,股权证明)、DPOS(Delegated Proof of Stake,委托权益证明)以及PBFT(PracticalByzantine fault Tolerance,拜占庭共识算法)等中的至少一种,本发明不做限定。
可见,实施图1所描述的基于软件定义网络的区块链节点发现与组网方法能够当检测到目标区块链节点对应的节点加入请求时,根据节点加入请求,在目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系,获取目标区块链节点对应的区块链节点信息获取请求,并根据区块链节点信息获取请求和网络连接关系,获取软件定义网络控制器的流表中存储的区块链节点集合信息,能够在新节点加入区块链网络时直接通过软件定义网络控制器获取区块链网络中区块链节点的节点信息,提高新节点发现区块链网络并与现有节点建立初始连接的速度,根据区块链节点集合信息,将目标区块链节点加入区块链网络,能够保证新节点加入区块链网络时第一时间获取区块链网络中所有区块链节点的节点信息,提高新节点加入区块链网络的效率,同时能够重复利用软件定义网络控制器的计算能力、网络位置以及路由信息等资源,进而提高节点发现和建立连接的效率。
在一个可选的实施例中,在根据区块链节点信息获取请求和网络连接关系,获取软件定义网络控制器的流表中存储的区块链节点集合信息之前,该基于软件定义网络的区块链节点发现与组网方法还可以包括以下操作:
获取区块链网络中所有区块链节点对应的第一节点信息,每个区块链节点对应的第一节点信息包括该区块链节点对应的节点地址信息、节点路由信息、网络位置信息和以及连接关系信息中的至少一种;
将每个区块链节点对应的第一节点信息存储到软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息。
该可选的实施例中,可选的,区块链网络中每个区块链节点对应的第一节点信息可以包括该区块链节点对应的节点地址信息、节点路由信息、网络位置信息和以及连接关系信息中的至少一种,流表是OpenFlow中的表,用于指导OpenFlow交换机对收到的数据包进行转发,相当于二层的MAC地址表和三成的路由表,流表由若干条流表项(Flow Entry)组成,其中,流表项可以包括匹配域(Match Fields)、优先级(Priority)、计数器(Counters)、指令(Instructions)、生存时间(Timeouts)、Cookie和标志(Flags),匹配域用于定义某条流,也是流表匹配的依据,优先级表示该流表项的优先匹配度,计数器用于统计该条流的信息,指令表示对该条流应该如何处理,生存时间表示流表项的有效存活时间,Cookie由控制器设置用来过滤被流统计、流修改和流删除操作请求影响的流表项,标志用于流表项管理,当OpenFlow交换机接收到一个数据包时,将数据包的包头解析后与流表中流表项匹配域进行匹配,匹配成功则执行指令,存储每个区块链节点对应的第一节点信息,本实施例不做限定。
可见,实施该可选的实施例能够获取区块链网络中所有区块链节点对应的第一节点信息,将每个区块链节点对应的第一节点信息存储到软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息,能够通过软件定义网络控制器的流表存储区块链网络中所有区块链节点的节点信息,使得新节点加入区块链网络时只需与软件定义网络控制器建立网络连接即可获取区块链网络中所有区块链节点的网络位置信息,提高了新节点加入区块链网络的效率。
在另一个可选的实施例中,将每个区块链节点对应的第一节点信息存储到软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息可以包括以下操作:
生成每个区块链节点的第一节点信息对应的数据包,并将数据包发送到软件定义网络控制器中的开放流交换机;
通过开放流交换机对数据包进行解析,得到数据包对应的包头数据;
将包头数据与软件定义网络控制器的流表对应的流表项匹配域进行匹配,当包头数据与流表项匹配域相匹配时,将数据包存储到流表中,得到区块链网络对应的区块链节点集合信息。
该可选的实施例中,可选的,每个区块链节点的第一节点信息对应的数据包可以包括包头和每个区块链节点的第一节点信息,每个区块链节点对应的第一节点信息可以包括该区块链节点对应的节点地址信息、节点路由信息、网络位置信息和以及连接关系信息中的至少一种,开放流(OpenFlow)交换机是一种软件定义网络控制器的网络协议,软件定义网络控制器利用OpenFlow协议将路由器的控制平面(Control Plane)从数据平面(DataPlane)中分离,改以软件方式实现,从而使得将分散在各个网络设备上的控制平面进行集中化管理成为可能,本实施例不做限定。
该可选的实施例中,可选的,数据包对应的包头数据用于与软件定义网络控制器的流表对应的流表项匹配域进行匹配,当包头数据与流表项匹配域相匹配时,将数据包存储到流表中,得到区块链网络对应的区块链节点集合信息,本实施例不做限定。
可见,实施该可选的实施例能够生成每个区块链节点的第一节点信息对应的数据包,并将数据包发送到软件定义网络控制器中的开放流交换机,通过开放流交换机对数据包进行解析,得到数据包对应的包头数据,将包头数据与软件定义网络控制器的流表对应的流表项匹配域进行匹配,当包头数据与流表项匹配域相匹配时,将数据包存储到流表中,得到区块链网络对应的区块链节点集合信息,能够通过通过软件定义网络控制器的流表存储区块链网络中所有区块链节点的节点信息,使得新节点加入区块链网络时只需与软件定义网络控制器建立网络连接即可获取区块链网络中所有区块链节点的网络位置信息,提高了新节点加入区块链网络的效率,同时在流表存储每个区块链节点的节点信息时对节点信息的数据包进行匹配验证,提高了存入流表的节点信息的准确性和可靠性,进而能够提高后续新节点加入区块链网络时的连接建立准确性和可靠性。
在又一个可选的实施例中,该基于软件定义网络的区块链节点发现与组网方法还可以包括以下操作:
获取预设的验证信息,并按照预设的加密秘钥对验证信息进行加密;
在区块链网络的所有区块链节点中确定用于接收验证信息的接收节点,并将验证信息从目标区块链节点发送到接收节点;
通过加密秘钥在接收节点对验证信息进行解密,得到目标信息,并对目标信息的内容进行验证,当目标信息与验证信息的内容相匹配时生成响应消息,并将响应消息从接收节点发送到目标区块链节点;
当目标区块链节点在预设时长内接收到响应消息时,确定目标区块链节点与接收节点之间通信成功。
该可选的实施例中,可选的,预设的验证信息可以是一段验证文字或一串验证数字,预设的加密秘钥可以包括成对组合的公开密钥和私有秘钥,其中,当用公开密钥对验证信息进行加密时,只能用对应的私有秘钥进行解密,当用私有秘钥对验证信息进行加密时,只能用对应的公开密钥进行解密,对验证信息进行加密可以包括对验证信息进行哈希计算,得到验证信息对应的第一哈希值,然后通过加密秘钥对验证信息对应的第一哈希值进行签名,得到签名信息,签名信息可以包括验证信息对应的第一哈希值,本实施例不做限定。
该可选的实施例中,可选的,用于接收验证信息的接收节点可以是与目标区块链节点直接连接且距离最近的区块链节点,也可以是在区块链网络中随机确定出的区块链节点,通过加密秘钥在接收节点对验证信息进行解密,得到目标信息可以包括通过加密秘钥对接收到的签名信息进行解密,得到验证信息对应的第一哈希值,对目标信息的内容进行验证可以包括对验证信息对应的第一哈希值进行哈希运算,得到验证信息对应的第二哈希值,当第一哈希值与第二哈希值匹配时,确定目标信息与验证信息的内容相匹配,并生成响应消息,响应消息用于通知目标区块链节点通信成功,预设时长可以是区块链网络中的平均通信时长,也可以是区块链网络中的最长通信时长,本实施例不做限定。
可见,实施该可选的实施例能够获取预设的验证信息,并按照预设的加密秘钥对验证信息进行加密,在区块链网络的所有区块链节点中确定用于接收验证信息的接收节点,并将验证信息从目标区块链节点发送到接收节点,通过加密秘钥在接收节点对验证信息进行解密,得到目标信息,并对目标信息的内容进行验证,当目标信息与验证信息的内容相匹配时生成响应消息,并将响应消息从接收节点发送到目标区块链节点,当目标区块链节点在预设时长内接收到响应消息时,确定目标区块链节点与接收节点之间通信成功,能够通过验证信息验证先加入节点与区块链网络中的已有节点之间的接通通信,保证了节点间的通信正常,提高了节点间的通信效率。
实施例二
请参阅图2,图2是本发明实施例公开的一种基于软件定义网络的区块链节点发现与组网方法的流程示意图。其中,图2所描述的基于软件定义网络的区块链节点发现与组网方法可以应用于基于软件定义网络的区块链节点发现与组网装置中,其中,基于基于软件定义网络的区块链节点发现与组网装置可以包括用于控制区块链节点发现与组网的控制装置,控制装置可以包括智能服务器或者智能平台中的任意一种,智能服务器包括本地服务器或者云服务器,本发明实施例不做限定。如图2所示,该基于软件定义网络的区块链节点发现与组网方法可以包括以下操作:
201、当检测到目标区块链节点对应的节点加入请求时,根据节点加入请求,在目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系。
202、获取目标区块链节点对应的区块链节点信息获取请求,并根据区块链节点信息获取请求和网络连接关系,获取软件定义网络控制器的流表中存储的区块链节点集合信息。
203、根据区块链节点集合信息,将目标区块链节点加入区块链网络。
本发明实施例中,针对步骤201-步骤203的其他描述,请参照实施例一中针对步骤101-步骤103的详细描述,本发明实施例不再赘述。
204、获取目标区块链节点的第二节点信息。
本发明实施例中,可选的,目标区块链节点的第二节点信息可以包括目标区块链节点的节点地址信息和/或节点路由信息,目标区块链节点的节点地址信息可以表示为IP:Port的形式,本发明不做限定。
205、根据目标区块链节点的第二节点信息、区块链节点集合信息以及预设的最短路径算法,计算目标区块链节点到区块链网络中的每个区块链节点的路由信息,得到路由信息集合。
本发明实施例中,可选的,如图3所示,图3是本发明实施例公开的一种SDN控制器更新流表的流程示意图,其中,预设的最短路径算法可以包括Dijkstra算法(迪杰斯特拉算法),目标区块链节点到区块链网络中的每个区块链节点的路由信息可以包括目标区块链节点到区块链网络中的每个区块链节点的路由连接链路,本发明不做限定。
206、根据目标区块链节点的第二节点信息和路由信息集合,更新流表中存储的区块链节点集合信息。
本发明实施例中,可选的,如图3所示,每当有新节点成功加入区块链网络时,网络层控制平面SDN控制器将目标区块链节点的第二节点信息和路由信息集合更新到流表中进行存储,并向网络层数据平面路由器下发流表,本发明不做限定。
可见,实施图2所描述的基于软件定义网络的区块链节点发现与组网方法能够当检测到目标区块链节点对应的节点加入请求时,根据节点加入请求,在目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系,获取目标区块链节点对应的区块链节点信息获取请求,并根据区块链节点信息获取请求和网络连接关系,获取软件定义网络控制器的流表中存储的区块链节点集合信息,能够在新节点加入区块链网络时直接通过软件定义网络控制器获取区块链网络中区块链节点的节点信息,提高新节点发现区块链网络并与现有节点建立初始连接的速度,根据区块链节点集合信息,将目标区块链节点加入区块链网络,能够保证新节点加入区块链网络时第一时间获取区块链网络中所有区块链节点的节点信息,提高新节点加入区块链网络的效率,同时能够重复利用软件定义网络控制器的计算能力、网络位置以及路由信息等资源,进而提高节点发现和建立连接的效率,获取目标区块链节点的第二节点信息,根据目标区块链节点的第二节点信息、区块链节点集合信息以及预设的最短路径算法,计算目标区块链节点到区块链网络中的每个区块链节点的路由信息,得到路由信息集合,根据目标区块链节点的第二节点信息和路由信息集合,更新流表中存储的区块链节点集合信息,能够根据新加入节点的节点信息和区块链网络中已有节点的节点信息建立新接入节点与已有节点之间的路由连接,并将新加入节点的节点信息和路由信息更新到流表中,提高了计算出的路由信息的准确性和可靠性,进而提高了建立节点间连接的效率,同时能够更新流表中的内容,提高了后续新节点的加入与建立连接的效率。
在一个可选的实施例中,在根据目标区块链节点的第二节点信息和路由信息集合,更新流表中存储的区块链节点集合信息之后,该基于软件定义网络的区块链节点发现与组网方法还可以包括以下操作:
根据路由信息集合,确定与目标区块链节点直接连接且相邻最近的第一目标区块链节点以及第一目标区块链节点的地址信息;
根据第一目标区块链节点的地址信息,获取第一目标区块链节点中的第一数据集合对应的第一数据标识;
根据预设的选取规则,在与目标区块链节点直接连接的所有区块链节点中选取除第一目标区块链节点之外的第二目标区块链节点,并确定第二目标区块链节点的地址信息;
根据第二目标区块链节点的地址信息,获取第二目标区块链节点中的第二数据集合的第二数据标识;
将第一数据标识和第二数据标识进行对比,当第一数据标识和第二数据标识相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中。
该可选的实施例中,可选的,第一目标区块链节点与目标区块链节点直接连接且相邻最近,可以根据预设的最短路径算法计算与目标区块链节点直接连接的区块链节点的路由信息,进而确定第一目标区块链节点以及第一目标区块链节点的地址信息,预设的选取规则可以包括随机选取规则、最短路径选取规则以及数据同步条件选取规则等中的至少一种,具体的,当预设的选取规则包括随机选取规则时,在与目标区块链节点直接连接的所有区块链节点中随机选取一个除第一目标区块链节点之外的第二目标区块链节点,以及确定第二目标区块链节点的地址信息,当预设的选取规则包括最短路径选取规则时,在与目标区块链节点直接连接的所有区块链节点中,选取一个除第一目标区块链节点之外且离目标区块链节点最近的第二目标区块链节点,以及确定第二目标区块链节点的地址信息,当预设的选取规则包括数据同步条件选取规则时,在与目标区块链节点直接连接的所有区块链节点中,选取一个除第一目标区块链节点之外且满足数据同步条件选取规则的第二目标区块链节点,以及确定第二目标区块链节点的地址信息,本实施例不做限定。
该可选的实施例中,可选的,第一数据标识可以用于体现第一目标区块链节点中的第一数据集合的数据特征,第二数据标识可以用于体现第二目标区块链节点中的第二数据集合的数据特征,当第一数据标识和第二数据标识相匹配时,表示第一数据集合的数据特征与第二数据集合的数据特征相匹配,即第一数据集合中的数据与第二数据集合中的数据相同或实质性内容相同,此时将第二目标区块链节点中的第二数据集合同步到目标区块链节点中,本实施例不做限定。
可见,实施该可选的实施例能够根据路由信息集合,确定与目标区块链节点直接连接且相邻最近的第一目标区块链节点以及第一目标区块链节点的地址信息,根据第一目标区块链节点的地址信息,获取第一目标区块链节点中的第一数据集合对应的第一数据标识,根据预设的选取规则,在与目标区块链节点直接连接的所有区块链节点中选取除第一目标区块链节点之外的第二目标区块链节点,并确定第二目标区块链节点的地址信息,根据第二目标区块链节点的地址信息,获取第二目标区块链节点中的第二数据集合的第二数据标识,将第一数据标识和第二数据标识进行对比,当第一数据标识和第二数据标识相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中,通过确定与第一目标区块链节点数据相匹配的第二目标区块链节点,并将第二目标区块链节点中的第二数据集合同步到目标区块链节点中,能够更加高效的进行数据同步,提高对目标区块链节点的数据同步效率。
在另一个可选的实施例中,第一数据集合包括至少一个第一数据块,第二数据集合包括至少一个第二数据块;
将第一数据标识和第二数据标识进行对比,当第一数据标识和第二数据标识相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中可以包括以下操作:
根据第一数据标识,确定第一目标区块链节点中每个第一数据块对应的第一哈希值,并根据第二数据标识,确定第二目标区块链节点中每个第二数据块对应的第二哈希值;
对每个第一数据块对应的第一哈希值进行计算,得到第一目标哈希值,并对每个第二数据块对应的第二哈希值进行计算,得到第二目标哈希值;
将第一目标哈希值与第二目标哈希值进行对比,当第一目标哈希值和第二目标哈希值相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中。
该可选的实施例中,可选的,第一数据集合可以包括至少一个第一数据块,第二数据集合可以包括至少一个第二数据块,第一哈希值可以是第一数据集合中每个第一数据块的哈希值的集合,第二哈希值可以是第二数据集合中每个第二数据块的哈希值的集合,第一目标哈希值可以是根据预设的条件对第一哈希值进行计算得到的,第二目标哈希值可以是根据预设的条件对第二哈希值进行计算得到的,其中,预设的条件可以包括按照数据集合中数据块的时间排列顺序、数据块的大小排列顺序以及数据块的数据重要程度排列顺序等中的一种或多种,本实施例不做限定。
该可选的实施例中,可选的,当第一目标哈希值和第二目标哈希值相匹配时,表示第一数据集合的数据特征与第二数据集合的数据特征相匹配,即第一数据集合中的数据与第二数据集合中的数据相同或实质性内容相同,此时将第二目标区块链节点中的第二数据集合同步到目标区块链节点中,本实施例不做限定。
可见,实施该可选的实施例能够根据第一数据标识,确定第一目标区块链节点中每个第一数据块对应的第一哈希值,并根据第二数据标识,确定第二目标区块链节点中每个第二数据块对应的第二哈希值,对每个第一数据块对应的第一哈希值进行计算,得到第一目标哈希值,并对每个第二数据块对应的第二哈希值进行计算,得到第二目标哈希值,将第一目标哈希值与第二目标哈希值进行对比,当第一目标哈希值和第二目标哈希值相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中,能够通过区块链节点中的数据块的哈希值判断区块链节点中的数据内容是否匹配,提高了判断区块链节点中的数据内容是否匹配这一操作的准确性和可靠性,进而能够提高对目标区块链节点进行数据同步这一操作的准确性和效率。
实施例三
请参阅图4,图4是本发明实施例公开的一种基于软件定义网络的区块链节点发现与组网装置的结构示意图。其中,图4所描述的基于软件定义网络的区块链节点发现与组网装置可以包括用于控制区块链节点发现与组网的控制装置,控制装置可以包括智能服务器或者智能平台中的任意一种,智能服务器包括本地服务器或者云服务器,本发明实施例不做限定。如图4所示,该基于软件定义网络的区块链节点发现与组网装置可以包括:
网络连接模块301,用于当检测到目标区块链节点对应的节点加入请求时,根据节点加入请求,在目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系;
第一获取模块302,用于获取目标区块链节点对应的区块链节点信息获取请求,并根据区块链节点信息获取请求和网络连接关系,获取软件定义网络控制器的流表中存储的区块链节点集合信息,区块链节点集合信息包括区块链网络中的每个区块链节点的第一节点信息;
节点加入模块303,用于根据区块链节点集合信息,将目标区块链节点加入区块链网络。
可见,实施图4所描述的基于软件定义网络的区块链节点发现与组网装置能够当检测到目标区块链节点对应的节点加入请求时,根据节点加入请求,在目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系,获取目标区块链节点对应的区块链节点信息获取请求,并根据区块链节点信息获取请求和网络连接关系,获取软件定义网络控制器的流表中存储的区块链节点集合信息,能够在新节点加入区块链网络时直接通过软件定义网络控制器获取区块链网络中区块链节点的节点信息,提高新节点发现区块链网络并与现有节点建立初始连接的速度,根据区块链节点集合信息,将目标区块链节点加入区块链网络,能够保证新节点加入区块链网络时第一时间获取区块链网络中所有区块链节点的节点信息,提高新节点加入区块链网络的效率,同时能够重复利用软件定义网络控制器的计算能力、网络位置以及路由信息等资源,进而提高节点发现和建立连接的效率。
在一个可选的实施例中,如图5所示,该基于软件定义网络的区块链节点发现与组网装置还可以包括:
第二获取模块304,用于在节点加入模块303根据区块链节点集合信息,将目标区块链节点加入区块链网络之后,获取目标区块链节点的第二节点信息,第二节点信息包括目标区块链节点的节点地址信息和/或节点路由信息;
计算模块305,用于根据目标区块链节点的第二节点信息、区块链节点集合信息以及预设的最短路径算法,计算目标区块链节点到区块链网络中的每个区块链节点的路由信息,得到路由信息集合;
更新模块306,用于根据目标区块链节点的第二节点信息和路由信息集合,更新流表中存储的区块链节点集合信息。
可见,实施图5所描述的基于软件定义网络的区块链节点发现与组网装置能够当检测到目标区块链节点对应的节点加入请求时,根据节点加入请求,在目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系,获取目标区块链节点对应的区块链节点信息获取请求,并根据区块链节点信息获取请求和网络连接关系,获取软件定义网络控制器的流表中存储的区块链节点集合信息,能够在新节点加入区块链网络时直接通过软件定义网络控制器获取区块链网络中区块链节点的节点信息,提高新节点发现区块链网络并与现有节点建立初始连接的速度,根据区块链节点集合信息,将目标区块链节点加入区块链网络,能够保证新节点加入区块链网络时第一时间获取区块链网络中所有区块链节点的节点信息,提高新节点加入区块链网络的效率,同时能够重复利用软件定义网络控制器的计算能力、网络位置以及路由信息等资源,进而提高节点发现和建立连接的效率,获取目标区块链节点的第二节点信息,根据目标区块链节点的第二节点信息、区块链节点集合信息以及预设的最短路径算法,计算目标区块链节点到区块链网络中的每个区块链节点的路由信息,得到路由信息集合,根据目标区块链节点的第二节点信息和路由信息集合,更新流表中存储的区块链节点集合信息,能够根据新加入节点的节点信息和区块链网络中已有节点的节点信息建立新接入节点与已有节点之间的路由连接,并将新加入节点的节点信息和路由信息更新到流表中,提高了计算出的路由信息的准确性和可靠性,进而提高了建立节点间连接的效率,同时能够更新流表中的内容,提高了后续新节点的加入与建立连接的效率。
在另一个可选的实施例中,如图5所示,该基于软件定义网络的区块链节点发现与组网装置还可以包括:
第三获取模块307,用于在第一获取模块302根据区块链节点信息获取请求和网络连接关系,获取软件定义网络控制器的流表中存储的区块链节点集合信息之前,获取区块链网络中所有区块链节点对应的第一节点信息,每个区块链节点对应的第一节点信息包括该区块链节点对应的节点地址信息、节点路由信息、网络位置信息和以及连接关系信息中的至少一种;
存储模块308,用于将每个区块链节点对应的第一节点信息存储到软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息。
可见,实施图5所描述的基于软件定义网络的区块链节点发现与组网装置能够获取区块链网络中所有区块链节点对应的第一节点信息,将每个区块链节点对应的第一节点信息存储到软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息,能够通过软件定义网络控制器的流表存储区块链网络中所有区块链节点的节点信息,使得新节点加入区块链网络时只需与软件定义网络控制器建立网络连接即可获取区块链网络中所有区块链节点的网络位置信息,提高了新节点加入区块链网络的效率。
在又一个可选的实施例中,如图5所示,存储模块308将每个区块链节点对应的第一节点信息存储到软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息的具体方式包括:
生成每个区块链节点的第一节点信息对应的数据包,并将数据包发送到软件定义网络控制器中的开放流交换机;
通过开放流交换机对数据包进行解析,得到数据包对应的包头数据;
将包头数据与软件定义网络控制器的流表对应的流表项匹配域进行匹配,当包头数据与流表项匹配域相匹配时,将数据包存储到流表中,得到区块链网络对应的区块链节点集合信息。
可见,实施图5所描述的基于软件定义网络的区块链节点发现与组网装置能够生成每个区块链节点的第一节点信息对应的数据包,并将数据包发送到软件定义网络控制器中的开放流交换机,通过开放流交换机对数据包进行解析,得到数据包对应的包头数据,将包头数据与软件定义网络控制器的流表对应的流表项匹配域进行匹配,当包头数据与流表项匹配域相匹配时,将数据包存储到流表中,得到区块链网络对应的区块链节点集合信息,能够通过通过软件定义网络控制器的流表存储区块链网络中所有区块链节点的节点信息,使得新节点加入区块链网络时只需与软件定义网络控制器建立网络连接即可获取区块链网络中所有区块链节点的网络位置信息,提高了新节点加入区块链网络的效率,同时在流表存储每个区块链节点的节点信息时对节点信息的数据包进行匹配验证,提高了存入流表的节点信息的准确性和可靠性,进而能够提高后续新节点加入区块链网络时的连接建立准确性和可靠性。
在又一个可选的实施例中,如图5所示,该基于软件定义网络的区块链节点发现与组网装置还可以包括:
第一确定模块309,用于在更新模块306根据目标区块链节点的第二节点信息和路由信息集合,更新流表中存储的区块链节点集合信息之后,根据路由信息集合,确定与目标区块链节点直接连接且相邻最近的第一目标区块链节点以及第一目标区块链节点的地址信息;
第四获取模块310,用于根据第一目标区块链节点的地址信息,获取第一目标区块链节点中的第一数据集合对应的第一数据标识;
选取模块311,用于根据预设的选取规则,在与目标区块链节点直接连接的所有区块链节点中选取除第一目标区块链节点之外的第二目标区块链节点,并确定第二目标区块链节点的地址信息;
第四获取模块310,还用于根据第二目标区块链节点的地址信息,获取第二目标区块链节点中的第二数据集合的第二数据标识;
数据同步模块312,用于将第一数据标识和第二数据标识进行对比,当第一数据标识和第二数据标识相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中。
可见,实施图5所描述的基于软件定义网络的区块链节点发现与组网装置能够根据路由信息集合,确定与目标区块链节点直接连接且相邻最近的第一目标区块链节点以及第一目标区块链节点的地址信息,根据第一目标区块链节点的地址信息,获取第一目标区块链节点中的第一数据集合对应的第一数据标识,根据预设的选取规则,在与目标区块链节点直接连接的所有区块链节点中选取除第一目标区块链节点之外的第二目标区块链节点,并确定第二目标区块链节点的地址信息,根据第二目标区块链节点的地址信息,获取第二目标区块链节点中的第二数据集合的第二数据标识,将第一数据标识和第二数据标识进行对比,当第一数据标识和第二数据标识相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中,能够通过确定与第一目标区块链节点数据相匹配的第二目标区块链节点,并将第二目标区块链节点中的第二数据集合同步到目标区块链节点中,能够更加高效的进行数据同步,提高对目标区块链节点的数据同步效率。
在又一个可选的实施例中,如图5所示,第一数据集合包括至少一个第一数据块,第二数据集合包括至少一个第二数据块;
数据同步模块312将第一数据标识和第二数据标识进行对比,当第一数据标识和第二数据标识相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中的具体方式包括:
根据第一数据标识,确定第一目标区块链节点中每个第一数据块对应的第一哈希值,并根据第二数据标识,确定第二目标区块链节点中每个第二数据块对应的第二哈希值;
对每个第一数据块对应的第一哈希值进行计算,得到第一目标哈希值,并对每个第二数据块对应的第二哈希值进行计算,得到第二目标哈希值;
将第一目标哈希值与第二目标哈希值进行对比,当第一目标哈希值和第二目标哈希值相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中。
可见,实施图5所描述的基于软件定义网络的区块链节点发现与组网装置能够根据第一数据标识,确定第一目标区块链节点中每个第一数据块对应的第一哈希值,并根据第二数据标识,确定第二目标区块链节点中每个第二数据块对应的第二哈希值,对每个第一数据块对应的第一哈希值进行计算,得到第一目标哈希值,并对每个第二数据块对应的第二哈希值进行计算,得到第二目标哈希值,将第一目标哈希值与第二目标哈希值进行对比,当第一目标哈希值和第二目标哈希值相匹配时,将第二目标区块链节点中的第二数据集合同步到目标区块链节点中,能够通过区块链节点中的数据块的哈希值判断区块链节点中的数据内容是否匹配,提高了判断区块链节点中的数据内容是否匹配这一操作的准确性和可靠性,进而能够提高对目标区块链节点进行数据同步这一操作的准确性和效率。
在又一个可选的实施例中,如图5所示,第一获取模块302,还用于获取预设的验证信息,并按照预设的加密秘钥对验证信息进行加密;
该基于软件定义网络的区块链节点发现与组网装置还可以包括:
第二确定模块313,用于在区块链网络的所有区块链节点中确定用于接收验证信息的接收节点,并将验证信息从目标区块链节点发送到接收节点;
验证模块314,用于通过加密秘钥在接收节点对验证信息进行解密,得到目标信息,并对目标信息的内容进行验证,当目标信息与验证信息的内容相匹配时生成响应消息,并将响应消息从接收节点发送到目标区块链节点;
第二确定模块313,还用于当目标区块链节点在预设时长内接收到响应消息时,确定目标区块链节点与接收节点之间通信成功。
可见,实施图5所描述的基于软件定义网络的区块链节点发现与组网装置能够获取预设的验证信息,并按照预设的加密秘钥对验证信息进行加密,在区块链网络的所有区块链节点中确定用于接收验证信息的接收节点,并将验证信息从目标区块链节点发送到接收节点,通过加密秘钥在接收节点对验证信息进行解密,得到目标信息,并对目标信息的内容进行验证,当目标信息与验证信息的内容相匹配时生成响应消息,并将响应消息从接收节点发送到目标区块链节点,当目标区块链节点在预设时长内接收到响应消息时,确定目标区块链节点与接收节点之间通信成功,能够通过验证信息验证先加入节点与区块链网络中的已有节点之间的接通通信,保证了节点间的通信正常,提高了节点间的通信效率。
实施例四
请参阅图6,图6是本发明实施例公开的又一种基于软件定义网络的区块链节点发现与组网装置的结构示意图。如图6所示,该基于软件定义网络的区块链节点发现与组网装置可以包括:
存储有可执行程序代码的存储器401;
与存储器401耦合的处理器402;
处理器402调用存储器401中存储的可执行程序代码,执行本发明实施例一或本发明实施例二所描述的基于软件定义网络的区块链节点发现与组网方法中的步骤。
实施例五
本发明实施例公开了一种计算机存储介质,该计算机存储介质存储有计算机指令,该计算机指令被调用时,用于执行本发明实施例一或本发明实施例二所描述的基于软件定义网络的区块链节点发现与组网方法中的步骤。
实施例六
本发明实施例公开了一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,且该计算机程序可操作来使计算机执行实施例一或实施例二中所描述的基于软件定义网络的区块链节点发现与组网方法中的步骤。
以上所描述的装置实施例仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施例的具体描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、一次可编程只读存储器(One-timeProgrammable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
最后应说明的是:本发明实施例公开的一种基于软件定义网络的区块链节点发现与组网方法及装置所揭露的仅为本发明较佳实施例而已,仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各项实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应的技术方案的本质脱离本发明各项实施例技术方案的精神和范围。
Claims (7)
1.一种基于软件定义网络的区块链节点发现与组网方法,其特征在于,所述方法包括:
当检测到目标区块链节点对应的节点加入请求时,根据所述节点加入请求,在所述目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系;
获取所述目标区块链节点对应的区块链节点信息获取请求,并根据所述区块链节点信息获取请求和所述网络连接关系,获取所述软件定义网络控制器的流表中存储的区块链节点集合信息,所述区块链节点集合信息包括区块链网络中的每个区块链节点的第一节点信息;
根据所述区块链节点集合信息,将所述目标区块链节点加入所述区块链网络;
所述方法还包括:
获取所述目标区块链节点的第二节点信息,所述第二节点信息包括所述目标区块链节点的节点地址信息和/或节点路由信息;
根据所述目标区块链节点的第二节点信息、所述区块链节点集合信息以及预设的最短路径算法,计算所述目标区块链节点到所述区块链网络中的每个所述区块链节点的路由信息,得到路由信息集合;
根据所述目标区块链节点的第二节点信息和所述路由信息集合,更新所述流表中存储的区块链节点集合信息;
以及,在所述根据所述目标区块链节点的第二节点信息和所述路由信息集合,更新所述流表中存储的区块链节点集合信息之后,所述方法还包括:
根据所述路由信息集合,确定与所述目标区块链节点直接连接且相邻最近的第一目标区块链节点以及所述第一目标区块链节点的地址信息;
根据所述第一目标区块链节点的地址信息,获取所述第一目标区块链节点中的第一数据集合对应的第一数据标识;
根据预设的选取规则,在与所述目标区块链节点直接连接的所有区块链节点中选取除所述第一目标区块链节点之外的第二目标区块链节点,并确定所述第二目标区块链节点的地址信息;
根据所述第二目标区块链节点的地址信息,获取所述第二目标区块链节点中的第二数据集合的第二数据标识;
将所述第一数据标识和第二数据标识进行对比,当所述第一数据标识和所述第二数据标识相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中;
以及,所述第一数据集合包括至少一个第一数据块,所述第二数据集合包括至少一个第二数据块;
所述将所述第一数据标识和第二数据标识进行对比,当所述第一数据标识和所述第二数据标识相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中,包括:
根据所述第一数据标识,确定所述第一目标区块链节点中每个所述第一数据块对应的第一哈希值,并根据所述第二数据标识,确定所述第二目标区块链节点中每个所述第二数据块对应的第二哈希值;
对每个所述第一数据块对应的第一哈希值进行计算,得到第一目标哈希值,并对每个所述第二数据块对应的第二哈希值进行计算,得到第二目标哈希值;
将所述第一目标哈希值与所述第二目标哈希值进行对比,当所述第一目标哈希值和所述第二目标哈希值相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中。
2.根据权利要求1所述的基于软件定义网络的区块链节点发现与组网方法,其特征在于,在所述根据所述区块链节点信息获取请求和所述网络连接关系,获取所述软件定义网络控制器的流表中存储的区块链节点集合信息之前,所述方法还包括:
获取所述区块链网络中所有所述区块链节点对应的第一节点信息,每个所述区块链节点对应的第一节点信息包括该区块链节点对应的节点地址信息、节点路由信息、网络位置信息和以及连接关系信息中的至少一种;
将每个所述区块链节点对应的第一节点信息存储到所述软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息。
3.根据权利要求2所述的基于软件定义网络的区块链节点发现与组网方法,其特征在于,所述将每个所述区块链节点对应的第一节点信息存储到所述软件定义网络控制器的流表中,得到区块链网络对应的区块链节点集合信息,包括:
生成每个所述区块链节点的第一节点信息对应的数据包,并将所述数据包发送到所述软件定义网络控制器中的开放流交换机;
通过所述开放流交换机对所述数据包进行解析,得到所述数据包对应的包头数据;
将所述包头数据与所述软件定义网络控制器的流表对应的流表项匹配域进行匹配,当所述包头数据与所述流表项匹配域相匹配时,将所述数据包存储到所述流表中,得到所述区块链网络对应的区块链节点集合信息。
4.根据权利要求1所述的基于软件定义网络的区块链节点发现与组网方法,其特征在于,所述方法还包括:
获取预设的验证信息,并按照预设的加密秘钥对所述验证信息进行加密;
在所述区块链网络的所有所述区块链节点中确定用于接收所述验证信息的接收节点,并将所述验证信息从所述目标区块链节点发送到所述接收节点;
通过所述加密秘钥在所述接收节点对所述验证信息进行解密,得到目标信息,并对所述目标信息的内容进行验证,当所述目标信息与所述验证信息的内容相匹配时生成响应消息,并将所述响应消息从所述接收节点发送到所述目标区块链节点;
当所述目标区块链节点在预设时长内接收到所述响应消息时,确定所述目标区块链节点与所述接收节点之间通信成功。
5.一种基于软件定义网络的区块链节点发现与组网装置,其特征在于,所述装置包括:
网络连接模块,用于当检测到目标区块链节点对应的节点加入请求时,根据所述节点加入请求,在所述目标区块链节点与网络层控制平面的软件定义网络控制器之间的建立网络连接关系;
第一获取模块,用于获取所述目标区块链节点对应的区块链节点信息获取请求,并根据所述区块链节点信息获取请求和所述网络连接关系,获取所述软件定义网络控制器的流表中存储的区块链节点集合信息,所述区块链节点集合信息包括区块链网络中的每个区块链节点的第一节点信息;
节点加入模块,用于根据所述区块链节点集合信息,将所述目标区块链节点加入所述区块链网络;
所述装置还包括:
第二获取模块,用于在所述节点加入模块根据所述区块链节点集合信息,将所述目标区块链节点加入所述区块链网络之后,获取所述目标区块链节点的第二节点信息,所述第二节点信息包括所述目标区块链节点的节点地址信息和/或节点路由信息;
计算模块,用于根据所述目标区块链节点的第二节点信息、所述区块链节点集合信息以及预设的最短路径算法,计算所述目标区块链节点到所述区块链网络中的每个所述区块链节点的路由信息,得到路由信息集合;
更新模块,用于根据所述目标区块链节点的第二节点信息和所述路由信息集合,更新所述流表中存储的区块链节点集合信息;
以及,所述装置还包括:
第一确定模块,用于在所述更新模块根据所述目标区块链节点的第二节点信息和所述路由信息集合,更新所述流表中存储的区块链节点集合信息之后,根据所述路由信息集合,确定与所述目标区块链节点直接连接且相邻最近的第一目标区块链节点以及所述第一目标区块链节点的地址信息;
第四获取模块,用于根据所述第一目标区块链节点的地址信息,获取所述第一目标区块链节点中的第一数据集合对应的第一数据标识;
选取模块,用于根据预设的选取规则,在与所述目标区块链节点直接连接的所有区块链节点中选取除所述第一目标区块链节点之外的第二目标区块链节点,并确定所述第二目标区块链节点的地址信息;
所述第四获取模块,还用于根据所述第二目标区块链节点的地址信息,获取所述第二目标区块链节点中的第二数据集合的第二数据标识;
数据同步模块,用于将所述第一数据标识和第二数据标识进行对比,当所述第一数据标识和所述第二数据标识相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中;
以及,所述第一数据集合包括至少一个第一数据块,所述第二数据集合包括至少一个第二数据块;
所述数据同步模块将所述第一数据标识和第二数据标识进行对比,当所述第一数据标识和所述第二数据标识相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中的方式具体包括:
根据所述第一数据标识,确定所述第一目标区块链节点中每个所述第一数据块对应的第一哈希值,并根据所述第二数据标识,确定所述第二目标区块链节点中每个所述第二数据块对应的第二哈希值;
对每个所述第一数据块对应的第一哈希值进行计算,得到第一目标哈希值,并对每个所述第二数据块对应的第二哈希值进行计算,得到第二目标哈希值;
将所述第一目标哈希值与所述第二目标哈希值进行对比,当所述第一目标哈希值和所述第二目标哈希值相匹配时,将所述第二目标区块链节点中的第二数据集合同步到所述目标区块链节点中。
6.一种基于软件定义网络的区块链节点发现与组网装置,其特征在于,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行如权利要求1-4任一项所述的基于软件定义网络的区块链节点发现与组网方法。
7.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行如权利要求1-4任一项所述的基于软件定义网络的区块链节点发现与组网方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311490463.6A CN117240900B (zh) | 2023-11-10 | 2023-11-10 | 基于软件定义网络的区块链节点发现与组网方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311490463.6A CN117240900B (zh) | 2023-11-10 | 2023-11-10 | 基于软件定义网络的区块链节点发现与组网方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117240900A CN117240900A (zh) | 2023-12-15 |
CN117240900B true CN117240900B (zh) | 2024-04-12 |
Family
ID=89098482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311490463.6A Active CN117240900B (zh) | 2023-11-10 | 2023-11-10 | 基于软件定义网络的区块链节点发现与组网方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117240900B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109246176A (zh) * | 2018-07-03 | 2019-01-18 | 北京邮电大学 | 软件定义网络中基于区块链的多控制器同步方法及装置 |
CN109413228A (zh) * | 2018-12-20 | 2019-03-01 | 全链通有限公司 | 基于区块链域名系统的IPv6生成方法和系统 |
CN109617776A (zh) * | 2018-12-20 | 2019-04-12 | 桂林电子科技大学 | 基于分布式散列表的软件定义网络控制器的方法及系统 |
CN111541689A (zh) * | 2020-04-21 | 2020-08-14 | 深圳大学 | 一种适用于pbft类共识协议的网络传输方法 |
CN113301149A (zh) * | 2021-05-24 | 2021-08-24 | 山东大学 | 一种基于区块链的可信软件定义网络构建方法 |
CN114553768A (zh) * | 2021-12-29 | 2022-05-27 | 航天科工网络信息发展有限公司 | 一种基于sdn的组网方法 |
CN116016164A (zh) * | 2022-12-27 | 2023-04-25 | 商密信安(北京)科技有限公司 | 一种基于软件定义网络的虚拟业务网络构建方法 |
CN116470994A (zh) * | 2023-03-17 | 2023-07-21 | 安徽中科晶格技术有限公司 | 基于分布式sdn架构下的区块链冗余控制器生成方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10944646B2 (en) * | 2018-10-27 | 2021-03-09 | Cisco Technology, Inc. | Enabling multiple provider software defined network programming using blockchain distributed ledgers |
-
2023
- 2023-11-10 CN CN202311490463.6A patent/CN117240900B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109246176A (zh) * | 2018-07-03 | 2019-01-18 | 北京邮电大学 | 软件定义网络中基于区块链的多控制器同步方法及装置 |
CN109413228A (zh) * | 2018-12-20 | 2019-03-01 | 全链通有限公司 | 基于区块链域名系统的IPv6生成方法和系统 |
CN109617776A (zh) * | 2018-12-20 | 2019-04-12 | 桂林电子科技大学 | 基于分布式散列表的软件定义网络控制器的方法及系统 |
CN111541689A (zh) * | 2020-04-21 | 2020-08-14 | 深圳大学 | 一种适用于pbft类共识协议的网络传输方法 |
CN113301149A (zh) * | 2021-05-24 | 2021-08-24 | 山东大学 | 一种基于区块链的可信软件定义网络构建方法 |
CN114553768A (zh) * | 2021-12-29 | 2022-05-27 | 航天科工网络信息发展有限公司 | 一种基于sdn的组网方法 |
CN116016164A (zh) * | 2022-12-27 | 2023-04-25 | 商密信安(北京)科技有限公司 | 一种基于软件定义网络的虚拟业务网络构建方法 |
CN116470994A (zh) * | 2023-03-17 | 2023-07-21 | 安徽中科晶格技术有限公司 | 基于分布式sdn架构下的区块链冗余控制器生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117240900A (zh) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10616243B2 (en) | Route updating method, communication system, and relevant devices | |
US8165107B2 (en) | Method and system for obtaining path information, path computation element | |
CN106878199B (zh) | 一种接入信息的配置方法和装置 | |
US20190166042A1 (en) | Method for data transmitting, centralized controller, forwarding plane device and communication apparatus | |
CN112671763B (zh) | 组网环境下的数据同步方法、装置、计算机设备及存储介质 | |
US9647876B2 (en) | Linked identifiers for multiple domains | |
EP3863243B1 (en) | Method and network device for routing processing | |
CN112995040B (zh) | 一种基于设备标识计算的报文路径溯源方法及装置 | |
CN111461720B (zh) | 基于区块链的身份验证方法、装置、存储介质及电子设备 | |
CN114389835A (zh) | 一种IPv6选项显式源地址加密安全验证网关及验证方法 | |
CN108234194B (zh) | 基于sdn的网络拓扑结构发现方法、装置和存储介质 | |
Fernando et al. | Blockchain-powered software defined network-enabled networking infrastructure for cloud management | |
KR20130080626A (ko) | 컨텐츠 중심 네트워크를 위한 도메인들 간의 라우팅 방법 및 컨텐츠 중심 네트워크 | |
CN111556075B (zh) | 基于无交互密钥协商的数据传输路径还原方法及系统 | |
CN113609231A (zh) | 一种维护区块链系统的网络架构信息的方法和装置 | |
WO2014029287A1 (zh) | 隧道负荷分担方法及装置 | |
CN117240900B (zh) | 基于软件定义网络的区块链节点发现与组网方法及装置 | |
WO2018201367A1 (zh) | 节点认证方法及节点认证系统 | |
WO2015096906A1 (en) | Method and system for assessing a message in a decentralized communication network | |
CN111884827B (zh) | 一种sfc网络中同步拓扑信息的方法及路由网元 | |
CN114255020A (zh) | 基于多链的区块链交易处理方法、装置、设备及存储介质 | |
WO2011150741A1 (zh) | P2p叠加网络及其数据资源操作方法和新节点加入方法 | |
US20210195418A1 (en) | A technique for authenticating data transmitted over a cellular network | |
CN114500001B (zh) | 通信方法及装置 | |
CN108259292B (zh) | 建立隧道的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |