CN112398956B - 基于区块链的数据处理方法、装置、设备及可读存储介质 - Google Patents
基于区块链的数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112398956B CN112398956B CN202110072346.2A CN202110072346A CN112398956B CN 112398956 B CN112398956 B CN 112398956B CN 202110072346 A CN202110072346 A CN 202110072346A CN 112398956 B CN112398956 B CN 112398956B
- Authority
- CN
- China
- Prior art keywords
- consensus
- block
- node
- target
- node set
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种基于区块链的数据处理方法、装置、设备以及计算机可读存储介质,其中,方法包括:当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出该节点集合时所生成区块的高度确定为选举区块高度;获取过渡区块数量,根据选举区块高度以及过渡区块数量确定过渡区块高度区间;第二共识节点集合中的共识节点用于同步共识数据;当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,根据目标节点与第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理。采用本申请,可以提高区块链业务服务的连贯性和时效性。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种基于区块链的数据处理方法、装置、设备以及计算机可读存储介质。
背景技术
随着网络技术的快速发展以及政府和企业对数据安全的重视,区块链得到了极大的重视和应用。区块链网络中的节点可以包括共识节点以及同步节点,其中,共识节点参与记账共识,同步节点主要进行业务执行,不参与记账共识,通过身份认证的方式从共识节点中同步区块数据。
其中,共识节点以及同步节点不是固定的,共识节点是以任期为周期,每当任期结束时,区块链共识委员会需要从区块链节点中重新选举新的共识节点,例如第一任区块链共识委员会中的共识节点,对第一共识周期中的区块高度为1、区块高度为2、…、区块高度为n分别对应的区块进行共识处理,等到区块高度为n对应的区块成功上链时,会重新选举出第二任区块链共识委员会,并从第一任区块链共识委员会切换为第二任区块链共识委员会,此时第二任区块链共识委员会需要先获取针对第二共识周期的共识配置信息,以完成配置操作,且还需要完成区块同步,进而第二任区块链共识委员会中的共识节点,才能够正常地对第二共识周期中的区块高度为n+1、区块高度为n+2、…、区块高度为2n分别对应的区块进行共识处理。
由于在第二任区块链共识委员会获取第二共识周期的共识配置信息,以及同步区块的过程中,第二任区块链共识委员会无法开始对区块高度为n+1对应的区块进行共识处理,所以会导致区块链网络暂停对区块高度为n+1对应的区块的共识处理,进而会降低区块链业务服务的连贯性和时效性。
发明内容
本申请实施例提供一种基于区块链的数据处理方法、装置、设备以及计算机可读存储介质,可以提高区块链业务服务的连贯性和时效性。
本申请实施例一方面提供了一种基于区块链的数据处理方法,包括:
当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出第二共识节点集合时所生成区块的高度确定为选举区块高度;第一共识周期中的最大区块高度对应的区块,为第二共识周期中的最小区块高度对应的区块的前继区块;
获取过渡区块数量,根据选举区块高度以及过渡区块数量确定过渡区块高度区间;第二共识节点集合中的共识节点用于在过渡共识时间段内同步与第二共识周期相关的共识数据,过渡共识时间段是指,第一共识周期对应的第一共识节点集合对属于过渡区块高度区间的区块进行共识处理所消耗的时长;
当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,根据目标节点与第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理;第二共识节点集合中的共识节点用于从目标区块开始进行共识处理;过渡区块高度区间内的最大区块高度对应的区块为目标区块的前继区块。
本申请实施例一方面提供了一种基于区块链的数据处理装置,包括:
第一获取模块,用于当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出第二共识节点集合时所生成区块的高度确定为选举区块高度;第一共识周期中的最大区块高度对应的区块,为第二共识周期中的最小区块高度对应的区块的前继区块;
第二获取模块,用于获取过渡区块数量,根据选举区块高度以及过渡区块数量确定过渡区块高度区间;第二共识节点集合中的共识节点用于在过渡共识时间段内同步与第二共识周期相关的共识数据,过渡共识时间段是指,第一共识周期对应的第一共识节点集合对属于过渡区块高度区间的区块进行共识处理所消耗的时长;
业务处理模块,用于当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,根据目标节点与第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理;第二共识节点集合中的共识节点用于从目标区块开始进行共识处理;过渡区块高度区间内的最大区块高度对应的区块为目标区块的前继区块。
其中,第一获取模块,包括:
第一确定单元,用于目标节点将在第一共识周期内已生成的最大区块高度,确定为第一区块高度;
第一获取单元,用于获取针对第一共识周期的共识节点集合切换条件,将第一区块高度与共识节点集合切换条件进行匹配;
分配索引单元,用于若第一区块高度与共识节点集合切换条件匹配成功时,对区块链节点集合中的每个节点分配针对第二共识周期的索引号;索引号包括共识索引号;
节点添加单元,用于将具有共识索引号的节点添加至第二共识周期对应的第二共识节点集合中。
其中,数据处理装置,还包括:
第三获取模块,用于当目标节点属于第一共识节点集合时,获取第一待共识数据,确定第一待共识数据所属的第二区块高度;
区块对比模块,用于将第二区块高度与过渡区块高度区间内的最大区块高度进行对比;
区块共识模块,用于若第二区块高度小于或等于过渡区块高度区间内的最大区块高度,则根据第一待共识数据生成第一待共识区块,对第一待共识区块进行共识处理;
区块共识模块,还用于当第一待共识区块共识通过时,将第一待共识区块添加至区块链中。
其中,数据处理装置,还包括:
消息创建模块,用于若第二区块高度大于过渡区块高度区间内的最大区块高度,且区块链共识委员会未从第一共识节点集合切换至第二共识节点集合,则创建过渡管理消息池;
数据添加模块,用于将第一待共识数据添加至过渡管理消息池中;过渡管理消息池用于指示第二共识节点集合中的共识节点,在开始进行共识处理时对过渡管理消息池中的数据进行同步。
其中,业务处理模块,包括:
第二确定单元,用于当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,确定区块链共识委员会从第一共识节点集合切换至第二共识节点集合;
第三确定单元,用于根据共识索引号确定目标节点与第二共识节点集合之间的关联关系;共识索引号是指第二共识节点集合中的共识节点的索引号;
第二获取单元,用于若关联关系指示目标节点属于第二共识节点集合,则将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中,根据共识消息池获取目标区块,对目标区块进行共识处理;过渡管理消息池中的数据包括在过渡共识时间段内所获取到的第二待共识数据;第二待共识数据所属的区块高度大于过渡区块高度区间内的最大区块高度。
其中,第三确定单元,包括:
第一获取子单元,用于获取第二共识周期的共识配置信息中的共识索引号,以及针对目标节点的目标索引号;
第一确定子单元,用于根据目标索引号以及共识索引号,确定目标节点与第二共识节点集合之间的关联关系。
其中,第一确定子单元,具体用于将共识索引号与目标索引号进行对比;
第一确定子单元,具体用于若共识索引号中存在与目标索引号相同的索引号,则确定关联关系为目标节点属于第二共识节点集合;
第一确定子单元,具体用于若共识索引号中不存在与目标索引号相同的索引号,则确定关联关系为目标节点不属于第二共识节点集合。
其中,数据处理装置,还包括:
第四获取模快,用于在过渡共识时间段内获取针对第二共识周期的共识配置信息;
则第二获取单元,包括:
配置更新子单元,用于若关联关系指示目标节点属于第二共识节点集合,且目标节点也属于第一共识节点集合,则将第一共识周期的共识配置信息更新为第二共识周期的共识配置信息;
第二获取子单元,用于将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中,根据共识消息池以及第二共识周期的共识配置信息获取目标区块,对目标区块进行共识处理。
其中,第二获取单元,包括:
第一同步子单元,用于若关联关系指示目标节点属于第二共识节点集合,且目标节点不属于第一共识节点集合,则对由第一共识节点集合所共识通过的区块进行同步;
第二同步子单元,用于在将由第一共识节点集合所共识通过的区块同步到数据账本时,将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中;
第三获取子单元,用于根据数据账本以及共识消息池获取目标区块,对目标区块进行共识处理。
其中,业务处理模块,还包括:
共识暂停单元,用于若关联关系指示目标节点不属于第二共识节点集合,且目标节点属于第一共识节点集合,则从区块链共识委员会中退出,暂停对第二共识周期内的区块的共识处理;
区块同步单元,用于将由第二共识节点集合所共识通过的区块同步到数据账本。
其中,第二共识节点集合包括目标共识节点;由第二共识节点集合所共识通过的区块包括待同步区块;
区块同步单元,包括:
第四获取子单元,用于获取目标共识节点发送的区块同步消息;区块同步消息包括待同步区块以及待同步区块对应的区块签名;
第五获取子单元,用于从第二共识周期的共识配置信息中获取目标共识节点的节点公钥,根据节点公钥对区块签名进行验签,得到待验证哈希值;
第六获取子单元,用于获取待同步区块对应的区块哈希值,将区块哈希值以及待验证哈希值进行对比;
第三同步子单元,用于若区块哈希值与待验证哈希值相同,则确定待同步区块为合法区块,将待同步区块同步到数据账本。
本申请一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以使得计算机设备执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中的方法。
在本申请实施例中,当在第一共识周期中,确定选举区块高度时,目标节点可以基于选举区块高度以及过渡区块数量确定过渡区块高度区间,第一共识节点集合中的共识节点可以继续对属于过渡区块高度区间内的区块进行共识处理。在第一共识节点集合中的共识节点对过渡区块进行共识处理的同时,第二共识节点集合中的共识节点可以同步与第二共识周期相关的共识数据,因此当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,第二共识节点集合中的共识节点已经完成对与第二共识周期相关的共识数据的同步。上述可知,本申请可以在从第一共识节点集合切换到第二共识节点集合时,无需等待第二共识节点集合中的共识节点同步与第二共识周期相关的共识数据,从而可以使第二共识节点集合更加及时地对目标区块进行实时共识处理,避免在切换共识节点集合时出现较长时间地暂停区块共识的情况,因此,本申请可以提高区块链业务服务的连贯性和时效性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种系统架构示意图;
图2是本申请实施例提供的一种基于区块链的数据处理的场景示意图;
图3是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图4是本申请实施例提供的一种基于区块链的数据处理的场景示意图;
图5是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图6是本申请实施例提供的一种基于区块链的数据处理的场景示意图;
图7是本申请实施例提供的一种基于区块链的数据处理的场景示意图;
图8是本申请实施例提供的一种基于区块链的数据处理的场景示意图;
图9是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图10是本申请实施例提供的一种基于区块链的数据处理的场景示意图;
图11是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图12是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图;
图13是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解,首先对部分名词进行以下简单解释:
1、区块链:狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前获取的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。区块链的目标是实现一个分布的数据记录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成,后继区块中记录前继区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中的节点提议添加一个新的区块,必须经过共识机制对区块达成共识确认。
2、哈希值:也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前继区块的哈希值,前继区块被称为当前区块的父区块。哈希值是区块链技术中的潜力核心基础和最重要的方面,它保留了记录和查看数据的真实性,以及区块链作为一个整体的完整性。
3、区块链网络将节点区分为共识节点(也可以称作核心节点)以及同步节点(可以包括数据节点以及轻节点)。其中,共识节点负责区块链全网的共识业务;同步节点负责同步共识节点的账本信息,即同步最新的区块数据。无论是共识节点还是同步节点,其内部构造都包括网络通信组件,因为区块链网络本质是一个点对点(Peer to Peer,P2P)网络,需通过P2P组件与区块链网络中的其他节点进行通信。区块链网络中的资源和服务都分散在各个节点上,信息的传输和服务的实现都直接在节点之间进行,无需中间环节或中心化的服务器(第三方)介入。
请参见图1,图1是本申请实施例提供的一种系统架构示意图。如图1所示,该系统架构可以为区块链网络,其中,区块链网络可以包括共识网络101以及同步网络102;同步网络102中的节点可以称为同步节点,同步节点主要进行业务执行,不参与记账共识,通过身份认证的方式从共识网络101中获得区块数据。共识网络101也可以称作核心网络,共识网络101中的节点可以称为共识节点,共识节点拥有全量数据。其中,共识网络101和同步网络102可以处在不同网络环境下,通常来说,共识网络101处于私有网络中而同步网络102处于公有网络中,二者通过路由边界进行交互。
请再参见图1,共识网络101可以包括共识节点1011、共识节点1012、...、共识节点1013。可以理解的是,上述共识网络101可以包括一个或者多个共识节点,这里将不对共识节点的数量进行限制。
请再参见图1,同步网络102可以包括同步节点1021、同步节点1022、同步节点1023、...、同步节点1024以及同步节点1025。可以理解的是,上述同步网络102可以包括一个或者多个同步节点,这里将不对同步节点的数量进行限制。
每个节点(包括共识网络101中的共识节点以及同步网络102中的同步节点)在进行正常工作时可以接收到客户端发送的交易数据,并基于接收到的交易数据生成区块,然后进行区块上链处理。为了保证各个节点之间的数据互通,每个节点之间可以存在数据连接,例如共识节点1011与共识节点1012之间存在数据连接,共识节点1011与共识节点1013之间存在数据连接,同步节点1021与同步节点1023之间存在数据连接等等。
进一步地,共识网络101与同步网络102之间存在数据连接,例如共识节点1011与同步节点1022之间存在数据连接,共识节点1012与同步节点1023之间存在数据连接等等。
可以理解的是,节点之间可以通过上述数据连接进行数据或者区块传输。上述节点之间的数据连接可以基于节点标识,对于区块链网络中的每个节点,均具有与其对应的节点标识,而且上述每个节点均可以存储与自身有相连关系的其他节点的节点标识,以便后续根据其他节点的节点标识,将获取到的数据或生成的区块广播至其他节点,例如共识节点1011中可以维护一个如表1所示的节点标识列表,该节点标识列表保存着其他节点的节点名称和节点标识。
表1
节点名称 | 节点标识 |
共识节点1012 | 117.114.151.174 |
共识节点1013 | 117.116.189.145 |
… | … |
同步节点1021 | 117.114.151.183 |
同步节点1022 | 117.116.189.125 |
同步节点1023 | 119.250.485.362 |
… | … |
其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任意一种能够用于标识区块链网络中节点的信息,表1中仅以IP地址为例进行说明。
假设共识节点1011的节点标识为117.116.156.425,则共识节点1011可以通过节点标识117.114.151.183,向同步节点1021发送数据同步请求,且同步节点1021通过节点标识117.116.156.425,可以知道该数据同步请求是共识节点1011所发送的;同理,同步节点1023可以通过节点标识117.116.156.425,向共识节点1011发送交易数据A,且共识节点1011通过节点标识119.250.485.362,可以知道该交易数据A是同步节点1023所发送的,其他节点之间的数据传输亦如此,故不再一一进行赘述。
可以理解的是,上述的数据连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接方式,本申请在此不做限制。
其中,图1中的共识节点1011、共识节点1012、...、共识节点1013、同步节点1021、同步节点1022、同步节点1023、...、同步节点1024以及同步节点1025可以包括手机、平板电脑、笔记本电脑、掌上电脑、智能音响、移动互联网设备(MID,mobile internet device)、POS(Point Of Sales,销售点)机、可穿戴设备(例如智能手表、智能手环等)等。
可以理解的是,本申请实施例所提供的基于区块链的数据处理方法可以由计算机设备执行,计算机设备包括但不限于终端或服务器。上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。上述终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
进一步地,请参见图2,图2是本申请实施例提供的一种基于区块链的数据处理的场景示意图。如图2所示,区块链节点集合201包括区块链节点201a、区块链节点202a、区块链节点203a、…、区块链节点206a,在第一共识周期中,区块链节点206a属于第一共识节点集合20c。其中,第一共识节点集合20c中的共识节点(也包括区块链节点206a)可以用于在第一共识周期中对区块1至区块100进行上链处理。上述第一共识节点集合可以理解为第一共识周期所对应的区块链共识委员会,该区块链共识委员会是区块链中负责共识区块的节点,又被称为记账者。
为了便于叙述,将区块高度为X的区块命名为区块X,并将区块高度为X叙述为区块高度X,X为正整数。例如将区块高度为1的区块命名为区块1,将区块高度为1叙述成区块高度1;将区块高度为98的区块命名为区块98,将区块高度为98叙述成区块高度98,其他区块高度对应的区块命名亦如此,此处不再一一进行赘述。
请再参见图2,目标节点20a可以是区块链节点集合201中的任意一个区块链节点,目标节点20a可以包括任期管理组件20b,该任期管理组件20b可以包括第一共识周期的共识区块范围,如图2中所示的区块1至区块100;可以包括针对第一共识周期的共识节点集合切换条件,如图2中所示的区块98,可以理解的是,上述共识节点集合切换条件中的“区块98”,可以是指第一共识节点集合20c生成区块高度为98的区块,也可以指代区块高度为98的区块成功上链,此处不限定区块98的区块状态,可以根据实际应用场景进行设置。
本申请实施例以第一共识节点集合20c中的某个共识节点生成区块98为例进行叙述,如图2所示,此时,第一共识周期内所生成的区块高度(即区块高度98)满足共识节点集合切换条件,所以目标节点20a开始选举第二共识周期对应的共识节点;其中,第二共识周期的共识区块范围可以包括区块101至区块200。目标节点20a将选举出的第二共识周期的共识节点添加至第二共识节点集合20d中,当第二共识节点集合20d中的共识节点完全确定时,将第一共识节点集合20c正在生成的区块(如图2中所述的区块99)确定为选举区块,将该选举区块对应的区块高度确定为选举区块高度(即区块99对应的区块高度99)。可以理解的是,选举区块还可以为第一共识节点集合20c正在共识的区块或正在上链的区块,此处不限定选举区块的区块状态,可以根据实际应用场景进行设置。
不同于以往的方法,本申请实施例在第一共识周期与第二共识周期的更换处,创建一个过渡区块高度区间。目标节点20a首先获取过渡区块数量,本申请实施例以过渡区块数量为10为例进行叙述,结合选举区块高度(例如区块高度99)以及过渡区块数量(10个),目标节点20a可以确定过渡区块20e为区块100、区块101、区块102、…、区块109。其中,区块100为第一共识周期中的区块,而区块101、区块102、…、区块109为第二共识周期中的区块。
第一共识节点集合20c中的共识节点(包括区块链节点206a)对区块100进行共识,当共识通过时,对区块100进行上链。此时,不会将区块链共识委员会从第一共识节点集合20c切换至第二共识节点集合20d,即针对第二共识周期中的区块101、区块102、…、区块109,仍然由第一共识节点集合20c中的共识节点进行共识。在第一共识节点集合20c对过渡区块20e(如图2中示例的区块100、区块101、区块102、…、区块109)进行共识处理的同时,第二共识节点集合20d中的共识节点(包括区块链节点201a)可以同步与第二共识周期相关的共识数据。
当第一共识节点集合20c中的共识节点所生成的区块高度等于过渡区块高度区间内的最大区块高度时,如本申请实施例示例的区块高度109,会将区块链共识委员会从第一共识节点集合20c切换至第二共识节点集合20d,通过上述可知,第二共识节点集合20d中的共识节点已同步有与第二共识周期相关的共识数据,因此,无需等待第二共识节点集合同步与第二共识周期相关联的共识配置信息,从而可以使第二共识节点集合中的共识节点实时地生成区块109的下一个区块,即区块110(目标区块),如图2所示。
目标节点20a可以根据自身的节点属性(如共识节点属性或同步节点属性),进行与共识节点集合切换事件相关联的业务处理,具体业务处理请参见下文图3所对应的实施例中的描述。
上述可知,本申请实施例提出了一种区块链共识委员会交接切换共识节点集合的方法,该方法能够保证新选举的共识治理委员会节点(即上文中的第二共识节点集合20d)可以平滑接管区块链网络的记账权限,让老的共识治理委员会节点(即上文中的第一共识节点集合20c)顺利退出区块链网络的记账权限,进而提高区块链业务服务的连贯性和时效性。
进一步地,请参见图3,图3是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。如图3所示,该数据处理过程可以包括如下步骤。
步骤S101,当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出第二共识节点集合时所生成区块的高度确定为选举区块高度;第一共识周期中的最大区块高度对应的区块,为第二共识周期中的最小区块高度对应的区块的前继区块。
具体的,目标节点将在第一共识周期内已生成的最大区块高度,确定为第一区块高度;获取针对第一共识周期的共识节点集合切换条件,将第一区块高度与共识节点集合切换条件进行匹配;若第一区块高度与共识节点集合切换条件匹配成功时,对区块链节点集合中的每个节点分配针对第二共识周期的索引号;索引号包括共识索引号;将具有共识索引号的节点添加至第二共识周期对应的第二共识节点集合中。
请一并参见图4,图4是本申请实施例提供的一种基于区块链的数据处理的场景示意图。如图4所示,第一共识周期的已生成区块区间40d可以包括区块1、…区块98,即目前最大的区块高度为区块98对应的区块高度98,则区块高度98为上述的第一区块高度。区块链节点集合40c可以包括区块链节点401c、区块链节点402c、区块链节点403c、…、区块链节点406c以及第一共识节点集合4c中的其他共识节点。
目标节点40a可以是区块链节点集合中的任意一个区块链节点,目标节点40a可以包括任期管理组件40b,如图4所示,该任期管理组件40b可以包括第一共识周期的共识区块范围,如图4中所示的区块1至区块100;可以包括针对第一共识周期的共识节点集合切换条件(也可以称之为图4中的第一切换条件),可以参见上文图2所对应的实施例中针对共识节点集合切换条件的详细叙述,此处不再进行赘述。
该任期管理组件40b可以包括针对第一共识周期的第一共识索引号,其中,全文所述的索引号可以理解成不同于节点自身标识(如上文表1所示的节点标识)的节点索引标识。第一共识索引号用于表征第一共识节点集合4c中的共识节点(包括区块链节点406c)的索引号,如图4中所示,第一共识索引号可以包括索引号001、…、索引号010,其中,区块链节点406c的索引号为索引号001。可以理解的是,不同的共识周期,同一个节点的索引号可能会发生变化,所以不同的共识周期,其对应的共识节点可能不一样的。
任期管理组件40b可以包括针对第一共识周期的共识配置信息(也可以称之为图4中的第一共识配置信息),第一共识配置信息可以包括第一共识节点集合4c中每个共识节点的节点信息,以及针对第一共识周期的共识算法等。
该任期管理组件40b可以验证本节点(即目标节点40a)是否被选为下一届区块链共识委员会,若是,则会被添加至第二共识节点集合40e;任期管理组件40b还可以验证给定节点是否为区块提案节点,即出块节点;还拥有共识消息签名等功能。在本申请实施例中,任期管理组件40b可以维护一个区块链共识委员会过渡期,该过渡期通过连续的区块来表示,比如在选举出新的区块链共识委员会(比如第二共识节点集合40e)后,上一任的区块链共识委员会(比如第一共识节点集合4c)继续对10个区块进行共识处理,然后新的区块链共识委员会接管记账,此时,上一任的区块链共识委员会退出记账,该10个区块就是过渡期或过渡区块。
请再参见图4,目标节点40a从任期管理组件40b中获取针对第一共识周期的共识节点集合切换条件(即第一切换条件),然后将第一区块高度(即区块高度98)与共识节点集合切换条件进行匹配。若共识节点集合切换条件为区块高度99,则第一区块高度与共识节点集合切换条件匹配失败,目标节点40a等待下一区块的生成;若共识节点集合切换条件为区块高度98,则第一区块高度与共识节点集合切换条件匹配成功。如图4所示,目标节点40a对区块链节点集合40c中的每个节点分配针对第二共识周期的索引号,针对第二共识周期,假设区块链节点405c的索引号为索引号001,区块链节点406c的索引号为索引号020;假设第二共识索引号(即针对第二共识周期的共识索引号)包括索引号001,不包括索引号020,则区块链节点405c将被添加至第二共识节点集合40e中,而区块链节点406c将不会被添加至第二共识节点集合40e中,如图4所示。
请再参见图4,目标节点40a是在第一共识周期的已生成区块区间40f生成区块99时,确定第二共识节点集合40e的,所以将区块高度99确定为选举区块高度。
步骤S102,获取过渡区块数量,根据选举区块高度以及过渡区块数量确定过渡区块高度区间;第二共识节点集合中的共识节点用于在过渡共识时间段内同步与第二共识周期相关的共识数据,过渡共识时间段是指,第一共识周期对应的第一共识节点集合对属于过渡区块高度区间的区块进行共识处理所消耗的时长。
具体的,上述共识数据可以包括过渡区块的区块数据、针对第二共识周期的共识配置信息(也可以称之为第二共识配置信息),第二共识配置信息可以包括针对第二共识周期的共识算法(该共识算法与第一共识周期的共识算可以相同或不相同),以及第二共识节点集合中共识节点的节点信息。
目标节点在选举区块高度确定新的区块链共识委员会(即第二共识节点集合)后,通过上述任期管理组件更新相关信息,相关信息可以包括自身是否被选为新的共识节点。新的区块链共识委员会,记录选举区块高度,分配消息池等。
步骤S103,当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,根据目标节点与第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理;第二共识节点集合中的共识节点用于从目标区块开始进行共识处理;过渡区块高度区间内的最大区块高度对应的区块为目标区块的前继区块。
具体的,每次区块写入本地账本(即数据账本)后,目标节点均可以按照上述任期管理组件确定下个区块高度是否到了区块链共识委员会切换的时间点,如果不是,则继续使用老的区块链共识委员会(即上述的第一共识节点集合中的共识节点)记账;如果是,则从任期管理组件读取相关信息,首先是本节点在第二共识周期的索引号,该索引号会标识本节点是否当选新的区块链共识委员会(即属于上述的第二共识节点集合);其次,目标节点还可以根据已在过渡共识时间段内所读取的第二共识周期的共识配置信息,更新任期管理组件中的共识配置;目标节点还可以读取任期管理组件的过渡管理消息池,将过渡管理消息池中的待共识数据同步至第二共识周期对应的共识消息池。
目标节点在切换区块链共识委员会的过程中,主要有三种情况,一种是目标节点参与老的区块链共识委员会记账,同时又被选为新的区块链共识委员会继续参与记账;另外一种是目标节点不参与老的区块链共识委员会记账,但是参与新的区块链共识委员会记账;第三种是目标节点参与老的区块链共识委员会记账,但不参与新的区块链共识委员会记账。
针对上面三种情况,第一种情况,目标节点在更新完与第二共识周期相关联的共识数据后,先处理上述任期管理组件中过渡管理消息池里的待共识数据后继续记账工作;第二种情况,目标节点在本地账本数据和其他共识节点的账本数据同步由第一共识节点集合所生成的区块后,处理任期管理组件中过渡管理消息池里的待共识数据,然后加入到共识记账工作中;第三种区块,目标节点退出共识记账转而参与账本数据同步。
其中,通过索引号可以确认目标节点与第二共识节点集合之间的关联关系,以及目标节点根据关联关系进行与共识节点集合切换事件相关联的业务处理的具体过程请参见下文图5、图9以及图11分别对应的实施例中的描述。
在本申请实施例中,当在第一共识周期中,确定选举区块高度时,目标节点可以基于选举区块高度以及过渡区块数量确定过渡区块高度区间,第一共识节点集合中的共识节点可以继续对属于过渡区块高度区间内的区块进行共识处理。在第一共识节点集合中的共识节点对过渡区块进行共识处理的同时,第二共识节点集合中的共识节点可以同步与第二共识周期相关的共识数据,因此当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,第二共识节点集合中的共识节点已经完成对与第二共识周期相关的共识数据的同步。上述可知,本申请可以在从第一共识节点集合切换到第二共识节点集合时,无需等待第二共识节点集合中的共识节点同步与第二共识周期相关的共识数据,从而可以使第二共识节点集合更加及时地对目标区块进行实时共识处理,避免在切换共识节点集合时出现较长时间地暂停区块共识的情况,因此,本申请可以提高区块链业务服务的连贯性和时效性。
进一步地,请参见图5,图5是本申请实施例提供一种基于区块链的数据处理方法的流程示意图。如图5所示,该数据处理过程可以包括步骤S201-步骤S207。
步骤S201,当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出第二共识节点集合时所生成区块的高度确定为选举区块高度;第一共识周期中的最大区块高度对应的区块,为第二共识周期中的最小区块高度对应的区块的前继区块。
步骤S202,获取过渡区块数量,根据选举区块高度以及过渡区块数量确定过渡区块高度区间;第二共识节点集合中的共识节点用于在过渡共识时间段内同步与第二共识周期相关的共识数据,过渡共识时间段是指,第一共识周期对应的第一共识节点集合对属于过渡区块高度区间的区块进行共识处理所消耗的时长。
其中,步骤S201至步骤S202的具体实现过程请参见上文图3所对应的实施例中步骤S101至步骤S102的描述,此处不再进行赘述。
步骤S203,当目标节点属于第一共识节点集合时,获取第一待共识数据,确定第一待共识数据所属的第二区块高度,将第二区块高度与过渡区块高度区间内的最大区块高度进行对比。
具体的,若第二区块高度小于或等于过渡区块高度区间内的最大区块高度,则根据第一待共识数据生成第一待共识区块,对第一待共识区块进行共识处理;当第一待共识区块共识通过时,将第一待共识区块添加至区块链中。
若第二区块高度大于过渡区块高度区间内的最大区块高度,且区块链共识委员会未从第一共识节点集合切换至第二共识节点集合,则创建过渡管理消息池;将第一待共识数据添加至过渡管理消息池中;过渡管理消息池用于指示第二共识节点集合中的共识节点,在开始进行共识处理时对过渡管理消息池中的数据进行同步。
在第一共识周期中确定针对第二共识周期的第二共识节点集合后,目标节点的任期管理组件中的共识配置信息会发生更新,如图3中的步骤S102或图5中步骤S202所描述的内容,当前任期内(即第一共识周期)的区块链共识委员会(即第一共识节点集合)在记账过程中,收到待共识消息(例如待共识数据)后,将验证该消息是否为下个任期(即第二共识周期)内的消息,验证方式主要检查待共识数据所属的区块高度是否落在上述的过渡区块高度区间内,是否大于过渡区块高度区间。如果待共识数据所属的区块高度落在上述的过渡区块高度区间内,则待共识数据所属的区块为过渡区块,而过渡区块可能是第一共识周期中的区块,也可能为第二共识周期中的区块,但过渡区块统一由第一共识节点集合中的共识节点进行共识处理。如果待共识数据所属的区块高度大于过渡区块高度区间内的最大区块高度,则确定待共识数据所属的区块为由第二共识节点集合所进行共识的区块。
如果待共识数据所属的区块高度大于过渡区块高度区间内的最大区块高度,且区块链共识委员会未从第一共识节点集合切换至第二共识节点集合时,目标节点可以将待共识数据放入过渡管理消息池中,具体请参见下文描述。
当目标节点属于第一共识节点集合时,请一并参见图6,图6是本申请实施例提供的一种基于区块链的数据处理的场景示意图。如图6所示,目标节点50a中的任期管理组件50g记录选举区块高度为区块高度99,过渡区块高度区间为区块高度100至区块高度109。
目标节点50a获取第一待共识数据,然后确定第一待共识数据所属的第二区块高度;从任期管理组件50g中获取过渡区块高度区间内的最大区块高度,即区块高度109,目标节点50a将第二区块高度与区块高度109进行对比;若第二区块高度小于或等于区块高度109,例如第二区块高度为区块高度108,则根据第一待共识数据生成第一待共识区块50b,将第一待共识区块50b广播至第一共识节点集合50c中的共识节点(可以包括目标节点50a自身),以对第一待共识区块50b进行共识处理;当第一待共识区块50b共识通过时,将第一待共识区块50b添加至区块链50d中,如图6所示,区块链50d可以包括区块100、…、区块50b。
请再参见图6,若第二区块高度大于区块高度109,例如第二区块高度为区块110,且区块链共识委员会未从第一共识节点集合切换至第二共识节点集合,此时,目标节点50a创建过渡管理消息池50e,然后将第一待共识数据添加至过渡管理消息池50e中。等到区块链共识委员会将第一共识节点集合切换至第二共识节点集合时,第二共识节点集合中的共识节点(例如图6示例的区块链节点50h),在开始进行共识处理时对过渡管理消息池50e中的数据(包括第一待共识数据)进行同步,将其同步至自身所创建的针对第二共识周期的共识消息池50f中。
步骤S204,当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,确定区块链共识委员会从第一共识节点集合切换至第二共识节点集合。
具体的,结合上文的叙述,可以知道在本申请实施例中,区块链共识委员会从第一共识节点集合切换至第二共识节点集合的切换点,不仅与第一共识周期与第二共识周期之间的切换点相关联,更加与第一共识节点集合所共识的过渡区块(该过渡区块可能属于第二共识周期中的区块)的区块高度相关联。
步骤S205,根据共识索引号确定目标节点与第二共识节点集合之间的关联关系;共识索引号是指第二共识节点集合中的共识节点的索引号。
具体的,根据共识索引号确定目标节点与第二共识节点集合之间的关联关系的具体过程可以包括:获取第二共识周期的共识配置信息中的共识索引号,以及针对目标节点的目标索引号;将共识索引号与目标索引号进行对比;若共识索引号中存在与目标索引号相同的索引号,则确定关联关系为目标节点属于第二共识节点集合;若共识索引号中不存在与目标索引号相同的索引号,则确定关联关系为目标节点不属于第二共识节点集合。
请一并参见图7,图7是本申请实施例提供的一种基于区块链的数据处理的场景示意图。如图7所示,目标节点70a的任期管理组件70b中可以包括目标节点70a自身的目标索引号,第二共识周期的共识区块范围(图7示例为区块101至区块200),针对第二共识节点集合中的共识节点的索引号(也可以称之为第二共识索引号),以及过渡区块高度区间。可以理解的是,过渡区块高度区间内的区块高度可以包括第一共识周期内的区块所对应的区块高度(如区块高度100),也可以包括第二共识周期内的区块所对应的区块高度(如区块高度109),其可以根据实际应用场景进行设置,此处不限定过渡区块高度区间的范围。
目标节点70a获取第二共识索引号以及目标索引号,然后将两者进行对比,若共识索引号中存在与目标索引号相同的索引号,如图7所示,则确定目标节点70a与第二共识节点集合70d之间的关联关系,为目标节点70a属于第二共识节点集合70d,其中,区块链节点集合70c还可以包括区块链节点701c、…、区块链节点702c。若共识索引号中不存在与目标索引号相同的索引号,则确定上述关联关系为目标节点70a不属于第二共识节点集合70e,如图7所示,目标节点70a属于区块链节点集合70c,但不在第二共识节点集合70c的范围内。
步骤S206,若关联关系指示目标节点属于第二共识节点集合,则将第一共识周期的共识配置信息更新为第二共识周期的共识配置信息。
步骤S207,将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中,根据共识消息池以及第二共识周期的共识配置信息获取目标区块,对目标区块进行共识处理。
具体的,结合步骤S206以及步骤S207叙述,目标节点在过渡共识时间段内获取针对第二共识周期的共识配置信息;过渡管理消息池中的数据包括在过渡共识时间段内所获取到的第二待共识数据;第二待共识数据所属的区块高度大于过渡区块高度区间内的最大区块高度。
请一并参见图8,图8是本申请实施例提供的一种基于区块链的数据处理的场景示意图。如图8所示,区块链节点集合80a可以包括区块链节点801a、区块链节点802a、区块链节点803a、…、目标节点801b以及第一共识节点集合80b中的其他共识节点。明显地,图8所示的第一共识节点集合80b以及第二共识节点集合80c均包括目标节点801b,所以,目标节点801b属于第二共识节点集合80c,也属于第一共识节点集合80b。
在第一共识节点集合80b对过渡区块高度区间内所属的区块进行共识处理时,第二共识节点集合80c可以同步获取与第二共识周期相关联的共识数据,该共识数据可以包括与第二共识周期相关联的共识配置信息(也可以称之为第二共识配置信息),以及由第一共识节点集合80b所共识通过的过渡区块。所以当区块链共识委员会从第一共识节点集合切换至第二共识节点集合时,如图8所示,目标节点801b可以将任期管理组件80d中第一共识周期的共识配置信息(也可以称之为第一共识配置信息),更新为第二共识配置信息。
同时,目标节点801b可以将任期管理组件80d中的过渡管理消息池中的数据(也可以称之为第二待共识数据),同步至第二共识周期对应的共识消息池80e中。如图8所示,目标节点801b可以根据共识消息池80e中的数据(包括第二待共识数据)以及第二共识配置信息获取目标区块80f,然后对目标区块80f进行共识处理。可以理解的是,目标区块80f由出块节点生成,该出块节点可以为第二共识节点集合80c中的任一个共识节点(也包括目标节点801b)。
综合步骤S201-步骤S207的描述,图5主要叙述目标节点属于第一共识节点集合,又属于第二共识节点集合时,其进行的业务工作。
在本申请实施例中,当在第一共识周期中,确定选举区块高度时,目标节点可以基于选举区块高度以及过渡区块数量确定过渡区块高度区间,第一共识节点集合中的共识节点可以继续对属于过渡区块高度区间内的区块进行共识处理。在第一共识节点集合中的共识节点对过渡区块进行共识处理的同时,第二共识节点集合中的共识节点可以同步与第二共识周期相关的共识数据,因此当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,第二共识节点集合中的共识节点已经完成对与第二共识周期相关的共识数据的同步。上述可知,本申请可以在从第一共识节点集合切换到第二共识节点集合时,无需等待第二共识节点集合中的共识节点同步与第二共识周期相关的共识数据,从而可以使第二共识节点集合更加及时地对目标区块进行实时共识处理,避免在切换共识节点集合时出现较长时间地暂停区块共识的情况,因此,本申请可以提高区块链业务服务的连贯性和时效性。
进一步地,请参见图9,图9是本申请实施例提供一种基于区块链的数据处理方法的流程示意图。如图9所示,该数据处理过程可以包括步骤S301-步骤S307。
步骤S301,当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出第二共识节点集合时所生成区块的高度确定为选举区块高度;第一共识周期中的最大区块高度对应的区块,为第二共识周期中的最小区块高度对应的区块的前继区块。
步骤S302,获取过渡区块数量,根据选举区块高度以及过渡区块数量确定过渡区块高度区间;第二共识节点集合中的共识节点用于在过渡共识时间段内同步与第二共识周期相关的共识数据,过渡共识时间段是指,第一共识周期对应的第一共识节点集合对属于过渡区块高度区间的区块进行共识处理所消耗的时长。
步骤S303,当目标节点属于第一共识节点集合时,获取第一待共识数据,确定第一待共识数据所属的第二区块高度,将第二区块高度与过渡区块高度区间内的最大区块高度进行对比。
步骤S304,当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,确定区块链共识委员会从第一共识节点集合切换至第二共识节点集合。
步骤S305,根据共识索引号确定目标节点与第二共识节点集合之间的关联关系;共识索引号是指第二共识节点集合中的共识节点的索引号。
其中,步骤S301-步骤S302的具体实现过程请参见上文图3所对应的实施例中步骤S101-步骤S102的描述,此处不再进行赘述。步骤S303-步骤S305的具体实现过程请参见上文图5所对应的实施例中步骤S203-步骤S205的描述,此处亦不再进行赘述。
步骤S306,若关联关系指示目标节点不属于第二共识节点集合,则从区块链共识委员会中退出,暂停对第二共识周期内的区块的共识处理。
若目标节点不属于第二共识节点集合,请再参见图7,此时,目标节点70a在共识完过渡区块高度区间所属的区块后,将退出区块链共识委员会,并不再对包括目标区块的第二共识周期内的区块70f进行共识处理。
步骤S307,将由第二共识节点集合所共识通过的区块同步到数据账本。
具体的,第二共识节点集合包括目标共识节点;由第二共识节点集合所共识通过的区块包括待同步区块;获取目标共识节点发送的区块同步消息;区块同步消息包括待同步区块以及待同步区块对应的区块签名;从第二共识周期的共识配置信息中获取目标共识节点的节点公钥,根据节点公钥对区块签名进行验签,得到待验证哈希值;获取待同步区块对应的区块哈希值,将区块哈希值以及待验证哈希值进行对比;若区块哈希值与待验证哈希值相同,则确定待同步区块为合法区块,将待同步区块同步到数据账本。
请一并参见图10,图10是本申请实施例提供的一种基于区块链的数据处理的场景示意图。如图10所示,区块链节点集合90a可以包括目标节点901a、区块链节点902a、…、目标共识节点901b以及第二共识节点集合90b中的其他共识节点;由第二共识节点集合90b所共识通过的区块90c可以包括待同步区块90e。目标节点901a获取目标共识节点901b发送的区块同步消息,该区块同步消息可以包括待同步区块90e以及待同步区块90e对应的区块签名90d,该区块签名90d,是目标共识节点901b根据自身的节点私钥对待同步区块90e进行签名所生成的。
请再参见图10,目标节点901a所存储的第二共识周期的共识配置信息90f,可以包括区块链节点集合90a中每个区块链节点分别对应的节点公钥,本申请实施例以目标节点901a以及其对应的节点公钥90f,目标共识节点901b以及其对应的节点公钥90g,区块链节点902a以及其对应的节点公钥90h为例进行叙述。
目标节点901a根据区块同步消息从共识配置信息90f中获取目标共识节点901b的节点公钥90g,根据节点公钥90g对区块签名90d进行验签,可以得到待验证哈希值90i,如图10示例的55662244333khgbvfss543n1。目标节点901a根据哈希算法获取待同步区块90e对应的区块哈希值,然后将区块哈希值与待验证哈希值90i进行对比,得到对比结果90j。如果对比结果为对比相同结果,即区块哈希值与待验证哈希值90i相同,则确定待同步区块90e为合法区块,此时,目标节点901a将待同步区块90e同步到数据账本。如果对比结果为对比不同结果,即区块哈希值与待验证哈希值90i不相同,则确定待同步区块90e为非法区块,此时,目标节点901a可以发送区块同步失败消息至第二共识节点集合90b,以使其检测待同步区块90e,上述区块同步失败消息可以包括待同步区块90e的区块高度等数据。
综合步骤S301-步骤S307的描述,图5主要叙述目标节点属于第一共识节点集合,但不属于第二共识节点集合时,其进行的业务工作。
在本申请实施例中,当在第一共识周期中,确定选举区块高度时,目标节点可以基于选举区块高度以及过渡区块数量确定过渡区块高度区间,第一共识节点集合中的共识节点可以继续对属于过渡区块高度区间内的区块进行共识处理。在第一共识节点集合中的共识节点对过渡区块进行共识处理的同时,第二共识节点集合中的共识节点可以同步与第二共识周期相关的共识数据,因此当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,第二共识节点集合中的共识节点已经完成对与第二共识周期相关的共识数据的同步。上述可知,本申请可以在从第一共识节点集合切换到第二共识节点集合时,无需等待第二共识节点集合中的共识节点同步与第二共识周期相关的共识数据,从而可以使第二共识节点集合更加及时地对目标区块进行实时共识处理,避免在切换共识节点集合时出现较长时间地暂停区块共识的情况,因此,本申请可以提高区块链业务服务的连贯性和时效性。
进一步地,请参见图11,图11是本申请实施例提供一种基于区块链的数据处理方法的流程示意图。如图11所示,该数据处理过程可以包括步骤S401-步骤S407。
步骤S401,当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出第二共识节点集合时所生成区块的高度确定为选举区块高度;第一共识周期中的最大区块高度对应的区块,为第二共识周期中的最小区块高度对应的区块的前继区块。
步骤S402,获取过渡区块数量,根据选举区块高度以及过渡区块数量确定过渡区块高度区间;第二共识节点集合中的共识节点用于在过渡共识时间段内同步与第二共识周期相关的共识数据,过渡共识时间段是指,第一共识周期对应的第一共识节点集合对属于过渡区块高度区间的区块进行共识处理所消耗的时长。
步骤S403,当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,确定区块链共识委员会从第一共识节点集合切换至第二共识节点集合。
步骤S404,根据共识索引号确定目标节点与第二共识节点集合之间的关联关系;共识索引号是指第二共识节点集合中的共识节点的索引号。
其中,步骤S401-步骤S402的具体实现过程请参见上文图3所对应的实施例中步骤S101-步骤S102的描述,此处不再进行赘述。步骤S403-步骤S404的具体实现过程请参见上文图5所对应的实施例中步骤S204-步骤S205的描述,此处亦不再进行赘述。
步骤S405,若关联关系指示目标节点属于第二共识节点集合,且目标节点不属于第一共识节点集合,则对由第一共识节点集合所共识通过的区块进行同步。
步骤S406,在将由第一共识节点集合所共识通过的区块同步到数据账本时,将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中。
步骤S407,根据数据账本以及共识消息池获取目标区块,对目标区块进行共识处理。
具体的,结合步骤S405-步骤S407叙述,除了上述图5以及图9所分别对应的实施例外,还存在目标节点属于第二共识节点集合,且目标节点不属于第一共识节点集合的情况,在这种情况下,由于目标节点不属于第一共识节点集合,故在获取目标区块前,需要对由第一共识节点集合所共识通过的区块进行同步,此外,还可以将任期管理组件中的过渡管理组件中的数据同步至第二共识周期对应的共识消息池中。由于目标节点在过渡共识时间段内获取针对第二共识周期的共识配置信息,所以目标节点可以在数据账本获取到由第一共识节点集合所共识通过的区块,以及共识消息池同步到第二待共识数据后,根据第二共识配置信息、数据账本以及待共识数据获取目标区块,然后对目标区块进行共识处理。可以理解的是,目标区块由出块节点生成,该出块节点可以为第二共识节点集合中的任一个共识节点(也包括目标节点)。
可选的,除了上述图5、图9以及图11分别对应的3种情况,即目标节点属于第二共识节点集合且属于第一共识节点集合、目标节点不属于第二共识节点集合且属于第一共识节点集合,以及目标节点属于第二共识节点集合且不属于第一共识节点集合,还存在一种情况,即目标节点不属于第二共识节点集合且不属于第一共识节点集合,此时,目标节点作为同步节点,参与区块链网络中的同步工作,即同步第一共识节点集合以及第二共识节点集合分别共识通过的区块。
在本申请实施例中,当在第一共识周期中,确定选举区块高度时,目标节点可以基于选举区块高度以及过渡区块数量确定过渡区块高度区间,第一共识节点集合中的共识节点可以继续对属于过渡区块高度区间内的区块进行共识处理。在第一共识节点集合中的共识节点对过渡区块进行共识处理的同时,第二共识节点集合中的共识节点可以同步与第二共识周期相关的共识数据,因此当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,第二共识节点集合中的共识节点已经完成对与第二共识周期相关的共识数据的同步。上述可知,本申请可以在从第一共识节点集合切换到第二共识节点集合时,无需等待第二共识节点集合中的共识节点同步与第二共识周期相关的共识数据,从而可以使第二共识节点集合更加及时地对目标区块进行实时共识处理,避免在切换共识节点集合时出现较长时间地暂停区块共识的情况,因此,本申请可以提高区块链业务服务的连贯性和时效性。
进一步地,请参见图12,图12是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图。上述数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图12所示,该数据处理装置1可以包括:第一获取模块11、第二获取模块12以及业务处理模块13。
第一获取模块11,用于当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出第二共识节点集合时所生成区块的高度确定为选举区块高度;第一共识周期中的最大区块高度对应的区块,为第二共识周期中的最小区块高度对应的区块的前继区块;
第二获取模块12,用于获取过渡区块数量,根据选举区块高度以及过渡区块数量确定过渡区块高度区间;第二共识节点集合中的共识节点用于在过渡共识时间段内同步与第二共识周期相关的共识数据,过渡共识时间段是指,第一共识周期对应的第一共识节点集合对属于过渡区块高度区间的区块进行共识处理所消耗的时长;
业务处理模块13,用于当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,根据目标节点与第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理;第二共识节点集合中的共识节点用于从目标区块开始进行共识处理;过渡区块高度区间内的最大区块高度对应的区块为目标区块的前继区块。
其中,第一获取模块11、第二获取模块12以及业务处理模块13的具体功能实现方式可以参见上述图3对应实施例中的步骤S101-步骤S103,这里不再进行赘述。
再请参见图12,第一获取模块11可以包括:第一确定单元111、第一获取单元112、分配索引单元113以及节点添加单元114。
第一确定单元111,用于目标节点将在第一共识周期内已生成的最大区块高度,确定为第一区块高度;
第一获取单元112,用于获取针对第一共识周期的共识节点集合切换条件,将第一区块高度与共识节点集合切换条件进行匹配;
分配索引单元113,用于若第一区块高度与共识节点集合切换条件匹配成功时,对区块链节点集合中的每个节点分配针对第二共识周期的索引号;索引号包括共识索引号;
节点添加单元114,用于将具有共识索引号的节点添加至第二共识周期对应的第二共识节点集合中。
其中,第一确定单元111、第一获取单元112、分配索引单元113以及节点添加单元114的具体功能实现方式可以参见上述图3对应实施例中的步骤S101,这里不再进行赘述。
再请参见图12,数据处理装置1还可以包括:第三获取模块14、区块对比模块15以及区块共识模块16。
第三获取模块14,用于当目标节点属于第一共识节点集合时,获取第一待共识数据,确定第一待共识数据所属的第二区块高度;
区块对比模块15,用于将第二区块高度与过渡区块高度区间内的最大区块高度进行对比;
区块共识模块16,用于若第二区块高度小于或等于过渡区块高度区间内的最大区块高度,则根据第一待共识数据生成第一待共识区块,对第一待共识区块进行共识处理;
区块共识模块16,还用于当第一待共识区块共识通过时,将第一待共识区块添加至区块链中。
其中,第三获取模块14、区块对比模块15以及区块共识模块16的具体功能实现方式可以参见上述图5对应实施例中的步骤S203,这里不再进行赘述。
再请参见图12,数据处理装置1还可以包括:消息创建模块17以及数据添加模块18。
消息创建模块17,用于若第二区块高度大于过渡区块高度区间内的最大区块高度,且区块链共识委员会未从第一共识节点集合切换至第二共识节点集合,则创建过渡管理消息池;
数据添加模块18,用于将第一待共识数据添加至过渡管理消息池中;过渡管理消息池用于指示第二共识节点集合中的共识节点,在开始进行共识处理时对过渡管理消息池中的数据进行同步。
其中,消息创建模块17以及数据添加模块18的具体功能实现方式可以参见上述图5对应实施例中的步骤S203,这里不再进行赘述。
再请参见图12,业务处理模块13可以包括:第二确定单元131、第三确定单元132以及第二获取单元133。
第二确定单元131,用于当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,确定区块链共识委员会从第一共识节点集合切换至第二共识节点集合;
第三确定单元132,用于根据共识索引号确定目标节点与第二共识节点集合之间的关联关系;共识索引号是指第二共识节点集合中的共识节点的索引号;
第二获取单元133,用于若关联关系指示目标节点属于第二共识节点集合,则将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中,根据共识消息池获取目标区块,对目标区块进行共识处理;过渡管理消息池中的数据包括在过渡共识时间段内所获取到的第二待共识数据;第二待共识数据所属的区块高度大于过渡区块高度区间内的最大区块高度。
其中,第二确定单元131、第三确定单元132以及第二获取单元133的具体功能实现方式可以参见上述图5对应实施例中的步骤S204-步骤S207,这里不再进行赘述。
再请参见图12,第三确定单元132可以包括:第一获取子单元1321以及第一确定子单元1322。
第一获取子单元1321,用于获取第二共识周期的共识配置信息中的共识索引号,以及针对目标节点的目标索引号;
第一确定子单元1322,用于根据目标索引号以及共识索引号,确定目标节点与第二共识节点集合之间的关联关系。
其中,第一获取子单元1321以及第一确定子单元1322的具体功能实现方式可以参见上述图5对应实施例中的步骤S205,这里不再进行赘述。
再请参见图12,第一确定子单元1322,具体用于将共识索引号与目标索引号进行对比;
第一确定子单元1322,具体用于若共识索引号中存在与目标索引号相同的索引号,则确定关联关系为目标节点属于第二共识节点集合;
第一确定子单元1322,具体用于若共识索引号中不存在与目标索引号相同的索引号,则确定关联关系为目标节点不属于第二共识节点集合。
其中,第一确定子单元1322的具体功能实现方式可以参见上述图5对应实施例中的步骤S205,这里不再进行赘述。
再请参见图12,数据处理装置1还可以包括:第四获取模快19。
第四获取模快19,用于在过渡共识时间段内获取针对第二共识周期的共识配置信息;
则第二获取单元133可以包括:配置更新子单元1331以及第二获取子单元1332。
配置更新子单元1331,用于若关联关系指示目标节点属于第二共识节点集合,且目标节点也属于第一共识节点集合,则将第一共识周期的共识配置信息更新为第二共识周期的共识配置信息;
第二获取子单元1332,用于将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中,根据共识消息池以及第二共识周期的共识配置信息获取目标区块,对目标区块进行共识处理。
其中,第四获取模快19、配置更新子单元1331以及第二获取子单元1332的具体功能实现方式可以参见上述图5对应实施例中的步骤S206-步骤S207,这里不再进行赘述。
再请参见图12,第二获取单元133可以包括:第一同步子单元1333、第二同步子单元1334以及第三获取子单元1335。
第一同步子单元1333,用于若关联关系指示目标节点属于第二共识节点集合,且目标节点不属于第一共识节点集合,则对由第一共识节点集合所共识通过的区块进行同步;
第二同步子单元1334,用于在将由第一共识节点集合所共识通过的区块同步到数据账本时,将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中;
第三获取子单元1335,用于根据数据账本以及共识消息池获取目标区块,对目标区块进行共识处理。
其中,第一同步子单元1333、第二同步子单元1334以及第三获取子单元1335的具体功能实现方式可以参见上述图11对应实施例中的步骤S405-步骤S407,这里不再进行赘述。
再请参见图12,业务处理模块13还可以包括:共识暂停单元134以及区块同步单元135。
共识暂停单元134,用于若关联关系指示目标节点不属于第二共识节点集合,且目标节点属于第一共识节点集合,则从区块链共识委员会中退出,暂停对第二共识周期内的区块的共识处理;
区块同步单元135,用于将由第二共识节点集合所共识通过的区块同步到数据账本。
其中,共识暂停单元134以及区块同步单元135的具体功能实现方式可以参见上述图9对应实施例中的步骤S306-步骤S307,这里不再进行赘述。
再请参见图12,第二共识节点集合包括目标共识节点;由第二共识节点集合所共识通过的区块包括待同步区块;
区块同步单元135可以包括:第四获取子单元1351、第五获取子单元1352、第六获取子单元1353以及第三同步子单元1354。
第四获取子单元1351,用于获取目标共识节点发送的区块同步消息;区块同步消息包括待同步区块以及待同步区块对应的区块签名;
第五获取子单元1352,用于从第二共识周期的共识配置信息中获取目标共识节点的节点公钥,根据节点公钥对区块签名进行验签,得到待验证哈希值;
第六获取子单元1353,用于获取待同步区块对应的区块哈希值,将区块哈希值以及待验证哈希值进行对比;
第三同步子单元1354,用于若区块哈希值与待验证哈希值相同,则确定待同步区块为合法区块,将待同步区块同步到数据账本。
其中,第四获取子单元1351、第五获取子单元1352、第六获取子单元1353以及第三同步子单元1354的具体功能实现方式可以参见上述图9对应实施例中的步骤S307,这里不再进行赘述。
在本申请实施例中,当在第一共识周期中,确定选举区块高度时,目标节点可以基于选举区块高度以及过渡区块数量确定过渡区块高度区间,第一共识节点集合中的共识节点可以继续对属于过渡区块高度区间内的区块进行共识处理。在第一共识节点集合中的共识节点对过渡区块进行共识处理的同时,第二共识节点集合中的共识节点可以同步与第二共识周期相关的共识数据,因此当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,第二共识节点集合中的共识节点已经完成对与第二共识周期相关的共识数据的同步。上述可知,本申请可以在从第一共识节点集合切换到第二共识节点集合时,无需等待第二共识节点集合中的共识节点同步与第二共识周期相关的共识数据,从而可以使第二共识节点集合更加及时地对目标区块进行实时共识处理,避免在切换共识节点集合时出现较长时间地暂停区块共识的情况,因此,本申请可以提高区块链业务服务的连贯性和时效性。
进一步地,请参见图13,图13是本申请实施例提供的一种计算机设备的结构示意图。如图13所示,该计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图13所示,作为一种计算机存储介质的存储器1005可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图13所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出第二共识节点集合时所生成区块的高度确定为选举区块高度;第一共识周期中的最大区块高度对应的区块,为第二共识周期中的最小区块高度对应的区块的前继区块;
获取过渡区块数量,根据选举区块高度以及过渡区块数量确定过渡区块高度区间;第二共识节点集合中的共识节点用于在过渡共识时间段内同步与第二共识周期相关的共识数据,过渡共识时间段是指,第一共识周期对应的第一共识节点集合对属于过渡区块高度区间的区块进行共识处理所消耗的时长;
当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,根据目标节点与第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理;第二共识节点集合中的共识节点用于从目标区块开始进行共识处理;过渡区块高度区间内的最大区块高度对应的区块为目标区块的前继区块。
在一个实施例中,处理器1001在执行当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合时,具体执行以下步骤:
目标节点将在第一共识周期内已生成的最大区块高度,确定为第一区块高度;
获取针对第一共识周期的共识节点集合切换条件,将第一区块高度与共识节点集合切换条件进行匹配;
若第一区块高度与共识节点集合切换条件匹配成功时,对区块链节点集合中的每个节点分配针对第二共识周期的索引号;索引号包括共识索引号;
将具有共识索引号的节点添加至第二共识周期对应的第二共识节点集合中。
在一个实施例中,处理器1001还具体执行以下步骤:
当目标节点属于第一共识节点集合时,获取第一待共识数据,确定第一待共识数据所属的第二区块高度;
将第二区块高度与过渡区块高度区间内的最大区块高度进行对比;
若第二区块高度小于或等于过渡区块高度区间内的最大区块高度,则根据第一待共识数据生成第一待共识区块,对第一待共识区块进行共识处理;
当第一待共识区块共识通过时,将第一待共识区块添加至区块链中。
在一个实施例中,处理器1001还具体执行以下步骤:
若第二区块高度大于过渡区块高度区间内的最大区块高度,且区块链共识委员会未从第一共识节点集合切换至第二共识节点集合,则创建过渡管理消息池;
将第一待共识数据添加至过渡管理消息池中;过渡管理消息池用于指示第二共识节点集合中的共识节点,在开始进行共识处理时对过渡管理消息池中的数据进行同步。
在一个实施例中,处理器1001在执行当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,根据目标节点与第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理时,具体执行以下步骤:
当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,确定区块链共识委员会从第一共识节点集合切换至第二共识节点集合;
根据共识索引号确定目标节点与第二共识节点集合之间的关联关系;共识索引号是指第二共识节点集合中的共识节点的索引号;
若关联关系指示目标节点属于第二共识节点集合,则将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中,根据共识消息池获取目标区块,对目标区块进行共识处理;过渡管理消息池中的数据包括在过渡共识时间段内所获取到的第二待共识数据;第二待共识数据所属的区块高度大于过渡区块高度区间内的最大区块高度。
在一个实施例中,处理器1001在执行根据共识索引号确定目标节点与第二共识节点集合之间的关联关系时,具体执行以下步骤:
获取第二共识周期的共识配置信息中的共识索引号,以及针对目标节点的目标索引号;
根据目标索引号以及共识索引号,确定目标节点与第二共识节点集合之间的关联关系。
在一个实施例中,处理器1001在执行根据目标索引号以及共识索引号,确定目标节点与第二共识节点集合之间的关联关系时,具体执行以下步骤:
将共识索引号与目标索引号进行对比;
若共识索引号中存在与目标索引号相同的索引号,则确定关联关系为目标节点属于第二共识节点集合;
若共识索引号中不存在与目标索引号相同的索引号,则确定关联关系为目标节点不属于第二共识节点集合。
在一个实施例中,处理器1001还具体执行以下步骤:
在过渡共识时间段内获取针对第二共识周期的共识配置信息;
则在一个实施例中,处理器1001在执行若关联关系指示目标节点属于第二共识节点集合,则将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中,根据共识消息池获取目标区块,对目标区块进行共识处理时,具体执行以下步骤:
若关联关系指示目标节点属于第二共识节点集合,且目标节点也属于第一共识节点集合,则将第一共识周期的共识配置信息更新为第二共识周期的共识配置信息;
将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中,根据共识消息池以及第二共识周期的共识配置信息获取目标区块,对目标区块进行共识处理。
在一个实施例中,处理器1001在执行若关联关系指示目标节点属于第二共识节点集合,则将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中,根据共识消息池获取目标区块,对目标区块进行共识处理时,具体执行以下步骤:
若关联关系指示目标节点属于第二共识节点集合,且目标节点不属于第一共识节点集合,则对由第一共识节点集合所共识通过的区块进行同步;
在将由第一共识节点集合所共识通过的区块同步到数据账本时,将过渡管理消息池中的数据同步至第二共识周期对应的共识消息池中;
根据数据账本以及共识消息池获取目标区块,对目标区块进行共识处理。
在一个实施例中,处理器1001在执行当由第一共识节点集合所生成的区块高度等于过渡区块高度区间内的最大区块高度时,根据目标节点与第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理时,还具体执行以下步骤:
若关联关系指示目标节点不属于第二共识节点集合,且目标节点属于第一共识节点集合,则从区块链共识委员会中退出,暂停对第二共识周期内的区块的共识处理;
将由第二共识节点集合所共识通过的区块同步到数据账本。
在一个实施例中,第二共识节点集合包括目标共识节点;由第二共识节点集合所共识通过的区块包括待同步区块;
处理器1001在执行将由第二共识节点集合所共识通过的区块同步到数据账本时,具体执行以下步骤:
获取目标共识节点发送的区块同步消息;区块同步消息包括待同步区块以及待同步区块对应的区块签名;
从第二共识周期的共识配置信息中获取目标共识节点的节点公钥,根据节点公钥对区块签名进行验签,得到待验证哈希值;
获取待同步区块对应的区块哈希值,将区块哈希值以及待验证哈希值进行对比;
若区块哈希值与待验证哈希值相同,则确定待同步区块为合法区块,将待同步区块同步到数据账本。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3、图5、图9以及图11所分别对应的实施例中对基于区块链的数据处理方法的描述,也可执行前文图12所对应实施例中对数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图3、图5、图9以及图11中各个步骤所提供的基于区块链的数据处理方法,具体可参见上述图3、图5、图9以及图11中各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
上述计算机可读存储介质可以是前述任一实施例提供的基于区块链的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可执行前文图3、图5、图9以及图11所分别对应的实施例中对基于区块链的数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (14)
1.一种基于区块链的数据处理方法,其特征在于,包括:
当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出所述第二共识节点集合时所生成区块的高度确定为选举区块高度;所述第一共识周期中的最大区块高度对应的区块,为所述第二共识周期中的最小区块高度对应的区块的前继区块;
获取过渡区块数量,根据所述选举区块高度以及所述过渡区块数量确定过渡区块高度区间;所述第二共识节点集合中的共识节点用于在过渡共识时间段内同步与所述第二共识周期相关的共识数据,所述过渡共识时间段是指,所述第一共识周期对应的第一共识节点集合对属于所述过渡区块高度区间的区块进行共识处理所消耗的时长;
当由所述第一共识节点集合所生成的区块高度等于所述过渡区块高度区间内的最大区块高度时,根据所述目标节点与所述第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理;所述第二共识节点集合中的共识节点用于从目标区块开始进行共识处理;所述过渡区块高度区间内的最大区块高度对应的区块为所述目标区块的前继区块。
2.根据权利要求1所述的方法,其特征在于,所述当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,包括:
所述目标节点将在所述第一共识周期内已生成的最大区块高度,确定为第一区块高度;
获取针对所述第一共识周期的所述共识节点集合切换条件,将所述第一区块高度与所述共识节点集合切换条件进行匹配;
若所述第一区块高度与所述共识节点集合切换条件匹配成功时,对区块链节点集合中的每个节点分配针对所述第二共识周期的索引号;所述索引号包括共识索引号;
将具有所述共识索引号的节点添加至所述第二共识周期对应的所述第二共识节点集合中。
3.根据权利要求1所述的方法,其特征在于,还包括:
当所述目标节点属于所述第一共识节点集合时,获取第一待共识数据,确定所述第一待共识数据所属的第二区块高度;
将所述第二区块高度与所述过渡区块高度区间内的最大区块高度进行对比;
若所述第二区块高度小于或等于所述过渡区块高度区间内的最大区块高度,则根据所述第一待共识数据生成第一待共识区块,对所述第一待共识区块进行共识处理;
当所述第一待共识区块共识通过时,将所述第一待共识区块添加至区块链中。
4.根据权利要求3所述的方法,其特征在于,还包括:
若所述第二区块高度大于所述过渡区块高度区间内的最大区块高度,且区块链共识委员会未从所述第一共识节点集合切换至所述第二共识节点集合,则创建过渡管理消息池;
将所述第一待共识数据添加至所述过渡管理消息池中;所述过渡管理消息池用于指示所述第二共识节点集合中的共识节点,在开始进行共识处理时对所述过渡管理消息池中的数据进行同步。
5.根据权利要求1所述的方法,其特征在于,所述当由所述第一共识节点集合所生成的区块高度等于所述过渡区块高度区间内的最大区块高度时,根据所述目标节点与所述第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理,包括:
当由所述第一共识节点集合所生成的区块高度等于所述过渡区块高度区间内的最大区块高度时,确定区块链共识委员会从所述第一共识节点集合切换至所述第二共识节点集合;
根据共识索引号确定所述目标节点与所述第二共识节点集合之间的关联关系;所述共识索引号是指所述第二共识节点集合中的共识节点的索引号;
若所述关联关系指示所述目标节点属于所述第二共识节点集合,则将过渡管理消息池中的数据同步至所述第二共识周期对应的共识消息池中,根据所述共识消息池获取所述目标区块,对所述目标区块进行共识处理;所述过渡管理消息池中的数据包括在所述过渡共识时间段内所获取到的第二待共识数据;所述第二待共识数据所属的区块高度大于所述过渡区块高度区间内的最大区块高度。
6.根据权利要求5所述的方法,其特征在于,所述根据共识索引号确定所述目标节点与所述第二共识节点集合之间的关联关系,包括:
获取所述第二共识周期的共识配置信息中的所述共识索引号,以及针对所述目标节点的目标索引号;
根据所述目标索引号以及所述共识索引号,确定所述目标节点与所述第二共识节点集合之间的所述关联关系。
7.根据权利要求6所述的方法,其特征在于,所述根据所述目标索引号以及所述共识索引号,确定所述目标节点与所述第二共识节点集合之间的所述关联关系,包括:
将所述共识索引号与所述目标索引号进行对比;
若所述共识索引号中存在与所述目标索引号相同的索引号,则确定所述关联关系为所述目标节点属于所述第二共识节点集合;
若所述共识索引号中不存在与所述目标索引号相同的索引号,则确定所述关联关系为所述目标节点不属于所述第二共识节点集合。
8.根据权利要求5所述的方法,其特征在于,还包括:
在所述过渡共识时间段内获取针对所述第二共识周期的共识配置信息;
则所述若所述关联关系指示所述目标节点属于所述第二共识节点集合,则将过渡管理消息池中的数据同步至所述第二共识周期对应的共识消息池中,根据所述共识消息池获取所述目标区块,对所述目标区块进行共识处理,包括:
若所述关联关系指示所述目标节点属于所述第二共识节点集合,且所述目标节点也属于所述第一共识节点集合,则将所述第一共识周期的共识配置信息更新为所述第二共识周期的共识配置信息;
将所述过渡管理消息池中的数据同步至所述第二共识周期对应的共识消息池中,根据所述共识消息池以及所述第二共识周期的共识配置信息获取所述目标区块,对所述目标区块进行共识处理。
9.根据权利要求5所述的方法,其特征在于,所述若所述关联关系指示所述目标节点属于所述第二共识节点集合,则将过渡管理消息池中的数据同步至所述第二共识周期对应的共识消息池中,根据所述共识消息池获取所述目标区块,对所述目标区块进行共识处理,包括:
若所述关联关系指示所述目标节点属于所述第二共识节点集合,且所述目标节点不属于所述第一共识节点集合,则对由所述第一共识节点集合所共识通过的区块进行同步;
在将由所述第一共识节点集合所共识通过的区块同步到数据账本时,将所述过渡管理消息池中的数据同步至所述第二共识周期对应的共识消息池中;
根据所述数据账本以及所述共识消息池获取所述目标区块,对所述目标区块进行共识处理。
10.根据权利要求5所述的方法,其特征在于,还包括:
若所述关联关系指示所述目标节点不属于所述第二共识节点集合,且所述目标节点属于所述第一共识节点集合,则从所述区块链共识委员会中退出,暂停对所述第二共识周期内的区块的共识处理;
将由所述第二共识节点集合所共识通过的区块同步到数据账本。
11.根据权利要求10所述的方法,其特征在于,所述第二共识节点集合包括目标共识节点;所述由所述第二共识节点集合所共识通过的区块包括待同步区块;
所述将由所述第二共识节点集合所共识通过的区块同步到数据账本,包括:
获取所述目标共识节点发送的区块同步消息;所述区块同步消息包括所述待同步区块以及所述待同步区块对应的区块签名;
从所述第二共识周期的共识配置信息中获取所述目标共识节点的节点公钥,根据所述节点公钥对所述区块签名进行验签,得到待验证哈希值;
获取所述待同步区块对应的区块哈希值,将所述区块哈希值以及所述待验证哈希值进行对比;
若所述区块哈希值与所述待验证哈希值相同,则确定所述待同步区块为合法区块,将所述待同步区块同步到所述数据账本。
12.一种基于区块链的数据处理装置,其特征在于,包括:
第一获取模块,用于当在第一共识周期内所生成的区块高度满足共识节点集合切换条件时,目标节点开始选举第二共识周期对应的第二共识节点集合,将在选举出所述第二共识节点集合时所生成区块的高度确定为选举区块高度;所述第一共识周期中的最大区块高度对应的区块,为所述第二共识周期中的最小区块高度对应的区块的前继区块;
第二获取模块,用于获取过渡区块数量,根据所述选举区块高度以及所述过渡区块数量确定过渡区块高度区间;所述第二共识节点集合中的共识节点用于在过渡共识时间段内同步与所述第二共识周期相关的共识数据,所述过渡共识时间段是指,所述第一共识周期对应的第一共识节点集合对属于所述过渡区块高度区间的区块进行共识处理所消耗的时长;
业务处理模块,用于当由所述第一共识节点集合所生成的区块高度等于所述过渡区块高度区间内的最大区块高度时,根据所述目标节点与所述第二共识节点集合之间的关联关系进行与共识节点集合切换事件相关联的业务处理;所述第二共识节点集合中的共识节点用于从目标区块开始进行共识处理;所述过渡区块高度区间内的最大区块高度对应的区块为所述目标区块的前继区块。
13.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1至11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110072346.2A CN112398956B (zh) | 2021-01-20 | 2021-01-20 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110072346.2A CN112398956B (zh) | 2021-01-20 | 2021-01-20 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112398956A CN112398956A (zh) | 2021-02-23 |
CN112398956B true CN112398956B (zh) | 2021-04-13 |
Family
ID=74625157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110072346.2A Active CN112398956B (zh) | 2021-01-20 | 2021-01-20 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112398956B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112714196B (zh) * | 2021-03-29 | 2021-06-04 | 腾讯科技(深圳)有限公司 | 基于区块链网络的节点管理方法、装置、设备及存储介质 |
CN113067707B (zh) * | 2021-06-02 | 2021-08-31 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN113570466B (zh) * | 2021-09-24 | 2021-11-30 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置以及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875510B1 (en) * | 2015-02-03 | 2018-01-23 | Lance Kasper | Consensus system for tracking peer-to-peer digital records |
CN109218311A (zh) * | 2018-09-18 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 区块链的结块方法、区块链的节点和区块链 |
CN111291060A (zh) * | 2020-01-14 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 一种管理区块链节点的方法、装置及计算机可读介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107579848B (zh) * | 2017-08-30 | 2020-08-25 | 上海保险交易所股份有限公司 | 实用拜占庭容错共识机制中动态更改共识节点的方法 |
CN108804706B (zh) * | 2018-06-20 | 2020-09-18 | 南方科技大学 | 一种区块链数据处理方法、装置、设备及存储介质 |
US11924323B2 (en) * | 2018-07-02 | 2024-03-05 | International Business Machines Corporation | On-chain governance of blockchain |
CN111464356B (zh) * | 2020-04-01 | 2021-11-05 | 腾讯科技(深圳)有限公司 | 一种区块共识周期切换方法、装置及计算机设备 |
CN112003701B (zh) * | 2020-04-16 | 2021-03-19 | 成都质数斯达克科技有限公司 | 一种区块自检及同步方法及装置 |
CN111767347B (zh) * | 2020-07-27 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 共识算法的切换方法、装置、节点设备及存储介质 |
-
2021
- 2021-01-20 CN CN202110072346.2A patent/CN112398956B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875510B1 (en) * | 2015-02-03 | 2018-01-23 | Lance Kasper | Consensus system for tracking peer-to-peer digital records |
CN109218311A (zh) * | 2018-09-18 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 区块链的结块方法、区块链的节点和区块链 |
CN111291060A (zh) * | 2020-01-14 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 一种管理区块链节点的方法、装置及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112398956A (zh) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112398956B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
US10601911B2 (en) | Partitioning of a blockchain ledger | |
CN106878000B (zh) | 一种联盟链共识方法及系统 | |
CN113067707B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN111600720B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
US20220237181A1 (en) | Method, apparatus, device, and storage medium for proposal message processing for blockchain | |
CN112287034B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
CN110602108B (zh) | 基于区块链网络的数据通信方法、装置、设备及存储介质 | |
JP7551222B2 (ja) | ブロックチェーンネットワークに基づくデータ処理方法、装置及びコンピュータ機器 | |
CN111291060A (zh) | 一种管理区块链节点的方法、装置及计算机可读介质 | |
CN112883117B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
CN113326165B (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
CN113452747B (zh) | 可扩展和安全的共识方法、系统、存储介质、智能终端 | |
JP7325894B2 (ja) | ブロックチェーンに基づくデータ処理方法、装置、デバイス及びコンピュータプログラム | |
CN110839071B (zh) | 一种基于区块链的信息存储方法、设备及存储介质 | |
CN112231414B (zh) | 区块链系统的数据同步方法、装置、可读介质及电子设备 | |
CN111260475A (zh) | 一种数据处理方法、区块链节点设备及存储介质 | |
CN111556115A (zh) | 一种基于区块链的数据处理方法、装置、设备及存储介质 | |
CN114202329A (zh) | 业务处理方法、装置、节点设备及存储介质 | |
WO2024146285A1 (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 | |
CN112417052A (zh) | 区块链网络中的数据同步方法、装置、设备及存储介质 | |
CN109885258B (zh) | 基于区块链的数据删除装置及方法 | |
CN116804949B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
WO2023200279A1 (ko) | 블록체인에서 이중 체인 구조를 통한 블록 데이터 생성속도 증진 방법 | |
CN118364025A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40038700 Country of ref document: HK |