CN112688870B - 一种路由方法、路由装置及节点设备 - Google Patents
一种路由方法、路由装置及节点设备 Download PDFInfo
- Publication number
- CN112688870B CN112688870B CN202011576545.9A CN202011576545A CN112688870B CN 112688870 B CN112688870 B CN 112688870B CN 202011576545 A CN202011576545 A CN 202011576545A CN 112688870 B CN112688870 B CN 112688870B
- Authority
- CN
- China
- Prior art keywords
- node
- list
- identifier
- designated
- logical distance
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请适用于区块链技术领域,提供了一种路由方法、路由装置及节点设备,所述方法应用于区块链网络中的第一节点,包括:接收包含指定节点的节点标识的请求信息;根据指定节点的节点标识判断第一节点是否为指定节点;若第一节点不为指定节点,则计算各个待查找节点与指定节点之间的逻辑距离,其中,待查找节点为第一节点的本地节点列表中存储的节点标识对应的节点,本地节点列表存储有区块链网络中除第一节点之外的至少一个节点的节点标识;将请求信息发送至第二节点,其中,第二节点为与指定节点之间的逻辑距离最近的待查找节点。通过上述方法,可以使区块链网络中的节点间实现点对点的数据传播,从而降低了区块链网络中发生洪泛问题的可能性。
Description
技术领域
本申请属于区块链技术领域,尤其涉及一种路由方法、路由装置、节点设备及计算机可读存储介质。
背景技术
目前,在区块链网络中,当存在大量节点时,节点产生新数据后是采用Gossip协议的数据传播方式将新数据传播至区块链网络中的所有节点。Gossip协议的数据传播方式如下:节点A随机与区块链网络中的其它多个节点连接,当新数据产生时,该节点A将新数据广播至与自己连接的多个节点,然后与自己连接的多个节点也采用相同的方式将新数据进行广播,经过多轮这样的广播,最终新数据会被传播至整个区块链网络。
然而,Gossip协议的数据传播方式容易导致区块链网络中发生洪泛问题,洪泛数据将会在区块链网络中循环交换转发,占用所有网络资源,以致整个网络没有资源传送其它有效数据帧而瘫痪。
发明内容
有鉴于此,本申请提供了一种路由方法、路由装置、节点设备及计算机可读存储介质,可以使区块链网络中的节点间实现点对点的数据传播,从而降低了区块链网络中发生洪泛问题的可能性。
第一方面,本申请提供了一种路由方法,应用于区块链网络中的第一节点,上述第一节点为上述区块链网络中的任一节点,包括:
接收包含指定节点的节点标识的请求信息;
根据上述指定节点的节点标识判断上述第一节点是否为上述指定节点;
若上述第一节点不为上述指定节点,则计算各个待查找节点与上述指定节点之间的逻辑距离,其中,上述待查找节点为上述第一节点的本地节点列表中所存储的节点标识所对应的节点,上述本地节点列表存储有上述区块链网络中除上述第一节点之外的至少一个节点的节点标识;
将上述请求信息发送至第二节点,其中,上述第二节点为与上述指定节点之间的逻辑距离最近的待查找节点。
第二方面,本申请提供了一种路由装置,应用于区块链网络中的第一节点,上述第一节点为上述区块链网络中的任一节点,上述路由装置包括:
接收单元,用于接收包含指定节点的节点标识的请求信息;
判断单元,用于根据上述指定节点的节点标识判断上述第一节点是否为上述指定节点;
计算单元,用于若上述第一节点不为上述指定节点,则计算各个待查找节点与上述指定节点之间的逻辑距离,其中,上述待查找节点为上述第一节点的本地节点列表中所存储的节点标识所对应的节点,上述本地节点列表存储有上述区块链网络中除上述第一节点之外的至少一个节点的节点标识;
发送单元,用于将上述请求信息发送至第二节点,其中,上述第二节点为与上述指定节点之间的逻辑距离最近的待查找节点。
第三方面,本申请提供了一种节点设备,包括存储器、处理器以及存储在上述存储器中并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时实现如上述第一方面所提供的方法。
第四方面,本申请提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现如第一方面所提供的方法。
由上可见,本申请方案中,首先接收包含指定节点的节点标识的请求信息,根据上述指定节点的节点标识判断上述第一节点是否为上述指定节点,若上述第一节点不为上述指定节点,则计算各个待查找节点与上述指定节点之间的逻辑距离,其中,上述待查找节点为上述第一节点的本地节点列表中所存储的节点标识所对应的节点,上述本地节点列表存储有上述区块链网络中除上述第一节点之外的至少一个节点的节点标识,最后将上述请求信息发送至第二节点,其中,上述第二节点为与上述指定节点之间的逻辑距离最近的待查找节点。本申请方案通过区块链网络中的节点之间的逻辑距离来进行路由,使得区块链网络中的节点间实现点对点的数据传播,由于点对点的数据传播方式可以减少区块链网络中传播的数据量,因此降低了区块链网络中发生洪泛问题的可能性。可以理解的是,上述第二方面至第四方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的路由方法的流程示意图;
图2是本申请实施例提供的路由装置的结构框图;
图3是本申请实施例提供的节点设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
图1示出了本申请实施例提供的一种路由方法的流程图,该路由方法应用于区块链网络中的第一节点,详述如下:
步骤101,接收包含指定节点的节点标识的请求信息。
在本申请实施例中,当用户需要向区块链网络中的任意一个节点发送指定消息时,用户可以通过用户终端指定该节点作为指定节点,触发用户终端生成请求信息。其中,请求信息包括指定节点的节点标识和需要发送的指定消息。应理解,指定节点的节点标识用于唯一标识指定节点,区块链网络中的每一节点均对应有各自的节点标识。生成请求信息后,用户终端会随机将请求信息发送至区块链网络中的一个节点。当区块链网络中的任一节点接收到请求信息时,则将该接收到请求信息的节点称为第一节点。例如,区块链网络中包括三个节点,分别为节点1、节点2和节点3;当用户需要向节点3发送指定消息时,可以通过用户终端将节点3作为指定节点,触发用户终端生成请求信息;用户终端会随机将请求信息发送至区块链网络中的一个节点,比如节点1;节点1最先接收到请求信息,此时节点1作为第一节点。
步骤102,根据指定节点的节点标识判断第一节点是否为指定节点。
在本申请实施例中,区块链网络中的节点均在本地存储有各自的节点标识。第一节点在接收到请求信息后,可以解析该请求信息得到指定节点的节点标识。第一节点将第一节点的节点标识和指定节点的节点标识进行比较,可以判断第一节点是否就是指定节点。示例地,如果第一节点的节点标识和指定节点的节点标识相同,则判定第一节点为指定节点;如果第一节点的节点标识和指定节点的节点标识不同,则判定第一节点不为指定节点。
步骤103,若第一节点不为指定节点,则计算各个待查找节点与指定节点之间的逻辑距离。
在本申请实施例中,如果第一节点不为指定节点,则第一节点可以将请求信息转发至区块链网络中的其它节点。为了确定下一个接收请求信息的节点,第一节点可以计算各个待查找节点与指定节点之间的逻辑距离。其中,区块链网络中的每个节点均存储有各自的节点列表,本申请实施例中将第一节点的节点列表记作本地节点列表,本地节点列表中存储有区块链网络中除第一节点之外的至少一个节点的节点标识,待查找节点是第一节点的本地节点列表中所存储的节点标识所对应的节点。其中,本地节点列表中存储的节点标识的数量可以由用户根据需求设定,此处不作限定。需要说明的是,逻辑距离不是待查找节点与指定节点之间的物理距离,而是通过预设的距离计算函数计算出来的一个数值。
示例性地,距离计算函数可以是异或运算函数,基于此,逻辑距离的计算方式如下:对各个待查找节点的节点标识和指定节点的节点标识进行异或运算,将得到的每个待查找节点对应的运算结果作为该待查找节点与指定节点之间的逻辑距离。假设节点标识均为二进制数,某个待查找节点A的节点标识为二进制数100,指定节点的节点标识为二进制数000,那么,待查找节点A与指定节点之间的逻辑距离为100XOR 000=011,将二进制数011转换为十进制后表示为3,也即待查找节点A与指定节点之间的逻辑距离为3。通过异或运算函数计算逻辑距离,可以保证请求信息在区块链网络中传播过程中不会出现回环现象,其中,回环现象即请求信息在区块链网络中的固定几个节点之间循环传播,例如,节点A将请求信息发送至节点B,节点B将请求信息发送至节点C,节点C将请求信息发送至节点A,如此循环往复。
步骤104,将请求信息发送至第二节点。
在本申请实施例中,计算得到各个待查找节点与指定节点之间的逻辑距离后,第一节点可以在各个待查找节点对应的逻辑距离之间进行比较,根据比较结果从所有待查找节点中确定一个第二节点。具体地,可以将与指定节点之间的逻辑距离最近的待查找节点确定为第二节点。在确定出第二节点后,第一节点即可将请求信息发送至第二节点。需要说明的是,第二节点接收到第一节点发送的请求信息后,第二节点即成为了新的第一节点,然后开始执行本申请实施例中提供的路由方法的步骤。
可选地,在上述步骤101之前,上述路由方法还包括:
A1、当第一节点接入区块链网络时,随机与区块链网络中的至少一个节点连接;
A2、获取与第一节点连接的节点的节点列表;
A3、根据节点列表得到本地节点列表。
在本申请实施例中,为了得到本地节点列表,当第一节点接入区块链网络中时,第一节点可以随机与区块链网络中的至少一个节点连接,然后向所连接的各个节点发送列表获取请求。所连接的各个节点会响应于列表获取请求,向第一节点发送存储的节点列表。第一节点可以根据所连接的节点的节点列表,得到第一节点自己的节点列表,即本地节点列表。其中,本地节点列表中存储的是与第一节点之间的逻辑距离最近的若干个节点的节点标识。
可选地,上述步骤A3具体包括:
计算节点列表中的节点标识对应的节点与第一节点之间的逻辑距离;
基于逻辑距离由小到大的顺序,从节点列表中选取预设数量个节点标识初始化待调整节点列表;
每间隔预设时长,根据第三节点的节点列表更新待调整节点列表,直至满足预设的更新条件;
将完成周期性更新的待调整节点列表确定为本地节点列表。
在本申请实施例中,存在至少一个节点列表,每个节点列表中存储有至少一个节点标识。对于节点列表中的每一个节点标识,可以计算该节点标识对应的节点与第一节点之间的逻辑距离。对于节点列表中的所有节点标识,可以按照逻辑距离由小到大的顺序进行排序,然后选取排在前面的预设数量个节点标识,以初始化一个待调整节点列表,该待调整节点列表包括选取的预设数量个节点标识,预设数量的大小可以由用户根据需求设定,此处不作限定。
举例来说,假设与第一节点连接的节点有两个,因此获取到三个节点的节点列表,分别为节点列表1和节点列表2;节点列表1中存储有节点标识a和节点标识b,节点列表2中存储有节点标识c和节点标识d,预设数量为2;计算得到节点标识a与第一节点之间的逻辑距离为10,节点标识b与第一节点之间的逻辑距离为11,节点标识c与第一节点之间的逻辑距离为12,节点标识d与第一节点之间的逻辑距离为13;按照逻辑距离由小到大的顺序进行排序后,选取2个排在前面的节点标识,即节点标识d和节点标识c。接下来,可以初始化一个待调整节点列表,该待调整节点列表存储有节点标识d和节点标识c。
需要说明的是,当前阶段得到的待调整节点列表中存储的节点标识对应的节点并不一定就是区块链网络中与第一节点之间的逻辑距离最近的节点,因此,还需要对待调整节点列表进行更新,才能得到本地节点列表。应理解,待调整节点列表与本地节点列表本质上指的是同一个节点列表,本申请实施例中将完成周期性更新之后的待调整节点列表称为本地节点列表。
具体地,在初始化得到待调整节点列表后,第一节点可以每间隔预设时长对待调整节点列表进行一次更新,直到满足预设的更新条件。更新的方式可以是在待调整节点列表中随机选定任一节点标识,将该节点标识对应的节点确定为第三节点,然后获取第三节点的节点列表,根据第三节点的节点列表更新待调整节点列表。
其中,预设的更新条件可以是待调整节点列表处于稳定状态,比如,在完成某一次对待调整节点列表的更新后,检测到待调整节点列表中存储的节点标识相对于本次更新之前未发生变化,则确定待调整节点列表进入稳定状态,也即满足预设的更新条件。最后,在完成周期性更新之后,即可将待调整节点列表确定为本地节点列表。
在一种可行的实施方式中,在满足预设的更新条件后,比如在待调整节点列表进入稳定状态,得到本地节点列表后,也可以继续通过上述方式对本地节点列表进行更新,有所不同的是,预设时长相比之前要大得多。例如,第一节点列表每间隔1分钟对待调整节点列表进行一次更新,在待调整节点列表进入稳定状态,得到本地节点列表后,可以每间隔10分钟对本地节点列表进行一次该更新。如此,可以减少获取第三节点的视图的次数,从而减少网络资源的占用。
可选地,上述根据第三节点的节点列表更新待调整节点列表,具体包括:
遍历第三节点的节点列表中的每个节点标识;
计算当前遍历到的节点标识对应的节点与第一节点之间的逻辑距离,记作第一逻辑距离;
将第一逻辑距离与第二逻辑距离进行比较;
若第一逻辑距离小于第二逻辑距离,则将待调整节点列表中的待替换节点标识更新为当前遍历到的节点标识。
在本申请实施例中,第一节点可以遍历第三节点的节点列表中的每个节点标识,然后,计算当前遍历到的节点标识对应的节点与第一节点之间的逻辑距离,该逻辑距离记作第一逻辑距离。接下来,可以在待调整节点列表中查找待替换节点标识,该待替换节点标识为待调整节点列表中,对应的节点与第一节点之间的逻辑距离最远的节点标识。例如,待调整节点列表中存储有3个节点标识,分别为节点标识a、节点标识b和节点标识c,节点标识a对应的节点与第一节点之间的逻辑距离为10,节点标识b对应的节点与第一节点之间的逻辑距离为11,节点标识c对应的节点与第一节点之间的逻辑距离为12;在此种情况下,由于节点标识c对应的节点与第一节点之间的逻辑距离最远,因此可以将节点标识c作为待替换节点标识。其中,待替换节点标识对应的节点与第一节点之间的逻辑距离可以记作第二逻辑距离。
第一节点可以将第一逻辑距离和第二逻辑距离进行比较。如果第一逻辑距离小于第二逻辑距离,则将待调整节点列表中的待替换节点标识更新为当前遍历到的节点标识。如果第一逻辑距离不小于第二逻辑距离,则不对待替换节点标识进行更新。在遍历完第三节点的节点列表中的所有节点标识后,即完成了一次对待调整节点列表的更新。
可选地,上述请求信息还包括发起节点的节点标识,其中,发起节点即为区块链网络中,从用户终端处接收到请求信息的节点。基于此,上述路由方法还包括:
若第一节点为指定节点,则生成请求信息的响应信息;
基于发起节点的节点标识将响应信息返回至发起节点,由发起节点将响应信息发送至用户终端。
在本申请实施例中,如果第一节点为指定节点,则第一节点可以生成请求信息的响应信息,然后基于发起节点的节点标识将响应信息返回至发起节点,发起节点可以将响应信息发送至用户终端。其中,响应信息的传播过程与请求信息的传播过程相同,具体可参照步骤101-104;也即,将步骤101-104中的处理对象“请求信息”更改为“响应信息”,该响应信息中包含发起节点的节点标识,且以该发起节点作为指定节点。
可选地,在上述步骤101之前,上述路由方法还包括:
当第一节点接入区块链网络时,通过椭圆曲线算法生成公钥;
将公钥作为第一节点的节点标识。
在本申请实施例中,当第一节点接入区块链网络中时,需要为第一节点分配一个节点标识。具体地,第一节点可以通过椭圆曲线算法生成密钥对,该密钥对包括公钥和私钥,第一节点可以将其中的公钥作为第一节点的节点标识。以此方式生成的节点标识在区块链网络中重复的概率极小,可以有效保证区块链网络中各节点的节点标识的唯一性。
在一种可行的实施方式中,也可以将任意实数作为第一节点的节点标识,需要满足的要求是,区块链网络中不同节点的节点标识应该不同。基于此,上述计算各个待查找节点与指定节点之间的逻辑距离的方式如下:设定一个整数N,对于任一待查找节点,将该待查找节点的节点标识与N求差后取绝对值,得到该待查找节点与指定节点之间的逻辑距离。
由上可见,本申请方案中,首先接收包含指定节点的节点标识的请求信息,根据上述指定节点的节点标识判断上述第一节点是否为上述指定节点,若上述第一节点不为上述指定节点,则计算各个待查找节点与上述指定节点之间的逻辑距离,其中,上述待查找节点为上述第一节点的本地节点列表中所存储的节点标识所对应的节点,上述本地节点列表存储有上述区块链网络中除上述第一节点之外的至少一个节点的节点标识,最后将上述请求信息发送至第二节点,其中,上述第二节点为与上述指定节点之间的逻辑距离最近的待查找节点。本申请方案通过区块链网络中的节点之间的逻辑距离来进行路由,使得区块链网络中的节点间实现点对点的数据传播,由于点对点的数据传播方式可以减少区块链网络中传播的数据量,因此降低了区块链网络中发生洪泛问题的可能性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图2示出了本申请实施例提供的一种路由装置的结构框图,该路由装置应用于区块链网络中的第一节点,为了便于说明,仅示出了与本申请实施例相关的部分。
该路由装置200包括:
接收单元201,用于接收包含指定节点的节点标识的请求信息;
判断单元202,用于根据上述指定节点的节点标识判断上述第一节点是否为上述指定节点;
计算单元203,用于若上述第一节点不为上述指定节点,则计算各个待查找节点与上述指定节点之间的逻辑距离,其中,上述待查找节点为上述第一节点的本地节点列表中所存储的节点标识所对应的节点,上述本地节点列表存储有上述区块链网络中除上述第一节点之外的至少一个节点的节点标识;
发送单元204,用于将上述请求信息发送至第二节点,其中,上述第二节点为与上述指定节点之间的逻辑距离最近的待查找节点。
可选地,在上述接收包含指定节点的节点标识的请求信息之前,上述路由装置200还包括:
连接单元,用于当上述第一节点接入上述区块链网络时,随机与上述区块链网络中的至少一个节点连接;
获取单元,用于获取与上述第一节点连接的节点的节点列表;
获得单元,用于根据上述节点列表得到上述本地节点列表。
可选地,上述获得单元包括:
计算子单元,用于计算上述节点列表中的节点标识对应的节点与上述第一节点之间的逻辑距离;
选取子单元,用于基于逻辑距离由小到大的顺序,从上述节点列表中选取预设数量个节点标识初始化待调整节点列表;
更新子单元,用于每间隔预设时长,根据第三节点的节点列表更新上述待调整节点列表,直至满足预设的更新条件,其中,上述第三节点为每次更新上述待调整节点列表时,在上述待调整节点列表中随机选定的任一节点标识所对应的节点;
确定子单元,用于将完成周期性更新的上述待调整节点列表确定为上述本地节点列表。
可选地,上述更新子单元包括:
标识遍历子单元,用于遍历上述第三节点的节点列表中的每个节点标识;
距离计算子单元,用于计算当前遍历到的节点标识对应的节点与上述第一节点之间的逻辑距离,记作第一逻辑距离;
比较子单元,用于将上述第一逻辑距离与第二逻辑距离进行比较,其中,上述第二逻辑距离为待替换节点标识对应的节点与上述第一节点之间的逻辑距离,上述待替换节点标识为上述待调整节点列表中,对应的节点与上述第一节点之间的逻辑距离最远的节点标识;
标识更新子单元,用于若上述第一逻辑距离小于上述第二逻辑距离,则将上述待调整节点列表中的上述待替换节点标识更新为当前遍历到的节点标识。
可选地,上述计算单元203,具体用于对各个待查找节点的节点标识和上述指定节点的节点标识进行异或运算,得到各个待查找节点与上述指定节点之间的逻辑距离。
可选地,上述请求信息还包含发起节点的节点标识,上述发起节点为从用户终端处接收到上述请求信息的节点,上述路由装置200还包括:
响应生成单元,用于若上述第一节点为上述指定节点,则生成上述请求信息的响应信息;
信息返回单元,用于基于上述发起节点的节点标识将上述响应信息返回至上述发起节点,由上述发起节点将上述响应信息发送至上述用户终端。
可选地,在上述接收包含指定节点的节点标识的请求信息之前,上述路由装置200还包括:
公钥生成单元,用于当上述第一节点接入上述区块链网络时,通过椭圆曲线算法生成公钥;
标识获得单元,用于将上述公钥作为上述第一节点的节点标识。
由上可见,本申请方案中,首先接收包含指定节点的节点标识的请求信息,根据上述指定节点的节点标识判断上述第一节点是否为上述指定节点,若上述第一节点不为上述指定节点,则计算各个待查找节点与上述指定节点之间的逻辑距离,其中,上述待查找节点为上述第一节点的本地节点列表中所存储的节点标识所对应的节点,上述本地节点列表存储有上述区块链网络中除上述第一节点之外的至少一个节点的节点标识,最后将上述请求信息发送至第二节点,其中,上述第二节点为与上述指定节点之间的逻辑距离最近的待查找节点。本申请方案通过区块链网络中的节点之间的逻辑距离来进行路由,使得区块链网络中的节点间实现点对点的数据传播,由于点对点的数据传播方式可以减少区块链网络中传播的数据量,因此降低了区块链网络中发生洪泛问题的可能性。
图3为本申请一实施例提供的节点设备的结构示意图,其中,该节点设备可以是服务器、台式电脑或平板电脑,此处不作限定。如图3所示,该实施例的节点设备3包括:至少一个处理器30(图3中仅示出一个)、存储器31以及存储在上述存储器31中并可在上述至少一个处理器30上运行的计算机程序32,上述处理器30执行上述计算机程序32时实现以下步骤:
接收包含指定节点的节点标识的请求信息;
根据上述指定节点的节点标识判断上述第一节点是否为上述指定节点;
若上述第一节点不为上述指定节点,则计算各个待查找节点与上述指定节点之间的逻辑距离,其中,上述待查找节点为上述第一节点的本地节点列表中所存储的节点标识所对应的节点,上述本地节点列表存储有上述区块链网络中除上述第一节点之外的至少一个节点的节点标识;
将上述请求信息发送至第二节点,其中,上述第二节点为与上述指定节点之间的逻辑距离最近的待查找节点。
假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,在上述接收包含指定节点的节点标识的请求信息之前,上述处理器30执行上述计算机程序32时还实现以下步骤:
当上述第一节点接入上述区块链网络时,随机与上述区块链网络中的至少一个节点连接;
获取与上述第一节点连接的节点的节点列表;
根据上述节点列表得到上述本地节点列表。
在上述第二种可能的实施方式作为基础而提供的第三种可能的实施方式中,上述根据上述节点列表得到上述本地节点列表,包括:
计算上述节点列表中的节点标识对应的节点与上述第一节点之间的逻辑距离;
基于逻辑距离由小到大的顺序,从上述节点列表中选取预设数量个节点标识初始化待调整节点列表;
每间隔预设时长,根据第三节点的节点列表更新上述待调整节点列表,直至满足预设的更新条件,其中,上述第三节点为每次更新上述待调整节点列表时,在上述待调整节点列表中随机选定的任一节点标识所对应的节点;
将完成周期性更新的上述待调整节点列表确定为上述本地节点列表。
在上述第三种可能的实施方式作为基础而提供的第四种可能的实施方式中,上述根据第三节点的节点列表更新上述待调整节点列表,包括:
遍历上述第三节点的节点列表中的每个节点标识;
计算当前遍历到的节点标识对应的节点与上述第一节点之间的逻辑距离,记作第一逻辑距离;
将上述第一逻辑距离与第二逻辑距离进行比较,其中,上述第二逻辑距离为待替换节点标识对应的节点与上述第一节点之间的逻辑距离,上述待替换节点标识为上述待调整节点列表中,对应的节点与上述第一节点之间的逻辑距离最远的节点标识;
若上述第一逻辑距离小于上述第二逻辑距离,则将上述待调整节点列表中的上述待替换节点标识更新为当前遍历到的节点标识。
在上述第一种可能的实施方式作为基础而提供的第五种可能的实施方式中,上述计算各个待查找节点与上述指定节点之间的逻辑距离,包括:
对各个待查找节点的节点标识和上述指定节点的节点标识进行异或运算,得到各个待查找节点与上述指定节点之间的逻辑距离。
在上述第一种可能的实施方式作为基础,或上述第二种可能的实施方式作为基础,或上述第三种可能的实施方式作为基础,或上述第四种可能的实施方式作为基础,或上述第五种可能的实施方式作为基础而提供的第六种可能的实施方式中,上述请求信息还包含发起节点的节点标识,上述发起节点为从用户终端处接收到上述请求信息的节点,上述路由方法还包括:
若上述第一节点为上述指定节点,则生成上述请求信息的响应信息;
基于上述发起节点的节点标识将上述响应信息返回至上述发起节点,由上述发起节点将上述响应信息发送至上述用户终端。
在上述第一种可能的实施方式作为基础,或上述第二种可能的实施方式作为基础,或上述第三种可能的实施方式作为基础,或上述第四种可能的实施方式作为基础,或上述第五种可能的实施方式作为基础而提供的第七种可能的实施方式中,在上述接收包含指定节点的节点标识的请求信息之前,上述处理器30执行上述计算机程序32时还实现以下步骤:
当上述第一节点接入上述区块链网络时,通过椭圆曲线算法生成公钥;
将上述公钥作为上述第一节点的节点标识。
上述节点设备3可包括,但不仅限于,处理器30、存储器31。本领域技术人员可以理解,图3仅仅是节点设备3的举例,并不构成对节点设备3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器30可以是中央处理单元(Central Processing Unit,CPU),该处理器30还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述存储器31在一些实施例中可以是上述节点设备3的内部存储单元,例如节点设备3的硬盘或内存。上述存储器31在另一些实施例中也可以是上述节点设备3的外部存储设备,例如上述节点设备3上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述存储器31还可以既包括上述节点设备3的内部存储单元也包括外部存储设备。上述存储器31用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如上述计算机程序的程序代码等。上述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。
由上可见,本申请方案中,首先接收包含指定节点的节点标识的请求信息,根据上述指定节点的节点标识判断上述第一节点是否为上述指定节点,若上述第一节点不为上述指定节点,则计算各个待查找节点与上述指定节点之间的逻辑距离,其中,上述待查找节点为上述第一节点的本地节点列表中所存储的节点标识所对应的节点,上述本地节点列表存储有上述区块链网络中除上述第一节点之外的至少一个节点的节点标识,最后将上述请求信息发送至第二节点,其中,上述第二节点为与上述指定节点之间的逻辑距离最近的待查找节点。本申请方案通过区块链网络中的节点之间的逻辑距离来进行路由,使得区块链网络中的节点间实现点对点的数据传播,由于点对点的数据传播方式可以减少区块链网络中传播的数据量,因此降低了区块链网络中发生洪泛问题的可能性。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质至少可以包括:能够将计算机程序代码携带到节点设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (9)
1.一种路由方法,其特征在于,应用于区块链网络中的第一节点,所述第一节点为所述区块链网络中的任一节点,所述路由方法包括:
接收包含指定节点的节点标识的请求信息;
根据所述指定节点的节点标识判断所述第一节点是否为所述指定节点;
若所述第一节点不为所述指定节点,则计算各个待查找节点与所述指定节点之间的逻辑距离,其中,所述待查找节点为所述第一节点的本地节点列表中所存储的节点标识所对应的节点,所述本地节点列表存储有所述区块链网络中除所述第一节点之外的至少一个节点的节点标识;
将所述请求信息发送至第二节点,其中,所述第二节点为与所述指定节点之间的逻辑距离最近的待查找节点;
在所述接收包含指定节点的节点标识的请求信息之前,所述路由方法还包括:
当所述第一节点接入所述区块链网络时,随机与所述区块链网络中的至少一个节点连接;
获取与所述第一节点连接的节点的节点列表;
根据所述节点列表得到所述本地节点列表。
2.根据权利要求1所述的路由方法,其特征在于,所述根据所述节点列表得到所述本地节点列表,包括:
计算所述节点列表中的节点标识对应的节点与所述第一节点之间的逻辑距离;
基于逻辑距离由小到大的顺序,从所述节点列表中选取预设数量个节点标识初始化待调整节点列表;
每间隔预设时长,根据第三节点的节点列表更新所述待调整节点列表,直至满足预设的更新条件,其中,所述第三节点为每次更新所述待调整节点列表时,在所述待调整节点列表中随机选定的任一节点标识所对应的节点;
将完成周期性更新的所述待调整节点列表确定为所述本地节点列表。
3.根据权利要求2所述的路由方法,其特征在于,所述根据第三节点的节点列表更新所述待调整节点列表,包括:
遍历所述第三节点的节点列表中的每个节点标识;
计算当前遍历到的节点标识对应的节点与所述第一节点之间的逻辑距离,记作第一逻辑距离;
将所述第一逻辑距离与第二逻辑距离进行比较,其中,所述第二逻辑距离为待替换节点标识对应的节点与所述第一节点之间的逻辑距离,所述待替换节点标识为所述待调整节点列表中,对应的节点与所述第一节点之间的逻辑距离最远的节点标识;
若所述第一逻辑距离小于所述第二逻辑距离,则将所述待调整节点列表中的所述待替换节点标识更新为当前遍历到的节点标识。
4.根据权利要求1所述的路由方法,其特征在于,所述计算各个待查找节点与所述指定节点之间的逻辑距离,包括:
对各个待查找节点的节点标识和所述指定节点的节点标识进行异或运算,得到各个待查找节点与所述指定节点之间的逻辑距离。
5.根据权利要求1至4任一项所述的路由方法,其特征在于,所述请求信息还包含发起节点的节点标识,所述发起节点为从用户终端处接收到所述请求信息的节点,所述路由方法还包括:
若所述第一节点为所述指定节点,则生成所述请求信息的响应信息;
基于所述发起节点的节点标识将所述响应信息返回至所述发起节点,由所述发起节点将所述响应信息发送至所述用户终端。
6.根据权利要求1至4任一项所述的路由方法,其特征在于,在所述接收包含指定节点的节点标识的请求信息之前,所述路由方法还包括:
当所述第一节点接入所述区块链网络时,通过椭圆曲线算法生成公钥;
将所述公钥作为所述第一节点的节点标识。
7.一种路由装置,其特征在于,应用于区块链网络中的第一节点,所述第一节点为所述区块链网络中的任一节点,所述路由装置包括:
接收单元,用于接收包含指定节点的节点标识的请求信息;
判断单元,用于根据所述指定节点的节点标识判断所述第一节点是否为所述指定节点;
计算单元,用于若所述第一节点不为所述指定节点,则计算各个待查找节点与所述指定节点之间的逻辑距离,其中,所述待查找节点为所述第一节点的本地节点列表中所存储的节点标识所对应的节点,所述本地节点列表存储有所述区块链网络中除所述第一节点之外的至少一个节点的节点标识;
发送单元,用于将所述请求信息发送至第二节点,其中,所述第二节点为与所述指定节点之间的逻辑距离最近的待查找节点;
连接单元,用于当所述第一节点接入所述区块链网络时,随机与所述区块链网络中的至少一个节点连接;
获取单元,用于获取与所述第一节点连接的节点的节点列表;
获得单元,用于根据所述节点列表得到所述本地节点列表。
8.一种节点设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的方法。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011576545.9A CN112688870B (zh) | 2020-12-28 | 2020-12-28 | 一种路由方法、路由装置及节点设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011576545.9A CN112688870B (zh) | 2020-12-28 | 2020-12-28 | 一种路由方法、路由装置及节点设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112688870A CN112688870A (zh) | 2021-04-20 |
CN112688870B true CN112688870B (zh) | 2022-11-04 |
Family
ID=75452309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011576545.9A Active CN112688870B (zh) | 2020-12-28 | 2020-12-28 | 一种路由方法、路由装置及节点设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112688870B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115550251B (zh) * | 2022-12-01 | 2023-03-10 | 杭州蚂蚁酷爱科技有限公司 | 区块链网络、节点集合的维护方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046521A (zh) * | 2019-04-24 | 2019-07-23 | 成都派沃特科技股份有限公司 | 去中心化隐私保护方法 |
WO2020011154A1 (zh) * | 2018-07-09 | 2020-01-16 | 云图有限公司 | 区块链透明分片方法、装置及系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100502339C (zh) * | 2007-08-31 | 2009-06-17 | 华为技术有限公司 | 对等网络自治的方法、节点装置和系统 |
CN101409665B (zh) * | 2007-10-08 | 2011-09-21 | 华为技术有限公司 | 对p2p网络节点进行路由处理的方法和装置 |
CN102055655A (zh) * | 2009-11-06 | 2011-05-11 | 中兴通讯股份有限公司 | 一种结构化对等网络中消息的广播系统及方法 |
JP5336403B2 (ja) * | 2010-02-24 | 2013-11-06 | 富士通株式会社 | ノード装置およびコンピュータプログラム |
US9055082B2 (en) * | 2010-08-25 | 2015-06-09 | Alcatel Lucent | Peer to peer localization for content in a distributed hash table |
US20120185595A1 (en) * | 2011-01-17 | 2012-07-19 | Alcatel-Lucent Usa Inc. | Traffic Localization Mechanism For Distributed Hash Table Based Peer-To-Peer Networks |
CN108848184B (zh) * | 2018-06-29 | 2020-08-28 | 北京金山安全软件有限公司 | 一种基于信任机制的区块链节点同步方法及装置 |
CN109218037B (zh) * | 2018-07-10 | 2021-01-22 | 矩阵元技术(深圳)有限公司 | P2p网络中的消息广播方法及装置 |
CN112039775B (zh) * | 2020-07-29 | 2022-09-06 | 北京智融云河科技有限公司 | 一种实现kad网络节点快速路由的方法和系统 |
CN112054953B (zh) * | 2020-09-15 | 2022-11-11 | 深圳市健成云视科技有限公司 | 多媒体即时通信方法、系统及终端设备、计算机存储介质 |
-
2020
- 2020-12-28 CN CN202011576545.9A patent/CN112688870B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020011154A1 (zh) * | 2018-07-09 | 2020-01-16 | 云图有限公司 | 区块链透明分片方法、装置及系统 |
CN110046521A (zh) * | 2019-04-24 | 2019-07-23 | 成都派沃特科技股份有限公司 | 去中心化隐私保护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112688870A (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111143371B (zh) | 数据查询方法、装置、设备、系统及介质 | |
CN109417691B (zh) | 一种蓝牙集群在线升级方法及装置 | |
CN110875850B (zh) | 一种固件升级方法、系统、可读存储介质及终端设备 | |
CN111683118B (zh) | 基于区块链的共识方法、装置、主节点设备及从节点设备 | |
CN110830581A (zh) | 提升区块链响应速度的方法、区块链应用系统及相关设备 | |
CN113438172B (zh) | 基于多级节点网络的数据传输方法和装置 | |
CN112069169A (zh) | 区块数据存储方法、装置、电子设备及可读存储介质 | |
CN112688870B (zh) | 一种路由方法、路由装置及节点设备 | |
CN110490734B (zh) | 交易组构建、广播方法和系统、设备及存储介质 | |
CN114125812A (zh) | 一种数据同步方法、装置、服务器及存储介质 | |
CN114239064A (zh) | 隐私计算方法、装置、电子设备及计算机可读存储介质 | |
CN112017050A (zh) | 基于区块链的支持高并发场景的账户智能合约方法和系统 | |
CN109993526B (zh) | 区块链校验方法、处理节点及存储介质 | |
CN114584533A (zh) | 一种地址冲突检测方法、地址冲突检测装置及电子设备 | |
CN112131263B (zh) | 软件包获取方法、系统、装置、电子设备和存储介质 | |
CN110838924B (zh) | 区块传输方法及装置 | |
KR101674294B1 (ko) | 임의 접근 및 상태 접근이 가능한 자료구조 운용장치 및 그 운용 방법 | |
CN115297126B (zh) | 基于区块链的信息传输方法、装置、终端及存储介质 | |
CN111125187A (zh) | 基于区块链的数据管理方法及装置 | |
CN113157610B (zh) | 数据保存方法及装置、存储介质、电子装置 | |
CN111585940A (zh) | 一种资源管理方法及其相关设备 | |
CN115348260B (zh) | 基于校园信息安全的信息处理方法、装置、设备和介质 | |
CN110889040B (zh) | 用于推送信息的方法和装置 | |
CN112637267B (zh) | 业务处理方法、装置、电子设备及可读存储介质 | |
CN113905019B (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 |