CN112003701A - 一种区块自检及同步方法及装置 - Google Patents
一种区块自检及同步方法及装置 Download PDFInfo
- Publication number
- CN112003701A CN112003701A CN202010299632.8A CN202010299632A CN112003701A CN 112003701 A CN112003701 A CN 112003701A CN 202010299632 A CN202010299632 A CN 202010299632A CN 112003701 A CN112003701 A CN 112003701A
- Authority
- CN
- China
- Prior art keywords
- block
- height
- node
- verified
- maximum
- 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.)
- Granted
Links
Images
Classifications
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- 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
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
-
- 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
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种区块自检及同步方法及装置,包括:在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度;基于区块链网络中共识节点的个数及各个共识节点的最大区块高度,确定区块安全高度;基于区块安全高度及第一节点的最大区块高度,从第一节点的区块链中选取一个区块,作为待验证区块;验证待验证区块的数据状态与区块链网络中各个第一区块的数据状态是否一致;若均一致,则基于区块安全高度,对第一节点进行区块同步。在本申请中,通过以上方式可以降低对节点功能的影响。
Description
技术领域
本申请涉及区块链技术领域,特别涉及一种区块自检及同步方法及装置。
背景技术
区块链技术,是一种基于去中心化分布式协议、共识算法、非对称密钥签名、哈希等技术,构建的能安全地存储数字资产信息,信息不可伪造和篡改,区块链网络上的所有节点各自执行交易,并共同完成结果确认,由共识算法保证各节点执行交易的一致性。区块链网络中所有节点维护一个公共账本(即,区块链),并保证公共账本不可伪造和篡改。
区块链网络中,在一个节点启动时,可能会存在本节点的区块落后其它节点的情况,当本节点的区块落后其它节点时,会影响本节点的功能,但是,如何降低对节点功能的影响成为问题。
发明内容
为解决上述技术问题,本申请实施例提供一种区块自检及同步方法及装置,以达到降低对节点功能的影响的目的,技术方案如下:
一种区块自检及同步方法,包括:
在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度,所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链;
基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度;
基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块;
验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,所述第一区块为区块高度与所述待验证区块的区块高度相同的区块;
若均一致,则基于所述区块安全高度,对所述第一节点进行区块同步。
优选的,所述验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,包括:
计算所述待验证区块中数据的哈希值,并比较所述待验证区块中数据的哈希值与所述待验证区块的区块头中的哈希值是否一致;
若一致,则获取所述区块链网络中各个第一区块的区块头中的哈希值,并分别比较各个所述第一区块的区块头中的哈希值与所述待验证区块中数据的哈希值是否一致。
优选的,所述基于所述区块链网络中共识节点的个数及各个所述共识节点的区块高度,确定区块安全高度,包括:
对各个所述共识节点的最大区块高度进行升序排序,得到区块高度序列;
从所述区块高度序列中选择排列位置为[(N-1)/3]的区块高度,作为区块安全高度,所述N为所述区块链网络中共识节点的个数。
优选的,所述基于所述区块安全高度及所述第一节点的区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块,包括:
比较所述第一节点的最大区块高度和所述区块安全高度;
若所述第一节点的最大区块高度大于所述区块安全高度,则将所述第一节点的区块链中区块高度为所述区块安全高度的区块,作为待验证区块;
若所述第一节点的最大区块高度小于所述区块安全高度,则将所述第一节点的区块链中区块高度为所述第一节点的最大区块高度的区块,作为待验证区块。
优选的,所述基于所述区块安全高度,对所述第一节点进行区块同步,包括:
基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度;
若所述第一节点的最大区块高度不小于所述可同步到的区块高度,则不进行区块同步;
若所述第一节点的最大区块高度小于所述可同步到的区块高度,则从所述区块链网络的第二节点中获取目标区块中的数据,所述目标区块为区块高度大于所述第一节点的最大区块高度,且不大于所述可同步到的区块高度的区块,所述第二节点为所述区块链网络中除所述第一节点之外的其中的一个共识节点;
基于所述目标区块中的数据,生成区块,并将生成的区块存储到所述第一节点的区块链中。
优选的,所述将生成的区块存储到所述第一节点的区块链中之前,还包括:
计算所述第一节点生成的区块的哈希值;
比较所述第一节点生成的区块的哈希值与所述目标区块的区块头内的哈希值是否一致;
若一致,则将生成的区块存储到所述第一节点的区块链中。
优选的,所述基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度,包括:
选取所述区块安全高度和所述第一节点的最大区块高度中最大的区块高度,作为可同步到的区块高度。
一种区块自检及同步装置,包括:
获取模块,用于在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度,所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链;
第一确定模块,用于基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度;
第二确定模块,用于基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块;
验证模块,用于验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,所述第一区块为区块高度与所述待验证区块的区块高度相同的区块;
同步模块,用于若所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态均一致,则基于所述区块安全高度,对所述第一节点进行区块同步。
优选的,所述验证模块,具体用于:
计算所述待验证区块中数据的哈希值,并比较所述待验证区块中数据的哈希值与所述待验证区块的区块头中的哈希值是否一致;
若一致,则获取所述区块链网络中各个第一区块的区块头中的哈希值,并分别比较各个所述第一区块的区块头中的哈希值与所述待验证区块中数据的哈希值是否一致。
优选的,所述第一确定模块,具体用于:
对各个所述共识节点的最大区块高度进行升序排序,得到区块高度序列;
从所述区块高度序列中选择排列位置为[(N-1)/3]的区块高度,作为区块安全高度,所述N为所述区块链网络中共识节点的个数。
优选的,所述第二确定模块,具体用于:
比较所述第一节点的最大区块高度和所述区块安全高度;
若所述第一节点的最大区块高度大于所述区块安全高度,则将所述第一节点的区块链中区块高度为所述区块安全高度的区块,作为待验证区块;
若所述第一节点的最大区块高度小于所述区块安全高度,则将所述第一节点的区块链中区块高度为所述第一节点的最大区块高度的区块,作为待验证区块。
优选的,所述同步模块,具体用于:
基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度;
若所述第一节点的最大区块高度不小于所述可同步到的区块高度,则不进行区块同步;
若所述第一节点的最大区块高度小于所述可同步到的区块高度,则从所述区块链网络的第二节点中获取目标区块中的数据,所述目标区块为区块高度大于所述第一节点的最大区块高度,且不大于所述可同步到的区块高度的区块,所述第二节点为所述区块链网络中除所述第一节点之外的其中的一个共识节点;
基于所述目标区块中的数据,生成区块,并将生成的区块存储到所述第一节点的区块链中。
优选的,所述同步模块,还用于:
在将生成的区块存储到所述第一节点的区块链中之前,计算所述第一节点生成的区块的哈希值;
比较所述第一节点生成的区块的哈希值与所述目标区块的区块头内的哈希值是否一致;
若一致,则将生成的区块存储到所述第一节点的区块链中。
优选的,所述同步模块,具体用于:
选取所述区块安全高度和所述第一节点的最大区块高度中最大的区块高度,作为可同步到的区块高度。
与现有技术相比,本申请的有益效果为:
在本申请中,通过在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度,并基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度,基于区块安全高度及第一节点的最大区块高度,选择一个区块,作为待验证区块,验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致的方式,保证在第一节点与区块链网络中其它共识节点的数据状态一致的情况下,基于区块安全高度,对第一节点进行区块同步,提高区块同步的可靠性,降低对节点功能的影响。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种区块自检及同步方法实施例1的流程图;
图2是本申请提供的一种区块自检及同步方法实施例2的流程图;
图3是本申请提供的一种区块自检及同步方法实施例3的流程图;
图4是本申请提供的一种区块自检及同步方法实施例4的流程图;
图5是本申请提供的一种区块自检及同步装置的逻辑结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种区块自检及同步方法,包括:在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度,所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链;基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度;基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块;验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,所述第一区块为区块高度与所述待验证区块的区块高度相同的区块;若均一致,则基于所述区块安全高度,对所述第一节点进行区块同步。在本申请中,可以提高区块同步的可靠性,降低对节点功能的影响。
接下来对本申请实施例公开的区块自检及同步方法进行介绍,如图1所示,为本申请提供的一种区块自检及同步方法实施例1的流程图,可以包括以下步骤:
步骤S11、在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度。
所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链。
可以理解的是,区块链中的每个区块各自均对应一个区块高度,区块链中最新生成的区块对应的区块高度为最大区块高度。区块高度可以理解为:区块的标示符。其中,可以采用每生成一个区块,数字标识增1的方式,将增1后的数字标识作为生成的区块的区块高度。
步骤S12、基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度。
本实施例中,基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度的过程,可以为:
S1211、对各个所述共识节点的最大区块高度进行升序排序,得到区块高度序列。
S1212、从所述区块高度序列中选择排列位置为[(N-1)/3]的区块高度,作为区块安全高度,所述N为所述区块链网络中共识节点的个数。
[(N-1)/3]表示对(N-1)/3进行取整后的值。
步骤S1211-S1212可以通过如下公式执行:
其中,N为区块链网络中共识节点的个数,H为各共识节点的最大区块高度,sort函数为升序排序函数,sort(H)表示对各个所述共识节点的最大区块高度进行升序排序,得到的区块高度序列,表示从区块高度序列中选择排列位置为[(N-1)/3]的区块高度。
当然,基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度的过程,也可以为:
S1221、对各个所述共识节点的最大区块高度进行升序排序,得到区块高度序列。
S1222、从所述区块高度序列中选择排列位置为[N/2]的区块高度,作为区块安全高度,所述N为所述区块链网络中共识节点的个数。
[N/2]表示对N/2进行取整后的值。
需要说明的是,基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度的过程并不局限于为步骤S1211-S1212及步骤S1221-S1222所介绍的确定区块安全高度的过程,步骤S1211-S1212及步骤S1221-S1222所介绍的确定区块安全高度的过程仅为其中两种实施方式。
步骤S13、基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块。
本实施例中,基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块的过程,可以包括:
S131、比较所述第一节点的最大区块高度和所述区块安全高度。
若所述第一节点的最大区块高度大于所述区块安全高度,则执行步骤S132;若所述第一节点的最大区块高度小于所述区块安全高度,则执行步骤S133。
S132、将所述第一节点的区块链中区块高度为所述区块安全高度的区块,作为待验证区块。
在第一节点的最大区块高度大于区块安全高度时,将第一节点的区块链中区块高度为区块安全高度的区块,作为待验证区块,可以保证从区块链网络中获取区块高度与待验证区块相同的区块,参与对待验证区块的数据状态进行验证。
S133、将所述第一节点的区块链中区块高度为所述第一节点的最大区块高度的区块,作为待验证区块。
在第一节点的最大区块高度小于区块安全高度时,为了保证可以从第一节点的区块链中确定待验证区块,将第一节点的区块链中区块高度为第一节点的最大区块高度的区块,作为待验证区块。
步骤S14、验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致。
所述第一区块为区块高度与所述待验证区块的区块高度相同的区块。
验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,可以理解为:验证所述待验证区块的数据状态与区块链网络中除第一节点之外的其他各个共识节点中的第一区块的数据状态是否一致。
若均一致,则执行步骤S15。
步骤S15、基于所述区块安全高度,对所述第一节点进行区块同步。
在所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态均一致的情况下,保证待验证区块的数据状态与区块链网络中多个区块的数据状态保持一致,确保第一节点中的部分数据是正确的,在此基础上,基于区块安全高度,对第一节点进行区块同步,可以提高区块同步的可靠性。
作为本申请另一可选实施例,参照图2,为本申请提供的一种区块自检及同步方法实施例2的流程图,本实施例主要是对上述实施例1描述的区块自检及同步方法的细化方案,如图2所示,该方法可以包括但并不局限于以下步骤:
步骤S21、在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度。
所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链。
步骤S22、基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度。
步骤S23、基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块。
步骤S21-S23的详细过程可以参见实施例1中步骤S11-S13的相关介绍,在此不再赘述。
步骤S24、计算所述待验证区块中数据的哈希值,并比较所述待验证区块中数据的哈希值与所述待验证区块的区块头中的哈希值是否一致。
若一致,则执行步骤S25。
需要说明的是,区块链中每个区块的区块头中均预先写有该区块的哈希值。基于此,可以比较所述待验证区块中数据的哈希值与所述待验证区块的区块头中的哈希值是否一致,来实现第一节点自我验证。
步骤S25、获取所述区块链网络中各个第一区块的区块头中的哈希值,并分别比较各个所述第一区块的区块头中的哈希值与所述待验证区块中数据的哈希值是否一致。
在第一节点自我验证结果为待验证区块中数据的哈希值与待验证区块的区块头中的哈希值一致时,获取所述区块链网络中各个第一区块的区块头中的哈希值,并分别比较各个所述第一区块的区块头中的哈希值与所述待验证区块中数据的哈希值是否一致,实现在区块链网络中验证待验证区块的数据状态。
若均一致,则执行步骤S26。
步骤S24-S25为实施例1中步骤S14的一种具体实施方式。
步骤S26、基于所述区块安全高度,对所述第一节点进行区块同步。
步骤S26的详细过程可以参见实施例1中步骤S15的相关介绍,在此不再赘述。
本实施例中,在第一节点自我验证结果为待验证区块中数据的哈希值与待验证区块的区块头中的哈希值一致的基础上,获取所述区块链网络中各个第一区块的区块头中的哈希值,并分别比较各个所述第一区块的区块头中的哈希值与所述待验证区块中数据的哈希值是否一致,实现在区块链网络中验证待验证区块的数据状态,保证数据状态验证的准确性。
作为本申请另一可选实施例,参照图3,为本申请提供的一种区块自检及同步方法实施例3的流程图,本实施例主要是对上述实施例1描述的区块自检及同步方法的细化方案,如图3所示,该方法可以包括但并不局限于以下步骤:
步骤S31、在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度。
所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链。
步骤S32、基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度。
步骤S33、基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块。
步骤S34、验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,所述第一区块为区块高度与所述待验证区块的区块高度相同的区块。
若均一致,则执行步骤S35。
步骤S31-S34的详细过程可以参见实施例1中步骤S11-S14的相关介绍,在此不再赘述。
步骤S35、基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度。
本实施例中,基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度,可以包括但不局限于:
选取所述区块安全高度和所述第一节点的最大区块高度中最大的区块高度,作为可同步到的区块高度。
当然,基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度,也可以包括但不局限于:
选取所述区块安全高度和所述第一节点的最大区块高度中最大的区块高度,作为第一区块高度;
选择一个小于所述第一区块高度的区块高度,作为可同步到的区块高度。
步骤S36、若所述第一节点的最大区块高度不小于所述可同步到的区块高度,则不进行区块同步。
若所述第一节点的最大区块高度不小于所述可同步到的区块高度,说明第一节点不需要进行区块同步,因此不进行区块同步。
步骤S37、若所述第一节点的最大区块高度小于所述可同步到的区块高度,则从所述区块链网络的第二节点中获取目标区块中的数据。
所述目标区块为区块高度大于所述第一节点的最大区块高度,且不大于所述可同步到的区块高度的区块,所述第二节点为所述区块链网络中除所述第一节点之外的其中的一个共识节点。
若所述第一节点的最大区块高度小于所述可同步到的区块高度,则说明第一节点的区块需要同步,则从所述区块链网络的第二节点中获取目标区块中的数据。
步骤S38、基于所述目标区块中的数据,生成区块。
步骤S39、将生成的区块存储到所述第一节点的区块链中。
基于所述目标区块中的数据,生成区块,将生成的区块存储到所述第一节点的区块链中,完成区块同步。
作为本申请另一可选实施例,参照图4,为本申请提供的一种区块自检及同步方法实施例4的流程图,本实施例主要是对上述实施例3描述的区块自检及同步方法的扩展方案,如图4所示,该方法可以包括但并不局限于以下步骤:
步骤S41、在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度。
所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链。
步骤S42、基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度。
步骤S43、基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块。
步骤S44、验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,所述第一区块为区块高度与所述待验证区块的区块高度相同的区块。
若均一致,则执行步骤S45。
步骤S45、基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度。
步骤S46、若所述第一节点的最大区块高度不小于所述可同步到的区块高度,则不进行区块同步。
步骤S47、若所述第一节点的最大区块高度小于所述可同步到的区块高度,则从所述区块链网络的第二节点中获取目标区块中的数据。
所述目标区块为区块高度大于所述第一节点的最大区块高度,且不大于所述可同步到的区块高度的区块,所述第二节点为所述区块链网络中除所述第一节点之外的其中的一个共识节点。
步骤S48、基于所述目标区块中的数据,生成区块。
步骤S41-S48的详细过程可以参见实施例3中步骤S31-S38的相关介绍,在此不再赘述。
步骤S49、计算所述第一节点生成的区块的哈希值。
步骤S410、比较所述第一节点生成的区块的哈希值与所述目标区块的区块头内的哈希值是否一致。
若一致,则执行步骤S411。
步骤S411、将生成的区块存储到所述第一节点的区块链中。
本实施例中,在第一节点生成区块之后,通过计算第一节点生成的区块的哈希值,及比较所述第一节点生成的区块的哈希值与所述目标区块的区块头内的哈希值是否一致,验证第一节点生成的区块的数据状态与目标区块的数据状态是否一致,在一致的情况下,将生成的区块存储到所述第一节点的区块链中,可以进一步提高同步的可靠性。
接下来对本申请提供的区块自检及同步装置进行介绍,下文介绍的区块自检及同步装置与上文介绍的区块自检及同步方法可相互对应参照。
请参见图5,区块自检及同步装置包括:获取模块11、第一确定模块12、第二确定模块13、验证模块14和同步模块15。
获取模块11,用于在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度,所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链;
第一确定模块12,用于基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度;
第二确定模块13,用于基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块;
验证模块14,用于验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,所述第一区块为区块高度与所述待验证区块的区块高度相同的区块;
同步模块15,用于若所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态均一致,则基于所述区块安全高度,对所述第一节点进行区块同步。
本实施例中,验证模块14,具体可以用于:
计算所述待验证区块中数据的哈希值,并比较所述待验证区块中数据的哈希值与所述待验证区块的区块头中的哈希值是否一致;
若一致,则获取所述区块链网络中各个第一区块的区块头中的哈希值,并分别比较各个所述第一区块的区块头中的哈希值与所述待验证区块中数据的哈希值是否一致。
本实施例中,所述第一确定模块12,具体可以用于:
对各个所述共识节点的最大区块高度进行升序排序,得到区块高度序列;
从所述区块高度序列中选择排列位置为[(N-1)/3]的区块高度,作为区块安全高度,所述N为所述区块链网络中共识节点的个数。
本实施例中,所述第二确定模块13,具体可以用于:
比较所述第一节点的最大区块高度和所述区块安全高度;
若所述第一节点的最大区块高度大于所述区块安全高度,则将所述第一节点的区块链中区块高度为所述区块安全高度的区块,作为待验证区块;
若所述第一节点的最大区块高度小于所述区块安全高度,则将所述第一节点的区块链中区块高度为所述第一节点的最大区块高度的区块,作为待验证区块。
本实施例中,所述同步模块15,具体可以用于:
基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度;
若所述第一节点的最大区块高度不小于所述可同步到的区块高度,则不进行区块同步;
若所述第一节点的最大区块高度小于所述可同步到的区块高度,则从所述区块链网络的第二节点中获取目标区块中的数据,所述目标区块为区块高度大于所述第一节点的最大区块高度,且不大于所述可同步到的区块高度的区块,所述第二节点为所述区块链网络中除所述第一节点之外的其中的一个共识节点;
基于所述目标区块中的数据,生成区块,并将生成的区块存储到所述第一节点的区块链中。
本实施例中,所述同步模块15,还可以用于:
在将生成的区块存储到所述第一节点的区块链中之前,计算所述第一节点生成的区块的哈希值;
比较所述第一节点生成的区块的哈希值与所述目标区块的区块头内的哈希值是否一致;
若一致,则将生成的区块存储到所述第一节点的区块链中。
本实施例中,所述同步模块15,具体可以用于:
选取所述区块安全高度和所述第一节点的最大区块高度中最大的区块高度,作为可同步到的区块高度。
需要说明的是,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
以上对本申请所提供的一种区块自检及同步方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种区块自检及同步方法,其特征在于,包括:
在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度,所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链;
基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度;
基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块;
验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,所述第一区块为区块高度与所述待验证区块的区块高度相同的区块;
若均一致,则基于所述区块安全高度,对所述第一节点进行区块同步。
2.根据权利要求1所述的方法,其特征在于,所述验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,包括:
计算所述待验证区块中数据的哈希值,并比较所述待验证区块中数据的哈希值与所述待验证区块的区块头中的哈希值是否一致;
若一致,则获取所述区块链网络中各个第一区块的区块头中的哈希值,并分别比较各个所述第一区块的区块头中的哈希值与所述待验证区块中数据的哈希值是否一致。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述区块链网络中共识节点的个数及各个所述共识节点的区块高度,确定区块安全高度,包括:
对各个所述共识节点的最大区块高度进行升序排序,得到区块高度序列;
从所述区块高度序列中选择排列位置为[(N-1)/3]的区块高度,作为区块安全高度,所述N为所述区块链网络中共识节点的个数。
4.根据权利要求3所述的方法,其特征在于,所述基于所述区块安全高度及所述第一节点的区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块,包括:
比较所述第一节点的最大区块高度和所述区块安全高度;
若所述第一节点的最大区块高度大于所述区块安全高度,则将所述第一节点的区块链中区块高度为所述区块安全高度的区块,作为待验证区块;
若所述第一节点的最大区块高度小于所述区块安全高度,则将所述第一节点的区块链中区块高度为所述第一节点的最大区块高度的区块,作为待验证区块。
5.根据权利要求1所述的方法,其特征在于,所述基于所述区块安全高度,对所述第一节点进行区块同步,包括:
基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度;
若所述第一节点的最大区块高度不小于所述可同步到的区块高度,则不进行区块同步;
若所述第一节点的最大区块高度小于所述可同步到的区块高度,则从所述区块链网络的第二节点中获取目标区块中的数据,所述目标区块为区块高度大于所述第一节点的最大区块高度,且不大于所述可同步到的区块高度的区块,所述第二节点为所述区块链网络中除所述第一节点之外的其中的一个共识节点;
基于所述目标区块中的数据,生成区块,并将生成的区块存储到所述第一节点的区块链中。
6.根据权利要求5所述的方法,其特征在于,所述将生成的区块存储到所述第一节点的区块链中之前,还包括:
计算所述第一节点生成的区块的哈希值;
比较所述第一节点生成的区块的哈希值与所述目标区块的区块头内的哈希值是否一致;
若一致,则将生成的区块存储到所述第一节点的区块链中。
7.根据权利要求5所述的方法,其特征在于,所述基于所述区块安全高度和所述第一节点的最大区块高度,确定可同步到的区块高度,包括:
选取所述区块安全高度和所述第一节点的最大区块高度中最大的区块高度,作为可同步到的区块高度。
8.一种区块自检及同步装置,其特征在于,包括:
获取模块,用于在区块链网络中的第一节点启动时,获取所述区块链网络中共识节点的个数及所述区块链网络中各个共识节点的最大区块高度,所述区块链网络包括多个共识节点,所述第一节点为所述区块链网络包括的多个共识节点中的其中一个,各个所述共识节点分别存储同一个区块链;
第一确定模块,用于基于所述区块链网络中共识节点的个数及各个所述共识节点的最大区块高度,确定区块安全高度;
第二确定模块,用于基于所述区块安全高度及所述第一节点的最大区块高度,从所述第一节点的区块链中选取一个区块,作为待验证区块;
验证模块,用于验证所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态是否一致,所述第一区块为区块高度与所述待验证区块的区块高度相同的区块;
同步模块,用于若所述待验证区块的数据状态与所述区块链网络中各个第一区块的数据状态均一致,则基于所述区块安全高度,对所述第一节点进行区块同步。
9.根据权利要求8所述的装置,其特征在于,所述验证模块,具体用于:
计算所述待验证区块中数据的哈希值,并比较所述待验证区块中数据的哈希值与所述待验证区块的区块头中的哈希值是否一致;
若一致,则获取所述区块链网络中各个第一区块的区块头中的哈希值,并分别比较各个所述第一区块的区块头中的哈希值与所述待验证区块中数据的哈希值是否一致。
10.根据权利要求8或9所述的装置,其特征在于,所述第一确定模块,具体用于:
对各个所述共识节点的最大区块高度进行升序排序,得到区块高度序列;
从所述区块高度序列中选择排列位置为[(N-1)/3]的区块高度,作为区块安全高度,所述N为所述区块链网络中共识节点的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010299632.8A CN112003701B (zh) | 2020-04-16 | 2020-04-16 | 一种区块自检及同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010299632.8A CN112003701B (zh) | 2020-04-16 | 2020-04-16 | 一种区块自检及同步方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112003701A true CN112003701A (zh) | 2020-11-27 |
CN112003701B CN112003701B (zh) | 2021-03-19 |
Family
ID=73461446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010299632.8A Active CN112003701B (zh) | 2020-04-16 | 2020-04-16 | 一种区块自检及同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112003701B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398956A (zh) * | 2021-01-20 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN115022346A (zh) * | 2022-08-08 | 2022-09-06 | 湖南涉外经济学院 | 一种基于区块链的在线数据同步方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391292A (zh) * | 2017-03-24 | 2017-11-24 | 北京瑞卓喜投科技发展有限公司 | 针对保持区块体数据实现勘误的区块链验证方法及系统 |
CN107451002A (zh) * | 2017-03-24 | 2017-12-08 | 北京瑞卓喜投科技发展有限公司 | 针对修改区块体数据的区块链的主动验证方法及系统 |
KR20180086679A (ko) * | 2017-01-23 | 2018-08-01 | 주식회사 데일리인텔리전스 | 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법 |
CN108734453A (zh) * | 2018-05-21 | 2018-11-02 | 腾讯科技(深圳)有限公司 | 区块链数据处理方法、装置、计算机设备和存储介质 |
CN109165229A (zh) * | 2018-08-23 | 2019-01-08 | 北京京东金融科技控股有限公司 | 本地区块同步的检验方法、装置、设备及存储介质 |
CN110609872A (zh) * | 2019-09-20 | 2019-12-24 | 北京海益同展信息科技有限公司 | 用于同步节点数据的方法和装置 |
CN111008249A (zh) * | 2019-12-04 | 2020-04-14 | 杭州复杂美科技有限公司 | 平行链区块同步方法、设备和存储介质 |
-
2020
- 2020-04-16 CN CN202010299632.8A patent/CN112003701B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180086679A (ko) * | 2017-01-23 | 2018-08-01 | 주식회사 데일리인텔리전스 | 블록체인 네트워크를 이용해서 사용자를 인증하고 블록을 동기화하는 시스템 및 방법 |
CN107391292A (zh) * | 2017-03-24 | 2017-11-24 | 北京瑞卓喜投科技发展有限公司 | 针对保持区块体数据实现勘误的区块链验证方法及系统 |
CN107451002A (zh) * | 2017-03-24 | 2017-12-08 | 北京瑞卓喜投科技发展有限公司 | 针对修改区块体数据的区块链的主动验证方法及系统 |
CN108734453A (zh) * | 2018-05-21 | 2018-11-02 | 腾讯科技(深圳)有限公司 | 区块链数据处理方法、装置、计算机设备和存储介质 |
CN109165229A (zh) * | 2018-08-23 | 2019-01-08 | 北京京东金融科技控股有限公司 | 本地区块同步的检验方法、装置、设备及存储介质 |
CN110609872A (zh) * | 2019-09-20 | 2019-12-24 | 北京海益同展信息科技有限公司 | 用于同步节点数据的方法和装置 |
CN111008249A (zh) * | 2019-12-04 | 2020-04-14 | 杭州复杂美科技有限公司 | 平行链区块同步方法、设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112398956A (zh) * | 2021-01-20 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN115022346A (zh) * | 2022-08-08 | 2022-09-06 | 湖南涉外经济学院 | 一种基于区块链的在线数据同步方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112003701B (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110602148B (zh) | 一种区块的状态树的生成和链上数据验证的方法及装置 | |
CN109189853B (zh) | 一种区块链之间数据同步方法与装置 | |
CN109165229B (zh) | 本地区块同步的检验方法、装置、设备及存储介质 | |
EP3816916A1 (en) | Method and device for storing merchant authentication data into blockchain, and method and device for obtaining merchant authentication data from blockchain | |
CN112003701B (zh) | 一种区块自检及同步方法及装置 | |
CN112287034B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
CN110572287B (zh) | 数据容灾方法、装置、计算机设备和存储介质 | |
CN109246084B (zh) | 新区块生成方法、装置、电子设备与存储介质 | |
CN112883117B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
CN112187490A (zh) | 一种拜占庭容错共识方法及系统 | |
CN112422341B (zh) | 区块链网络的故障检测方法及相关设备 | |
CN109104419B (zh) | 一种区块链账号的生成方法及系统 | |
CN110059981B (zh) | 信任度评估方法、装置及终端设备 | |
CN108470039A (zh) | 区块链中的数据处理方法和装置 | |
JP2020204898A (ja) | 分散台帳システムの運用管理方法、分散台帳システムの運用管理システム、および分散台帳システムの運用管理プログラム | |
CN113362068B (zh) | 一种轻节点验证区块链状态转移的方法 | |
CN113326332B (zh) | 一种区块链的快照同步方法及装置 | |
CN114529415A (zh) | 基于区块链的交易验证方法及装置、电子设备 | |
CN112381599A (zh) | 一种基于区块链技术的共享充电宝租赁系统及方法 | |
CN107818252A (zh) | 人脸识别信息同步方法及相关产品 | |
CN112436962A (zh) | 区块链共识网络动态扩展方法、电子设备、系统及介质 | |
CN109558064B (zh) | 一种电子发票数据链的同步方法、装置、介质及电子设备 | |
CN112600698A (zh) | 应用于非出块节点的区块链共识方法、系统、设备及介质 | |
CN111651790A (zh) | 一种开放区块链中隐私信息的保护方法及系统 | |
CN112116461A (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 |