区块链节点注册至节点集合的方法及装置转让专利

申请号 : CN202110903877.1

文献号 : CN113342901B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙赫曾超

申请人 : 支付宝(杭州)信息技术有限公司

摘要 :

本说明书一个或多个实施例提供一种区块链节点注册至节点集合的方法及装置:任一中继节点接收注册请求,若任一中继节点为本地中继节点,在目标区块链节点集合不存在的情况下创建所述目标区块链节点集合,并注册目标区块链节点;在目标区块链节点集合已存在的情况下,将注册请求分别转发至已存在区块链节点,并且在超过预设数量的已存在区块链节点同意注册的情况下,注册目标区块链节点。本说明书可以通过各个区块链节点验证目标区块链节点是否属于目标区块链节点集合,以提升区块链节点注册过程的准确性。

权利要求 :

1.一种区块链节点注册至节点集合的方法,包括:区块链中继通信网络中的任一中继节点接收注册请求,所述注册请求表示目标区块链节点请求注册至目标区块链节点集合;

若所述任一中继节点确认自身为与所述目标区块链节点相连的本地中继节点,则识别所述目标区块链节点集合是否存在:在所述目标区块链节点集合不存在的情况下,所述任一中继节点创建所述目标区块链节点集合,并直接将所述目标区块链节点注册至所述目标区块链节点集合中;

在所述目标区块链节点集合已存在的情况下,所述任一中继节点通过所述区块链中继通信网络中的其他中继节点将所述注册请求分别转发至所述目标区块链节点集合的已存在区块链节点,包括:所述任一中继节点查询目标区块链节点集合对应的节点信息库,所述节点信息库用于记录加入所述目标区块链节点集合的所有区块链节点的信息;所述任一中继节点根据查询到的已存在区块链节点的信息,确定各个已存在区块链节点所连接的中继节点,并将注册请求发送至确定出的中继节点,以由确定出的中继节点将所述注册请求进一步转发至自身相连的已存在区块链节点;并且在超过预设数量的所述已存在区块链节点同意注册的情况下,将所述目标区块链节点注册至所述目标区块链节点集合中;

若所述任一中继节点确认自身并非所述本地中继节点,则将所述注册请求发送至与所述任一中继节点相连的已存在区块链节点,并向所述本地中继节点转发用于表示该已存在区块链节点是否同意注册的消息,以使所述本地中继节点确认是否将所述目标区块链节点注册至所述目标区块链节点集合中。

2.根据权利要求1所述的方法,将所述目标区块链节点注册至所述目标区块链节点集合中,包括:

将目标区块链节点的信息写入所述节点信息库。

3.根据权利要求1所述的方法,节点信息库包括:各中继节点统一维护的中心信息库;和/或,所述中继节点自身维护的本地信息库。

4.根据权利要求1所述的方法,所述在超过预设数量的所述已存在区块链节点同意注册的情况下,将所述目标区块链节点注册至所述目标区块链节点集合中,包括:在发出所述注册请求后启动计时;

若超过预设数量的其它区块链节点在预设时长内返回同意消息,则将所述目标区块链节点注册至所述目标区块链节点集合中。

5.根据权利要求1所述的方法,当所述已存在区块链节点自身维护的所述目标区块链节点集合的成员信息中包含所述目标区块链节点的信息时,所述已存在区块链节点向所述本地中继节点反馈同意消息。

6.根据权利要求5所述的方法,所述目标区块链节点集合的成员信息被记录于所述已存在区块链节点维护的创世区块和/或预设世界状态中。

7.根据权利要求1所述的方法,还包括:所述任一中继节点接收所述目标区块链节点集合中的区块链节点定期提交的注册请求,以将所述区块链节点重复注册至所述目标区块链节点集合。

8.一种区块链节点注册至节点集合的装置,包括:接收单元,区块链中继通信网络中的任一中继节点接收注册请求,所述注册请求表示目标区块链节点请求注册至目标区块链节点集合;

注册单元,在所述任一中继节点接收到所述注册请求的情况下:若所述任一中继节点确认自身为与所述目标区块链节点相连的本地中继节点,则识别所述目标区块链节点集合是否存在:在所述目标区块链节点集合不存在的情况下,所述任一中继节点创建所述目标区块链节点集合,并直接将所述目标区块链节点注册至所述目标区块链节点集合中;

在所述目标区块链节点集合已存在的情况下,所述任一中继节点通过所述区块链中继通信网络中的其他中继节点将所述注册请求分别转发至所述目标区块链节点集合的已存在区块链节点,包括:所述任一中继节点查询目标区块链节点集合对应的节点信息库,所述节点信息库用于记录加入所述目标区块链节点集合的所有区块链节点的信息;所述任一中继节点根据查询到的已存在区块链节点的信息,确定各个已存在区块链节点所连接的中继节点,并将注册请求发送至确定出的中继节点,以由确定出的中继节点将所述注册请求进一步转发至自身相连的已存在区块链节点;并且在超过预设数量的所述已存在区块链节点同意注册的情况下,将所述目标区块链节点注册至所述目标区块链节点集合中;

若所述任一中继节点确认自身并非所述本地中继节点,则将所述注册请求发送至与所述任一中继节点相连的已存在区块链节点,并向所述本地中继节点转发用于表示该已存在区块链节点是否同意注册的消息,以使本地中继节点确认是否将所述目标区块链节点注册至所述目标区块链节点集合中。

9.一种电子设备,其特征在于,包括:处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器通过运行所述可执行指令以实现如权利要求1‑7中任一项所述的方法。

10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1‑7中任一项所述方法的步骤。

说明书 :

区块链节点注册至节点集合的方法及装置

技术领域

[0001] 本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链节点注册至节点集合的方法及装置。

背景技术

[0002] 区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式信息库的新兴技术。在相关技术中,各个区块链节点之间
直接采用点对点技术进行通信,以传输交易、区块等,但由于各种网络因素导致通信时延
高、稳定性差,无法满足应用需求。因此,可以利用区块链中继网络实现区块链节点之间的
通信。

发明内容

[0003] 有鉴于此,本说明书一个或多个实施例提供一种区块链节点退出节点集合的方法及装置。
[0004] 为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
[0005] 根据本说明书一个或多个实施例的第一方面,提出了一种区块链节点注册至节点集合的方法,包括:
[0006] 区块链中继通信网络中的任一中继节点接收注册请求,所述注册请求表示目标区块链节点请求注册至目标区块链节点集合;
[0007] 若所述任一中继节点确认自身为与所述目标区块链节点相连的本地中继节点,则识别所述目标区块链节点集合是否存在:在所述目标区块链节点集合不存在的情况下,所
述任一中继节点创建所述目标区块链节点集合,并直接将所述目标区块链节点注册至所述
目标区块链节点集合中;在所述目标区块链节点集合已存在的情况下,所述任一中继节点
通过所述区块链中继通信网络中的其他中继节点将所述注册请求分别转发至所述目标区
块链节点集合的已存在区块链节点,并且在超过预设数量的所述已存在区块链节点同意注
册的情况下,将所述目标区块链节点注册至所述目标区块链节点集合中;
[0008] 若所述任一中继节点确认自身并非所述本地中继节点,则将所述注册请求发送至与所述任一中继节点相连的已存在区块链节点,并向所述本地中继节点转发用于表示该已
存在区块链节点是否同意注册的消息,以使所述本地中继节点确认是否将所述目标区块链
节点注册至所述目标区块链节点集合中。
[0009] 根据本说明书一个或多个实施例的第二方面,提出了一种区块链节点注册至节点集合的装置,包括:
[0010] 接收单元,区块链中继通信网络中的任一中继节点接收注册请求,所述注册请求表示目标区块链节点请求注册至目标区块链节点集合;
[0011] 注册单元,在所述任一中继节点接收到所述注册请求的情况下:
[0012] 若所述任一中继节点确认自身为与所述目标区块链节点相连的本地中继节点,则识别所述目标区块链节点集合是否存在:在所述目标区块链节点集合不存在的情况下,所
述任一中继节点创建所述目标区块链节点集合,并直接将所述目标区块链节点注册至所述
目标区块链节点集合中;在所述目标区块链节点集合已存在的情况下,所述任一中继节点
通过所述区块链中继通信网络中的其他中继节点将所述注册请求分别转发至所述目标区
块链节点集合的已存在区块链节点,并且在超过预设数量的所述已存在区块链节点同意注
册的情况下,将所述目标区块链节点注册至所述目标区块链节点集合中;
[0013] 若所述任一中继节点确认自身并非所述本地中继节点,则将所述注册请求发送至与所述任一中继节点相连的已存在区块链节点,并向所述本地中继节点转发用于表示该已
存在区块链节点是否同意注册的消息,以使本地中继节点确认是否将所述目标区块链节点
注册至所述目标区块链节点集合中。
[0014] 根据本说明书一个或多个实施例的第三方面,提出了一种设备,包括:
[0015] 处理器;
[0016] 用于存储处理器可执行指令的存储器;
[0017] 其中,所述处理器通过运行所述可执行指令以实现如上述第一方面的实施例中所述的方法。
[0018] 根据本说明书一个或多个实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述第一方面的实施例中所述方法的
步骤。

附图说明

[0019] 图1是一示例性实施例提供的一种区块链节点与区块链中继通信网络的交互示意图。
[0020] 图2是一示例性实施例提供的一种消息传输场景的示意图。
[0021] 图3是一示例性实施例提供的一种区块链节点注册至节点集合的方法的流程图。
[0022] 图4是一示例性实施例提供的一种区块链节点注册至节点集合的方法的具体流程图。
[0023] 图5是一示例性实施例提供的一种设备的结构示意图。
[0024] 图6是一示例性实施例提供的一种区块链节点注册至节点集合的装置的框图。

具体实施方式

[0025] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例
中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相
反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相
一致的装置和方法的例子。
[0026] 需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更
多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进
行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行
描述。
[0027] 图1是一示例性实施例提供的一种区块链节点与区块链中继通信网络的交互示意图。如图1所示,假定区块链中继通信网络包含中继节点11、中继节点12、中继节点13和中继
节点14等若干中继节点。以中继节点11为例,该中继节点11可以通过网关101与区块链网络
中的区块链节点21相连;类似地,其他中继节点也可以与区块链网络中的其他区块链节点
相连。网关101用于协助区块链节点21接入区块链中继通信网络,该网关101在逻辑上相当
于区块链网络中的一个区块链节点,但该网关101本身并不参与区块链共识,这样区块链节
点21可以通过区块链网络所采用的通信协议与该网关101进行通信,并且该网关101不会对
区块链网络中的共识等过程产生负面影响。网关101本质上是区块链节点21接入区块链中
继通信网络的适配程序,该适配程序可以部署在区块链节点21上,也可以部署在中继节点
11上,还可以部署在独立于中继节点11和区块链节点21的另一设备中,本说明书并不对此
进行限制。
[0028] 区块链网络中包含若干区块链节点,区块链节点之间的需要实现诸如共识、交易传输、区块同步等通信操作。在相关技术中,各个区块链节点之间直接采用P2P(Peer to 
Peer,点对点)技术进行通信,以传输交易、区块等,但由于各种网络因素导致通信时延高、
稳定性差,无法满足应用需求。因此,类似于上述的区块链节点21,每个区块链节点都可以
分别接入区块链中继通信网络中的中继节点,这样区块链节点之间就可以通过区块链中继
通信网络来实现通信。由于区块链中继通信网络是面向区块链实时传输的骨干中继通信网
络,各个中继节点之间能够通过高QoS保障的优质带宽进行通信交互,因而由区块链中继通
信网络接管区块链节点之间通信的中间链路,能够降低通信时延、提高稳定性,从而显著提
升区块链节点之间的通信质量。
[0029] 区块链中继通信网络可以适用于各种类型的区块链网络,包括公有链、私有链和联盟链等。譬如,应用于公有链的区块链中继通信网络主要包括Falcon、Fast Bitcoin 
Relay Network(FBRN)、Fast Internet Bitcoin Relay Engine(FIBRE)等,而应用于联盟
链的区块链中继通信网络主要包括BloXRoute、Blockchain Transmission Network (BTN)
等。
[0030] 区块链中继通信网络中可以在控制面和数据面上实现分层,可以把网络数据的转发控制策略和数据传输过程分离,使得转发控制策略可自由定义,而数据传输也能够更加
通用和高效。对于区块链中继通信网络而言,控制面可以理解为消息路由的策略,而数据面
是指区块链消息在区块链中继通信网络中的传输。而区块链节点通过提交注册请求,可以
根据应用(或业务)上的需求而自由配置自身所属的区块链节点集合,进而调整与该区块链
节点相关的路由策略。同一区块链节点可以根据应用需求而加入一个或多个区块链节点集
合,即不同区块链节点集合所含的区块链节点可能存在重叠。
[0031] 图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。
[0032] 当区块链节点请求注册至某个区块链节点集合时,需要将自身的信息(例如节点ID、公钥、期望加入的区块链节点集合的信息等)发送至区块链中继通信网络中。由于区块
链中继通信网络中的中继节点无法接触到区块链存储,而区块链节点集合中所包含的区块
链节点信息(即区块链节点集合对应的成员信息)被预先写入区块链存储中,因此中继节点
无法确认上述区块链节点是否属于其请求加入的区块链节点集合。
[0033] 为了确认区块链节点是否属于其请求注册进入的区块链节点集合,保证区块链节点集合中注册至正确的区块链节点集合中,本说明书一个或多个实施例提供一种区块链节
点退出节点集合的方法。
[0034] 图3为一种区块链节点注册至节点集合的方法的流程图,下面结合图2所示的消息传输场景,对图3所示的区块链节点注册至节点集合的方法的具体步骤进行详细描述:
[0035] 步骤302:区块链中继通信网络中的任一中继节点接收注册请求,所述注册请求表示目标区块链节点请求注册至目标区块链节点集合。
[0036] 在一实施例中,可以将发送注册请求的区块链节点称为目标区块链节点,上述注册请求表明目标区块链节点请求注册进入的区块链节点集合。由于目标区块链节点可能归
属于多个不同的区块链节点集合,因此目标区块链节点的注册对象可以包含多个区块链节
点集合,在上述情况下,可以在同一个注册请求中携带目标区块链节点需要注册进入的全
部区块链节点集合的信息,以表明目标区块链节点需要注册进入的全部区块链节点集合。
和目标区块链节点相连的本地中继节点可以根据注册请求中携带的各个区块链节点集合
的信息对上述注册请求进行转发。或者,目标区块链节点也可以分多次发送注册请求,每个
注册请求表明目标区块链节点请求注册进入的一个区块链节点集合,本地中继节点分别对
各个注册请求进行响应。
[0037] 步骤304,在任一中继节点接收到注册请求的情况下:
[0038] 步骤304a:若所述任一中继节点确认自身为与所述目标区块链节点相连的本地中继节点,则识别所述目标区块链节点集合是否存在:在所述目标区块链节点集合不存在的
情况下,所述任一中继节点创建所述目标区块链节点集合,并直接将所述目标区块链节点
注册至所述目标区块链节点集合中;在所述目标区块链节点集合已存在的情况下,所述任
一中继节点通过所述区块链中继通信网络中的其他中继节点将所述注册请求分别转发至
所述目标区块链节点集合的已存在区块链节点,并且在超过预设数量的所述已存在区块链
节点同意注册的情况下,将所述目标区块链节点注册至所述目标区块链节点集合中。
[0039] 步骤304b:若所述任一中继节点确认自身并非所述本地中继节点,则将所述注册请求发送至与所述任一中继节点相连的目标区块链节点集合的已存在区块链节点,并向所
述本地中继节点转发用于表示该目标区块链节点集合的已存在区块链节点是否同意注册
的消息,以使所述本地中继节点确认是否将所述目标区块链节点注册至所述目标区块链节
点集合中。
[0040] 在一实施例中,本地中继节点接收到目标区块链节点发送的注册请求后,可以依托于区块链中继通信网络,将注册请求分别转发至已经注册至目标区块链节点集合中的其
他区块链节点。因此,对于每个中继节点而言,其接收到的注册请求可能来自与自身直接相
连的区块链节点,也可能来自与自身间接相连的区块链节点。当任一中继节点接收到注册
请求时,可以解析此注册请求。注册请求中至少包含目标区块链节点的信息以及目标区块
链节点集合的信息,因此中继节点可以从解析结果中确认目标区块链节点,进而确认自身
与目标区块链节点的连接关系,例如,中继节点可以根据中继节点维护的路由信息确定自
身与目标区块链节点的连接关系。
[0041] 在一实施例中,如果任一中继节点是与目标区块链节点直接相连的本地中继节点,可以进一步确认目标区块链节点集合是否存在。举例而言,假定第一个请求注册进入目
标区块链节点集合的区块链节点为初始区块链节点,在该初始区块链节点发送注册请求
时,目标区块链节点集合尚未创建,此时本地中继节点可以创建目标区块链节点集合,进而
将目标区块链节点直接注册至目标区块链节点集合中。由于在该初始区块链节点加入目标
区块链节点集合之前,该目标区块链节点集合中尚未包含前述的已存在区块链节点,因而
本地中继节点不需要且无法向已存在区块链节点征询意见,只需要直接将该初始区块链节
点注册至目标区块链节点集合。值得注意的是,下文中已存在区块链节点指代目标区块链
节点集合的已存在区块链节点,即已经注册至目标区块链节点集合的区块链节点。
[0042] 相反的,如果目标区块链节点集合已经存在,即目标区块链节点集合中包含前述的已存在区块链节点,譬如至少包含上述的初始区块链节点,此时本地中继节点可以通过
其他中继节点,将上述注册请求分别转发至已存在的区块链节点。已存在区块链节点接收
到注册请求后,可以验证目标区块链节点是否为目标区块链节点集合的成员,如果确认目
标区块链节点为目标区块链节点集合的成员,则可以通过区块链中继通信网络返回同意消
息至本地中继节点,以表明同意目标区块链节点的注册请求,否则,已存在区块链节点可以
选择不对上述注册请求进行响应或者返回拒绝消息,以表明不同意目标区块链节点的注册
请求。考虑到已存在区块链节点可能存在重复发送同意消息的问题,为了解决这一问题,本
地中继节点可以根据消息发送方对接收到的同意消息进行去重处理,去重后得到的同意消
息的数量相当于发送了同意消息的区块链节点的数量。进一步的,本地中继节点可以在向
其他区块链节点发送注册请求时开始计时,在经过预设时长后停止计时,并统计上述预设
时长内发送同意消息的区块链节点的数量,以将上述数量与预设数量相比较。上述预设数
量可以设定为目标区块链节点集合中已经注册成功的区块链节点的总数量的一定比例,那
么预设数量可以随着目标区块链节点集合中区块链节点的总数量浮动。假设目标区块链节
点集合中注册成功的区块链节点有100个,上述比例为50%,那么预设数量为50个,如果向本
地中继节点发送同意消息的区块链节点数量达到或超过五十个,本地中继节点可以将目标
区块链节点注册至目标区块链节点集合中,否则不予注册。通过上述方式,不仅可以使多个
区块链节点分别确认目标区块链节点是否属于目标区块链节点集合,以达到多次验证目标
区块链节点是否为目标区块链节点集合的成员的目的,同时,也可以避免部分已存在的区
块链节点故意不响应或返回拒绝消息而导致目标区块链节点注册失败的情况发生。而上述
统计方式可以在已存在区块链节点有意或无意多次发送同意消息的情况下,避免目标区块
链节点注册至错误的区块链节点集合。
[0043] 在另一实施例中,如果上述的任一中继节点并非是与目标区块链节点直接相连的本地中继节点,说明该任一中继节点接收到的注册请求转发自该本地中继节点,旨在征询
该任一中继节点在目标区块链节点集合中对应的已存在区块链节点是否同意上述注册请
求此时,任一中继节点可以将上述注册请求转发至与自身相连的已存在区块链节点,等待
已存在区块链节点对上述注册请求的投票结果,并将用于表示该已存在区块链节点是否同
意注册请求的消息返回上述的本地中继节点。本地中继节点通过对各个中继节点分别返回
的同意消息进行统计,并根据统计结果确认是否将所述目标区块链节点注册至所述目标区
块链节点集合中,此处可以参考上文的相关描述。
[0044] 在一实施例中,本地中继节点转发注册请求的过程可以具体为:本地中继节点接收注册请求,并根据注册请求确定目标区块链节点集合。区块链中继通信网络中的各个中
继节点可以基于节点信息库中保存的各个区块链节点集合的信息以及各个区块链节点之
间的连接关系对消息进行转发。值得注意的是,上述节点信息库中维护的目标区块链节点
集合信息中,记载了上述的已存在区块链节点的信息。因此,本地中继节点可以从保存有目
标区块链节点集合的节点信息库中读取上述的已存在区块链节点的信息,以及与已存在区
块链节点连接的中继节点的信息。基于所读取的上述信息,本地中继节点可以将注册请求
转发至上述与已存在区块链节点连接的中继节点,进而由上述与已存在区块链节点连接的
中继节点将注册请求转发至已经存在于目标区块链节点集合中的区块链节点处。
[0045] 在一实施例中,如果超过预设数量的区块链节点同意目标区块链节点注册至目标区块链节点集合,本地中继节点可以将目标区块链节点注册至目标区块链节点集合。例如,
本地中继节点可以将目标区块链节点的信息写入节点信息库,上述节点信息库中维护有已
经注册至目标区块链节点集合的已存在区块链节点的信息。
[0046] 可选的,上述节点信息库可以作为中心信息库的形式存在,中心信息库中维护有每个区块链节点集合中已经存在的区块链节点对应的信息,此时,中继节点可以无需维护
本地缓存信息库,而直接从中心信息库处获取目标区块链节点集合的信息,以将注册请求
发送至已存在区块链节点处。当目标区块链节点经过投票被允许注册进入目标区块链节点
集合时,本地中继节点可以将目标区块链节点的信息写入中心信息库。为了减少各个中继
节点查询中心信息库时占用的传输资源,各个中继节点也可以选择维护本地缓存信息库,
并将中心信息库中的区块链节点集合信息各自缓存至中继节点自行维护的本地缓存信息
库处。当中继节点需要进行消息转发时,可以直接查询本地缓存信息库中维护的信息,而无
需请求中心信息库,以达到提升转发效率的效果。值得注意的是,在中心信息库与本地缓存
信息库同时存在的情况下,目标区块链节点经过投票被允许注册进入目标区块链节点集合
时,本地中继节点可以将目标区块链节点的信息写入中心信息库,中心信息库或者本地中
继节点可以通知各个中继节点(包括本地中继节点)更新自身缓存的本地缓存信息库,以使
各个本地中继节点及时将各自本地缓存信息库中的区块链节点集合信息同步为最新的版
本。
[0047] 可选的,上述节点信息库可以作为本地信息库的形式存在,此处的本地信息库由各个中继节点独立维护,并不依赖于中心信息库。同样的,本地信息库中维护有每个区块链
节点集合中已经存在的区块链节点所对应的信息,各个中继节点可以从自身维护的本地信
息库处获取目标区块链节点集合的信息,以将注册请求发送至已经存在目标区块链节点集
合中的区块链节点处。如果通过已存在区块链节点的投票,目标区块链节点被允许注册进
入目标区块链节点集合,本地中继节点可以将目标区块链节点的信息写入本地中继节点对
应的本地信息库,进而通知各个其他中继节点。其他中继节点响应于上述通知,将目标区块
链节点的信息写入其各自维护的本地信息库中,以保证各个中继节点维护的本地信息库保
持一致。
[0048] 在一实施例中,本地中继节点征询其他区块链节点是否同意目标区块链节点加入目标区块链节点集合的过程可以具体为:本地中继节点在将注册请求转发至各个已存在的
区块链节点并启动计时,进而统计在启动计时后的预设时长内,同意目标区块链节点的注
册请求的已存在区块链节点的数量,如果超过预设数量的其他区块链节点在预设时长内返
回了同意消息,则将目标区块链节点注册至目标区块链节点集合中。上述预设时长可以灵
活调整,本说明书对此不作限制。
[0049] 在一实施例中,已存在区块链节点可以根据注册请求获取目标区块链节点的信息,进而确认目标区块链节点是否属于目标区块链节点集合,以选择同意目标区块链节点
注册或拒绝目标区块链节点注册。具体而言,当已存在区块链节点自身维护的所述目标区
块链节点集合的成员信息中包含目标区块链节点的信息时,已存在区块链节点可以反馈同
意目标区块链节点注册的消息。换言之,其他已存在的区块链节点可以获取自身维护的目
标区块链节点集合的成员信息,上述成员信息记录了属于目标区块链节点集合的所有区块
链节点的信息。其他已存在的区块链节点可查询成员信息中是否存在注册请求中包含的目
标区块链节点,如果确认目标区块链节点属于目标区块链节点集合,则同意目标区块链节
点注册至所述目标区块链节点集合,否则不予同意。
[0050] 可选的,目标区块链节点与已存在目标区块链集合中的区块链节点维护有相同的区块链账本数据,其中,上述成员列表可以被记录于该区块链账本数据中的创世区块中,或
者被记录于该区块链账本数据对应的预设世界状态中。如果上述成员列表被记录于创世区
块链中,则后期不可以对成员列表进行修改,如果记录于预设世界状态中,后续可以对成员
列表进行修改。
[0051] 需要强调的是,成员信息与目标区块链节点信息的含义并不相同。成员信息代表了目标区块链节点集合中应当存在的区块链节点,但成员信息中包含的一个或多个区块链
节点可能尚未注册至目标区块链节点集合。相对的,中继节点维护的节点信息库中记载的
区块链节点信息表征了已经成功注册至目标区块链节点集合的区块链节点,即上文中的已
存在区块链节点。
[0052] 在一实施例中,任一中继节点接收所述目标区块链节点集合中的区块链节点定期提交的注册请求,以将所述区块链节点重复注册至所述目标区块链节点集合。举例而言,区
块链中继通信网络中的各区块链节点可以分别定期向相连的中继节点提交注册请求,以重
复注册至相应区块链节点所处的区块链节点集合。重新注册的频率可以根据实际情况灵活
调整,本说明书对此不作限制。在本实施例中,如果存在已经退出的区块链节点,即使节点
信息库中已经退出的区块链节点的信息未被删除,其重新注册时也无法通过验证。因此,区
块链节点可以通过定期重新将各个区块链节点注册至所属的区块链节点集合中,使信息库
中的区块链节点信息强制进行更新,保证目标区块链节点集合对应的目标区块链节点信息
的准确性。
[0053] 另外,在已经存在于目标区块链节点集合中的区块链节点只有初始区块链节点时,如果初始区块链节点拒绝其他区块链节点的注册请求,可能会出现后续注册的区块链
节点无法正常注册至目标区块链节点集合的情况。本实施例中,各个区块链节点可以定期
重新注册至目标区块链节点集合,由于各个区块链节点的注册时间随机生成,所以初始区
块链节点也随之发生变化,即便某些区块链节点故意拒绝其他区块链节点加入目标区块链
节点集合,但通过对初始区块链节点的变化,可以避免类似的情况长期存在,从而保证区块
链节点注册过程的顺利进行。
[0054] 通过上述实施例可知,本说明书提出的区块链节点注册至节点集合的方法,可以通过各个区块链节点验证目标区块链节点是否属于目标区块链节点集合,以提升区块链节
点注册过程的准确性。各个区块链节点定期重新注册至目标区块链节点集合,可以避免存
在区块链节点故意使其他区块链节点注册失败的情况,进一步保证了区块链节点可以顺利
注册进入正确的区块链节点集合。
[0055] 图4为一种区块链节点注册至节点集合的方法的具体流程图,下面结合图2所示的消息传输场景,对图4所示的区块链节点注册至节点集合的方法的具体步骤进行详细描述:
[0056] 步骤402:目标区块链节点发送注册请求至本地中继节点。
[0057] 在一实施例中,以图2所示的场景为例,假设已经成功注册至目标区块链节点集合中的区块链节点包括区块链节点22 26,区块链节点21请求加入目标区块链节点集合,此时
~
区块链节点21可以被称为目标区块链节点,和区块链节点21相连的中继节点11可以被称为
本地中继节点。区块链节点21可以将注册请求发送至中继节点11,上述注册请求中至少包
含区块链节点21的信息以及目标区块链节点集合的信息。
[0058] 步骤404:本地中继节点确认是否存在目标区块链节点集合。
[0059] 在一实施例中,如果中继节点11确认存在目标区块链节点集合,可以进入步骤406a,将注册请求转发至目标区块链节点集合中已经存在的区块链节点,即区块链节点22
~
26。具体而言,各个中继节点可以基于节点信息库中保存的各个区块链节点集合的信息以
及各个区块链节点之间的连接关系对消息进行转发。值得注意的是,上述节点信息库中维
护的目标区块链节点集合信息中,记载了已经注册进入目标区块链节点的信息。因此,中继
节点11可以确定保存有目标区块链节点集合的节点信息库,并从上述节点信息库中获取已
经存在于目标区块链节点集合中的区块链节点(即区块链节点22 26),以及上述各个区块
~
链节点连接的中继节点。进而,本地中继节点11可以将注册请求转发至确定出的各个中继
节点(即中继节点12 14),进而由各个中继节点将注册请求转发至已经存在于目标区块链
~
节点集合中的区块链节点处。
[0060] 在一实施例中,假设区块链节点22 26尚未注册至目标区块链节点集合中,说明目~
标区块链节点集合尚不存在(或者目标区块链节点集合为空,即不存在区块链节点),由于
目标区块链节点集合中不存在其他区块链节点,因此无法使其他区块链节点确认目标区块
链节点是否属于目标区块链节点集合。在上述情况下,可以进入步骤406b,即本地中继节点
创建目标区块链节点集合并将目标区块链节点直接注册至新创建的目标区块链节点集合
中,如果存在目标区块链节点集合但是目标区块链节点集合为空,则直接将目标区块链节
点注册至目标区块链节点集合中。
[0061] 步骤408a:各区块链节点确认目标区块链节点是否属于目标区块链节点集合。
[0062] 在一实施例中,区块链节点22 26可以获取自身维护的目标区块链节点集合的成~
员列表,上述成员列表记录了属于目标区块链节点集合的所有区块链节点的信息。如果上
述成员列表中记载的目标区块链节点集合信息中包含区块链节点21,说明区块链节点21属
于目标区块链节点集合中所包含的成员,则区块链节点22 26可以向本地中继节点11返回
~
同意消息,表明同意区块链节点21注册至目标区块链节点集合,即步骤410a。如果上述成员
列表中记载的目标区块链节点集合信息中不包含区块链节点21,说明区块链节点21发送的
注册请求有误,换言之,目标区块链节点集合中的成员不包含区块链节点21。在上述情况下
可以进入步骤410b,即向本地中继节点11返回拒绝消息,表明不同意区块链节点21注册至
目标区块链节点集合,或者对注册请求不予响应,即并不返回任何消息至本地中继节点11。
[0063] 在一实施例中,目标区块链节点与已存在目标区块链集合中的区块链节点维护有相同的区块链账本数据,其中,上述成员列表可以被记录于该区块链账本数据中的创世区
块中,或者被记录于该区块链账本数据对应的预设世界状态中。如果上述成员列表被记录
于创世区块链中,则后期不可以成员列表进行修改,如果上述成员列表被记录于预设世界
状态中,后续可以对成员列表进行修改。
[0064] 步骤412:本地中继节点统计在预设时长内发送同意消息的区块链节点是否达到预设数量。
[0065] 在一实施例中,本地中继节点11在将注册请求转发至各个目标区块链节点集合中已经存在的区块链节点(即区块链节点22 26)时,可以启动计时,并统计启动计时后的预设
~
时长内发送同意消息的区块链节点的数量,例如,本地中继节点11可以对接收到的同意消
息进行去重处理,以筛选出发送同意消息的区块链节点,如果在预设时长内,超过预设数量
的其他区块链节点返回了同意消息,可以将目标区块链节点注册至目标区块链节点集合
中。具体而言,假设预设时长为10秒,预设数量为3个,如果在10秒内,本地中继节点11接收
到了区块链节点22 26中至少3个节点发送的同意消息,则进入步骤414a,否则进入步骤
~
414b,即在同意注册的区块链节点未达到预设数量时,不予注册目标区块链节点21。上述预
设时长和预设数量均可以根据实际应用情况灵活调整,本说明书对此不进行限制。
[0066] 在一实施例中,步骤414a中提到的将目标区块链节点21注册至目标区块链节点集合中,可以具体为:本地中继节点11将目标区块链节点21的信息写入所述节点信息库,节点
信息库中维护有已经注册至目标区块链节点集合的区块链节点的信息,即区块链节点22
~
26的信息。
[0067] 可选的,上述节点信息库可以作为中心信息库的形式存在,中心信息库中维护有每个区块链节点集合中已经存在的区块链节点所对应的信息,各个中继节点可以从中心信
息库处获取目标区块链节点集合的信息,以将注册请求发送至区块链节点22 26处。当目标
~
区块链节点21经过投票被允许注册进入目标区块链节点集合时,本地中继节点11可以将目
标区块链节点21的信息写入中心信息库;为了减少中继节点11 14查询中心信息库时占用
~
的传输资源,各个中继节点也可以各自缓存中心信息库中的区块链节点集合信息在中继节
点自行维护的本地缓存信息库中,当中继节点需要进行消息转发时,可以直接查询本地缓
存信息库中维护的信息,而无需请求中心信息库,提升转发效率。值得注意的是,在中心信
息库与本地缓存信息库同时存在的情况下,目标区块链节点经过投票被允许注册进入目标
区块链节点集合时,本地中继节点可以将目标区块链节点的信息写入中心信息库,中心信
息库或者本地中继节点可以通知中继节点12 14更新自身缓存的本地缓存信息库,当然,本
~
地中继节点11也需要更新自身的本地缓存信息库,以使各个本地缓存信息库中的区块链节
点集合信息保持一致。
[0068] 可选的,上述节点信息库可以作为本地信息库的形式存在,此处的本地信息库由中继节点11 14独立维护,并不依赖于中心信息库。同样的,本地信息库中维护有区块链节
~
点22 26的信息,各个中继节点可以从自身维护的本地信息库处获取目标区块链节点集合
~
的信息,以通过区块链中继通信网络将注册请求发送至区块链节点22 26处。当目标区块链
~
节点21经过投票被允许注册进入目标区块链节点集合时,本地中继节点11可以将目标区块
链节点21的信息写入本地中继节点对应的本地信息库,进而通知中继节点12 14;中继节点
~
12 14响应于上述通知,可以将目标区块链节点的信息写入其各自维护的本地信息库中,以
~
保证各个中继节点处维护的本地信息库保持一致。
[0069] 步骤416:各个区块链节点定期重新注册至目标区块链节点集合。
[0070] 在一实施例中,区块链中继通信网络中的各区块链节点可以分别定期向相连的中继节点提交注册请求,以重复注册至相应区块链节点所处的区块链节点集合。例如,无论区
块链节点21是否成功注册进入目标区块链节点集合中,区块链节点21 26均可以定期重新
~
注册,上述重新注册的频率可以根据实际情况灵活调整,本说明书对此不作限制。在本实施
例中,如果存在已经退出的区块链节点,即使节点信息库中已经退出的区块链节点的信息
未被删除,其重新注册时也无法通过验证。因此,区块链节点可以通过定期重新将各个区块
链节点注册至所属的区块链节点集合中,使信息库中的区块链节点信息强制进行更新,保
证目标区块链节点集合对应的目标区块链节点信息的准确性。
[0071] 图5是一示例性实施例提供的一种设备的结构示意图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还
可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,
比如由处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行。
当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻
辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻
辑单元,也可以是硬件或逻辑器件。
[0072] 图6是一种区块链节点注册至节点集合的装置的框图。请参考图6,区块链节点注册至节点集合的装置可以应用于如图5所示的设备中,以实现本说明书的技术方案。其中,
该装置可以包括:
[0073] 接收单元602,区块链中继通信网络中的任一中继节点接收注册请求,所述注册请求表示目标区块链节点请求注册至目标区块链节点集合;
[0074] 注册单元604,在所述任一中继节点接收到所述注册请求的情况下:
[0075] 若所述任一中继节点确认自身为与所述目标区块链节点相连的本地中继节点,则识别所述目标区块链节点集合是否存在:在所述目标区块链节点集合不存在的情况下,所
述任一中继节点创建所述目标区块链节点集合,并直接将所述目标区块链节点注册至所述
目标区块链节点集合中;在所述目标区块链节点集合已存在的情况下,所述任一中继节点
通过所述区块链中继通信网络中的其他中继节点将所述注册请求分别转发至所述目标区
块链节点集合的已存在区块链节点,并且在超过预设数量的所述已存在区块链节点同意注
册的情况下,将所述目标区块链节点注册至所述目标区块链节点集合中;
[0076] 若所述任一中继节点确认自身并非所述本地中继节点,则将所述注册请求发送至与所述任一中继节点相连的已存在区块链节点,并向所述本地中继节点转发用于表示该已
存在区块链节点是否同意注册的消息,以使本地中继节点确认是否将所述目标区块链节点
注册至所述目标区块链节点集合中。
[0077] 可选的,所述装置还包括:查询单元606,具体用于:所述任一中继节点为本地中继节点且所述目标区块链节点集合已存在的情况下,所述任一中继节点通过所述区块链中继
通信网络中的其他中继节点将所述注册请求分别转发至所述目标区块链节点集合的已存
在区块链节点,包括:
[0078] 所述任一中继节点查询目标区块链节点集合对应的节点信息库,所述节点信息库用于记录加入所述目标区块链节点集合的所有区块链节点的信息;
[0079] 所述任一中继节点根据查询到的已存在区块链节点的信息,确定各个已存在区块链节点所连接的中继节点,并将注册请求发送至确定出的中继节点,以由确定出的中继节
点将所述注册请求进一步转发至自身相连的已存在区块链节点。
[0080] 可选的,将所述目标区块链节点注册至所述目标区块链节点集合中,包括:
[0081] 将目标区块链节点的信息写入所述节点信息库。
[0082] 可选的,节点信息库包括:
[0083] 各中继节点统一维护的中心信息库;和/或,
[0084] 所述本地中继节点自身维护的本地信息库。
[0085] 可选的,所述装置还包括:计时单元608:所述在超过预设数量的所述已存在区块链节点同意注册的情况下,将所述目标区块链节点注册至所述目标区块链节点集合中,包
括:
[0086] 在发出所述注册请求后启动计时;
[0087] 若超过预设数量的其它区块链节点在预设时长内返回同意消息,则将所述目标区块链节点注册至所述目标区块链节点集合中。
[0088] 可选的,当所述已存在区块链节点自身维护的所述目标区块链节点集合的成员信息中包含所述目标区块链节点的信息时,所述已存在区块链节点向所述本地中继节点反馈
的消息用于表明其同意注册。
[0089] 可选的,所述目标区块链节点集合的成员信息被记录于所述已存在区块链节点维护的创世区块和/或预设世界状态中。
[0090] 可选的,所述装置还包括重复注册单元610:
[0091] 所述任一中继节点接收所述目标区块链节点集合中的区块链节点定期提交的注册请求,以将所述区块链节点重复注册至所述目标区块链节点集合。
[0092] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可
以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放
器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的
任意几种设备的组合。
[0093] 在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
[0094] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介
质的示例。
[0095] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、
动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电
可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 
(CD‑ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、
基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计
算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 
(transitory media),如调制的数据信号和载波。
[0096] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要
素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要
素的过程、方法、商品或者设备中还存在另外的相同要素。
[0097] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来
执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺
序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可
以的或者可能是有利的。
[0098] 在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书
中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表
示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出
项目的任何或所有可能组合。
[0099] 应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区
分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第
二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如
果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0100] 以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何
修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。