区块链节点通信方法、装置及区块链节点与流程

文档序号:16063321发布日期:2018-11-24 12:25阅读:256来源:国知局

本发明实施例涉及通信技术领域,尤其涉及一种区块链节点通信方法、装置及区块链节点。

背景技术

在区块链网络中,主存储节点可以存储完整的区块链账本,从存储节点可以存储部分的区块链账本,从存储节点可接收其他节点的查询访问,该从存储节点通过给其他节点提供查询服务以获取相应的奖励。

现有技术中,为了推广区块链业务,需要更多的节点成为从存储节点,但是要成为从存储节点,需要该节点具有公网ip地址,但是目前很多节点并没有公网ip地址,从而导致了很多节点无法成为从存储节点,限制了区块链业务的发展。



技术实现要素:

本发明实施例提供一种区块链节点通信方法、装置及区块链节点,以使得没有公网ip地址的节点也可以成为从存储节点,促进区块链业务的发展。

第一方面,本发明实施例提供一种区块链节点通信方法,包括:

主存储节点接收至少一个查询节点发送的查询请求,所述主存储节点存储有第一列表和第二列表,所述第一列表包括至少一个从存储节点的标识信息,所述第二列表包括至少一个转发器中每个转发器的标识信息、端口标识和端口状态信息;

所述主存储节点根据所述至少一个查询节点发送的查询请求从所述第一列表中确定出至少一个目标从存储节点的标识信息,以及从所述第二列表中确定出目标转发器的标识信息以及所述目标转发器的目标端口标识,所述目标端口标识对应的目标端口处于空闲状态;

所述主存储节点向所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点发送所述目标转发器的ip地址、所述目标端口标识和通信标识,以使所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点通过所述目标转发器的所述目标端口进行信息交互。

第二方面,本发明实施例提供一种区块链节点通信装置,包括:

接收模块,用于接收至少一个查询节点发送的查询请求,所述主存储节点存储有第一列表和第二列表,所述第一列表包括至少一个从存储节点的标识信息,所述第二列表包括至少一个转发器中每个转发器的标识信息、端口标识和端口状态信息;

确定模块,用于根据所述至少一个查询节点发送的查询请求从所述第一列表中确定出至少一个目标从存储节点的标识信息,以及从所述第二列表中确定出目标转发器的标识信息以及所述目标转发器的目标端口标识,所述目标端口标识对应的目标端口处于空闲状态;

发送模块,用于向所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点发送所述目标转发器的ip地址、所述目标端口标识和通信标识,以使所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点通过所述目标转发器的所述目标端口进行信息交互。

第三方面,本发明实施例提供一种区块链节点,包括:

存储器;

处理器;以及

计算机程序;

其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现第一方面所述的方法。

第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现第一方面所述的方法。

本发明实施例提供的区块链节点通信方法、装置及区块链节点,通过主存储节点将转发器的ip地址和该转发器的空闲端口标识发送给从存储节点和至少一个查询节点,使得从存储节点和至少一个查询节点通过该转发器的空闲端口进行信息交互,该从存储节点可以是没有公网ip地址的节点,从而使得没有公网ip地址的节点也可以成为从存储节点,促进了区块链业务的发展。

附图说明

图1为本发明实施例提供的一种应用场景的示意图;

图2为本发明实施例提供的区块链节点通信方法流程图;

图3为本发明实施例提供的一种区块链网络的示意图;

图4为本发明另一实施例提供的区块链节点通信方法流程图;

图5为本发明另一实施例提供的区块链节点通信方法流程图;

图6为本发明实施例提供的区块链节点通信装置的结构示意图;

图7为本发明实施例提供的区块链节点的结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本发明提供的区块链节点通信方法,可以适用于图1所示的通信系统。如图1所示,该通信系统包括:接入网设备11、终端设备12以及服务器13。需要说明的是,图1所示的通信系统可以适用于不同的网络制式,例如,可以适用于全球移动通讯(globalsystemofmobilecommunication,简称gsm)、码分多址(codedivisionmultipleaccess,简称cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,简称wcdma)、时分同步码分多址(timedivision-synchronouscodedivisionmultipleaccess,简称td-scdma)、长期演进(longtermevolution,简称lte)系统及未来的5g等网络制式。可选的,上述通信系统可以为5g通信系统中高可靠低时延通信(ultra-reliableandlowlatencycommunications,简称urllc)传输的场景中的系统。

故而,可选的,上述接入网设备11可以是gsm或cdma中的基站(basetransceiverstation,简称bts)和/或基站控制器,也可以是wcdma中的基站(nodeb,简称nb)和/或无线网络控制器(radionetworkcontroller,简称rnc),还可以是lte中的演进型基站(evolutionalnodeb,简称enb或enodeb),或者中继站或接入点,或者未来5g网络中的基站(gnb)等,本发明在此并不限定。

上述终端设备12可以是无线终端也可以是有线终端。无线终端可以是指向用户提供语音和/或其他业务数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。无线终端可以经无线接入网(radioaccessnetwork,简称ran)与一个或多个核心网设备进行通信,无线终端可以是移动终端,如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语言和/或数据。再例如,无线终端还可以是个人通信业务(personalcommunicationservice,简称pcs)电话、无绳电话、会话发起协议(sessioninitiationprotocol,简称sip)话机、无线本地环路(wirelesslocalloop,简称wll)站、个人数字助理(personaldigitalassistant,简称pda)等设备。无线终端也可以称为系统、订户单元(subscriberunit)、订户站(subscriberstation),移动站(mobilestation)、移动台(mobile)、远程站(remotestation)、远程终端(remoteterminal)、接入终端(accessterminal)、用户终端(userterminal)、用户代理(useragent)、用户设备(userdeviceoruserequipment),在此不作限定。可选的,上述终端设备12还可以是智能手表、平板电脑等设备。在本实施例中,终端设备12和服务器13可以是区块链网络中的节点。

本发明提供的区块链节点通信方法,旨在解决现有技术的如上技术问题。

下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。

图2为本发明实施例提供的区块链节点通信方法流程图。本发明实施例针对现有技术的如上技术问题,提供了区块链节点通信方法,该方法具体步骤如下:

步骤201、主存储节点接收目标节点发送的请求信息,所述请求信息表示所述目标节点请求成为从存储节点,所述请求信息包括所述目标节点的标识信息和指示信息,所述指示信息用于指示所述目标节点无公网ip地址。

如图3所示,31表示区块链网络中的主存储节点,32表示区块链网络中的从存储节点,从存储节点32有自己的公网ip地址。33表示目标节点,目标节点33请求成为从存储节点,目标节点33没有公网ip地址,目标节点33通过网络地址转换(networkaddresstranslation,nat)与区块链网络通信,34表示nat,35和37表示该区块链网络中的查询节点,在本实施例中,查询节点35和查询节点37也没有自己的公网ip地址,查询节点35也通过nat与区块链网络通信,36表示转发器。在本实施例中,由从存储节点为该查询节点35提供查询服务。此处只是示意性说明,并不限定区块链网络的具体网络架构。

当目标节点33首次加入区块链网络的时候,需要从该目标节点33的相邻节点获取创世区块,可选的,区块链网络中的节点均存储有创世区块。为了保证该目标节点33获取到真实的创世区块,该目标节点33可以向多个相邻节点发送创世区块查询请求,例如,目标节点33向相邻节点b和相邻节点c分别发送创世区块查询请求,相邻节点b和相邻节点c接收到该创世区块查询请求后,将各自本地存储的创世区块发送给目标节点33,目标节点33比较相邻节点b和相邻节点c反馈的创世区块是否一致,如果相邻节点b和相邻节点c反馈的创世区块一致,则目标节点33将该创世区块存储在本地;如果相邻节点b和相邻节点c反馈的创世区块不一致,则目标节点33还可以继续向相邻节点d和相邻节点e发送创世区块查询请求,并接收相邻节点d和相邻节点e分别反馈的创世区块,若相邻节点b、相邻节点c、相邻节点d和相邻节点e中超过预设比例的相邻节点反馈的创世区块是一致,则目标节点33确定该创世区块是真实的。可选的,相邻节点b、相邻节点c、相邻节点d和相邻节点e中超过百分之五十的相邻节点例如相邻节点c、相邻节点d和相邻节点e分别反馈的创世区块一致,则目标节点33确定相邻节点c反馈的创世区块是真实的,相邻节点b反馈的创世区块是虚假的。

当目标节点33获取到真实的创世区块后,将该创世区块存储到本地,并从该创世区块中获取主存储节点的ip地址,可选的,该创世区块中存储有一个或多个主存储节点的ip地址,该目标节点33可根据一个或多个主存储节点的ip地址,向一个或多个主存储节点发送请求信息,本实施例以目标节点33向一个主存储节点发送请求信息为例,例如,目标节点33向主存储节点31发送请求信息,该请求信息用于表示目标节点33想成为从存储节点,并且该请求信息中包括目标节点33的标识信息、目标节点33对应的终端设备号、以及用于指示目标节点33无公网ip地址的指示信息,本实施例将用于指示目标节点33无公网ip地址的指示信息记为第一指示信息,该第一指示信息可以是该区块链网络中预先约定的字段或字符。

步骤202、所述主存储节点记录所述目标节点的标识信息。

在本实施例中,主存储节点31的本地存储有第一列表,该第一列表包括与主存储节点31对应的从存储节点的标识信息、该从存储节点对应的终端设备号和公网ip地址,例如,该第一列表中包括从存储节点32的标识信息、从存储节点32对应的终端设备号和公网ip地址。

当主存储节点31接收到目标节点33发送的请求信息后,确定出目标节点33没有公网ip地址,但目标节点33想成为从存储节点,则主存储节点31将目标节点33的标识信息、目标节点33对应的终端设备号记录在该第一列表中。

步骤203、所述主存储节点接收所述目标节点发送的心跳报文,所述心跳报文包括所述目标节点的地址信息。

在本实施例中,由于从存储节点32不通过nat与区块链网络通信,从存储节点32具有公网ip地址,主存储节点31本地存储有从存储节点32的公网ip地址;目标节点33通过nat与区块链网络通信,且目标节点33没有公网ip地址,主存储节点31本地没有目标节点33的公网ip地址;但是,作为从存储节点需要具有公网ip地址,以便查询节点根据该公网ip地址访问该从存储节点。因此,在本实施例中,目标节点33需要向主存储节点31实时的或周期性的发送心跳报文,假设主存储节点31在某一时刻接收到的目标节点33发送的心跳报文记为第一心跳报文,该第一心跳报文包括的内容具体可以是目标节点33采用自己的私钥签名后的当前可提供存储信息查询的内容索引,例如区块号等信息。

当主存储节点31接收到该第一心跳报文后,根据该第一心跳报文中签名后的区块号,可确定出目标节点33的身份信息,进一步提取该第一心跳报文的源ip地址和源端口号,主存储节点31可以将该第一心跳报文的源ip地址和源端口号作为目标节点33的地址信息,可选的,所述目标节点33的地址信息包括:所述目标节点33对应的nat的公网ip地址和所述目标节点33在nat上映射的端口号。另外,该公网ip地址还可以是所述目标节点33所属的局域网的公网ip地址。也就是说,该第一心跳报文的源ip地址可以是目标节点33对应的nat的公网ip地址,或者是目标节点33所属的局域网的公网ip地址;该第一心跳报文的源端口号可以是目标节点33在nat上映射的端口号。

目标节点33向主存储节点31发送上述实施例所述的第一心跳报文后,又向主存储节点31发送第二心跳报文,该第二心跳报文的源ip地址可能与第一心跳报文的源ip地址不同,该第二心跳报文的源端口号可能与第一心跳报文的源端口号也不同,即心跳报文的源ip地址和源端口号可能是变化的。

当主存储节点31接收到第二心跳报文后,可以将该第二心跳报文的源ip地址和源端口号作为目标节点33新的地址信息。

当主存储节点31接收到第二心跳报文之前,主存储节点31本地已存储有目标节点33的标识信息、目标节点33对应的终端设备号、目标节点33对应的公网ip地址和端口号;当主存储节点31接收到第二心跳报文之后,将该第二心跳报文的源ip地址作为该目标节点33新的公网ip地址,将该第二心跳报文的源端口号作为该目标节点33新的端口号,从而根据该目标节点33新的公网ip地址和新的端口号,更新主存储节点31中已经存储的该目标节点33的公网ip地址和端口号。

步骤204、所述主存储节点记录所述目标节点的标识信息和所述目标节点的地址信息的对应关系。

主存储节点31在第一列表中记录目标节点33的标识信息、目标节点33对应的终端设备号、目标节点33对应的公网ip地址和端口号。

本发明实施例通过主存储节点接收目标节点发送的心跳报文,该心跳报文包括目标节点的地址信息,使得主存储节点记录该目标节点的标识信息和该目标节点的地址信息的对应关系,使得目标节点可以成为区块链网络中的从存储节点,从而使得没有公网ip地址的节点也可以成为从存储节点,促进了区块链业务的发展。

图4为本发明另一实施例提供的区块链节点通信方法流程图。在上述实施例的基础上,本实施例提供的区块链节点通信方法具体包括如下步骤:

步骤401、主存储节点接收至少一个查询节点发送的查询请求,所述主存储节点存储有第一列表和第二列表,所述第一列表包括至少一个从存储节点的标识信息,所述第二列表包括至少一个转发器中每个转发器的标识信息、端口标识和端口状态信息。

可选的,所述主存储节点接收至少一个查询节点发送的查询请求,包括:所述主存储节点接收第一查询节点发送的第一查询请求;所述主存储节点接收第二查询节点发送的第二查询请求。

当查询节点35或查询节点37首次加入区块链网络的时候,需要从该查询节点35或查询节点37的相邻节点获取创世区块,可选的,区块链网络中的节点均存储有创世区块。为了保证该查询节点35或查询节点37获取到真实的创世区块,该查询节点35或查询节点37可以向多个相邻节点发送创世区块查询请求,例如,查询节点35或查询节点37向相邻节点b1和相邻节点c1分别发送创世区块查询请求,相邻节点b1和相邻节点c1接收到该创世区块查询请求后,将各自本地存储的创世区块发送给查询节点35或查询节点37,查询节点35或查询节点37比较相邻节点b1和相邻节点c1反馈的创世区块是否一致,如果相邻节点b1和相邻节点c1反馈的创世区块一致,则查询节点35或查询节点37将该创世区块存储在本地;如果相邻节点b1和相邻节点c1反馈的创世区块不一致,则查询节点35或查询节点37还可以继续向相邻节点d1和相邻节点e1发送创世区块查询请求,并接收相邻节点d1和相邻节点e1分别反馈的创世区块,若相邻节点b1、相邻节点c1、相邻节点d1和相邻节点e1中超过预设比例的相邻节点反馈的创世区块是一致,则查询节点35或查询节点37确定该创世区块是真实的。可选的,相邻节点b1、相邻节点c1、相邻节点d1和相邻节点e1中超过百分之五十的相邻节点例如相邻节点c1、相邻节点d1和相邻节点e1分别反馈的创世区块一致,则查询节点35或查询节点37确定相邻节点c1反馈的创世区块是真实的,相邻节点b1反馈的创世区块是虚假的。

当查询节点35或查询节点37获取到真实的创世区块后,将该创世区块存储到本地,并从该创世区块中获取主存储节点的ip地址,可选的,该创世区块中存储有一个或多个主存储节点的ip地址,查询节点35或查询节点37可以向一个或多个主存储节点发送查询请求,本实施例以查询节点35或查询节点37向一个主存储节点发送查询请求为例,例如,该创世区块中存储有主存储节点31的ip地址,查询节点35或查询节点37根据该ip地址向主存储节点31发送查询请求,该查询请求用于查询从存储节点。可选的,所述查询请求包括第二指示信息,所述第二指示信息用于指示查询节点35或查询节点37无公网ip地址,该第二指示信息可以是区块链网络中预先约定好的指示信息,例如,该第二指示信息可以写入到创世区块中的固定字段或字符来标识查询节点无公网ip地址。另外,查询节点35或查询节点37还可以采用自己的私钥对该查询请求进行签名,并将签名后的查询请求发送给主存储节点31。在本实施例中,查询节点35或查询节点37可以声明自己处于nat下,或声明自己处于对称nat下。

当主存储节点31接收到查询节点35或查询节点37发送的查询请求后,确定该查询节点35或查询节点37没有公网ip地址,则记录当前时刻该查询节点35或查询节点37对应的nat的公网ip地址和端口号。在本实施例中,查询节点35和查询节点37可以同时向主存储节点31发送查询请求,也可以先后向主存储节点31发送查询请求,另外,将查询节点35向主存储节点31发送的查询请求记为第一查询请求,将查询节点37向主存储节点31发送的查询请求记为第二查询请求。

在本实施例中,主存储节点31的本地存储有第一列表,该第一列表包括与主存储节点31对应的从存储节点的标识信息、该从存储节点对应的终端设备号和公网ip地址,例如,该第一列表中包括从存储节点32的标识信息、从存储节点32对应的终端设备号和公网ip地址。当主存储节点31确定目标节点33可以成为从存储节点时,主存储节点31还可以将目标节点33的标识信息、目标节点33对应的终端设备号、目标节点33对应的公网ip地址和端口号记录到该第一列表中。另外,主存储节点31的本地还存储有第二列表,该第二列表包括与主存储节点31对应的转发器的标识信息、该转发器的端口标识和端口状态信息,其中,端口状态信息包括空闲状态和占用状态。可选的,与主存储节点31对应的转发器可以是一个或多个,此处不做具体限定,例如,与主存储节点31对应的转发器为如图3所示的转发器36,即该第二列表中包括转发器36的标识信息、转发器36的端口标识和端口状态信息,可选的,转发器36的端口可以有一个或多个,此处不做具体限定。

步骤402、所述主存储节点根据所述至少一个查询节点发送的查询请求从所述第一列表中确定出至少一个目标从存储节点的标识信息,以及从所述第二列表中确定出目标转发器的标识信息以及所述目标转发器的目标端口标识,所述目标端口标识对应的目标端口处于空闲状态。

可选的,所述主存储节点根据所述至少一个查询节点发送的查询请求从所述第一列表中确定出至少一个目标从存储节点的标识信息,包括:所述主存储节点根据所述第一查询请求和所述第二查询请求,从所述第一列表中确定出所述目标节点的标识信息,所述目标节点和所述第一查询节点具有关联关系,所述目标节点和所述第二查询节点具有关联关系。

当主存储节点31接收到查询节点35发送来的第一查询请求后,查询本地存储的第一列表和第二列表,具体的,根据第一列表确定出一个空闲的从存储节点的标识信息,此处将主存储节点31确定出的空闲的从存储节点记为目标从存储节点,例如,该目标从存储节点为目标节点33。另外,主存储节点31根据第二列表确定出转发器36的一个处于空闲状态的端口的标识,此处将主存储节点31确定出的转发器36的一个处于空闲状态的端口记为目标端口,例如目标端口号为777。可选的,主存储节点31选定目标节点33和转发器36的目标端口777为该查询节点35提供查询服务,也就是说,目标节点33和查询节点35具有关联关系。

当主存储节点31接收到查询节点37发送来的第二查询请求后,查询本地存储的第一列表和第二列表,具体的,根据第一列表确定出一个空闲的从存储节点的标识信息,此处将主存储节点31确定出的空闲的从存储节点记为目标从存储节点,例如,该目标从存储节点为目标节点33。另外,主存储节点31根据第二列表确定出转发器36的一个处于空闲状态的端口的标识,此处将主存储节点31确定出的转发器36的一个处于空闲状态的端口记为目标端口,例如目标端口号为777。可选的,主存储节点31选定目标节点33和转发器36的目标端口777为该查询节点37提供查询服务,也就是说,目标节点33和查询节点37具有关联关系。

步骤403、所述主存储节点向所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点发送所述目标转发器的ip地址、所述目标端口标识和通信标识,以使所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点通过所述目标转发器的所述目标端口进行信息交互。

可选的,所述主存储节点向所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点发送所述目标转发器的ip地址、所述目标端口标识和通信标识,包括:所述主存储节点向所述目标节点和所述第一查询节点分别发送所述目标转发器的ip地址、所述目标端口标识和第一通信标识;所述主存储节点向所述目标节点和所述第二查询节点分别发送所述目标转发器的ip地址、所述目标端口标识和第二通信标识。

具体的,主存储节点31确定出目标节点33和转发器36的目标端口777为该查询节点35和查询节点37提供查询服务后,为该目标节点33、查询节点35和查询节点37分配该转发器36的ip地址和当前处于空闲状态的目标端口的端口号777。具体的,主存储节点31采用自己的私钥对该转发器36的ip地址、端口号777和第一通信标识例如qwe进行签名,并将签名后的内容分别发送给目标节点33和查询节点35;以及主存储节点31采用自己的私钥对该转发器36的ip地址、端口号777和第二通信标识例如rrty进行签名,并将签名后的内容分别发送给目标节点33和查询节点37。在本实施例中,主存储节点31将目标节点33作为从存储节点。

当目标节点33和查询节点35接收到主存储节点31发送的转发器36的ip地址、端口号777和第一通信标识例如qwe后,目标节点33和查询节点35可分别向转发器36的端口777发送信息,可选的,查询节点35向转发器36的端口777发送的信息记为第一信息,目标节点33向转发器36的端口777发送的信息记为第二信息,该第一信息和该第二信息均包括第一通信标识qwe,则转发器36将目标节点33和查询节点35进行配对,并将查询节点35向转发器36的端口777发送的第一信息发送给目标节点33,将目标节点33向转发器36的端口777发送的第二信息发送给查询节点35;在转发器36将第一信息发送给目标节点33,将第二信息发送给查询节点35时,该第一信息和该第二信息中依旧保存有第一通信标识qwe,从而实现了目标节点33和查询节点35之间的信息交互。例如,查询节点35向转发器36的端口777发送的第一信息为查询请求,目标节点33向转发器36的端口777发送的第二信息为查询结果,查询节点35和目标节点33可通过转发器36的端口777实现查询服务过程。

同理,当目标节点33和查询节点37接收到主存储节点31发送的转发器36的ip地址、端口号777和第二通信标识例如rrty后,目标节点33和查询节点37可分别向转发器36的端口777发送信息,可选的,查询节点37向转发器36的端口777发送的信息记为第三信息,目标节点33向转发器36的端口777发送的信息记为第四信息,该第三信息和该第四信息均包括第二通信标识rrty,则转发器36将目标节点33和查询节点37进行配对,并将查询节点37向转发器36的端口777发送的第三信息发送给目标节点33,将目标节点33向转发器36的端口777发送的第四信息发送给查询节点37;在转发器36将第三信息发送给目标节点33,将第四信息发送给查询节点37时,该第三信息和该第四信息中依旧保存有第二通信标识rrty,从而实现了目标节点33和查询节点37之间的信息交互。例如,查询节点37向转发器36的端口777发送的第三信息为查询请求,目标节点33向转发器36的端口777发送的第四信息为查询结果,查询节点37和目标节点33可通过转发器36的端口777实现查询服务过程。

在本实施例中,目标节点33、查询节点35和查询节点37可以位于普通型的nat下,也可以位于对称型的nat下。

另外,所述主存储节点向所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点发送所述目标转发器的ip地址、所述目标端口标识和通信标识之后,还包括:所述主存储节点将所述第二列表中所述目标转发器的目标端口的状态信息修改为占用状态。

在本实施例中,当主存储节点31采用自己的私钥对该转发器36的ip地址、端口号777和第一通信标识例如qwe进行签名,并将签名后的内容分别发送给目标节点33和查询节点35;以及主存储节点31采用自己的私钥对该转发器36的ip地址、端口号777和第二通信标识例如rrty进行签名,并将签名后的内容分别发送给目标节点33和查询节点37之后,主存储节点31还可以将本地存储的第二列表中该转发器36的端口777对应的状态信息修改为占用状态。

此外,所述方法还包括:所述主存储节点接收所述目标转发器发送的目标端口释放信息;所述主存储节点根据所述目标端口释放信息,将所述第二列表中所述目标转发器的目标端口的状态信息修改为空闲状态。

在超过预设的时间阈值之后,若转发器36还未接收到目标节点33和查询节点35发送的信息,并且转发器36还未接收到目标节点33和查询节点37发送的信息,则转发器36确定目标节点33和查询节点35之间已经完成了信息交互,且目标节点33和查询节点37之间已经完成了信息交互,即目标节点33已经为查询节点35和查询节点37完成了查询服务,此时,转发器36向主存储节点31发送目标端口释放信息,该目标端口释放信息具体为请求释放转发器36的端口777的信息。当主存储节点31接收到转发器36发送的目标端口释放信息后,将本地存储的第二列表中该转发器36的端口777对应的状态信息修改为空闲状态。

在其他实施例中,目标节点33和查询节点37进行信息交互时所采用的转发器36的端口可以与目标节点33和查询节点35进行信息交互时所采用的转发器36的端口不同。

本发明实施例通过主存储节点将转发器的ip地址和该转发器的空闲端口标识发送给从存储节点和至少一个查询节点,使得从存储节点和至少一个查询节点通过该转发器的空闲端口进行信息交互,该从存储节点可以是没有公网ip地址的节点,从而使得没有公网ip地址的节点也可以成为从存储节点,促进了区块链业务的发展。

图5为本发明另一实施例提供的区块链节点通信方法流程图。在上述实施例的基础上,本实施例提供的区块链节点通信方法具体包括如下步骤:

步骤501、所述主存储节点接收第一查询节点发送的第一查询请求。

步骤502、所述主存储节点接收第二查询节点发送的第二查询请求。

例如,第一查询节点为如图3所示的查询节点35,第二查询节点为如图3所示的查询节点37,在本实施例中,查询节点35和查询节点37可以同时向主存储节点31发送查询请求,也可以先后向主存储节点31发送查询请求,另外,将查询节点35向主存储节点31发送的查询请求记为第一查询请求,将查询节点37向主存储节点31发送的查询请求记为第二查询请求。

步骤503、所述主存储节点根据所述第一查询请求和所述第二查询请求,从所述第一列表中确定出第一从存储节点的标识信息和第二从存储节点的标识信息,所述第一从存储节点和所述第一查询节点具有关联关系,所述第二从存储节点和所述第二查询节点具有关联关系。

在本实施例中,主存储节点31将目标节点33作为从存储节点,相应的,该主存储节点31对应有两个从存储节点,一个为从存储节点32,一个为目标节点33。

当主存储节点31接收到查询节点35发送来的第一查询请求后,查询本地存储的第一列表和第二列表,具体的,根据第一列表确定出一个空闲的从存储节点的标识信息,此处将主存储节点31确定出的空闲的从存储节点记为目标从存储节点,例如,该目标从存储节点为从存储节点32。另外,主存储节点31根据第二列表确定出转发器36的一个处于空闲状态的端口的标识,此处将主存储节点31确定出的转发器36的一个处于空闲状态的端口记为目标端口,例如目标端口号为777。可选的,主存储节点31选定从存储节点32和转发器36的目标端口777为该查询节点35提供查询服务,也就是说,从存储节点32和查询节点35具有关联关系。

当主存储节点31接收到查询节点37发送来的第二查询请求后,查询本地存储的第一列表和第二列表,具体的,根据第一列表确定出一个空闲的从存储节点的标识信息,此处将主存储节点31确定出的空闲的从存储节点记为目标从存储节点,例如,该目标从存储节点为目标节点33。另外,主存储节点31根据第二列表确定出转发器36的一个处于空闲状态的端口的标识,此处将主存储节点31确定出的转发器36的一个处于空闲状态的端口记为目标端口,例如目标端口号为777。可选的,主存储节点31选定目标节点33和转发器36的目标端口777为该查询节点37提供查询服务,也就是说,目标节点33和查询节点37具有关联关系。

可见,在上述实施例中,同一个从存储节点例如目标节点33可为查询节点35和查询节点37提供查询服务,在本实施例中,由不同的从存储节点为查询节点35和查询节点37分别提供查询服务。

步骤504、所述主存储节点向所述第一从存储节点和所述第一查询节点发送所述目标转发器的ip地址、所述目标端口标识和第一通信标识。

具体的,主存储节点31确定出从存储节点32和转发器36的目标端口777为该查询节点35提供查询服务、目标节点33和转发器36的目标端口777为该查询节点37提供查询服务后,为该从存储节点32、目标节点33、查询节点35和查询节点37分配该转发器36的ip地址和当前处于空闲状态的目标端口的端口号777。具体的,主存储节点31采用自己的私钥对该转发器36的ip地址、端口号777和第一通信标识例如qwe进行签名,并将签名后的内容分别发送给从存储节点32和查询节点35。

步骤505、所述主存储节点向所述第二从存储节点和所述第二查询节点分别发送所述目标转发器的ip地址、所述目标端口标识和第二通信标识。

主存储节点31采用自己的私钥对该转发器36的ip地址、端口号777和第二通信标识例如rrty进行签名,并将签名后的内容分别发送给目标节点33和查询节点37。

当从存储节点32和查询节点35接收到主存储节点31发送的转发器36的ip地址、端口号777和第一通信标识例如qwe后,从存储节点32和查询节点35可分别向转发器36的端口777发送信息,可选的,查询节点35向转发器36的端口777发送的信息记为第一信息,从存储节点32向转发器36的端口777发送的信息记为第二信息,该第一信息和该第二信息均包括第一通信标识qwe,则转发器36将从存储节点32和查询节点35进行配对,并将查询节点35向转发器36的端口777发送的第一信息发送给从存储节点32,将从存储节点32向转发器36的端口777发送的第二信息发送给查询节点35;在转发器36将第一信息发送给从存储节点32,将第二信息发送给查询节点35时,该第一信息和该第二信息中依旧保存有第一通信标识qwe,从而实现了从存储节点32和查询节点35之间的信息交互。例如,查询节点35向转发器36的端口777发送的第一信息为查询请求,从存储节点32向转发器36的端口777发送的第二信息为查询结果,查询节点35和从存储节点32可通过转发器36的端口777实现查询服务过程。

当目标节点33和查询节点37接收到主存储节点31发送的转发器36的ip地址、端口号777和第二通信标识例如rrty后,目标节点33和查询节点37可分别向转发器36的端口777发送信息,可选的,查询节点37向转发器36的端口777发送的信息记为第三信息,目标节点33向转发器36的端口777发送的信息记为第四信息,该第三信息和该第四信息均包括第二通信标识rrty,则转发器36将目标节点33和查询节点37进行配对,并将查询节点37向转发器36的端口777发送的第三信息发送给目标节点33,将目标节点33向转发器36的端口777发送的第四信息发送给查询节点37;在转发器36将第三信息发送给目标节点33,将第四信息发送给查询节点37时,该第三信息和该第四信息中依旧保存有第二通信标识rrty,从而实现了目标节点33和查询节点37之间的信息交互。例如,查询节点37向转发器36的端口777发送的第三信息为查询请求,目标节点33向转发器36的端口777发送的第四信息为查询结果,查询节点37和目标节点33可通过转发器36的端口777实现查询服务过程。

在本实施例中,目标节点33、查询节点35和查询节点37可以位于普通型的nat下,也可以位于对称型的nat下。

另外,当主存储节点31采用自己的私钥对该转发器36的ip地址、端口号777和第一通信标识例如qwe进行签名,并将签名后的内容分别发送给从存储节点32和查询节点35;以及主存储节点31采用自己的私钥对该转发器36的ip地址、端口号777和第二通信标识例如rrty进行签名,并将签名后的内容分别发送给目标节点33和查询节点37之后,主存储节点31还可以将本地存储的第二列表中该转发器36的端口777对应的状态信息修改为占用状态。

在超过预设的时间阈值之后,若转发器36还未接收到从存储节点32和查询节点35发送的信息,并且转发器36还未接收到目标节点33和查询节点37发送的信息,则转发器36确定从存储节点32和查询节点35之间已经完成了信息交互,且目标节点33和查询节点37之间已经完成了信息交互,即从存储节点32已经为查询节点35完成了查询服务,目标节点33已经为查询节点37完成了查询服务,此时,转发器36向主存储节点31发送目标端口释放信息,该目标端口释放信息具体为请求释放转发器36的端口777的信息。当主存储节点31接收到转发器36发送的目标端口释放信息后,将本地存储的第二列表中该转发器36的端口777对应的状态信息修改为空闲状态。

在其他实施例中,目标节点33和查询节点37进行信息交互时所采用的转发器36的端口可以与从存储节点32和查询节点35进行信息交互时所采用的转发器36的端口不同。

在本实施例中,主存储节点31可以根据查询节点35或查询节点37发送的查询请求动态调整主存储节点31选择的目标端口,从而提高了转发器端口的灵活性和利用率;另外,转发器的同一个端口可以同时为多对具有关联关系的从存储节点和查询节点提供查询服务,从而进一步提高了该转发器端口的利用率。

图6为本发明实施例提供的区块链节点通信装置的结构示意图。该区块链节点通信装置具体可以是上述实施例中的主存储节点。本发明实施例提供的区块链节点通信装置可以执行区块链节点通信方法实施例提供的处理流程,如图6所示,区块链节点通信装置60包括:接收模块61、确定模块62和发送模块63;其中,接收模块61用于接收至少一个查询节点发送的查询请求,所述主存储节点存储有第一列表和第二列表,所述第一列表包括至少一个从存储节点的标识信息,所述第二列表包括至少一个转发器中每个转发器的标识信息、端口标识和端口状态信息;确定模块62用于根据所述至少一个查询节点发送的查询请求从所述第一列表中确定出至少一个目标从存储节点的标识信息,以及从所述第二列表中确定出目标转发器的标识信息以及所述目标转发器的目标端口标识,所述目标端口标识对应的目标端口处于空闲状态;发送模块63用于向所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点发送所述目标转发器的ip地址、所述目标端口标识和通信标识,以使所述至少一个目标从存储节点和所述至少一个查询节点中具有关联关系的所述目标从存储节点和所述查询节点通过所述目标转发器的所述目标端口进行信息交互。

可选的,接收模块61还用于:接收目标节点发送的请求信息,所述请求信息表示所述目标节点请求成为从存储节点,所述请求信息包括所述目标节点的标识信息和指示信息,所述指示信息用于指示所述目标节点无公网ip地址;区块链节点通信装置60还包括:记录模块64;记录模块64用于记录所述目标节点的标识信息;接收模块61还用于:接收所述目标节点发送的心跳报文,所述心跳报文包括所述目标节点的地址信息;记录模块64还用于:记录所述目标节点的标识信息和所述目标节点的地址信息的对应关系。

可选的,接收模块61具体用于:接收第一查询节点发送的第一查询请求;接收第二查询节点发送的第二查询请求;确定模块62具体用于:根据所述第一查询请求和所述第二查询请求,从所述第一列表中确定出所述目标节点的标识信息,所述目标节点和所述第一查询节点具有关联关系,所述目标节点和所述第二查询节点具有关联关系;发送模块63具体用于:向所述目标节点和所述第一查询节点分别发送所述目标转发器的ip地址、所述目标端口标识和第一通信标识;向所述目标节点和所述第二查询节点分别发送所述目标转发器的ip地址、所述目标端口标识和第二通信标识。

可选的,接收模块61具体用于:接收第一查询节点发送的第一查询请求;接收第二查询节点发送的第二查询请求;确定模块62具体用于:根据所述第一查询请求和所述第二查询请求,从所述第一列表中确定出第一从存储节点的标识信息和第二从存储节点的标识信息,所述第一从存储节点和所述第一查询节点具有关联关系,所述第二从存储节点和所述第二查询节点具有关联关系;发送模块63具体用于:向所述第一从存储节点和所述第一查询节点发送所述目标转发器的ip地址、所述目标端口标识和第一通信标识;向所述第二从存储节点和所述第二查询节点分别发送所述目标转发器的ip地址、所述目标端口标识和第二通信标识。

可选的,区块链节点通信装置60还包括:修改模块65,修改模块65用于将所述第二列表中所述目标转发器的目标端口的状态信息修改为占用状态。

可选的,接收模块61还用于:接收所述目标转发器发送的目标端口释放信息;修改模块65还用于:根据所述目标端口释放信息,将所述第二列表中所述目标转发器的目标端口的状态信息修改为空闲状态。

图6所示实施例的区块链节点通信装置可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图7为本发明实施例提供的区块链节点的结构示意图。本发明实施例提供的区块链节点可以执行区块链节点通信方法实施例提供的处理流程,如图7所示,区块链节点70包括存储器71、处理器72、计算机程序和通讯接口73;其中,计算机程序存储在存储器71中,并被配置为由处理器72执行以上实施例所述的区块链节点通信方法。

图7所示实施例的区块链节点可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

另外,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的区块链节点通信方法。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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