区块链节点退出节点集合的方法及装置与流程

文档序号:26530615发布日期:2021-09-04 11:36阅读:218来源:国知局
区块链节点退出节点集合的方法及装置与流程

1.本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链节点退出节点集合的方法及装置。


背景技术:

2.区块链技术(也被称之为,分布式账本技术)是一种去中心化的分布式信息库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。


技术实现要素:

3.有鉴于此,本说明书一个或多个实施例提供一种区块链节点退出节点集合的方法及装置。
4.为实现上述目的,本说明书一个或多个实施例提供技术方案如下:根据本说明书一个或多个实施例的第一方面,提出了一种区块链节点退出节点集合的方法,包括:区块链中继通信网络中的任一中继节点接收节点退出消息,所述节点退出消息表明目标区块链节点需要退出目标区块链节点集合;若确认自身为与所述目标区块链节点相连的本地中继节点且所述节点退出消息来自所述目标区块链节点,则所述中继节点从节点信息库中删除所述目标区块链节点的信息,所述节点信息库用于记录加入所述目标区块链节点集合的所有区块链节点的信息;若确认自身并非所述本地中继节点,则所述中继节点将所述节点退出消息转发至所述本地中继节点,使所述本地中继节点在未收到所述目标区块链节点发送的节点退出消息的情况下,根据其他中继节点转发的节点退出消息从所述节点信息库中删除所述目标区块链节点的信息。
5.根据本说明书一个或多个实施例的第二方面,提出了一种区块链节点退出节点集合的装置包括:接收单元,区块链中继通信网络中的任一中继节点接收节点退出消息,所述节点退出消息表明目标区块链节点需要退出目标区块链节点集合;确认单元,在所述中继节点收到所述节点退出消息的情况下:若确认自身为与所述目标区块链节点相连的本地中继节点且所述节点退出消息来自所述目标区块链节点,则所述中继节点从节点信息库中删除所述目标区块链节点的信息,所述节点信息库用于记录加入所述目标区块链节点集合的所有区块链节点的信息;若确认自身并非所述本地中继节点,则所述中继节点将所述节点退出消息转发至所述本地中继节点,使所述本地中继节点在未收到所述目标区块链节点发送的节点退出消息的情况下,根据其他中继节点转发的节点退出消息从所述节点信息库中删除所述目标区块链节点的信息。
6.根据本说明书一个或多个实施例的第三方面,提出了一种设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如上述第一方面的实施例中所述的方法。
7.根据本说明书一个或多个实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述第一方面的实施例中所述方法的步骤。
附图说明
8.图1是一示例性实施例提供的一种区块链节点与区块链中继通信网络的交互示意图。
9.图2是一示例性实施例提供的一种消息传输场景的示意图。
10.图3是一示例性实施例提供的一种区块链节点退出节点集合的方法的流程图。
11.图4是一示例性实施例提供的一种区块链节点退出节点集合的方法的具体流程图。
12.图5是一示例性实施例提供的一种设备的结构示意图。
13.图6是一示例性实施例提供的一种区块链节点退出节点集合的装置的框图。
具体实施方式
14.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
15.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
16.图1是一示例性实施例提供的一种区块链节点与区块链中继通信网络的交互示意图。如图1所示,假定区块链中继通信网络包含中继节点11、中继节点12、中继节点13和中继节点14等若干中继节点。以中继节点11为例,该中继节点11可以通过网关101与区块链网络中的区块链节点21相连;类似地,其他中继节点也可以与区块链网络中的其他区块链节点相连。网关101用于协助区块链节点21接入区块链中继通信网络。网关101本质上是区块链节点21接入区块链中继通信网络的适配程序,该适配程序可以部署在节点21上,也可以部署在中继节点11上,还可以部署在独立于中继节点11和区块链节点21的另一设备中,本说明书并不对此进行限制。
17.区块链网络中包含若干区块链节点,区块链节点之间的需要实现诸如共识、交易
传输、区块同步等通信操作。在相关技术中,各个区块链节点之间直接采用p2p(peer to peer,点对点)技术进行通信,以传输交易、区块等,但由于各种网络因素导致通信时延高、稳定性差,无法满足应用需求。因此,类似于上述的区块链节点21,每个区块链节点都可以分别接入区块链中继通信网络中的中继节点,这样区块链节点之间就可以通过区块链中继通信网络来实现通信。由于区块链中继通信网络是面向区块链实时传输的骨干中继通信网络,各个中继节点之间能够通过高qos保障的优质带宽进行通信交互,因而由区块链中继通信网络接管区块链节点之间通信的中间链路,能够降低通信时延、提高稳定性,从而显著提升区块链节点之间的通信质量。
18.区块链中继通信网络可以适用于各种类型的区块链网络,包括公有链、私有链和联盟链等。譬如,应用于公有链的区块链中继通信网络主要包括falcon、fast bitcoin relay network(fbrn)、fast internet bitcoin relay engine(fibre)等,而应用于联盟链的区块链中继通信网络主要包括bloxroute、blockchain transmission network (btn)等。
19.区块链中继通信网络中可以在控制面和数据面上实现分层,可以把网络数据的转发控制策略和数据传输过程分离,使得转发控制策略可自由定义,而数据传输也能够更加通用和高效。对于区块链中继通信网络而言,控制面可以理解为消息路由的策略,而数据面是指区块链消息在区块链中继通信网络中的传输。而区块链节点通过提交注册请求,可以根据应用(或业务)上的需求而自由配置自身所属的区块链节点集合,进而调整与该区块链节点相关的路由策略。同一区块链节点可以根据应用需求而加入一个或多个区块链节点集合,即不同区块链节点集合所含的区块链节点可能存在重叠。
20.图2是一种消息传输场景的示意图。以图2例,假定区块链网络中的区块链节点21

22与区块链中继通信网络中的中继节点11相连、区块链节点23与中继节点12相连、区块链节点24与中继节点13相连、区块链节点25

26与中继节点14相连;其中,为了便于理解,此处省去了前文所述的网关(如网关101)。假定区块链节点21希望将区块链消息发送至节点区块链22和区块链节点24,如果区块链节点22和区块链节点24预先通过发送注册请求而加入了同一区块链节点集合,那么区块链节点21只要将该区块链消息的目标对象标注为该区块链节点集合(下称目标区块链节点集合),区块链中继通信网络中的中继节点即可根据区块链节点集合信息将该区块链消息通过区块链中继通信网络发送至归属于该目标区块链节点集合的区块链节点22和区块链节点24。中继节点可以维护有路由表,该路由表用于记录各个区块链节点分别对应的路由策略,每条路由策略可以包含相应区块链节点所属的区块链节点集合以及到达该节点集合中的各节点的路由信息。可见,路由表中所记录的各个区块链节点与区块链节点集合之间的归属信息,可以认为相当于上文所述的区块链节点集合信息。那么,区块链节点21将上述区块链消息发送至中继节点11后,中继节点11可以通过查询上述路由表,确定上述目标区块链节点集合中包含的区块链节点(即区块链节点22、区块链节点24),以及区块链中继通信网络中与该目标区块链节点集合中的各个区块链节点相连的各个中继节点,进而将区块链消息转发至确定出的各个中继节点,而各个中继节点也可以通过查询路由表的方式将接收到的区块链消息传输至自身连接的区块链节点。比如区块链节点21将区块链消息发送至中继节点11后,中继节点11将该区块链消息转发至区块链节点22,中继节点11将该区块链消息转发至中继节点13、中继节点13将区块链消息转发至
区块链节点24,而避免将该区块链消息发送至其他的中继节点和区块链节点,以避免通信资源的浪费。在上述实施例中,中继节点11与中继节点13之间直接相连,使得中继节点11仅需一跳即可将区块链消息传输至中继节点13。而在一些情况下,中继节点11可能并未直接连接至中继节点13,因而中继节点11需要多跳才能够将区块链消息传输至中继节点13,即中继节点11与中继节点13之间需要通过其他的一个或多个中继节点来实现消息转发,并进而由中继节点13将区块链消息发送至区块链节点24。
21.当区块链节点退出所属的某个区块链节点集合时,需要将区块链节点集合信息中的数据也一并删除。但是,由于网络故障等原因,上述区块链节点集合对应的信息可能并未及时更新,导致上述区块链节点期望退出的区块链节点集合中仍然存在退出区块链节点的信息,在上述情况下,其他区块链节点向上述区块链节点集合中的区块链节点传输消息时,区块链中继通信网络可能会将消息转发给上述期望退出的区块链节点,导致消息内容泄漏。
22.为了防止消息内容泄露,保证区块链节点退出区块链节点集合时相应的数据可以及时被删除,本说明书提供了一种区块链节点退出节点集合的方法。
23.图3为一种区块链节点退出节点集合的方法的流程图,下面结合图2所示的消息传输场景,对图3所示的区块链节点退出节点集合的方法的具体步骤进行详细描述:步骤302:区块链中继通信网络中的任一中继节点接收节点退出消息,所述节点退出消息表明目标区块链节点需要退出目标区块链节点集合。
24.在一实施例中,当某个区块链节点需要退出其所属的区块链节点集合时,可以将期望退出的区块链节点称为目标区块链节点、其退出的区块链节点集合称为目标区块链节点集合;在区块链中继通信网络中,与目标区块链节点直接相连的中继节点称为本地中继节点,例如,在图2所示的场景中,假设区块链节点21为目标区块链节点,中继节点11即为区块链节点21的本地中继节点。当目标区块链节点需要退出目标区块链节点集合时,属于此目标区块链节点集合的全部区块链节点(包括目标区块链节点)可以分别向各自在区块链中继通信网络中连接的中继节点发送节点退出消息,上述节点退出消息可以包含目标区块链节点的信息以及目标区块链节点需要退出的目标区块链节点集合信息。在中继节点的角度,区块链中继通信网络中的每个中继节点均可能收到目标区块链节点退出的消息。当中继节点接收到节点退出消息时,可以通过解析节点退出消息确定目标区块链节点以及此目标区块链节点集合。
25.在一实施例中,所述节点退出消息由所述目标区块链节点集合中的各个区块链节点分别执行节点退出交易而发出。具体而言,区块链管理端发送节点退出交易,中继节点接收到节点退出交易后,通过中继通信网络将节点退出交易转发至处于目标区块链节点集合中的各区块链节点。接收到节点退出交易的区块链节点分别执行上述节点退出交易后生成节点退出事件,例如,生成的节点退出事件可以通过其对应的主题(topic)与数据(data)表明此事件为节点退出事件,并将目标区块链节点和目标区块链节点集合的信息包含于节点退出事件中,使得此节点退出事件可用于表明目标区块链节点希望退出目标区块链节点集合。各区块链节点分别对自身产生的事件进行监听,并在监听到上述节点退出事件时,依据上述节点退出事件生成节点退出消息,进而通过区块链中继通信网络将上述节点退出消息转发至本地中继节点处,使得本地中继节点可以依据节点退出消息删除目标区块链节点集
合中的目标区块链节点信息。值得说明的是,区块链中继通信网络中的中继节点仅会对节点退出交易进行传输,并不会解析上述节点退出交易,也不会依据交易对区块链节点集合的信息进行修改。为了保证上述交易在传输、执行等过程中的安全性,上述节点退出交易可以作加密处理,并且仅由区块链节点掌握用于解密的密钥,这样即使中继节点或是其他对象获得了节点退出交易,也无法对节点退出交易进行正确的解密,从而杜绝其对节点退出交易进行解析的可能性。
26.在另一个实施例中,所述节点退出消息可以由所述目标区块链节点集合中的其他区块链节点根据所述目标区块链节点发送的链下节点退出通知而发出。在此种情况下,目标区块链节点决定退出目标区块链节点集合时,可以在链下通知其他区块链节点,其他区块链基于上述链下节点退出通知,分别向各自相连的中继节点发送节点退出消息,再由各个中继节点将节点退出消息转发至本地中继节点处。
27.上述实施例列举了其他区块链节点获取节点退出消息的几种方式,正是由于其他区块链节点可以获取节点退出消息,并将节点退出消息通过区块链中继通信网络转发至本地中继节点,可以提升本地中继节点获取节点退出消息的成功率,尤其在本地中继节点与目标区块链节点之间的通讯过程出现问题时,可以通过其他区块链节点将针对目标区块链节点的节点退出消息通知给相应的本地中继节点。当然,上述实施例仅为举例说明,本说明书不对其他区块链节点获取节点退出消息的方式进行限制。
28.步骤304:中继节点在收到所述节点退出消息的情况下:步骤304a:若确认自身为与所述目标区块链节点相连的本地中继节点且所述节点退出消息来自所述目标区块链节点,则所述中继节点从节点信息库中删除所述目标区块链节点的信息,所述节点信息库用于记录加入所述目标区块链节点集合的所有区块链节点的信息;步骤304b:若确认自身并非所述本地中继节点,则所述中继节点将所述节点退出消息转发至所述本地中继节点,使所述本地中继节点在未收到所述目标区块链节点发送的节点退出消息的情况下,根据其他中继节点转发的节点退出消息从所述节点信息库中删除所述目标区块链节点的信息。
29.在一实施例中,中继节点接收到节点退出消息后,可以确认目标区块链节点和自身的连接关系,如果该中继节点是和目标区块链节点直接相连的本地中继节点,则该中继节点可以修改节点信息库中记录的目标区块链节点集合信息,即将目标区块链节点从目标区块链节点集合信息中删除;如果上述任一中继节点并非是和目标区块链节点直接相连的本地中继节点,则该中继节点可以通过区块链中继通信网络将节点退出消息转发至本地中继节点处,使得即便本地中继节点并未收到目标区块链节点发送的节点退出消息,仍然可以基于上述任一中继节点转发的节点退出消息来修改节点信息库中记录的目标区块链节点集合信息,即将目标区块链节点从目标区块链节点集合信息中删除。
30.中继节点判断自身是否为本地中继节点的步骤可以具体为:每个中继节点均对接收到的节点退出消息进行解析,以确定发出该节点退出消息的区块链节点的信息以及该节点退出消息中包含的目标区块链节点的信息。确定出目标区块链节点后,中继节点可以确认自身是否和目标区块链节点直接相连。例如,由于中继节点维护有记录了区块链节点与中继节点的连接关系的路由表,因此中继节点可以根据路由表确定自身是否与目标区块链
节点直接相连,或者,中继节点也可以通过任何其他的方式确定自身与目标区块链节点的连接关系,本说明书不进行限制。那么,如果中继节点确定自身与目标中继节点直接相连,并且该节点退出消息由该目标区块链节点发出,那么该中继节点即可确定自身为本地中继节点;否则,譬如虽然自身与目标中继节点直接相连但是该节点退出消息并非由该目标区块链节点发出,或者譬如虽然该节点退出消息由该目标区块链节点发出但是自身并未与目标中继节点直接相连,该中继节点均会判定自身并非本地中继节点。
31.进一步的,在中继节点确认自身并非本地中继节点的情况下,此中继节点可以通过区块链中继通信网络将节点退出消息转发至本地中继节点处。本地中继节点可能接收到目标区块链节点发送的节点退出消息,也可能接收到其他区块链节点发送的节点退出消息,或者同时接收到这两类节点退出消息。如前所述,如果本地中继节点接收到目标区块链节点发送的节点退出消息,可以直接从目标区块链节点集合中将目标区块链节点剔除。当然,即使本地中继节点确认自身并未接收到来自目标区块链节点的节点退出消息,同样可以依据其他区块链节点发送的节点退出消息,将从目标区块链节点集合中将目标区块链节点剔除。
32.由于目标区块链节点与本地中继节点之间可能出现的通信故障等问题,本地中继节点可能一直无法接收到目标区块链节点发送的节点退出消息。为了保证区块链节点退出流程的顺利进行,也为了提升区块链节点退出的成功率,本地区块链节点不会一直等待目标区块链节点发送的节点退出消息。例如,区块链通信网络中的各个中继节点可以在接收到第一条节点退出消息时,确认自身是否为本地中继节点。若该本地中继节点接收到的节点退出消息并非来自于目标区块链节点,则由该本地中继节点开始计时:如果在第一预设时长内仍未收到来自于目标区块链节点发送的节点退出消息,此本地中继节点可以确认自身未收到目标区块链节点发送的节点退出消息。
33.在一实施例中,在本地中继节点确认未收到所述目标区块链节点发送的节点退出消息的情况下,可以直接从节点信息库中删除所述目标区块链节点的信息。通过上述方式,即使本地中继节点无法接收到目标区块链节点发送的节点退出消息,同样可以根据其他区块链节点发送的节点退出消息对目标区块链节点集合中的目标区块链节点信息进行删除,有效的避免了由于目标区块链节点信息未及时删除而导致的消息泄露的问题。
34.考虑到其他区块链节点可能会在有意或无意间错发了针对目标区块链节点的节点退出消息。为了保证区块链节点集合信息的安全性,本地中继节点在未接收到来自目标区块链节点的节点退出消息的情况下,可以统计在第二预设时长内接收到来自其他区块链节点的节点退出消息的数量。节点退出消息在转发过程中可能产生重复发送的问题,为了解决这一问题,本地中继节点可以对在上述时长内接收到的节点退出消息进行去重处理,此时统计出的数量相当于发送节点退出消息的其他区块链节点的数量。第二预设时长所对应的开始计时的时刻可以和上述实施例提到的第一预设时长开始计时的时刻相同或者不同,第一预设时长与第二预设时长也可以相同或者不同。如果第一预设时长与第二预设时长在同一时刻开始计时且时长相同,说明本地中继节点可以省去一次计时的操作,节省了处理资源,并有助于提升节点退出效率。
35.进一步的,在第一预设时长与第二预设时长均从同一时刻开始计时的情况下,本地中继节点同样是在首次接收到来自于其他区块链节点发送的节点退出消息时开始计时。
如果在第一预设时长内未接收到来自目标区块链节点的节点退出消息,本地中继节点可以进一步统计在第二预设时长内发送节点退出消息的其他区块链节点的数量或者接收到的节点退出消息的数量;如果上述数量超过预设阈值,则本地中继节点可以从节点信息库中删除所述目标区块链节点的信息。在统计的数量为发送节点退出消息的其他区块链节点的数量时,上述预设阈值可以依据目标区块链节点集合中的区块链节点的总数量确定,例如,上述预设阈值可以被设定为上述总数量的预设比例。假设预设比例为50%,目标区块链节点集合中的区块链节点的总数量为100,那么预设阈值为50。如果在第二预设时长内发送节点退出消息的其他区块链节点的数量达到50个,本地中继节点才可以从节点信息库中删除目标区块链节点的信息。相比于中继节点在接收到其他区块链节点发送的节点退出消息时直接进行删除操作,上述方式可以避免目标区块链节点信息被误删,提升了目标区块链节点集合信息的安全性。
36.在一实施例中,所述节点信息库可以包括:各中继节点统一维护的中心信息库;和/或,所述中继节点自身维护的本地信息库。中继节点基于区块链节点集合的信息对区块链节点发送的信息进行转发,区块链节点集合信息中至少包含了属于各个区块链节点集合的区块链节点信息。具体而言,本实施例中存在多种可能存在的情况,例如,各个区块链节点集合信息可以由中心信息库统一维护,各个中继节点分别从中心信息库中缓存一份在自身维护的本地缓存信息库中,以供在消息传输时进行查询,并且各个中继节点可以定期更新,两次更新之间的时间间隔可以灵活调整,本说明书不进行限制;再例如,各个区块链节点集合信息由中心信息库统一维护,各个中继节点需要查询上述信息时请求中心信息库进行查询,各个中继节点本地不再另外缓存区块链节点集合信息;又例如,各个中继节点可以分别维护一个本地信息库,本地信息库各自维护区块链节点集合的信息,并定期根据区块链节点的注册和退出情况自行对区块链节点集合信息进行更新。
37.在一实施例中,当节点信息库为各中继节点统一维护的中心信息库且各个中继节点并未另外缓存本地缓存信息库时,本地中继节点直接删除中心数据库中维护的目标区块链节点集合信息中的目标区块链节点的信息。进一步的,各个区块链节点可以定期向与自身相连的中继节点发送检查请求,中继节点响应于检查请求查询中心信息库。如果本地中继节点发现中心信息库中未成功删除目标区块链节点集合中的目标区块链节点的信息,本地中继节点可以重新发起对上述信息的删除操作;如果其他中继节点发现中心信息库中未删除目标区块链节点集合中的目标区块链节点的信息,可以向与其相连的区块链节点返回检查结果,接收到检查结果的区块链节点再次向本地中继节点发送节点退出消息,即重复步骤304的流程。
38.在另一实施例中,当信息库为中继节点从中心信息库处同步的本地缓存信息库时:在所述本地中继节点删除中心信息库中维护的目标区块链节点集合信息中的目标区块链节点的信息后,所述区块链中继通信网络中各中继节点分别根据所述中心信息库更新各自维护的本地缓存信息库。具体而言,当本地中继节点根据节点退出消息做出响应,删除中心信息库中维护的目标区块链节点集合信息中的目标区块链节点的信息后,为了使各个中继节点处缓存的本地缓存信息库和中心信息库保持一致,中心信息库和/或本地中继节点可以向区块链中继通信网络中的各个中继节点发送通知,使各个中继节点更新自身维护的本地缓存信息库,或者各个中继节点可以自行定期检测中心信息库是否进行了更新,进而
及时对自身维护的本地缓存信息库进行同步。
39.进一步的,所述任一中继节点接收与自身相连的任一区块链节点发起的缓存检查请求,所述缓存检查请求由所述任一区块链节点在向所述任一中继节点发出节点退出消息之后而发起;若检查结果表明所述任一中继节点维护的本地缓存信息库中未删除所述目标区块链节点的信息,且所述中心信息库已删除所述目标区块链节点的信息,则所述任一中继节点根据所述中心信息库更新自身维护的本地缓存信息库;若检查结果表明所述任一中继节点维护的本地缓存信息库和所述中心信息库均未删除所述目标区块链节点信息,则向所述任一区块链节点返回所述检查结果,以指示所述任一区块链节点向所述任一中继节点重新发送所述节点退出消息。具体而言,如果与任一区块链节点相连的中继节点并未删除其本地缓存信息库中维护的目标区块链节点的信息,可能存在以下两种情况,第一种情况:由于节点退出消息发送失败、网络故障等原因,本地中继节点并未接收到节点退出消息或者在删除目标区块链节点信息的过程中出现错误,导致中心信息库中的目标区块链节点的信息并未被删除,在此种情况下,任一区块链节点需要重新发送节点退出消息至相连的中继节点,进而重复上述步骤304中的流程;第二种情况:本地中继节点已经成功将中心信息库中目标区块链节点的信息删除,说明本地中继节点已经接收到节点退出消息并顺利做出响应,而其他中继节点处的本地缓存信息库尚未删除目标区块链节点信息的原因可能是在后续的同步过程中出现了错误,此时其他中继节点可以根据中心信息库更新自身维护的本地缓存信息库,以保证自身维护的本地缓存信息库和中心信息库保持一致。
40.在一实施例中,当信息库为中继节点各自独立维护的本地信息库时,所述本地中继节点从自身维护的本地信息库删除所述目标区块链节点信息后,通知所述区块链中继通信网络中其它中继节点从各自维护的本地信息库中删除目标区块链节点信息。具体而言,当本地中继节点根据节点退出消息做出响应,将目标区块链节点在目标区块链节点集合信息中对应的信息从本地信息库中删除时,为了使各个中继节点各自维护的本地信息库和本地中继节点处的本地信息库保持一致,本地中继节点可以向区块链中继通信网络中的各个中继节点发送通知,各个中继节点接收到上述通知后可以将各自的本地信息库中目标区块链节点的信息进行删除,以保证各个中继节点处的本地信息库和本地中继节点处的本地信息库保持一致。
41.进一步的,在所述任一区块链节点已经向所述与自身相连的中继节点发送所述退出消息的情况下,所述任一区块链节点检查所述与自身相连的中继节点是否已经删除其维护的本地信息库中的目标区块链节点信息;如果与所述任一区块链节点相连的中继节点并未删除其维护的本地信息库中的目标区块链节点信息,且该中继节点确认所述本地中继节点已删除所述目标区块链节点信息,则该中继节点删除其维护的本地信息库中所述目标区块链节点信息;如果与所述任一区块链节点相连的中继节点与所述本地中继节点均未从自身维护的本地缓存信息库删除所述目标区块链节点信息,则所述任一区块链节点向与其相连的中继节点重新发送所述节点退出消息。具体而言,如果与任一区块链节点相连的中继节点并未删除其本地信息库中维护的目标区块链节点的信息,可能存在以下两种情况,第一种情况:由于节点退出消息发送失败、网络故障等原因,本地中继节点并未接收到节点退出消息或者在删除目标区块链节点信息的过程中出现错误,导致自身的本地信息库中目标区块链节点的信息并未被删除,在此种情况下,任一区块链节点需要重新发送节点退出消
息至相连的中继节点,进而重复上述步骤304中的流程,保证本地中继节点处的本地信息库中目标区块链节点信息可以被删除;第二种情况:本地中继节点已经成功将自身的本地信息库中目标区块链节点的信息删除,说明本地中继节点已经接收到节点退出消息并顺利做出响应,而其他中继节点处的本地信息库尚未删除目标区块链节点信息的原因可能是在后续的同步过程中出现了错误,此时其他中继节点可以重新对自身维护的本地信息库中的目标区块链节点信息进行删除操作,以保证其他中继节点自身维护的本地信息库和本地中继节点处的本地信息库保持一致。
42.在一实施例中,所述任一中继节点接收所述目标区块链节点集合中的区块链节点定期提交的注册请求,以将所述区块链节点重复注册至所述目标区块链节点集合。第一方面:区块链中继通信网络中的中继节点维护有目标区块链节点集合的信息,区块链中继通信网络在转发消息时,依据目标区块链节点集合信息进行转发路径的规划。但是,在目标区块链节点集合信息存在有效时间的情况下,超出有效时间将导致目标区块链节点集合的信息失效,进而影响消息转发。如果通过上述的路由表来记录该目标区块链节点集合信息,也可以理解为路由表中所含的路由策略存在有效时间,且路由策略将会在超出有效时间后失效,进而影响消息转发。因此,通过定期使区块链节点重新注册至目标区块链节点集合,可以对目标区块链节点集合信息对应的有效时间进行刷新,以避免其超出有效时间而失效。第二方面:由于网络故障等原因,本地中继节点可能无法正常接收到相应的至少一个区块链节点发送的节点退出消息。基于上述情况,可以通过定期重新将目标区块链节点集合中的各个区块链节点注册至目标区块链节点集合中,在信息库中形成新版本的目标区块链节点集合信息。由于目标区块链节点在退出后,无法再次注册进入目标区块链节点集合,因此新版本的区块链节点集合信息中只会存在未退出目标区块链节点集合的区块链节点的信息,而必然不会存在目标区块链节点的信息。此时可以使用最新版本的目标区块链节点集合信息覆盖原有的目标区块链节点集合信息,以使信息库中的目标区块链节点集合信息被强制更新为不包含目标区块链节点的版本,也就达到了从目标区块链节点集合中删除目标区块链节点的目的。另外,原有的区块链节点集合信息可以作删除处理或者继续保留,本说明书对此不作限制。本实施例通过使各个未退出目标区块链节点集合的区块链节点重新注册,可以将目标区块链节点集合的信息保持在最新的版本。即使上文中的每个实施例均无法使本地中继节点删除信息库中目标区块链节点集合中的目标区块链节点信息,本实施例也可以强制更新信息库中的目标区块链节点集合信息,进一步提升了目标区块链节点信息被成功剔除的成功率。
43.通过上述实施例可知,本说明书提出的区块链节点退出节点集合方法,通过使目标区块链节点集合中的各区块链节点分别向自身在区块链中继通信网络中所连接的中继节点发送节点退出消息,提升本地中继节点接收到节点退出消息的概率,保证了目标区块链节点信息可以被及时删除,有效解决了目标区块链节点在退出后仍然接收到目标区块链节点集合中的其他区块链节点发送的消息,而导致消息内容被泄露的问题。并且,本说明书通过对其他区块链节点发送的节点退出消息的数量或者发送节点退出消息的其他区块链节点的数量进行统计,可以避免存在区块链节点故意发送节点退出消息以使其余的区块链节点信息被误删的情况。各个区块链节点定期对自身相连的中继节点维护的信息库进行检查,可以进一步保证目标区块链节点信息被删除。通过本说明书提出的区块链节点退出机
制,可以在区块链节点集合的信息安全得到保证的情况下,将期望退出的区块链节点信息从相应的区块链节点集合信息中及时删除,保证在区块链中继通信网络中传输的信息不被泄露。
44.图4为一种区块链节点退出节点集合的方法的具体流程图,下面结合图2所示的消息传输场景,对图4所示的区块链节点退出节点集合的方法的具体步骤进行详细描述:步骤402:各个区块链节点发送节点退出消息至各自相连的中继节点。
45.在一实施例中,假设图2所示的全部区块链节点(即区块链节点21~26)均属于目标区块链节点集合,区块链节点21期望退出上述区块链节点集合,可以将区块链节点21称为为目标区块链节点,中继节点11即为区块链节点21的本地中继节点。当区块链节点21需要退出目标区块链节点集合时,属于此目标区块链节点集合的全部区块链节点21~26可以分别向各自在区块链中继通信网络中连接的中继节点发送节点退出消息,例如区块链节点21、22连接的中继节点为中继节点11、区块链节点23连接的中继节点为中继节点12,以此类推。上述节点退出消息可以表明目标区块链节点的身份以及目标区块链节点需要退出的目标区块链节点集合。
46.在一实施例中,基于区块链技术中的事件机制,管理各个区块链节点(区块链节点21~26)的系统管理方可以通过向任一个或任几个区块链节点提交节点退出交易,并将区块链节点21和目标区块链节点集合的信息包含于该节点退出交易中。接收到节点退出交易的区块链节点通过区块链中继通信网络将节点退出交易转发至其他各个区块链节点处。接收到节点退出交易的区块链节点(即区块链节点22~26)执行此节点退出交易并生成节点退出事件,进一步的,区块链节点22~26可以基于上述节点退出事件分别生成节点退出消息并分别向自身在区块链中继通信网络中连接的中继节点发送上述节点退出消息。或者,区块链节点21决定退出目标区块链节点集合时,可以在链下通知区块链节点22~26,区块链节点22~26基于上述链下通知,分别向各自相连的中继节点发送节点退出消息,再由各个中继节点将节点退出消息转发至本地中继节点处。
47.步骤404:各个中继节点确认自身是否为本地中继节点。
48.在一实施例中,各个中继节点接受到节点退出消息后确认目标区块链节点的身份信息,由于各个中继节点保存有区块链中继通信网络中各个区块链节点与各个中继节点之间的连接关系,因此各个中继节点可以依据上述连接关系判断自身是否为与区块链节点21相连的本地中继节点。值得说明的是,如图2所示,与本地中继节点连接的区块链节点不仅包含区块链节点21,还包含区块链节点22;在上述情况下,当区块链节点22向中继节点11发送节点退出消息时,中继节点11可能会将自身判断为与目标区块链节点连接的本地中继节点,继而进行后续的操作;因此,在任一中继节点确认自身是否为本地中继节点时,需要将节点退出消息的发送方节点与节点退出消息中指示目标区块链节点相结合以确定,换言之,当发送方节点为区块链节点21且中继节点确认自身为与区块链节点21相连的本地区块链节点的情况下,进行后续406a~408a的步骤。如果收到的节点退出消息的发送方为区块链节点22,由于发送方节点与节点退出消息中指示的目标区块链节点即区块链节点21不一致,则进入步骤406b~410b。
49.步骤406a:如果中继节点确认自身为本地中继节点,即中继节点11,则可以直接从中心信息库中删除区块链节点21的信息。
50.在一实施例中,各个区块链节点集合信息可以由中心信息库统一维护,中继节点11~14分别从中心信息库中缓存一份区块链节点集合信息在自身维护的本地缓存信息库中,以供在消息传输时进行查询,并且本地中继节点可以定期更新,两次更新之间的时间间隔可以灵活调整,本说明书不进行限制。
51.步骤408a:各中继节点分别根据中心信息库更新各自维护的本地缓存信息库。
52.在一实施例中,在中继节点11删除中心信息库中维护的目标区块链节点集合信息中的区块链节点21的信息后,中继节点11~14分别根据所述中心信息库更新各自维护的本地缓存信息库。具体而言,当中继节点11根据节点退出消息作出响应,从中心信息库中删除目标区块链节点集合信息中区块链节点21的信息后,为了使各个中继节点处缓存的本地缓存信息库和中心信息库保持一致,中心信息库和/或本地中继节点可以向中继节点11~14发送通知,使各个中继节点更新自身维护的本地缓存信息库。并且,中继节点11~14可以自行定期检测中心信息库是否进行了更新,进而在未更新时,及时从中心信息库中同步最新的信息至其自身维护的本地缓存信息库。
53.步骤406b:如果中继节点确认自身并非本地中继节点,即中继节点11,则可以根据自身维护的各个区块链节点与各个中继节点之间的连接关系,将节点退出消息转发至中继节点11。
54.步骤408b:本地中继节点从中心信息库中删除目标区块链节点的信息。
55.在一实施例中,中继节点11获取到首个来自中继节点12~14转发的由区块链节点22~26发出的节点退出消息后,需要确认自身是否收到来自目标区块链节点21的节点退出消息,如果确认并未收到来自区块链节点21的退出消息,中继节点11可以统计向其发送节点退出消息的区块链节点的具体数量。例如,中继节点11可以在获取到首个来自中继节点12~14转发的由区块链节点22~26发出的节点退出消息后开始计时,如果在预设时长内中继节点11仍未接收到来自于区块链节点21的节点退出消息,则确认自身并未接收到来自于区块链节点21的节点退出消息。此时,中继节点11可以对上述预设时长内接收到的节点退出消息进行去重处理,以统计出向中继节点11发送节点退出消息的区块链节点的数量。假设中继节点11接收到的节点退出消息中,包含区块链节点22~26中的3个区块链节点发送的节点退出消息,且预先设定的数量阈值为2,那么说明向中继节点11发送节点退出消息的其他区块链节点的数量已经超过了预设阈值,中继节点11可以从中心信息库中删除区块链节点21的信息,否则不能进行步骤408b的步骤。统计向中继节点11发送节点退出消息的其他区块链节点的具体数量,相比于统计节点退出消息数量的方式,可以避免由于某个区块链节点多次发送节点退出消息而导致将区块链节点21的信息被错删的情况发生。
56.步骤410b:各中继节点分别根据中心信息库更新各自维护的本地缓存信息库。
57.在一实施例中,在中继节点11删除中心信息库中维护的目标区块链节点集合信息中的区块链节点21的信息后,中继节点11~14分别根据所述中心信息库更新各自维护的本地缓存信息库。具体而言,当中继节点11根据节点退出消息做出响应,删除中心信息库中维护的目标区块链节点集合信息中的区块链节点21的信息后,为了使各个中继节点处缓存的本地缓存信息库和中心信息库保持一致,中心信息库和/或本地中继节点可以向中继节点11~14发送通知,使各个中继节点更新自身维护的本地缓存信息库,或者中继节点11~14可以自行定期检测中心信息库是否进行了更新,进而及时对自身维护的本地缓存信息库进行
同步。
58.步骤412:各个区块链节点检查与自身相连的中继节点是否已经删除目标区块链节点的信息。
59.在一实施例中,目标区块链节点集合中的各个区块链节点(区块链节点21~26)可以定期检查与自身相连的中继节点是否已经删除目标区块链节点的信息。例如区块链节点21~22可以定期确认中继节点11中维护的本地缓存信息库中是否已经删除区块链节点21的信息,节点23可以确定中继节点12中维护的本地缓存信息库中是否已经删除区块链节点21的信息,以此类推。如果没有删除,则进入步骤414,如果已经删除,则进入步骤418。
60.步骤414:各中继节点检查中心信息库中是否已经删除目标区块链节点的信息。
61.在一实施例中,在区块链节点21~26中的任一区块链节点(假设为区块链节点23)已经向所述与自身相连的中继节点发送所述节点退出消息的情况下,如果与区块链节点23相连的中继节点12并未删除其本地缓存信息库中维护的区块链节点21的信息,且该中继节点12检查中心信息库后确定中心信息库已删除区块链节点21的信息,说明本地中继节点11已经接收到节点退出消息并顺利做出响应,而中继节点12处的本地缓存信息库尚未删除目标区块链节点信息的原因可能是在后续的同步过程中出现了错误,则该中继节点12可以根据中心信息库更新自身维护的本地缓存信息库,即步骤416a;如果与区块链节点23相连的中继节点12所维护的本地缓存信息库和中心信息库均未删除所述区块链节点21的信息,说明可能由于节点退出消息发送失败、网络故障等原因,中继节点11并未接收到节点退出消息或者在删除区块链节点21的信息的过程中出现错误,导致中心信息库中的区块链节点21的信息并未删除,可以进入步骤416b,区块链节点23向与其相连的中继节点12重新发送节点退出消息,进而循环至步骤404,重新进行步骤404及之后的步骤。
62.步骤418:各个中继节点定期重新注册至目标区块链节点集合。
63.在一实施例中,区块链节点22

26可以分别定期向相连的中继节点提交注册请求,以重复注册至相应区块链节点所处的区块链节点集合。在本实施例中,区块链节点22~26可以通过定期重新将各个区块链节点注册至所属的区块链节点集合中以生成新版本的目标区块链节点集合信息。由于区块链节点21在发送节点退出消息后不会再进行重新注册的步骤,即使区块链节点21重新注册时也无法通过验证,因此新版本的目标区块链节点集合信息中必然不包含区块链节点21的信息。通过上述重复注册的步骤,可以使信息库中的区块链节点的信息强制进行更新,保证目标区块链节点集合对应的目标区块链节点信息被移除。由于本实施例在实际实施时耗时较长,占用的资源较大,因此可以将重新注册的周期设置为较长的周期,以减少占用的资源,减轻网络负担。
64.图5是一示例性实施例提供的一种设备的结构示意图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
65.图6是一种区块链节点退出节点集合的装置的框图。参考图6,区块链节点退出节
点集合的装置可以应用于如图5所示的设备中,以实现本说明书的技术方案。其中,该装置可以包括:接收单元602,区块链中继通信网络中的任一中继节点接收节点退出消息,所述节点退出消息表明目标区块链节点需要退出目标区块链节点集合;确认单元604,在中继节点收到所述节点退出消息的情况下:若确认自身为与所述目标区块链节点相连的本地中继节点且所述节点退出消息来自所述目标区块链节点,则所述中继节点从节点信息库中删除所述目标区块链节点的信息,所述节点信息库用于记录加入所述目标区块链节点集合的所有区块链节点的信息;若确认自身并非所述本地中继节点,则所述中继节点将所述节点退出消息转发至所述本地中继节点,使所述本地中继节点在未收到所述目标区块链节点发送的节点退出消息的情况下,根据其他中继节点转发的节点退出消息从所述节点信息库中删除所述目标区块链节点的信息。
66.可选的,所述节点退出消息由所述目标区块链节点集合中的各个区块链节点分别执行节点退出交易而发出。
67.可选的,所述节点退出消息由所述目标区块链节点直接向所述本地中继节点发出;或者,所述节点退出消息由所述目标区块链节点集合中的其他区块链节点根据所述目标区块链节点发送的链下节点退出通知而发出。
68.可选的,所述节点信息库包括:各中继节点统一维护的中心信息库;和/或,所述中继节点自身维护的本地信息库。
69.可选的,所述本地中继节点自身维护的本地信息库为与所述中心信息库同步的本地缓存信息库;所述装置还包括,更新单元606:在所述本地中继节点删除中心信息库中维护的目标区块链节点集合信息中的目标区块链节点的信息后,所述任一中继节点根据所述中心信息库更新自身维护的本地缓存信息库。
70.可选的,所述装置还包括,检查单元608:所述任一中继节点接收与自身相连的任一区块链节点发起的缓存检查请求,所述缓存检查请求由所述任一区块链节点在向所述任一中继节点发出节点退出消息之后而发起;若检查结果表明所述任一中继节点维护的本地缓存信息库中未删除所述目标区块链节点的信息,且所述中心信息库已删除所述目标区块链节点的信息,则所述任一中继节点根据所述中心信息库更新自身维护的本地缓存信息库;若检查结果表明所述任一中继节点维护的本地缓存信息库和所述中心信息库均未删除所述目标区块链节点信息,则向所述任一区块链节点返回所述检查结果,以指示所述任一区块链节点向所述任一中继节点重新发送所述节点退出消息。
71.可选的,所述装置还包括,通知单元610:所述任一中继节点在确认自身为本地中继节点且已经从自身维护的本地信息库删除所述目标区块链节点信息的情况下,通知所述区块链中继通信网络中其它中继节点从各自维护的本地信息库中删除目标区块链节点信息。
72.可选的,所述装置还包括,统计单元612:所述本地中继节点统计发送所述退出消息的区块链节点数量,并在得到的统计数量超过第一预设阈值的情况下,从所述节点信息库中删除所述目标区块链节点的信息,或者,所述本地中继节点统计从其他中继节点处接收到的所述退出消息的数量,并在得到的统计数量超过第二预设阈值的情况下,从所述节点信息库中删除所述目标区块链节点的信息。
73.可选的,所述装置还包括,注册单元614:区块链中继通信网络中的各区块链节点分别定期向相连的中继节点提交注册请求,以重复注册至相应区块链节点所处的区块链节点集合。
74.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
75.在一个典型的配置中,计算机包括一个或多个处理器 (cpu)、输入/输出接口、网络接口和内存。
76.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (ram) 和/或非易失性内存等形式,如只读存储器 (rom) 或闪存(flash ram)。内存是计算机可读介质的示例。
77.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (pram)、静态随机存取存储器 (sram)、动态随机存取存储器 (dram)、其他类型的随机存取存储器 (ram)、只读存储器 (rom)、电可擦除可编程只读存储器 (eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器 (cd

rom)、数字多功能光盘 (dvd) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
78.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
79.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
80.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
81.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
82.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1