基于区块链的数据处理方法、装置、电子设备及存储介质与流程

文档序号:31676588发布日期:2022-09-28 02:19阅读:69来源:国知局
基于区块链的数据处理方法、装置、电子设备及存储介质与流程

1.本公开涉及区块链技术领域,具体而言,涉及一种基于区块链的数据处理方法、装置、电子设备及存储介质。


背景技术:

2.在区块链技术领域中,每一个交易数据都需要经过共识后才能落盘于区块链。相关技术中的共识算法(分为拜占庭类和非拜占庭类),将区块链网络中的所有区块链节点参与共识,在区块链网络中具有大量区块链节点的情况下(例如将上述共识算法应用于公链时),若每一个区块链节点都参与交易数据的共识处理,一方面,相关技术中的共识算法会因为参与共识的区块链节点过多,而导致共识比较慢,使得每一个交易数据完成共识后落盘于区块链所需的时间较长,甚至可能因为共识太慢或者超时等原因,导致共识失败;另一方面,单纯网络通信部分就会成为阻碍共识的主要因素。


技术实现要素:

3.本公开实施例提供一种基于区块链的数据处理方法、装置、电子设备及存储介质,进而至少在一定程度上解决相关技术中存在的共识效率低下的问题。
4.本公开实施例提出一种基于区块链的数据处理方法,区块链网络包括第一网络区域,所述第一网络区域包括第一区块链节点;其中,所述方法由所述第一区块链节点执行,所述方法包括:确定所述第一区块链节点归属所述区块链网络中的第一网络区域;根据所述第一网络区域中的区块链节点的当前信誉值,确定所述第一区块链节点为所述第一网络区域在当前任期内的第一共识节点;在所述当前任期内,执行所述区块链网络对应的区块链中的所述当前任期内的区块的共识;更新所述第一网络区域中的区块链节点的当前信誉值,确定所述第一网络区域中的区块链节点的下一信誉值;根据所述第一网络区域中的区块链节点的下一信誉值,确定所述第一网络区域在下一任期内的第一共识节点;其中,所述下一任期内的第一共识节点用于在所述下一任期内,执行所述区块链网络对应的区块链中的所述下一任期内的区块的共识。
5.本公开实施例提出一种基于区块链的数据处理装置,区块链网络包括第一网络区域,所述第一网络区域包括第一区块链节点;其中,所述装置由所述第一区块链节点执行,所述装置包括:确定模块,用于确定所述第一区块链节点归属所述区块链网络中的第一网络区域;所述确定模块,还用于根据所述第一网络区域中的区块链节点的当前信誉值,确定所述第一区块链节点为所述第一网络区域在当前任期内的第一共识节点;处理模块,用于在所述当前任期内,执行所述区块链网络对应的区块链中的所述当前任期内的区块的共识;所述确定模块,还用于更新所述第一网络区域中的区块链节点的当前信誉值,确定所述第一网络区域中的区块链节点的下一信誉值;所述确定模块,还用于根据所述第一网络区域中的区块链节点的下一信誉值,确定所述第一网络区域在下一任期内的第一共识节点;其中,所述下一任期内的第一共识节点用于在所述下一任期内,执行所述区块链网络对应
的区块链中的所述下一任期内的区块的共识。
6.在本公开的一些示例性实施例中,所述区块链网络还包括第二网络区域;所述确定模块,用于获得所述第一网络区域的第一探测节点信息和所述第二网络区域的第二探测节点信息;获得所述第一区块链节点与所述第一探测节点信息对应的第一探测节点之间的第一网络延迟,以及所述第一区块链节点与所述第二探测节点信息对应的第二探测节点之间的第二网络延迟;根据所述第一网络延迟和所述第二网络延迟,确定所述第一区块链节点归属所述第一网络区域;将所述第一区块链节点的第一网络地址分配至所述第一网络区域的第一区域标识。
7.在本公开的一些示例性实施例中,所述装置还包括:获取模块,用于获得所述区块链网络中的当前已创建网络区域数和当前区块链节点数;所述确定模块,还用于根据所述当前已创建网络区域数和所述当前区块链节点数确定创建所述第一网络区域;根据当前已创建网络区域信息确定所述第一网络区域的所述第一探测节点。
8.在本公开的一些示例性实施例中,所述确定模块,用于若所述当前已创建网络区域数为n,所述当前区块链节点数为mn,则确定创建所述第一网络区域;其中,n为大于或等于1的正整数,m为大于或等于2的正整数。
9.在本公开的一些示例性实施例中,所述当前已创建网络区域信息包括各个当前已创建网络区域中网络延迟最高的区块链节点信息;其中,所述确定模块,用于根据各个当前已创建网络区域中网络延迟最高的区块链节点信息,确定所述第一网络区域的所述第一探测节点。
10.在本公开的一些示例性实施例中,所述确定模块,用于获得所述区块链网络的配置文件;根据所述配置文件生成所述第一网络区域的第一区域标识,并确定所述第一区块链节点归属所述第一网络区域;将所述第一区块链节点的第一网络地址分配至所述第一区域标识。
11.在本公开的一些示例性实施例中,所述确定模块,还用于若所述第一区块链节点为所述第一网络区域中的第一个区块链节点,则将所述第一区块链节点作为所述第一网络区域的第一探测节点。
12.在本公开的一些示例性实施例中,所述确定模块,用于排除所述第一网络区域中当前信誉值低于信誉值阈值的区块链节点;按照当前信誉值与对应的所述第一网络区域中的区块链节点当选为所述当前任期内的第一共识节点的概率正相关,确定所述第一区块链节点为所述当前任期内的第一共识节点。
13.在本公开的一些示例性实施例中,所述区块链网络还包括第二网络区域;其中,所述处理模块,用于确定所述第一区块链节点为所述当前任期内的主节点;接收客户端发送的交易,并将接收到的交易存入所述第一区块链节点的第一交易池;从所述第一交易池中提取目标交易,将所述目标交易打包成区块;向所述第二网络区域在所述当前任期内的第二共识节点发送所述区块的提案消息,以完成所述区块的共识;所述装置还包括,同步模块,用于在所述当前任期期满时,将所述第一交易池中的交易同步至所述下一任期内的主节点。
14.在本公开的一些示例性实施例中,所述区块链网络还包括第二网络区域;其中,所述处理模块,用于向所述第二网络区域在所述当前任期内的第二共识节点发送网络连接消
息,所述网络连接消息用于指示所述第二共识节点与所述第一区块链节点建立点对点网络连接;当所述区块链网络在所述当前任期内的预定比例的共识节点完成点对点网络连接时,执行所述区块链网络对应的区块链中的所述当前任期内的区块的共识。
15.在本公开的一些示例性实施例中,所述同步模块,还用于在将所述当前任期内的当前区块上链至所述第一区块链节点时,将所述当前区块同步至所述第一网络区域中的除所述第一区块链节点以外的剩余区块链节点。
16.在本公开的一些示例性实施例中,所述第二同步模块,还用于接收所述第一网络区域中的非共识节点的同步请求;根据所述同步请求,在将所述当前任期内的当前区块上链至所述第一区块链节点时,将所述当前区块同步至所述第一网络区域中的除所述第一区块链节点以外的剩余区块链节点。
17.在本公开的一些示例性实施例中,所述第二同步模块,用于在将所述当前区块上链至所述第一区块链节点时,按照所述第一网络区域中的区块链节点的索引获取预设数量的第一目标区块链节点信息;向所述第一目标区块链节点信息对应的第一目标区块链节点发送同步指令,所述同步指令用于将所述当前区块同步至所述第一目标区块链节点,并指示所述第一目标区块链节点将所述当前区块同步至所述预设数量的第二目标区块链节点。
18.在本公开的一些示例性实施例中,所述第三确定模块,用于获得所述第一区块链节点的历史信誉值增减信息和/或初始信誉值;若确定所述第一区块链节点完成所述当前任期内的区块的共识,则根据历史信誉值增减信息和/或初始信誉值,增加所述当前信誉值,以获得所述第一区块链节点的所述下一信誉值;若确定所述第一区块链节点未完成所述当前任期内的区块的共识,则根据历史信誉值增减信息和/或初始信誉值,减少所述第一区块链节点的所述当前信誉值,以获得所述第一区块链节点的所述下一信誉值。
19.在本公开的一些示例性实施例中,所述第四确定模块,用于在确定所述第一区块链节点为所述第一网络区域在所述当前任期内的第一共识节点时,启动任期时长的定时器;在每次完成所述当前任期内的区块的共识时,通过所述定时器判断所述第一区块链节点成为所述第一网络区域在所述当前任期内的第一共识节点的时长是否超过所述任期时长;若超过所述任期时长,则根据所述第一网络区域中的区块链节点的下一信誉值,确定所述第一网络区域在下一任期内的第一共识节点。
20.在本公开的一些示例性实施例中,所述第四确定模块,用于获得任期区块数;在确定所述第一区块链节点为所述第一网络区域在所述当前任期内的第一共识节点时,记录上一区块高度;在每次完成所述当前任期内的区块的共识时,判断所述第一区块链节点的当前区块高度与所述上一区块高度之差是否不小于所述任期区块数;若不小于所述任期区块数,则根据所述第一网络区域中的区块链节点的下一信誉值,确定所述第一网络区域在下一任期内的第一共识节点。
21.本公开实施例提出一种电子设备,包括:至少一个处理器;存储装置,用于存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如上述实施例中所述的基于区块链的数据处理方法。
22.本公开实施例提出一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的基于区块链的数据处理方法。
23.本公开实施例提出一种计算机程序产品或计算机程序,该计算机程序产品或计算
机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的基于区块链的数据处理方法。
24.本公开的一些实施例所提供的技术方案中,一方面,将区块链网络划分包括第一网络区域,然后确定归属该第一网络区域的第一区块链节点,并确定该第一区块链节点为该第一网络区域在当前任期内的第一共识节点,以使得该第一区块链节点在当前任期内,执行该区块链网络对应的区块链中的当前任期内的区块的共识过程,即通过网络区域划分的方式来确定当前任期内的共识节点,不需要该区块链网络中的所有区块链节点参与共识,较大的减少了参与共识的区块链节点数量,由此可以提升共识效率,加快了区块上链的速度,避免了由于共识太慢或者超时等原因导致的共识失败;另一方面,在确定第一区块链节点归属该第一网络区域后,获取该第一网络区域中的区块链节点的当前信誉值,以根据该第一网络区域中的区块链节点的当前信誉值来确定该第一区块链节点为该第一网络区域当前任期内的第一共识节点。之后,当选为该第一网络区域的当前任期内的第一共识节点的第一区块链节点,在当前任期内参与区块链内的区块的共识,并在当前任期结束后更新第一网络区域中区块链节点的当前信誉值,根据更新后的该第一网络区域中的区块链节点的下一信誉值,确定出下一任期的第一共识节点,即通过信誉值(包括上述当前信誉值和下一信誉值)选取第一网络区域在各个任期(包括上述当前任期和下一任期)内的第一共识节点的方式,避免了在确定各个任期内的第一共识节点时的人为因素的干扰,使得第一共识节点的选举更具公平性。
25.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
26.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
27.图1是本公开实施例提供的系统结构示意图。
28.图2示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。
29.图3示意性示出了本公开一个实施例中区块链节点的数量与网络区域的数量的关系示意图。
30.图4示意性示出了本公开一个实施例中新增的区块链节点被分配至对应网络区域的示意图。
31.图5示意性示出了本公开一个实施例中第一共识节点与第一网络区域中各个区块链节点的关系示意图。
32.图6示意性示出了本公开一个实施例中区块链节点当选第一共识节点的概率与信誉值的关系示意图。
33.图7示意性示出了本公开一个实施例中第一区块链节点与、第三共识节点和第四
共识节点之间的点对点连接的示意图。
34.图8示意性示出了本公开一个实施例中区块的提案消息的发送过程的示意图。
35.图9示意性示出了本公开一个实施例中区块链网络采用raft类型的共识算法下客户端将交易发往交易池的示意图。
36.图10示意性示出了本公开一个实施例中区块链网络采用bft类型的共识算法下客户端将交易发往交易池的示意图。
37.图11示意性示出了本公开一个实施例中同步指令的发送过程的示意图。
38.图12示意性示出了本公开一个实施例中区块链节点的信誉值的变化示意图。
39.图13示意性示出了本公开一个实施例中确定第一区块链节点作为第一共识节点的任期是否已结束的流程图。
40.图14示意性示出了根据本公开的一实施例的基于区块链的数据处理装置的框图。
41.图15示出了适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
42.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
43.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
44.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在至少一个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
45.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
46.本公开实施例应用于区块链技术中。例如,本公开实施例涉及的系统可以是由客户端、多个区块链节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的系统。
47.参见图1,图1是本公开实施例提供的系统结构示意图,该系统可以包括区块链网络和客户端120,其中区块链网络可以包括多个区块链节点110(也可以简称为节点,可以是接入网络中的任意形式的计算设备,如服务器、用户终端)。
48.图1实施例中,可以将区块链网络划分为至少一个网络区域,例如图1中所示的网络区域1至网络区域n,n为大于或等于1的正整数,每个网络区域中可以包括至少一个节点,例如,假设网络区域1中包括节点1、节点2至节点k,k为大于或等于1的正整数,网络区域n中包括节点l、节点l+1至节点l+h,其中l为大于k的正整数,h为大于或等于1的正整数。
49.在本公开的一些实施例中,网络区域的数量可以与节点数量正相关。示例性地,若
当前区块链节点数(即当前已经加入该区块链网络的节点的数量)mn,则当前已创建网络区域数(即当前已经创建的网络区域的数量)为n。其中,m为大于或等于2的正整数,n为大于或等于1的正整数。
50.每个网络区域130中均对应有一个在当前任期内对交易进行共识的共识节点,共识节点之间可以基于点对点(p2p,peer to peer)网络实现通信连接,p2p协议是一个运行在传输控制协议(tcp,transmission control protocol)协议之上的应用层协议。每一个网络区域包括的节点之间可以基于感染式网络实现通信连接。共识节点与所在网络区域中的其他非共识节点(也可称之为剩余区块链节点)的连接属于网络区域节点之间的连接。
51.在图1所示的系统中,客户端120可以通过网络向节点110中的共识节点或者主节点发送交易请求。其中,主节点是从共识节点中选出的、用于将交易打包成区块、并向其它共识节点广播该区块的提案的共识节点。
52.其中,客户端120用于发送交易请求的网络可以是使用标准通信技术和/或协议无线网络或有线网络。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(local area network,lan)、城域网(metropolitan area network,man)、广域网(wide area network,wan)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(hyper text mark-up language,html)、可扩展标记语言(extensible markuplanguage,xml)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(secure socket layer,ssl)、传输层安全(transport layer security,tls)、虚拟专用网络(virtual private network,vpn)、网际协议安全(internet protocolsecurity,ipsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
53.客户端120可以是具备向共识节点或者主节点发送交易请求的电子设备,该电子设备可以是智能手机、电脑、服务器等,本公开实施例对此不做限制。
54.图2示意性示出了根据本公开的一个实施例的基于区块链的数据处理方法的流程图。本公开实施例所提供的基于区块链的数据处理方法可以由任意具备计算处理能力的电子设备处理,例如,该具备计算处理能力的电子设备为图1中任意一个网络区域130包括的任意一个节点。其中,执行基于区块链的数据处理方法的任意一个节点可以称为第一区块链节点,该第一区块链节点所在的网络区域为第一网络区域。
55.如图2所示,本公开实施例提供的基于区块链的数据处理方法可以包括以下步骤s201至步骤s205。
56.步骤s201,确定第一区块链节点归属区块链网络中的第一网络区域。
57.本公开实施例中,网络区域是对区块链网络包括的区块链节点进行划分后,得到包括一定数量的区块链节点的分组,第一网络区域可以是区块链网络中的任意一个网络区域。
58.例如,假设区块链网络共包括100个区块链节点,将该100个区块链节点划分到5个网络区域后,每个网络区域中包括一部分区块链节点。
59.在本公开一些实施例中,创建网络区域,包括生成网络区域对应的网络区域标识(identity,id),该网络区域id可以采用任意的标识方式,例如数字、字母、符号等中的任意一种或者多种,本公开对此不做限定,只要能够将每个网络区域唯一区别开来即可。
60.其中,当将某个区块链节点划分到某个网络区域时,可以将该区块链节点的网络地址(例如,ip(internet protocol,网际互联协议)地址)分配到该网络区域的网络区域标识下,即将该区块链节点注册到该网络区域下,以指示该区块链节点被分配到了该网络区域中。
61.在本公开的一些实施例中,初始化时,可以基于区块链网络的配置文件创建网络区域。初始时,当第一批区块链节点启动时,每个区块链节点均会加载相同的配置文件,且每个区块链节点可以根据该配置文件,创建该配置文件中指定的初始的网络区域,并将第一批区块链节点中的各个区块链节点分别划分至相应的网络区域。
62.例如,假设区块链网络的配置文件指定初始时,创建两个初始的网络区域1和网络区域2,并将第一个区块链节点和第二个区块链节点划分至网络区域1,将第三个区块链节点和第四个区块链节点划分至网络区域2。
63.本公开实施例中,该区块链网络的配置文件可以包括网络区域控制算法,该网络区域控制算法可以用于,当区块链节点的数量mn时,创建n个网络区域;在当前区块链节点的数量mn,且新增一个区块链节点时,创建n+1个网络区域。其中n为大于或等于1的正整数,m为大于或等于2的正整数。
64.在下面的举例中,均以m配置为2进行举例说明,但本公开并不限定于此。
65.例如,当加入该区块链网络的区块链节点的数量为5时,大于2,此时,根据区块链网络的配置文件已经创建的网络区域的数量为2,则创建新的网络区域,可以称之为网络区域3。
66.在本公开的另一些实施例中,根据该配置文件,可以创建第一批启动的区块链节点的数量对应数量的初始的网络区域,并从第一批启动的区块链节点中分别指定出一个区块链节点作为对应的初始的网络区域的探测节点,之后,根据各个初始的网络区域的探测节点,再将该第一批启动的区块链节点中,除了各个初始的网络区域的探测节点之外的其他区块链节点分别分配至各个初始的网络区域。
67.例如,假设m配置为2,第一批启动的区块链节点的数量为4,则创建初始的网络区域的数量为2个,假设分别为网络区域1和网络区域2,在该配置文件中分别将节点1作为网络区域1的探测节点,节点3作为网络区域2的探测节点,则之后节点2可以分别向节点1和节点3发送探测包,探测获得节点2与节点1、以及节点2与节点3之间的网络延迟,将节点2划分至网络延迟较小的节点1对应的网络区域1。节点4可以分别向节点1和节点3发送探测包,探测获得节点4与节点1、以及节点4与节点3之间的网络延迟,将节点4划分至网络延迟较小的节点2对应的网络区域2。
68.在本公开的又一些实施例中,通过该配置文件,可以将第一个加入某个网络区域的区块链节点作为该网络区域的探测节点。例如可以先创建网络区域1,并指定第一个区块链节点分配至该网络区域1,并将该第一个区块链节点作为网络区域1的探测节点。之后,再将第二个区块链节点分配至该网络区域1。当启动第三个区块链节点时,根据该配置文件,由于3大于21,则创建网络区域2,并将该第二个区块链节点加入该网络区域2,并将该第二个区块链节点作为该网络区域2的探测节点。之后,将区块链节点3和区块链节点4按照网络延迟分别加入网络区域1或者网络区域2。
69.本公开实施例中的探测节点是指各个网络区域中,用于新加入该区块链网络的区
块链节点探测网络延迟的区块链节点。
70.在本公开的又一些实施例中,通过该网络区域控制算法,每一个加入某个网络区域的区块链节点中,网络延迟最高的区块链节点信息可以被记录到该网络区域对应的网络区域标识下,以用于确定新创建的网络区域的探测节点。
71.例如,假设当前已创建网络区域数为4,分别称之为网络区域1、网络区域2、网络区域3和网络区域4,网络区域1中包括节点1和节点2,网络区域2中包括节点3和节点4,网络区域3包括节点5、节点6、节点7和节点8,网络区域4中包括节点9、节点10、节点11、节点12、节点13、节点14、节点15和节点16,且假设网络区域1的探测节点为节点1,网络区域2的探测节点假设为节点3,网络区域3的探测节点假设为节点5,网络区域4的探测节点假设为节点9,并记录节点2至节点1的网络延迟为10ms,节点4至节点3的网络延迟为20ms,节点7是网络区域3中与节点5之间网络延迟最高的节点,且该网络延迟为25ms,节点12是网络区域4中与节点9之间网络延迟最高的节点,且该网络延迟为30ms,则在创建新的网络区域5,将该节点12作为网络区域5的探测节点,并将节点12从网络区域4中删除,加入网络区域5。
72.根据区块链网络的配置文件生成初始的网络区域后,当后续有新加入的区块链节点时,可以基于网络区域控制算法确定何时创建新的网络区域,以及如何为各个网络区域配置网络区域标识,区块链节点均基于网络区域控制算法被分配至对应的网络区域。
73.在本公开的一些实施例中,区块链网络除包括第一网络区域外,还可以包括第二网络区域,第二网络区域可以是除了第一网络区域之外的任意网络区域。
74.其中,确定第一区块链节点归属区块链网络中的第一网络区域,可以包括:获得第一网络区域的第一探测节点信息和第二网络区域的第二探测节点信息;获得第一区块链节点与第一探测节点信息对应的第一探测节点之间的第一网络延迟,以及第一区块链节点与第二探测节点信息对应的第二探测节点之间的第二网络延迟;根据第一网络延迟和第二网络延迟,确定第一区块链节点归属第一网络区域;将第一区块链节点的第一网络地址分配至第一网络区域的第一区域标识。
75.其中,第一区块链节点可以存储有区块链网络包括的各个网络区域的探测节点的探测节点信息,该探测节点信息可以用于唯一确定各个探测节点,且获知该探测节点属于哪个网络区域,例如可以包括各个探测节点的ip地址和/或节点id、以及该探测节点所属的网络区域的网络区域id。该探测节点信息可以包括第一探测节点信息和第二探测节点信息。
76.本公开实施例中,第一探测节点是指第一网络区域中的探测节点,第一探测节点信息可以包括该第一探测节点的ip地址和/或节点id,以及该第一探测节点所属的第一网络区域的第一网络区域id。第二探测节点是指第二网络区域中的探测节点,第二探测节点信息可以包括该第二探测节点的ip地址和/或节点id,以及该第二探测节点所属的第二网络区域的第二网络区域id。
77.在本公开的一些实施例中,获得第一区块链节点与第一探测节点信息对应的第一探测节点之间的第一网络延迟,以及第一区块链节点与第二探测节点信息对应的第二探测节点之间的第二网络延迟,可以包括:通过第一区块链节点根据第一探测节点的网络地址,向第一探测节点发送用于探测网络延迟的第一探测消息,并记录该第一探测消息的发送时间,在接收到第一探测节点的第一反馈消息后,根据第一探测消息的发送时间和第一反馈
消息的接收时间的时间差,得到第一区块链节点与第一探测节点之间的第一网络延迟;通过第一区块链节点根据第二探测节点的网络地址,向第二探测节点发送用于探测网络延迟的第二探测消息,并记录该第二探测消息的发送时间,在接收到第二探测节点的第二反馈消息后,根据第二探测消息的发送时间和第二反馈消息的接收时间的时间差,得到第一区块链节点与第二探测节点之间的第二网络延迟。
78.本公开实施例中的网络延迟可以用rtt(round trip time,往返时间)来检测,但本公开并不限定网络延迟的探测方式。
79.在本公开的一些实施例中,根据第一网络延迟和第二网络延迟,确定第一区块链节点归属第一网络区域,可以包括:比较第一网络延迟和第二网络延迟的大小,在第一网路延迟小于第二网络延迟的情况下,确定第一区块链节点归属第一网络区域。
80.由于通常在物理位置上越远的两个节点间的传输路径越长,网络延迟更大,所以将第一区块链节点归属更小网络延迟对应的网络区域的方式,可以使得第一区块链节点可以归属到在物理位置上更近的探测节点对应的网络区域。进一步地,使得每一个网络区域中,各个区块链节点在物理位置上更集中。
81.确定第一区块链节点归属第一网络区域后,将第一区块链节点的第一网络地址分配至第一网络区域的第一区域标识。在本公开的一些实施例中,将区块链节点分配至对应的网络区域,可以包括:将区块链节点的网络地址分配至对应网络区域的网络区域标识。在网络区域的网络区域标识下包括某一区块链节点的网络地址时,表示该某一区块链节点归属于该网络区域。
82.需要说明的是,第二网络区域的数量可以为多个,同时对应有多个第二探测节点,相应地,第二网络延迟可以包括第一区块链节点分别与多个第二探测节点之间的网络延迟。在本公开的一些实施例中,第二网络区域的数量基于区块链网络包括的网络区域的数量确定。例如,区块链网络包括网络区域1-3,其中网络区域1为第一网络区域,则网络区域2和网络区域3均为第二网络区域。
83.在本公开的一些实施例中,确定第一区块链节点归属区块链网络中的第一网络区域之前,还可以包括:获得区块链网络中的当前已创建网络区域数和当前区块链节点数;根据当前已创建网络区域数和当前区块链节点数确定创建第一网络区域;根据当前已创建网络区域信息确定第一网络区域的第一探测节点。
84.本公开实施例中,每一个区块链节点均保存有区块链网络中的当前已创建网络区域数和当前区块链节点数。
85.在本公开的一些实施例中,根据当前已创建网络区域数和当前区块链节点数确定创建第一网络区域,可以包括:若当前已创建网络区域数为n,当前区块链节点数为mn,则确定创建第一网络区域;其中,n为大于或等于1的正整数,m均为大于或等于2的正整数。例如,当前已创建网络区域数为3,当前区块链节点数为23,则确定创建第一网络区域。
86.示例性地,如图3所示,m为2的情况下,区块链节点数量为4个时,区块链网络包括2个网络区域;区块链节点数量为8个时,区块链网络包括3个网络区域;区块链节点数量为16个时,区块链网络包括3个网络区域;区块链节点的数量为2
32
=4294967296个时,区块链网络包括32个网络区域。
87.在本公开的一些实施例中,当前已创建网络区域信息包括各个当前已创建网络区
域中网络延迟最高的区块链节点信息,根据当前已创建网络区域信息确定第一网络区域的第一探测节点,包括:根据各个当前已创建网络区域中网络延迟最高的区块链节点信息,确定第一网络区域的第一探测节点。
88.例如,当前已创建网络区域信息指示当前已经创建3个网络区域,第一个网络区域中区块链节点与对应探测节点之间最高的网络延迟为10ms(毫秒),第二个网络区域中区块链节点与对应探测节点之间最高的网络延迟为15ms,第一个网络区域中区块链节点与对应探测节点之间最高的网络延迟为5ms。则各个当前已创建网络区域中网络延迟最高的区块链节点为第二个网络区域中,与对应探测节点的网络延迟为15ms的区块链节点。各个当前已创建网络区域中网络延迟最高的区块链节点信息为该15ms对应的区块链节点信息,确定该15ms对应的区块链节点为新创建的第四个网络区域的探测节点。在本公开的一些实施例中,该15ms对应的区块链节点信息为该区块链节点的网络地址和/或节点id。
89.在本公开的一些实施例中,根据各个当前已创建网络区域中网络延迟最高的区块链节点信息,确定第一网络区域的第一探测节点之后,还包括:将网络延迟最高的区块链节点信息从对应的网络区域的区域标识中移除并添加至第一网络区域的区域标识中。
90.在本公开的一些实施例中,确定第一区块链节点归属区块链网络中的第一网络区域,可以包括:获得区块链网络的配置文件;根据配置文件生成第一网络区域的第一区域标识,并确定第一区块链节点归属第一网络区域;将第一区块链节点的第一网络地址分配至第一区域标识。
91.区块链网络包括的每一个区块链节点均存储有配置文件,在本公开的一些实施例中,获得区块链网络的配置文件,包括:从本地存储中获取区块链网络的配置文件。
92.在本公开的一些实施例中,确定第一区块链节点归属第一网络区域,可以包括:配置文件直接指示第一区块链节点归属于第一网络区域,或者,通过比对第一区块链节点与各个网络区域的探测节点之间的网络延迟,在与第一网络区域对应的探测节点之间的网络延迟最小的情况下,确定第一区块链节点归属于第一网络区域。
93.在本公开的一些实施例中,将第一区块链节点的第一网络地址分配至第一区域标识后,也即完成了将第一区块链节点分配至第一网络区域。若第一区块链节点为第一网络区域中的第一个区块链节点,则将第一区块链节点作为第一网络区域的第一探测节点。
94.为便于理解在区块链网络中新增一个区块链节点后,如何将新增的该区块链节点分配至对应的网络区域,下以区块链网络包括5个网络区域为例进行说明。如图4所示,新增的区块链节点与5个网络区域的探测节点之间的网络延迟分别为1ms、10ms、15ms、20ms、100ms,根据网络延迟,将新增的区块链节点分配至网络区域1,并记录新增的区块链节点的网络延迟为1ms。需要说明的是,将新增的区块链节点分配至网络区域1是指将新增的区块链节点的网络地址添加至网络区域1的区域标识中。
95.在本公开的一些实施例中,区块链网络包括的任意一个网络区域中可容纳区块链节点的数量不存在限制。
96.步骤s202,根据第一网络区域中的区块链节点的当前信誉值,确定第一区块链节点为第一网络区域在当前任期内的第一共识节点。
97.第一共识节点与第一网络区域中各个区块链节点的关系如图5所示,第一共识节点从第一网络区域中的各个区块链节点中选出。
98.每一个区块链节点在加入区块链网络时均会被分配一个初始信誉值,初始信誉值的大小根据经验设置,本公开实施例对此不做限制。示例性地,每一个区块链节点的加入区块链网络时的初始信誉值为1024。区块链节点的信誉值与该区块链节点被选为共识节点的概率正相关。
99.在本公开的一些实施例中,根据第一网络区域中的区块链节点的当前信誉值,确定第一区块链节点为第一网络区域在当前任期内的第一共识节点,包括:排除第一网络区域中当前信誉值低于信誉值阈值的区块链节点;按照当前信誉值与对应的第一网络区域中的区块链节点当选为当前任期内的第一共识节点的概率正相关,确定第一区块链节点为当前任期内的第一共识节点。
100.在区块链网络中,区块链节点作为共识节点的任期内,会基于区块链节点的表现增加或者减少一定的信誉值。而区块链节点的信誉值低于信誉值阈值时,认为该区块链节点在之前作为共识节点的任期内表现不好,因此,规定当区块链节点的信誉值低于信誉值阈值时,无法参与共识节点的选举。其中,信誉值阈值为设定值,本公开实施例对此不做限制。示例性地,信誉值阈值为0。
101.在本公开的一些实施例中,按照当前信誉值与对应的第一网络区域中的区块链节点当选为当前任期内的第一共识节点的概率正相关,确定第一区块链节点为当前任期内的第一共识节点,包括:计算出第一网络区域中的区块链节点的当前信誉值之和,将第一网络区域中每一个区块链节点的当前信誉值与第一网络区域中的区块链节点的当前信誉值之和的比值,作为第一网络区域中各个区块链节点当选第一共识节点的概率;根据第一网络区域中各个区块链节点对应的概率;根据第一网络区域中每一个区块链节点当选第一共识节点的概率,选取出的区块链节点为第一区块链节点的情况下,确定第一区块链节点为第一网络区域在当前任期内的第一共识节点。
102.示例性地,如图6所示,第一网络区域中包括区块链节点1-4,区块链节点1-3的信誉值均为1024,区块链节点4的信誉值为512。则区块链节点1-4的信誉值之和为1024*3+512=3584,则区块链节点1-3的信誉值与区块链节点1-4的信誉值之和的比值均为2/7,区块链节点4的信誉值与区块链节点1-4的信誉值之和的比值为1/7。相应地,区块链节点1-3当选第一网络区域在当前任期内的第一共识节点的概率均为2/7,区块链节点4当选第一网络区域在当前任期内的第一共识节点的概率为1/7。
103.步骤s203,在当前任期内,执行区块链网络对应的区块链中的当前任期内的区块的共识。
104.通常区块链网络包括的网络区域的数量较少,相应地,网络区域对应的共识节点的数量也较少,此种情况下,共识节点之间采用点对点的连接方式可以更加高效地完成对区块的共识。
105.在本公开的一些实施例中,区块链网络除包括第一网络区域外,还包括第二网络区域,在当前任期内,执行区块链网络对应的区块链中的当前任期内的区块的共识,包括:向第二网络区域在当前任期内的第二共识节点或第二探测节点发送网络连接消息,网络连接消息用于指示第二共识节点与第一区块链节点建立点对点网络连接;当区块链网络在当前任期内的预定比例的共识节点完成点对点网络连接时,执行区块链网络对应的区块链中的当前任期内的区块的共识。其中,预定比例是设定值,可根据区块链网络采用的共识算法
确定,例如,区块链网络采用的共识算法为拜占庭共识算法时,预定比例通常为2/3。其中,第二网络区域的数量可以是一个或者多个。
106.在一些实施例中,向第二网络区域在当前任期内的第二共识节点发送网络连接消息,网络连接消息用于指示第二共识节点与第一区块链节点建立点对点网络连接,包括:在区块链网络对应的各个网络区域首次选举出共识节点的情况下,作为第一网络区域的第一共识节点的第一区块链节点,向第二探测节点发送查询第二网络区域当前任期的第二共识节点信息的消息。或者,在区块链网络对应的各个网络区域存在上一任期共识节点的情况下,作为第一网络区域的第一共识节点的第一区块链节点,向第二网络区域对应的上一任期共识节点发送查询第二网络区域当前任期的第二共识节点信息的消息。在接收到反馈回来包第二共识节点信息的消息后,第一区块链节点根据第二共识节点信息中包括的当前任期的第二共识节点的网络地址,向当前任期的第二共识节点发送基于tls(transport layer security,安全传输层协议)的p2p网络连接,并将该网络连接保持在第一区块链节点的连接池中,进而第一区块链节点实现了与当前任期的第二共识节点的点对点连接。
107.其中,区块链网络中的区块链节点均存储有各个网络区域中区块链节点信息,根据该区块链节点信息指示的第二探测节点,或者第二网络区域中上一任期共识节点的网络地址,第一区块链节点可以向第二探测节点或者第二网络区域中上一任期共识节点发送网络连接消息。
108.例如,区块链网络包括三个第二网络区域,对应的共识节点分别为第二共识节点、第三共识节点和第四共识节点,此时,第一区块链节点与、第三共识节点和第四共识节点之间的点对点连接如图7所示。
109.在本公开的一些实施例中,区块链网络除包括第一网络区域外,还包括第二网络区域,在当前任期内,执行区块链网络对应的区块链中的当前任期内的区块的共识,包括:确定第一区块链节点为当前任期内的主节点;接收客户端发送的交易,并将接收到的交易存入第一区块链节点的第一交易池;从第一交易池中提取目标交易,将目标交易打包成区块;向第二网络区域在当前任期内的第二共识节点发送区块的提案消息,以完成区块的共识。
110.关于确定第一区块链节点为当前任期内的主节点的方式,本公开实施例不做限制,能够从多个节点中选取出一个主节点的方式均可应用于此。
111.在一些实施例中,向第二网络区域在当前任期内的第二共识节点发送区块的提案消息,以完成区块的共识,包括:基于p2p网络向向第二网络区域在当前任期内的第二共识节点发送区块的提案消息,以完成区块的共识。
112.在一些实施例中,第二网络区域对应有多个网络区域,相应地,第二共识节点对应有多个共识节点,此时,基于p2p网络向向第二网络区域在当前任期内的第二共识节点发送区块的提案消息,包括:向第二共识节点对应的全部共识节点中的部分共识节点发送区块的提案消息,该部分共识节点接收到该提案消息后,向未第二共识节点对应的全部共识节点中处该部分共识节点外的其他共识节点发送该提案消息。
113.例如,第二网络区域包括网络区域2、网络区域3、网络区域4、网络区域5、网络区域6、网络区域7至网络区域n,相应地,各个第二网络区域对应的共识节点分别为共识节点2至共识节点n。此时,区块的提案消息的发送过程可以是如图8所示的过程。作为第一共识节点
的区块链节点将提案消息发往共识节点2、共识节点3和共识节点4,共识节点2接收到提案消息后,将该提案消息发往共识节点5、共识节点6、共识节点7至共识节点n。其中,n为大于7的正整数。
114.在本公开的一些实施例中,当前任期期满时,将第一交易池中的交易同步至下一任期内的主节点,包括:下一任期的主节点向作为当前任期主节点的第一区块链节点发送交易同步请求,以使第一区块链节点接收到该交易同步请求后,将第一交易池中的交易同步到下一任期主节点的交易池中。
115.其中,示例性地,如图9所示,区块链网络采用raft类型的共识算法时,客户端仅将交易发往当选主节点的共识节点的交易池。示例性地,如图10所示,区块链网络是采用bft类共识算法时,客户端会将交易发往各个共识节点的交易池,由当选主节点的共识节点负责将交易打包为区块进行提案。从图9和图10中可以看出,无论是采用raft类型的共识算法,还是采用bft类共识算法,客户端均未将交易发往区块链网络中的非共识节点,而下一任期的主节点是从区块链网络中全部的区块链节点产生,因此,无论区块链网络是采用raft类型的共识算法,还是采用bft类共识算法,下一任期的主节点的交易池中的交易,都有可能落后于当前任期主节点的交易池中的交易,所以将第一交易池中的交易同步至下一任期内的主节点,可以更好地保证客户端发来的交易不会被漏掉。
116.任一区块对应的提议经过区块链网络中共识节点的共识后,共识节点会将通过共识的区块上链至该共识节点保存的区块链中,之后,该共识节点会将该区块同步至该共识节点所在网络区域中的其他区块链节点对应的区块链中。
117.在本公开的一些实施例中,在将当前任期内的当前区块上链至第一区块链节点时,将当前区块同步至第一网络区域中的除第一区块链节点以外的剩余区块链节点,包括:在将当前任期内的当前区块上链至第一区块链节点保存的区块链后,将当前区块同步至第一网络区域中的除第一区块链节点以外的剩余区块链节点保存的区块链中。
118.在一些实施例中,将当前区块同步至第一网络区域中的除第一区块链节点以外的剩余区块链节点保存的区块链中的方式,包括:主动同步和被动同步。
119.基于被动同步的方式,将当前区块同步至第一网络区域中的除第一区块链节点以外的剩余区块链节点保存的区块链中,包括:接收第一网络区域中的非共识节点的同步请求;根据同步请求,在将当前任期内的当前区块上链至第一区块链节点时,将当前区块同步至第一网络区域中的除第一区块链节点以外的剩余区块链节点。
120.在一些实施例中,第一网络区域中的非共识节点会定时与第一网络区域中的共识节点的区块链高度进行校对,当非共识节点判断保存的区块链的高度低于共识节点的区块链的高度时,非共识节点向共识节点发送同步请求。例如,非共识节点当前的区块链高度为99,共识节点当前的区块链高度为100,则非共识节点定时与共识节点的区块链的高度进行校对时,判断出自身保存的区块链的高度小于共识节点保存的区块链的高度,此时,非共识节点向共识节点发出同步请求。
121.基于主动同步的方式,将当前区块同步至第一网络区域中的除第一区块链节点以外的剩余区块链节点保存的区块链中,包括:在第一区块链节点将通过共识的区块上链至保存的区块链中后,将通过共识的区块同步给第一网络区域中除第一区块链节点外的其他区块链节点。
122.在一些实施例中,区块链节点加入网络区域后,会被分配一个在该网络区域中的索引。例如,网络区域中已有30个区块链节点(包括探测节点),则新增的区块链节点加入该网络区域后,被分配的索引可以为30(索引从0)。
123.在本公开的一些实施例中,在将当前任期内的当前区块上链至第一区块链节点时,将当前区块同步至第一网络区域中的除第一区块链节点以外的剩余区块链节点,包括:在将当前区块上链至第一区块链节点时,按照第一网络区域中的区块链节点的索引获取预设数量的第一目标区块链节点信息;向第一目标区块链节点信息对应的第一目标区块链节点发送同步指令,同步指令用于将当前区块同步至第一目标区块链节点,并指示第一目标区块链节点将当前区块同步至预设数量的第二目标区块链节点。其中,预设数量为设定值,若不对预设数量进行设定则预设数量采用默认值。示例性地,该默认值可以是8。
124.在一些实施例中,同步指令用于将当前区块同步至第一目标区块链节点是指,同步指令用于将当前区块同步至第一目标区块链节点保存的区块链中。在一些实施例中,将当前区块同步至预设数量的第二目标区块链节点是指,将当前区块同步至预设数量的第二目标区块链节点保存的区块链中。后续说明中,将区块同步至区块链节点均指的是将区块同步至区块链节点保存的区块链中。
125.在一些实施例中,按照第一网络区域中的区块链节点的索引获取预设数量的第一目标区块链节点信息,包括:从第一网络区域中获取索引为前预设数量的第一目标区块链节点信息。例如,预设数量为8时,第一目标区块链节点信息包括第一网络区域中索引为0-7的区块链节点的信息。
126.示例性地,同步指令的发送过程如图11所示,仍以预设数量为8为例,首先,第一区块链节点向索引为0-7的区块链节点发送同步指令。索引为0-7的区块链节点接收到该同步指令后,将当前区块不同步到保存的区块链上。之后,索引为0-7的区块链节点向下一批区块链节点发送同步指令。例如,索引为0的区块链节点将同步指令发送给索引为8-15的区块链节点;索引为15的区块链节点接收到该同步指令后,将当前区块同步到保存的区块链上,并将同步指令发送给索引为128-135的区块链节点。通过感染式的发送同步指令,可以使网络区域中的区块链节点更快地完成区块的同步。
127.发送同步指令与接收同步指令的区块链节点之间的关系为:当发送同步指令的区块链节点的索引为x(x为正整数)时,接收同步指令的区块链节点对应的索引为[(1+x)*预设数量]至[(2+x)*预设数量-1]。例如,预设数量为8,则发送同步指令的区块链节点的索引号为x时,接收同步指令的区块链节点的索引号为[(1+x)*8]至[(2+x)*8-1]。在预设数量为8的情况下,发送同步指令的区块链节点的索引号为15时,接收同步指令的区块链节点的索引号为[(1+15)*8]至[(2+15)*8-1],即128至135。
[0128]
步骤s204,更新第一网络区域中的区块链节点的当前信誉值,确定第一网络区域中的区块链节点的下一信誉值。
[0129]
其中,当前信誉值是指第一网络区域中的区块链节点在当前共识节的任期内,信誉值的改变量。例如,当前信誉值为0,即信誉值的改变量为0。下一信誉值是指第一网络区域中的区块链节点在选举下一任期共识节点时的信誉值。
[0130]
在区块链节点当选所在网络区域的共识节点后,会在一个任期内参与区块的共识,在任期结束后,重新确定出该网络区域下一任期的共识节点。区块链节点第一次作为共
识节点完成任期内区块的共识后,该区块链节点增加第一数值的信誉值。当该区块链节点第二次作为共识节点完成任期内区块的共识后,该区块链节点增加第二数值的信誉值。之后,该区块链节点每次作为所在网络区域的共识节点完成任期内区块的共识后,均会增加相应的信誉值。其中,第二数值小于第一数值,区块链节点每次作为所在网络区域的共识节点完成任期区块的共识后,增加的信誉值逐渐减少,每次增加的信誉值最小为1。在本公开的一些实施例中,区块链节点作为共识节点的每次完成任期内区块的共识后,增加的信誉值较上一次减半,即第一数值等于两倍的第二数值。第一数值的大小基于经验设置,本技术实施例对此不做限制。
[0131]
若区块链节点作为共识节点期间,第一次被判定行为不合理时,扣除该区块链节点第三数值的信誉值,第二次被判定行为不合理时,扣除除该区块链节点第四数值的信誉值,后续区块链节点作为共识节点期间,每次被判定行为不合理时,均扣除相应数值的信誉值,随着被判定行为不合理的次数增加,每次扣除的信誉值也逐渐增加。在本公开的一个实施例中,最大每次扣除的信誉值不超过初始信誉值。其中,第四数值大于第三数值。在本公开的一些实施例中,第四数值等于两倍的第三数值,后续区块链节点作为共识节点期间,第几次被判定行为不合理,则扣除相应次数倍第三数值的信誉值。例如,第四次被判定行为不合理时,扣除四倍第三数值的信誉值。
[0132]
示例性地,区块链节点的信誉值的变化如图12所示,初始信誉值为1024,区块链节点第一次作为共识节点完成任期内区块的共识后,增加信誉值为512。第二次作为共识节点完成任期内区块的共识后,增加信誉值为256。第三次作为共识节点完成任期内区块的共识后,增加信誉值为128。区块链节点作为共识节点期间,第一次被判定行为不合理时,扣除128信誉值。第二次被判定行为不合理时,扣除256信誉值。第三次被判定行为不合理时,扣除512信誉值。
[0133]
在本公开的一些实施例中,若区块链节点在作为共识节点的任期内,存在被判定为行为不合理时,则在区块链节点作为共识节点的任期结束后,认为该区块链节点在作为共识节点的任期内,存在未完成共识的区块,也就是说,认为该区块链节点没有完成任期内区块的共识,并在当前任期结束后,不增加该区块链节点的信誉值。
[0134]
例如,第一次被判定行为不合理时扣除2信誉值,后续每次被判定行为不合理时扣除的信誉值翻倍。完成第一个任期增加8信誉值,后续每次完成任期增加的信誉值减半。初始信誉值为1024。区块链节点a两次作为所在网络区域的共识节点参与共识,在第一次任期期间,两次被判定行为不合理。在第二次任期期间,没有被判定行为不合理。则区块链节点a信誉值的变化为,在第一次被判定行为不合理时,扣除2信誉值,在第二次被判定行为不合理时,扣除4信誉值。由于区块链节点a第一次作为共识节点的任期内存在两次被判定为行为不合理,则认为区块链节点a未完成第一次作为共识节点任期内区块的共识。所以,区块链节点a在结束第一次作为共识节点的任期后的信誉值为1024-2-4=1018。由于区块链节点a第二次作为共识节点的任期内,不存在被判定为行为不合理,则认为区块链节点a完成了第二次作为共识节点任期内区块的共识。所以,区块链节点a在结束第二次作为共识节点的任期后的信誉值为1018+8=1026。
[0135]
关于区块链节点作为共识节点期间,哪些行为会被判定为行为不合理本技术实施例不做限制,可根据该区块链网络所使用的共识算法确定。例如,区块链网络使用的共识算
法为bft类共识算法的情况下,若共识节点提交的区块是空块(即所创建的区块中一笔交易都没有)时,或者该共识节点提交的区块签名验证未通过时,则判断该共识节点提交区块的行为不合理。
[0136]
在本公开的一些实施例中,区块链节点作为共识节点期间,由于通信异常导致区块链节点对提案进行共识时,存在的异常行为同样会被判定行为不合理。例如,因通信异常导致导致作为共识节点的区块链节点无法接收到主节点发来提案,进而导致该区块链节点无法参与该区块的共识,此时,该区块链节点会被判定行为不合理。
[0137]
在本公开的一些实施例中,更新第一网络区域中的区块链节点的当前信誉值,确定第一网络区域中的区块链节点的下一信誉值,包括:获得第一区块链节点的历史信誉值增减信息和/或初始信誉值;若确定第一区块链节点完成当前任期内的区块的共识,则根据历史信誉值增减信息和/或初始信誉值,增加当前信誉值,以获得第一区块链节点的下一信誉值;若确定第一区块链节点未完成当前任期内的区块的共识,则根据历史信誉值增减信息和/或初始信誉值,减少第一区块链节点的当前信誉值,以获得第一区块链节点的下一信誉值。
[0138]
区块链网络中,每一个区块链节点均记录有所在网络区域中各个区块链节点的信誉值的历史信誉值增减信息和初始信誉值。在一些实施例中,获得第一区块链节点的历史信誉值增减信息和/或初始信誉值,包括:第一区块链节点从本地存储中获得第一区块链节点的历史信誉值增减信息和/或初始信誉值。若第一区块链节点首次作为共识节点参与共识,则第一区块链节点不存在历史信誉值增减信息。
[0139]
若确定第一区块链节点完成当前任期内的区块的共识,则当前信誉值为第一区块链节点本次完成任期应增加的信誉值。例如,若区块链节点作为共识节点首次完成任期内区块的共识后,增加的信誉值为8,后续每次作为共识节点完成任期内区块的共识后,增加的信誉值减半,最少每次增加的信誉值不少于1,且第一区块链节点第二次作为共识节点完成的当前任期内的区块的共识,则当前信誉值为4。
[0140]
若确定第一区块链节点未完成当前任期内的区块的共识,则当前信誉值为第一区块链节点本次任期内应减少的信誉值。例如,区块链节点作为共识节点首次被判定为行为不合理时,减去的信誉值为2,后续每次作为共识节点被判定行为不合理后,减少的信誉值加倍,最大每次减少的信誉值不大于初始信誉值。
[0141]
例如,第一区块链节点的历史信誉值增减信息包括:第一次作为共识节点完成任期内区块的共识,信誉值增加8;第二次作为共识节点完成任期内区块的共识,信誉值增加4。当前信誉值为第三次作为共识节点完成任期内区块的共识,信誉值增加2,初始信誉值为1024,则第一区块链节点的下一信誉值为1024+8+4+2=1038。
[0142]
在一些实施例中,区块链节点的信誉值仅在作为共识节点时才会产生变化,所以,在第一区块链节点作为共识节点的任期结束后,第一网络区域中除第一区块链节点外的其他区块链节点的信誉值不变。
[0143]
步骤s205,根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点。
[0144]
在本公开的一些实施例中,根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点之前,需要确定第一区块链节点作为第一共
识节点的任期是否已结束。示例性地,如图13所示,在第一区块链节点每完成一次区块的共识后,均判断一次第一区块链节点作为第一共识节点的任期是否已结束。在任期未结束的情况下,继续执行对区块的共识,在任期结束的情况下,卸任第一共识节点。
[0145]
在本公开的一些实施例中,根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点,包括:在确定第一区块链节点为第一网络区域在当前任期内的第一共识节点时,启动任期时长的定时器;在每次完成当前任期内的区块的共识时,通过定时器判断第一区块链节点成为第一网络区域在当前任期内的第一共识节点的时长是否超过任期时长;若超过任期时长,则根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点。
[0146]
其中,任期时长是设定值,本公开实施例对此不做限制,可根据经验设置。例如,任期时长为1周。
[0147]
在一些实施例中,若超过任期时长,则根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点的方式,与步骤s202中,确定第一区块链节点为第一网络区域在当前任期内的第一共识节点的方式相同,在此不再赘述。
[0148]
在本公开的另一些实施例中,根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点,包括:获得任期区块数;在确定第一区块链节点为第一网络区域在当前任期内的第一共识节点时,记录上一区块高度;在每次完成当前任期内的区块的共识时,判断第一区块链节点的当前区块高度与上一区块高度之差是否不小于任期区块数;若不小于任期区块数,则根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点。
[0149]
其中,任期区块数是指第一区块链节点作为共识节点应参与共识的区块数量。例如,任期区块数为1000,则第一区块链节点作为共识节点参与共识的区块数量达到1000时,认为第一区块链节点本次作为共识节点的任期已结束。
[0150]
在一些实施例中,若不小于任期区块数,则根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点的方式,与步骤s202中,确定第一区块链节点为第一网络区域在当前任期内的第一共识节点的方式相同,在此不再赘述。
[0151]
下一任期内的第一共识节点用于在下一任期内,执行区块链网络对应的区块链中的下一任期内的区块的共识。
[0152]
本公开的一些实施例所提供的技术方案中,一方面,将区块链网络划分包括第一网络区域,然后确定归属该第一网络区域的第一区块链节点,并确定该第一区块链节点为该第一网络区域在当前任期内的第一共识节点,以使得该第一区块链节点在当前任期内,执行该区块链网络对应的区块链中的当前任期内的区块的共识过程,即通过网络区域划分的方式来确定当前任期内的共识节点,不需要该区块链网络中的所有区块链节点参与共识,较大的减少了参与共识的区块链节点数量,由此可以提升共识效率,加快了区块上链的速度,避免了由于共识太慢或者超时等原因导致的共识失败。
[0153]
另一方面,在确定第一区块链节点归属该第一网络区域后,获取该第一网络区域中的区块链节点的当前信誉值,以根据该第一网络区域中的区块链节点的当前信誉值来确定该第一区块链节点为该第一网络区域当前任期内的第一共识节点。之后,当选为该第一
网络区域的当前任期内的第一共识节点的第一区块链节点,在当前任期内参与区块链内的区块的共识,并在当前任期结束后更新第一网络区域中区块链节点的当前信誉值,根据更新后的该第一网络区域中的区块链节点的下一信誉值,确定出下一任期的第一共识节点,即通过信誉值(包括上述当前信誉值和下一信誉值)选取第一网络区域在各个任期(包括上述当前任期和下一任期)内的第一共识节点的方式,避免了在确定各个任期内的第一共识节点时的人为因素的干扰,使得第一共识节点的选举更具公平性。
[0154]
此外,本公开实施例提供的方法中,由当前任期内的第一共识节点来确定该第一网络区域的下一任期内的第一共识节点,而不是由该第一网络区域中的所有区块链节点进行投票选举下一任期内的第一共识节点,由此较大地简化了第一网络区域的各个任期内的第一共识节点的选举方式,进一步提高了共识效率,同时,投票选举的方式存在无法确定出下一任期内的第一共识节点的可能性,而采用本公开实施例提供的方法可以确保各个任期内的第一共识节点被成功地选举出来,从而确保共识机制能够正常运行。
[0155]
图14示意性示出了根据本公开的一实施例的基于区块链的数据处理装置的框图。区块链网络包括第一网络区域,第一网络区域包括第一区块链节点;其中,该装置由第一区块链节点执行。
[0156]
参照图14所示,根据本公开的一个实施例的基于区块链的数据处理装置可以包括:
[0157]
确定模块1401,用于确定第一区块链节点归属区块链网络中的第一网络区域;确定模块1401,还用于根据第一网络区域中的区块链节点的当前信誉值,确定第一区块链节点为第一网络区域在当前任期内的第一共识节点;处理模块1402,用于在当前任期内,执行区块链网络对应的区块链中的当前任期内的区块的共识;确定模块1401,还用于更新第一网络区域中的区块链节点的当前信誉值,确定第一网络区域中的区块链节点的下一信誉值;确定模块1401,还用于根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点;其中,下一任期内的第一共识节点用于在下一任期内,执行区块链网络对应的区块链中的下一任期内的区块的共识。
[0158]
在本公开的一些示例性实施例中,区块链网络还包括第二网络区域;确定模块1401,用于获得第一网络区域的第一探测节点信息和第二网络区域的第二探测节点信息;获得第一区块链节点与第一探测节点信息对应的第一探测节点之间的第一网络延迟,以及第一区块链节点与第二探测节点信息对应的第二探测节点之间的第二网络延迟;根据第一网络延迟和第二网络延迟,确定第一区块链节点归属第一网络区域;将第一区块链节点的第一网络地址分配至第一网络区域的第一区域标识。
[0159]
在本公开的一些示例性实施例中,装置还包括:获取模块1403,用于获得区块链网络中的当前已创建网络区域数和当前区块链节点数;确定模块1401,还用于根据当前已创建网络区域数和当前区块链节点数确定创建第一网络区域;根据当前已创建网络区域信息确定第一网络区域的第一探测节点。
[0160]
在本公开的一些示例性实施例中,确定模块1401,用于若当前已创建网络区域数为n,当前区块链节点数为mn,则确定创建第一网络区域;其中,n为大于或等于1的正整数,m为大于或等于2的正整数。
[0161]
在本公开的一些示例性实施例中,当前已创建网络区域信息包括各个当前已创建
网络区域中网络延迟最高的区块链节点信息;其中,确定模块1401,用于根据各个当前已创建网络区域中网络延迟最高的区块链节点信息,确定第一网络区域的第一探测节点。
[0162]
在本公开的一些示例性实施例中,确定模块1401,用于获得区块链网络的配置文件;根据配置文件生成第一网络区域的第一区域标识,并确定第一区块链节点归属第一网络区域;将第一区块链节点的第一网络地址分配至第一区域标识。
[0163]
在本公开的一些示例性实施例中,确定模块1401,还用于若第一区块链节点为第一网络区域中的第一个区块链节点,则将第一区块链节点作为第一网络区域的第一探测节点。
[0164]
在本公开的一些示例性实施例中,确定模块1401,用于排除第一网络区域中当前信誉值低于信誉值阈值的区块链节点;按照当前信誉值与对应的第一网络区域中的区块链节点当选为当前任期内的第一共识节点的概率正相关,确定第一区块链节点为当前任期内的第一共识节点。
[0165]
在本公开的一些示例性实施例中,区块链网络还包括第二网络区域;其中,处理模块1402,用于确定第一区块链节点为当前任期内的主节点;接收客户端发送的交易,并将接收到的交易存入第一区块链节点的第一交易池;从第一交易池中提取目标交易,将目标交易打包成区块;向第二网络区域在当前任期内的第二共识节点发送区块的提案消息,以完成区块的共识;装置还包括,同步模块1404,用于在当前任期期满时,将第一交易池中的交易同步至下一任期内的主节点。
[0166]
在本公开的一些示例性实施例中,区块链网络还包括第二网络区域;其中,处理模块1402,用于向第二网络区域在当前任期内的第二共识节点或第二探测节点发送网络连接消息,网络连接消息用于指示第二共识节点与第一区块链节点建立点对点网络连接;当区块链网络在当前任期内的预定比例的共识节点完成点对点网络连接时,执行区块链网络对应的区块链中的当前任期内的区块的共识。
[0167]
在本公开的一些示例性实施例中,同步模块1404,还用于在将当前任期内的当前区块上链至第一区块链节点时,将当前区块同步至第一网络区域中的除第一区块链节点以外的剩余区块链节点。
[0168]
在本公开的一些示例性实施例中,同步模块1404,还用于接收第一网络区域中的非共识节点的同步请求;根据同步请求,在将当前任期内的当前区块上链至第一区块链节点时,将当前区块同步至第一网络区域中的除第一区块链节点以外的剩余区块链节点。
[0169]
在本公开的一些示例性实施例中,同步模块1404,用于在将当前区块上链至第一区块链节点时,按照第一网络区域中的区块链节点的索引获取预设数量的第一目标区块链节点信息;向第一目标区块链节点信息对应的第一目标区块链节点发送同步指令,同步指令用于将当前区块同步至第一目标区块链节点,并指示第一目标区块链节点将当前区块同步至预设数量的第二目标区块链节点。
[0170]
在本公开的一些示例性实施例中,确定模块1401,用于获得第一区块链节点的历史信誉值增减信息和/或初始信誉值;若确定第一区块链节点完成当前任期内的区块的共识,则根据历史信誉值增减信息和/或初始信誉值,增加当前信誉值,以获得第一区块链节点的下一信誉值;若确定第一区块链节点未完成当前任期内的区块的共识,则根据历史信誉值增减信息和/或初始信誉值,减少第一区块链节点的当前信誉值,以获得第一区块链节
点的下一信誉值。
[0171]
在本公开的一些示例性实施例中,确定模块1401,用于在确定第一区块链节点为第一网络区域在当前任期内的第一共识节点时,启动任期时长的定时器;在每次完成当前任期内的区块的共识时,通过定时器判断第一区块链节点成为第一网络区域在当前任期内的第一共识节点的时长是否超过任期时长;若超过任期时长,则根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点。
[0172]
在本公开的一些示例性实施例中,确定模块1401,用于获得任期区块数;在确定第一区块链节点为第一网络区域在当前任期内的第一共识节点时,记录上一区块高度;在每次完成当前任期内的区块的共识时,判断第一区块链节点的当前区块高度与上一区块高度之差是否不小于任期区块数;若不小于任期区块数,则根据第一网络区域中的区块链节点的下一信誉值,确定第一网络区域在下一任期内的第一共识节点。
[0173]
本公开实施例的基于区块链的数据处理装置的其它内容可以参照上述实施例。
[0174]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
[0175]
图15示出了适于用来实现本公开实施例的电子设备的结构示意图。需要说明的是,图15示出的电子设备仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0176]
如图15所示,电子设备包括中央处理单元(cpu)1501,其可以根据存储在只读存储器(rom)1502中的程序或者从储存部分1508加载到随机访问存储器(ram)1503中的程序而执行各种适当的动作和处理。在ram 1503中,还存储有系统操作所需的各种程序和数据。cpu 1501、rom 1502以及ram 1503通过总线1504彼此相连。输入/输出(i/o)接口1505也连接至总线1504。
[0177]
以下部件连接至i/o接口1505:包括键盘、鼠标等的输入部分1506;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1507;包括硬盘等的储存部分1508;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1509。通信部分1509经由诸如因特网的网络执行通信处理。驱动器1510也根据需要连接至i/o接口1505。可拆卸介质1511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1510上,以便于从其上读出的计算机程序根据需要被安装入储存部分1508。
[0178]
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行图2所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1509从网络上被下载和安装,和/或从可拆卸介质1511被安装。在该计算机程序被中央处理单元(cpu)1501执行时,执行本技术的系统中限定的各种功能。
[0179]
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计
算机可读存储介质的更具体的例子可以包括但不限于:具有至少一个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0180]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含至少一个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0181]
描述于本公开实施例中所涉及到的模块和/或单元和/或子单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的模块和/或单元和/或子单元也可以设置在处理器中。其中,这些模块和/或单元和/或子单元的名称在某种情况下并不构成对该模块和/或单元和/或子单元本身的限定。
[0182]
作为另一方面,本技术还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中的方法。
[0183]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元或者子单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元或者子单元的特征和功能可以在一个模块或者单元或者子单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元或者子单元来具体化。
[0184]
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的
方法。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1