CN111209339A - 区块同步方法、装置、计算机以及存储介质 - Google Patents
区块同步方法、装置、计算机以及存储介质 Download PDFInfo
- Publication number
- CN111209339A CN111209339A CN202010006922.9A CN202010006922A CN111209339A CN 111209339 A CN111209339 A CN 111209339A CN 202010006922 A CN202010006922 A CN 202010006922A CN 111209339 A CN111209339 A CN 111209339A
- Authority
- CN
- China
- Prior art keywords
- block
- transaction
- voting
- consensus
- node
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Economics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种区块同步方法,包括:第一节点设备获取第二节点设备发送的交易区块,所述交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数;检测所述区块头属性参数的合法性;根据所述交易区块的区块头中的所述投票信息确定所述交易区块的共识结果;若所述区块头属性参数为合法参数,且所述共识结果为共识成功结果,则将所述交易区块加入所述第一节点设备对应的交易账本中。采用本申请,可以保障同步的区块的真实有效性,以提高业务数据的准确性。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块同步方法、装置、计算机以及存储介质。
背景技术
由于区块链的去中心及防篡改的特性,使得区块链的应用越来越广泛,在区块链中节点间进行区块同步时,确保区块数据的准确性也就极为重要。当前,在区块链中的节点间进行区块同步时,正在同步区块的节点一般通过先同步区块的区块头,校验区块头中所包含的前继区块哈希和该区块对应的前继区块的哈希值是否一致,在两者一致的情况下,将该区块写入该节点的账本中,这种基于哈希值对比的简单校验,使得该节点同步的区块中可能存在部分数据的真实性无法得到验证,也就可能导致存在该节点所同步的区块与合法的核心节点中的区块不一致的情况,从而降低同步的区块的真实有效性。
发明内容
本申请实施例提供了一种区块同步方法和装置,可以提高同步的区块的准确性。
本申请实施例一方面提供了一种区块同步方法,包括:
第一节点设备获取第二节点设备发送的交易区块,所述交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数;
检测所述区块头属性参数的合法性;
根据所述交易区块的区块头中的所述投票信息确定所述交易区块的共识结果;
若所述区块头属性参数为合法参数,且所述共识结果为共识成功结果,则将所述交易区块加入所述第一节点设备对应的交易账本中。
本申请实施例一方面提供了一种区块同步装置,所述装置包括:
第一获取模块,用于第一节点设备获取第二节点设备发送的交易区块,所述交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数;
检测模块,用于检测所述区块头属性参数的合法性;
第一确定模块,用于根据所述交易区块的区块头中的所述投票信息确定所述交易区块的共识结果;
添加模块,用于若所述区块头属性参数为合法参数,且所述共识结果为共识成功结果,则将所述交易区块加入所述第一节点设备对应的交易账本中。
其中,所述投票信息包括投票区块哈希;所述装置还包括:
第二确定模块,用于根据所述区块头属性参数确定所述交易区块的区块头哈希;
所述第一确定模块,包括:
对比单元,用于对比所述区块头哈希与多个所述投票信息对应的投票区块哈希;
第一确定单元,用于若多个所述投票信息中存在非法投票信息,则确定所述交易区块的所述共识结果为共识失败结果;所述非法投票信息对应的投票区块哈希与所述区块头哈希不同;
所述第一确定单元,还用于若所述多个投票信息均为合法投票信息,则确定所述交易区块的所述共识结果为所述共识成功结果。
其中,所述交易区块的区块头中的所述投票信息还包括对应核心节点的标识及投票签名;
所述第一确定模块,包括:
第一获取单元,用于获取合法核心节点列表;所述合法核心节点列表包括所述多个核心节点的标识及每个标识对应的公钥;
第二确定单元,用于若所述多个核心节点中存在不属于所述合法核心节点列表的核心节点,则确定所述交易区块的所述共识结果为共识失败结果;
投票验签单元,用于若所述多个核心节点均属于所述合法核心节点列表,则根据所述核心节点的标识获取所述核心节点的公钥,采用所述核心节点的公钥对对应核心节点的投票签名进行验签;
所述第二确定单元,还用于若所述多个核心节点中存在投票签名验签失败的核心节点,则确定所述交易区块的所述共识结果为共识失败结果;
所述第二确定单元,还用于若所述多个核心节点的投票签名均验签成功,则确定所述交易区块的所述共识结果为所述共识成功结果。
其中,所述第一确定模块,包括:
统计单元,用于将所述多个核心节点的投票信息中投票成功的投票信息确定为目标投票信息,统计所述目标投票信息的投票数量;
第三确定单元,用于若所述投票数量小于投票阈值,则确定所述交易区块的所述共识结果为共识失败结果;
所述第三确定单元,还用于若所述投票数量大于或等于所述投票阈值,则确定所述交易区块的所述共识结果为所述共识成功结果。
其中,所述区块头属性参数包括所述交易区块的前继哈希值及所述交易区块的区块高度;
所述检测模块,包括:
第二获取单元,用于获取所述交易区块的所述前继哈希值及所述区块高度;
第一查找单元,用于根据所述区块高度确定所述交易区块的前继区块高度,基于所述前继区块高度从所述交易账本中查找所述交易区块的前继区块;
第四确定单元,用于若未查找到所述前继区块,则确定所述区块头属性参数为非法参数;
所述第四确定单元,还用于若查找到所述前继区块,则获取所述前继区块的区块头哈希值,若所述前继区块的区块头哈希值与所述前继哈希值不同,则确定所述区块头属性参数为非法参数;
所述第四确定单元,还用于若所述前继区块的区块头哈希值与所述前继哈希值相同,则确定所述区块头属性参数为所述合法参数。
其中,所述检测模块,包括:
第三获取单元,用于获取区块头属性集合,所述区块头属性集合包括多个区块头属性;
第二查找单元,用于从所述交易区块的区块头中查找每个区块头属性对应的区块头属性参数;
第五确定单元,用于若所述多个区块头属性中存在缺失区块头属性,则确定所述区块头属性参数为非法参数;所述缺失区块头属性在所述区块头中无对应的所述区块头属性参数。
其中,所述装置还包括:
第二获取模块,用于获取所述交易区块的区块体中的交易数据,根据所述交易数据获取所述交易区块的查验默克尔根;
所述检测模块,包括:
第五获取单元,用于获取所述交易区块的区块头属性参数中的默认默克尔根;
第六确定单元,用于若所述默认默克尔根与所述查验默克尔根不相同,则确定所述区块头属性参数为非法参数;
所述第六确定单元,还用于若所述默认默克尔根与所述查验默克尔根相同,则确定所述区块头属性参数为所述合法参数。
其中,所述交易区块还包括区块生成签名;
所述检测模块,包括:
第六获取单元,用于获取所述交易区块的所述区块生成签名及所述交易区块的生成核心节点的公钥;
生成验签单元,用于采用所述生成核心节点的公钥对所述区块生成签名进行验签;
第七确定单元,用于若验签不通过,则确定所述区块头属性参数为非法参数;
所述第七确定单元,还用于若验签通过,则确定所述区块头属性参数为合法参数。
其中,所述装置还包括:
第三确定模块,用于若所述共识结果为共识失败结果,则在所述多个核心节点中确定异常核心节点,所述异常核心节点为具有异常的投票信息的核心节点;
删除模块,用于删除所述交易区块;
广播模块,用于广播投票信息异常消息,所述投票信息异常消息包括所述异常核心节点,以使所述多个核心节点对所述异常核心节点进行核验。
其中,所述装置还包括:
解析模块,用于若所述区块头属性参数为合法参数,且所述共识结果为共识成功结果,则获取所述交易区块的区块体中的交易数据,解析所述交易数据得到交易过程;
执行模块,用于执行所述交易过程,得到所述交易过程的执行结果;
存储模块,用于将所述执行结果与所述交易区块关联存储至所述交易账本,通过所述添加模块执行所述将所述交易区块加入所述第一节点设备对应的交易账本中的步骤。
其中,所述装置还包括:
第三获取模块,用于基于心跳机制获取核心网络发送的所述交易区块的生成消息,所述核心网络包括所述多个核心节点;
所述广播模块,还用于向所述核心网络中的所述多个核心节点广播交易区块同步请求,基于所述交易区块同步请求执行所述第一节点设备获取第二节点设备发送的交易区块的步骤,所述第二节点设备为所述核心网络中的一个核心节点。
本申请实施例一方面提供了一种计算机设备,包括处理器、存储器、输入输出接口;
所述处理器分别与所述存储器和所述输入输出接口相连,其中,所述输入输出接口用于输入数据和输出数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如本申请实施例一方面中所述的区块同步方法。
本申请实施例一方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如本申请实施例一方面中所述的区块同步方法。
实施本申请实施例,将具有如下有益效果:
本申请实施例中第一节点设备通过获取第二节点设备发送的交易区块,根据该交易区块的区块头中所包含的多个核心节点的投票信息确定交易区块的共识结果,检测交易区块的区块头中的区块头属性参数的合法性,在共识结果为共识成功结果且区块头属性参数为合法参数时,将交易区块加入第一节点设备对应的交易账本。通过上述过程,使得第一节点设备从第二节点设备中同步交易区块时,会对该交易区块的区块头和区块体的一致性进行核验,并对该交易区块的投票情况进行核验,从而提高同步的区块的真实有效性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种区块同步架构图;
图1b是本申请实施例提供的一种区块同步网络示意图;
图2是本申请实施例提供的一种区块同步方法流程图;
图3是本申请实施例提供的一种交易区块同步场景示意图;
图4是本申请实施例提供的一种区块同步交互流程示意图;
图5是本申请实施例提供的一种交易区块共识场景示意图;
图6是本申请实施例提供的一种基于前继区块的区块头属性参数检测场景示意图;
图7是本申请实施例提供的一种基于默克尔根的区块头属性参数检测场景示意图;
图8是本申请实施例提供的一种交易区块的验签示意图;
图9是本申请实施例提供的一种区块同步装置示意图;
图10是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
具体的,请参见图1a,图1a是本申请实施例提供的一种区块同步架构图,如图1a所示,第一节点设备101向与第一节点设备关联的第二节点设备集群102发送区块同步请求,第二节点设备集群102可以包括第二节点设备1021、第二节点设备1022及第二节点设备1023。以第二节点设备1021为例,若第二节点设备1021接收到该区块同步请求,则将第一节点设备101请求同步的区块发送给第一节点设备101。假定第二节点设备1021接收到该区块同步请求,响应该区块同步请求,向第一节点设备101发送交易区块,该交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数。第一节点设备101获取到第二节点设备发送的交易区块,则对该交易区块中包括的数据进行核验,包括检测区块头属性参数的合法性,并根据交易区块的区块头中的投票信息确定交易区块的共识结果,若区块头属性参数为合法参数,且共识结果为共识成功结果,则将交易区块加入到第一节点设备101对应的交易账本中。其中,当第一节点设备101为数据节点时,第二节点设备集群102可以认为是核心网络,该核心网络由多个核心节点组成,各个核心节点可以认为分别对应上述第二节点设备1021、第二节点设备1022及第二节点设备1023等,其中,分别与第二节点设备1021、第二节点设备1022及第二节点设备1023对应的各个核心节点为列举出的核心网络中的部分核心节点,该核心网络中还可以包括其他核心节点;当第一节点设备101为轻节点时,第二节点设备集群102可以认为是中间网络,该中间网络由多个数据节点组成,各个数据节点分别对应上述第二节点设备1021、第二节点设备1022及第二节点设备1023等,其中,分别与第二节点设备1021、第二节点设备1022及第二节点设备1023对应的各个数据节点为列举出的中间网络中的部分数据节点,该中间网络中还可以包括其他数据节点。
进一步地,参见图1b,图1b是本申请实施例提供的一种区块同步网络示意图,用于对上述所提及的核心网络、中间网络以及轻节点所属的业务网络进行说明。如图1b所示,该区块同步网络包括核心网络103、中间网络104及业务网络105,其中,核心网络103包括多个核心节点1031,中间网络104包括多个数据节点1041,业务网络105包括多个轻节点1051。其中,核心节点1031负责对区块同步网络中各个区块的共识,并将获取到的交易数据打包成区块,将通过共识的区块写入交易账本;数据节点1041负责同步任一核心节点1031中的账本信息,即从核心网络103中任一核心节点1031获取最新生成的区块,将获取到的区块进行同步,加入自己的账本中;轻节点1051属于业务节点,负责从数据节点1041同步业务相关的区块数据,即根据轻节点1051负责的业务,从与该轻节点1051所连接的数据节点1041中获取与自己负责的业务相关的区块,将获取的区块加入该轻节点1051的账本中。其中,上述图1a中的第一节点设备101与第二节点设备集群102中的第二节点设备1021间进行区块同步,可以是数据节点1041从核心节点1031处获取交易区块进行同步,此时的第一节点设备101为数据节点1041,第二节点设备1021是核心节点1031;也可以是轻节点1051从数据节点1041处获取交易数据进行同步,此时的第一节点设备101为轻节点1051,第二节点设备1021为数据节点1041。其中,在该区块同步网络,各个核心节点1031间存在网络连接,可以进行数据交互;每个数据节点1041与一个或多个核心节点1031进行连接,可以从连接的核心节点1031处获取并同步区块,各个数据节点1041间也可以进行网络连接,以进行数据交互,各个数据节点1041间的网络连接可以是全连接,也可以是根据各个数据节点1041的具体需求建立不同数据节点1041间的网络连接;每个轻节点1051与一个或多个数据节点1041间进行连接,可以从连接的数据节点1041获取并同步区块。其中,可以认为,各个核心节点1031与各个数据节点1041中所记录的为全量链,各个轻节点1051中所记录的为部分链。
其中,核心网络103中的各个核心节点1031、中间网络104中的各个数据节点1041及业务网络105中的各个轻节点1051可以为计算机设备,如服务器和电子设备,该电子设备包括手机、平板电脑、笔记本电脑、掌上电脑、智能音响、移动互联网设备(MID,mobileinternet device)、POS(Point Of Sales,销售点)机、可穿戴设备(例如智能手表、智能手环等)等。
进一步地,对上述提到的部分名词进行以下说明:
1、区块链:狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。区块链的目标是实现一个分布的数据记录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成,后继区块中记录前继区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中节点提议添加一个新的区块,必须经过共识机制对区块达成确认。
2、区块(Block):记录一段时间内发生的所有交易和状态结果等,是对当前账本状态的一次共识。具体的,对于区块链来说,每次写入数据,即上述的交易过程,就是创建一个区块。
3、链(Chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。
4、共识机制:通过特殊节点的投票,在很短的时间内完成对交易的验证和确认,目标是使所有的核心节点保存一致的区块链式图,为一种达成分布式共识的算法,如工作量证明(Proof of Work,POW)、权益证明机制(Proof of Stake,PoS)及拜占庭共识算法(Practical Byzantine Fault Tolerance,PBFT)等。
可以理解的是,本发明实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端或服务器。本发明实施例中的节点可以为计算机设备。
进一步地,请参见图2,图2是本申请实施例提供的一种区块同步方法流程图。如图2所示,以第一节点设备为执行主体进行描述,该区块同步过程包括如下步骤:
步骤S201,第一节点设备获取第二节点设备发送的交易区块,该交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数。
具体的,第一节点设备监测到第二节点设备生成了新的交易区块,则向第二节点设备发送交易区块同步请求,第二节点设备基于该交易区块同步请求向第一节点设备发送交易区块,第一节点设备获取到第二节点设备发送的交易区块,该交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数。其中,第一节点设备也可以不向第二节点设备发送交易区块同步请求,第二节点设备生成新的交易区块后,就将该交易区块广播至各个第一节点设备,以使第一节点设备可以获取到该交易区块。其中,第一节点设备与第二节点设备间进行数据交互时是通过广播进行交互的,换句话说,第一节点设备广播交易区块同步请求,基于该交易区块同步请求向第一节点设备发送交易区块的节点为第二节点设备,或者,第二节点设备在生成交易区块后,广播该交易区块,将接收到该交易区块的节点记为第一节点设备。其中,在本申请实施例中是以接收到交易区块的第一节点设备及发送该交易区块的第二节点设备进行说明,即以交易区块同步时涉及到的一组第一节点设备及第二节点设备进行说明,其他的节点也可以通过本申请实施例进行区块同步。
步骤S202,检测区块头属性参数的合法性。
具体的,该区块头属性参数为交易区块的区块头中所包括的各个参数,如区块头哈希、前继哈希值、区块高度、默认默克尔根、区块生成签名及时间戳等,对交易区块的区块头中的区块头属性参数进行检测,以检测出区块头属性参数的合法性。具体的,检测该交易区块的区块头中所包括的区块头属性参数是否完整,即检测该区块头中是否存在无对应参数的区块头属性,并检测该区块头属性参数是否正确,通过对区块头属性参数的完整性及正确性进行检测,得到该区块头属性参数的合法性。
步骤S203,根据交易区块的区块头中的投票信息确定交易区块的共识结果。
具体的,根据交易区块的区块头中的投票信息确定交易区块的共识结果。具体的,获取交易区块的区块头中的投票信息,每个投票信息对应一个核心节点,每个投票信息为对应核心节点对该交易区块的投票情况,根据该交易区块的区块头中的各个投票信息,对该各个投票信息进行核验,得到针对该交易区块的投票结果,以确定该交易区块的共识结果是共识成功结果还是共识失败结果。
步骤S204,若区块头属性参数为合法参数,且共识结果为共识成功结果,则将交易区块加入交易账本中。
具体的,若区块头属性参数为合法参数,且对交易区块的共识结果为共识成功结果,则将交易区块加入第一节点设备对应的交易账本中,以在第一节点设备中存储该交易区块。
其中,上述步骤S202中检测区块头属性参数的合法性与步骤S203中根据交易区块的区块头中的投票信息确定交易区块的共识结果,在本申请实施例中不分先后顺序,即可以先执行步骤S202,再执行步骤S203,也可以先执行步骤S203,再执行步骤S202,或者,同时执行步骤S202和步骤S203。
进一步地,参见图3,图3是本申请实施例提供的一种交易区块同步场景示意图。如图3所示,第一节点设备301广播交易区块同步请求,当第二节点设备302接收到该交易区块同步请求,基于该交易区块同步请求向第一节点设备301发送交易区块,第一节点设备301获取第二节点设备302发送的交易区块303,获取该交易区块303的区块头中包括的区块头属性参数304及多个核心节点的投票信息305,并获取该交易区块303的区块体中的交易数据306,基于该交易数据306等检测该区块头属性参数304的合法性,并根据交易区块的区块头中的投票信息305确定交易区块的共识结果。对该区块头属性参数304的合法性及共识结果进行判断,若该区块头属性参数304为合法参数,且共识结果为共识成功结果,则将交易区块303加入第一节点设备301的交易账本307中;若该区块头属性参数304不是合法参数,或者共识结果不是共识成功结果,即该区块头属性参数304是非法参数,或者,共识结果是共识失败结果,则删除交易区块303。
本申请实施例中第一节点设备通过获取第二节点设备发送的交易区块,对该交易区块的区块头中所记录的区块头属性参数及多个核心节点的投票信息进行核验,在根据每个核心节点的投票信息确定交易区块的共识结果为共识成功结果,且区块头属性参数为合法参数的情况下,将获取到的交易区块加入交易账本中。通过上述步骤,第一节点设备对获取到的交易区块的区块头及区块头中的交易数据进行了核验,提高交易数据的准确性,并提高同步的区块的真实有效性。
进一步地,参见图4,图4是本申请实施例提供的一种区块同步交互流程示意图。如图4所示,这里假定核心网络中包括M个核心节点,中间网络中包括N个数据节点,M及N为正整数,该区块同步过程包括如下步骤:
步骤S401,第一节点设备发送交易区块同步请求。
具体的,第一节点设备广播交易区块同步请求。
其中,当第一节点设备为数据节点,第二节点设备为核心节点时,第一节点设备基于心跳机制获取核心网络发送的交易区块的生成消息,该核心网络包括多个核心节点;向核心网络中的多个核心节点广播交易区块同步请求,即向核心网络中的M个核心节点广播交易区块同步请求,第二节点设备基于交易区块同步请求执行步骤S402,向第一节点设备发送交易区块,第一节点设备基于交易区块同步请求执行步骤S403,获取第二节点设备发送的交易区块,此时的第二节点设备为核心网络中的一个核心节点。可选的,当该第一节点设备与核心网络中的各个核心节点中的部分核心节点连接,则该第一节点设备向核心网络中的多个核心节点广播交易区块同步请求时,该多个核心节点为与该第一节点设备连接的各个核心节点。
其中,当第一节点设备为轻节点,第二节点设备为数据节点时,第一节点设备基于心跳机制获取中间网络发送的交易区块的存储消息,向中间网络中的多个数据节点广播交易区块同步请求,即向中间网络中的N个数据节点广播交易区块同步请求,此时的第二节点设备为中间网络中的一个数据节点。可选的,当该第一节点设备与中间网络中的各个数据节点中的部分数据节点连接,则该第一节点设备向中间网络中的多个数据节点广播交易区块同步请求时,该多个数据节点为与该第一节点设备连接的各个数据节点。
其中,生成核心节点根据交易数据生成交易区块,将该交易区块广播给核心网络中的其他核心节点,当核心网络中的任意一个核心节点对该交易区块投票通过,并获取到其他核心节点针对该交易区块的投票信息,若获取到的投票信息确定该交易区块的共识已经通过,则将获取到的投票信息添加至交易区块的区块头中,将添加了投票信息的交易区块加入自己的账本中,并将该包括投票信息的交易区块广播至其他核心节点中,使得核心网络中的各个核心节点都记录该交易区块。其中,不同核心节点中记录的交易区块中除区块头中的投票信息之外的数据完全一致,而不同核心节点中记录的交易区块的区块头中的投票信息可能不完全相同,在该情况下,由于在无投票信息的交易区块的基础上添加投票信息得到了包含投票信息的交易区块,不同核心节点中记录的交易区块中除区块头中的投票信息之外的数据完全一致,保证了区块的一致性,而添加的投票信息是对该交易区块的投票情况的记录,并不影响该交易区块本身的交易数据及区块头中的数据,可以认为,在本申请中,对于同一个交易区块,各个节点在记录时保证的是除投票信息以外的数据的一致性,投票信息可以认为是该交易区块的附加数据,因此,不同核心节点中记录的交易区块的区块头中的投票信息不完全相同时,并不影响本申请中区块的同步。其中,每个投票信息中可以包括核心节点的标识、所认可的交易区块的投票区块哈希及所认可的交易区块的区块高度,每个投票信息中还可以包括对应核心节点的投票签名及是否投不包含交易的区块。
可选的,核心网络中的各个核心节点获取到交易区块后,无论是否认可该交易区块,都要生成自己的投票信息,每个核心节点获取到所有核心节点的投票信息后,将获取到的所有投票信息加入交易区块的区块头中,此时,每个投票信息中还包括针对交易区块的投票态度,该投票态度包括投票成功或投票失败,投票成功用于表示认可该交易区块,投票失败用于表示不认可该交易区块。其中,各个核心节点通过这种方式记录的交易区块是完全一致的,包括交易区块本身的数据及各个核心节点的投票信息。可选的,由于可能存在核心节点出现异常无法进行投票,导致核心网络中正常工作的核心节点无法获取到所有的核心节点的投票信息的情况,因此可以预设投票时间间隔,若核心节点获取到交易区块后,经过投票时间间隔未获取到核心网络中的其他所有核心节点的投票信息,则向未获取到投票信息的核心节点发送投票信息获取请求,若仍未获取到这个核心节点的投票信息,则认为该核心节点异常,将该核心节点异常作为该核心节点的投票信息写入交易区块的区块头中。
其中,该交易区块共识通过是基于拜占庭算法或半数以上通过机制等共识算法所确定的,此处用于确定交易区块共识通过的共识算法并不仅限于上述两种算法,其他可以用于确定该交易区块达到加入账本的条件的算法也可以使用。
举例来说,参见图5,图5是本申请实施例提供的一种交易区块共识场景示意图,如图5所示,假定该核心网络中包括核心节点501、核心节点502、核心节点503、核心节点504、核心节点505及核心节点506,当核心节点501生成一个交易区块时,即该核心节点501为生成核心节点,核心节点501将该交易区块广播至其他核心节点,其他核心节点对该交易区块进行投票。以核心节点504为例,且使用的共识算法为拜占庭2/3。一种情况下,只有认可该交易区块的核心节点需要生成对该交易区块的投票信息,当核心节点504获取到核心节点501的投票信息、核心节点503的投票信息及核心节点506的投票信息,加上自己对该交易区块的投票信息,共获取到4个核心节点对该交易区块的投票信息,满足了拜占庭2/3的条件,则无论核心节点502及核心节点505是否认可该交易区块,该核心节点504将核心节点501的投票信息、核心节点503的投票信息、核心节点504的投票信息及核心节点506的投票信息添加至交易区块的区块头中,将添加了投票信息的交易区块加入核心节点504的账本中,即核心节点504只要获取到达到投票阈值的投票信息,便将交易区块进行上链,该投票阈值是根据使用的共识算法所确定的,此处根据拜占庭2/3可以确定投票阈值为4。一种情况下,所有核心节点都需要生成交易区块的投票信息,则核心节点504获取到从核心节点501到核心节点506的所有投票信息后,统计所有投票信息中投票成功的投票信息的数量,若该投票成功的投票信息的数量达到投票阈值,则将所有投票信息添加至交易区块的区块头中,将添加了投票信息的交易区块加入核心节点504的账本中,例如,核心节点504获取到的核心节点501、核心节点502、核心节点503及核心节点506的投票信息为投票成功的投票信息,核心节点505的投票信息为投票失败的投票信息,已经获取到5个投票成功的投票信息,满足了拜占庭2/3的条件,将所有投票信息添加至交易区块的区块头中,将包括投票信息的交易区块加入核心节点504的账本中。
步骤S402,第二节点设备向第一节点设备发送交易区块。
具体的,第二节点设备向第一节点设备发送交易区块。其中,当第一节点设备为数据节点,第二节点设备为核心节点时,由于数据节点保存全量链,第二节点设备直接向第一节点设备发送该交易区块;当第一节点设备为轻节点,第二节点设备为数据节点时,由于轻节点保存部分链,第二节点设备确定该第一节点设备负责的业务数据类型,根据该业务数据类型确定第一节点设备对交易区块的获取权限,若该第一节点设备具有对交易区块的获取权限,则向第一节点设备发送该交易区块,若该第一节点设备没有对交易区块的获取权限,则向第一节点设备发送无关交易消息,该无关交易消息用于告知第一节点设备交易区块中的交易与该第一节点设备无关,例如,当第一节点设备为负责娱乐相关业务的节点,交易区块记录的是金融方面的交易,则确定第一节点设备没有对交易区块的获取权限,向第一节点设备发送无关交易消息。
步骤S403,第一节点设备检测区块头属性参数的合法性。
具体的,上述第一节点设备检测该区块头属性参数的合法性,即检测上述区块头属性参数为合法参数还是非法参数。其中,对于该区块头属性参数的合法性的检测可以通过如下方法:
A1、上述区块头属性参数包括交易区块的前继哈希值及该交易区块的区块高度,获取该交易区块的前继哈希值及区块高度,根据该区块高度确定该交易区块的前继区块高度,基于上述前继区块高度从交易账本中查找该交易区块的前继区块。若未查找到前继区块,则确定区块头属性参数为非法参数;若查找到前继区块,则获取该前继区块的区块头哈希值,若该前继区块的区块头哈希值与前继哈希值不同,则确定区块头属性参数为非法参数;若前继区块的区块头哈希值与前继哈希值相同,则确定区块头属性参数为合法参数。其中,若第一节点设备为轻节点,第二节点设备为数据节点,由于轻节点中记录的是部分链,因此即使该交易区块的前继哈希值没有问题,也可能出现在轻节点中查找不到前继区块的情况,因此本方法只适用于第一节点设备为数据节点,第二节点设备为核心节点的情况。
具体的,可以参见图6,图6是本申请实施例提供的一种基于前继区块的区块头属性参数检测场景示意图。如图6所示,从交易区块601区块头的区块头属性参数中获取区块高度602,并根据该区块高度602得到前继区块高度603,其中,前继区块高度603的值比区块高度602小1。从交易账本604中获取该前继区块高度603对应的前继区块,若未查找到该前继区块高度对应的前继区块,则确定该区块头属性参数为非法参数,如交易账本中最大的区块高度为5,得到的前继区块高度603为6,该交易账本604中不存在区块高度为6的区块,则确定该区块头属性参数为非法参数;或者,交易账本中最大的区块高度为7,得到的前继区块高度603为6,该交易账本604中区块高度为6的区块不是当前的交易账本604中区块高度最大的区块,则确定该区块头属性参数为非法参数。若查找到前继区块606,从前继区块606中获取前继区块的区块头哈希值607,从交易区块601中获取前继哈希值605,检测前继哈希值605和前继区块的区块头哈希值607的一致性608,若两者不一致,则确定区块头属性参数为非法参数,若两者一致,则确定区块头属性参数为合法参数。
A2、获取区块头属性集合,该区块头属性集合包括多个区块头属性,从交易区块的区块头中查找每个区块头属性对应的区块头属性参数,若多个区块头属性中存在缺失区块头属性,则确定区块头属性参数为非法参数,其中,缺失区块头属性在区块头中无对应的区块头属性参数。具体的,区块头属性集合中包括的多个区块头属性为生成该交易区块时需要记录的数据,从交易区块的区块头属性参数中获取每个区块头属性对应的参数,若存在缺失区块头属性,则表示该区块头属性参数不完整,确定区块头属性参数为非法参数。例如,该区块头属性集合包括“时间戳属性、区块头哈希属性、区块高度属性及前继哈希值属性”,从区块头属性参数中获取每个区块头属性对应的参数,若查找到时间戳、区块头哈希、区块高度及前继哈希值,则确定该区块头属性参数为合法参数,从而保障该交易区块的区块头中记录的各个属性的完整性。
A3、获取交易区块的区块体中的交易数据,根据交易数据获取交易区块的查验默克尔根;获取交易区块的区块头属性参数中的默认默克尔根;若默认默克尔根与查验默克尔根不相同,则确定区块头属性参数为非法参数;若默认默克尔根与查验默克尔根相同,则确定区块头属性参数为合法参数。
具体的,参见图7,图7是本申请实施例提供的一种基于默克尔根的区块头属性参数检测场景示意图。如图7所示,从交易区块701的区块头中区块头属性参数中获取默认默克尔根702,并从交易区块701的区块体中获取交易数据,该交易数据包括交易数据1、交易数据2至交易数据p等p条交易对应的数据,p为正整数。根据默克尔根的生成方法,得到该交易数据对应的查验默克尔根703,该默克尔根的生成方法为默认默克尔根702的生成方法。例如,根据交易数据1和交易数据2生成哈希1,根据交易数据3和交易数据4生成哈希2,直至根据交易数据(p-1)和交易数据p生成哈希x,,再根据哈希1和哈希2进一步生成哈希,…,哈希(x-1)和哈希x进一步生成哈希,直至只生成一个哈希值,这个哈希值为查验默克尔根703,其中,x为正整数,x为p/2。检测默认默克尔根702与查验默克尔根703的一致性704,若默认默克尔根702与查验默克尔根703不相同,则确定区块头属性参数为非法参数,若默认默克尔根702与查验默克尔根703相同,则确定区块头属性参数为合法参数。
A4、该交易区块还包括区块生成签名。具体的,获取交易区块的区块生成签名及交易区块的生成核心节点的公钥;采用生成核心节点的公钥对区块生成签名进行验签;若验签不通过,则确定区块头属性参数为非法参数;若验签通过,则确定区块头属性参数为合法参数。
具体的,基于哈希值进行验签的过程可以参见图8,是本申请实施例提供的一种交易区块的验签示意图。如图8所示,第一节点设备从交易区块801中获取需要验签的数据802,该需要验签的数据802包括从区块头中获取的区块生成签名和交易区块的生成核心节点的公钥,以及从区块体中获取的交易数据,提取区块生成签名803,通过生成核心节点的公钥804对该区块生成签名803进行解密,得到签名哈希值,进而第一节点设备可以使用哈希算法805(该哈希算法805即为生成核心节点生成区块生成签名803所采用的的哈希算法)对交易数据进行哈希运算,得到交易数据对应的交易哈希值,若交易哈希值与签名哈希值相等,则表示交易数据在传输过程中没有被篡改,验签通过,确定区块头属性参数为合法参数;若交易哈希值与签名哈希值不相等,则表示交易数据中的实际数据在传输过程中可能存在篡改,验签不通过,确定区块头属性参数为非法参数。
可选的,检测区块头属性参数的合法性的方法可以是上述方法A1至方法A4中的任意一个或多个组合成的检测方法,当通过上述方法A1至方法A4中的多个组合成的检测方法对区块头属性参数进行检测时,需要同时满足几个方法中确定区块头属性参数为合法参数的条件,才能确定该区块头属性参数为合法参数,只要有一个条件不满足,就确定该区块头属性参数为非法参数。即以上方法A1至方法A4可以组成如下几种检测方法,包括单个方法组成的A1、A2、A3及A4等方法,两个方法组成的A1和A2、A1和A3、A1和A4、A2和A3、A2和A4及A3和A4等方法,三个方法组成的A1和A2和A3、A1和A2和A4、A1和A3和A4及A2和A3和A4等方法,以及所有方法组成的A1和A2和A3和A4等方法。其中,上述为几种可选的方法组合方式,这里并不限制其他可以对该区块头属性参数的合法性进行检测的方法。以其中一种组合成的检测方法为例,如A1和A2,则只有在交易账本中查找到交易区块的前继区块,该前继区块的区块头哈希值与前继哈希值相同,且从交易区块的区块头中可以查找到每个区块头属性对应的区块头属性参数,则确定区块头属性参数为合法参数,否则确定区块头属性参数为非法参数。
同理,其他多个方法组合成的检测方法,也是只有在区块头属性参数满足组成该检测方法的各个方法中的所有合法条件时,才能确定该区块头属性参数为合法参数,否则确定该区块头属性参数为非法参数,其中,合法条件为对应方法中确定区块头属性参数为合法参数的条件。换句话说,上述方法A1至方法A4可以进行随机组合成新的检测方法,该检测方法由几个方法组成(A1至A4中任意选取的一个或多个方法),就要在同时满足这几个方法的合法条件时,确定区块头属性参数为合法参数,在此不进行一一说明,具体可以参见方法A1和方法A2组合后的判断方式。
其中,检测方法包括的方法越多,对交易区块的核验越完整,也就更能保障同步的交易区块的正确性和确定性。其中,本申请中所提及的区块头哈希均是针对该区块头哈希所在区块的区块头数据得到的,如前继区块的区块头哈希值及交易区块的区块头哈希,该区块头数据为该区块头哈希所在区块的区块头中除投票信息之外的数据。例如,交易区块的区块头哈希指生成核心节点在生成初始的交易区块时,针对该初始的交易区块的区块头数据所生成的,该初始的交易区块中不包括投票信息。
步骤S404,第一节点设备根据交易区块的区块头中的投票信息确定交易区块的共识结果。
具体的,第一节点设备根据交易区块的区块头中的投票信息确定交易区块的共识结果,即确定该交易区块的共识结果为共识成功结果还是共识失败结果。其中,确定该交易区块的共识结果可以是通过如下方法:
B1、投票信息包括投票区块哈希;根据区块头属性参数确定交易区块的区块头哈希;对比区块头哈希与多个投票信息对应的投票区块哈希;若多个所述投票信息中存在非法投票信息,则确定交易区块的共识结果为共识失败结果;其中,非法投票信息对应的投票区块哈希与区块头哈希不同;若多个投票信息均为合法投票信息,则确定交易区块的共识结果为共识成功结果。其中,投票区块哈希用于指示该投票信息是针对的区块的哈希,区块头哈希是根据交易区块的区块头中除投票信息之外的数据生成的,即可以认为该区块头哈希是根据交易区块的区块头中的区块头属性参数所生成的。若该区块头哈希与投票区块哈希相同,则认为该投票区块哈希为针对该区块头哈希对应的交易区块的投票,当所有的投票区块哈希与区块头哈希相同,则认为该区块头中的所有投票信息均是针对该交易区块的投票,确定该交易区块的共识结果为共识成功结果;若存在投票区块哈希与区块头哈希不同,则表示该区块头中存在不是针对该交易区块的投票信息,确定该交易区块的共识结果为共识失败结果。
B2、交易区块的区块头中的投票信息还包括对应核心节点的标识及投票签名。获取合法核心节点列表,该合法核心节点列表包括多个核心节点的标识及每个标识对应的公钥;若多个核心节点中存在不属于合法核心节点列表的核心节点,则确定交易区块的共识结果为共识失败结果;若多个核心节点均属于合法核心节点列表,则根据核心节点的标识获取核心节点的公钥,采用核心节点的公钥对对应核心节点的投票签名进行验签;若多个核心节点中存在投票签名验签失败的核心节点,则确定交易区块的共识结果为共识失败结果;若多个核心节点的投票签名均验签成功,则确定交易区块的共识结果为共识成功结果。其中,该合法核心节点列表中包括核心网络中所有核心节点的标识及每个标识对应的公钥,包括M个核心节点。获取交易区块的各个投票信息中的核心节点的标识,从合法核心节点列表中获取每个投票信息中的核心节点的标识,若合法核心节点列表包括每个投票信息中的核心节点的标识,则获取每个投票信息中的核心节点的公钥,基于核心节点的公钥对对应的投票签名进行验签,若每个投票签名均验签成功,则确定交易区块的共识结果为共识成功结果,若存在投票信息的核心节点的标识不属于合法核心节点,或者存在投票签名验签失败,则确定交易区块的共识结果为共识失败结果。其中,该交易区块的区块头中包括K个投票信息,K为正整数,且K小于或等于M。
B3、将多个核心节点的投票信息中投票成功的投票信息确定为目标投票信息,统计目标投票信息的投票数量;若投票数量小于投票阈值,则确定交易区块的共识结果为共识失败结果;若投票数量大于或等于投票阈值,则确定交易区块的共识结果为所述共识成功结果。
一种情况下,只有认可该交易区块的核心节点需要生成对该交易区块的投票信息,则该交易区块的区块头中的各个投票信息均为投票成功的目标投票信息,当该区块头中包括K个投票信息,则统计目标投票信息的投票数量为K,假定核心网络中包括M个核心节点,根据M与共识算法确定投票阈值。当投票数量K小于投票阈值时,表示认可该交易区块的核心节点的数量不足,不满足共识成功的条件,确定交易区块的共识结果为共识失败结果;当投票数量K大于或等于投票阈值时,表示认可该交易区块的核心节点的数量足够,满足共识成功的条件,确定交易区块的共识结果为共识成功结果。例如,当K为4,M为6,且共识算法为拜占庭2/3,则根据M与共识算法确定投票阈值为4,K等于投票阈值4,则确定该交易区块的共识结果为共识成功结果。
一种情况下,所有核心节点都需要生成交易区块的投票信息,则该交易区块的区块头中的各个投票信息包括投票成功的目标投票信息,还可能包括投票失败的投票信息。当该区块头中包括K个投票信息,获取每个投票信息中的投票态度,将投票态度为投票成功的投票信息确定为目标投票信息,假定核心网络中包括M个核心节点,此时的K等于M。根据M与共识算法确定投票阈值,并统计该K个投票信息中目标投票信息的投票数量,该投票数量小于或等于K。当投票数量小于投票阈值时,表示认可该交易区块的核心节点的数量不足,不满足共识成功的条件,确定交易区块的共识结果为共识失败结果;当投票数量大于或等于投票阈值时,表示认可该交易区块的核心节点的数量足够,满足共识成功的条件,确定交易区块的共识结果为共识成功结果。例如,当K与M均为6,且共识算法为拜占庭2/3,根据M与共识算法确定投票阈值为4,统计K个投票信息中的目标投票信息的投票数量,得到投票数量为4,该投票数量4等于投票阈值4,则确定该交易区块的共识结果为共识成功结果。
可选的,该交易区块的共识结果的确定方法可以是上述方法B1至方法B3中的任意一个或多个组合成的共识结果确定方法,当通过上述方法B1至方法B3中的多个组合成的共识结果确定方法对区块头属性参数进行检测时,需要同时满足几个方法中确定交易区块的共识结果为共识成功结果的条件,才能确定该交易区块的共识结果为共识成功结果,只要有一个条件不满足,就确定该交易区块的共识结果为共识失败结果。即以上方法B1至方法B3可以组成如下几种共识结果确定方法,包括单个方法组成的B1、B2及B3等方法,两个方法组成的B1和B2、B1和B3及B2和B3等方法,以及所有方法组成的B1和B2和B3等方法。其中,上述为几种可选的方法组合方式,这里并不限制其他可以对该交易区块的共识结果进行确定的方法。以其中一种组合成的共识结果确定方法为例,如B1和B2,则只有所有投票信息中的投票区块哈希均与交易区块的区块头哈希相同,且合法核心节点列表中包括所有投票信息的核心节点,每个投票信息中的投票签名均验签通过,才能确定该交易区块的共识结果为共识成功结果,否则确定交易区块的共识结果为共识失败结果。
同理,其他多个方法组合成的共识结果确定方法,也是只有在各个投票信息满足组成该共识结果确定方法的各个方法中的所有共识成功条件时,才能确定该交易区块的共识结果为共识成功结果,否则确定交易区块的共识结果为共识失败结果,其中,共识成功条件为对应方法中确定交易区块的共识结果为共识成功结果的条件。换句话说,上述方法B1至方法B3可以进行随机组合成新的共识结果确定方法,该共识结果确定方法由几个方法组成(B1至B3中任意选取的一个或多个方法),就要在同时满足这几个方法的共识成功条件时,确定交易区块的共识结果为共识成功结果,在此不进行一一说明,具体可以参见方法B1和方法B2组合后的判断方式。
其中,共识结果确定方法包括的方法越多,对交易区块的核验越完整,也就更能保障同步的交易区块的正确性和确定性。
其中,上述步骤S403及步骤S404均为对该交易区块的核验,无执行顺序的先后,在步骤S403及步骤S404的执行结果均得到之后,根据步骤S403及步骤S404的执行结果确定后续的过程。具体的,若步骤S403确定区块头属性参数为合法参数,且步骤S404确定交易区块的共识结果为共识成功结果,则执行步骤S405,否则执行步骤S406,即当区块头属性参数为非法参数或者交易区块的共识结果为共识失败结果时(满足区块头属性参数为非法参数与交易区块的共识结果为共识失败结果中任意一个条件),则执行步骤S406。
步骤S405,第一节点设备将交易区块加入第一节点设备对应的交易账本中。
具体的,第一节点设备将交易区块加入第一节点设备对应的交易账本中。进一步地,若区块头属性参数为合法参数,且共识结果为共识成功结果,则获取交易区块的区块体中的交易数据,解析交易数据得到交易过程;执行交易过程,得到交易过程的执行结果;将执行结果与交易区块关联存储至交易账本,将交易区块加入第一节点设备对应的交易账本中。其中,以第一节点设备为数据节点为例,可以根据该执行结果生成交易执行区块,将该交易执行区块加入交易账本中的执行区块链,该执行区块链用于记录从核心节点获取的各个交易区块的执行结果,该交易执行区块中还包括交易区块的区块高度或交易区块的区块头哈希,用于指示该交易执行区块为交易区块的执行结果;或者,可以将该执行结果直接与交易区块进行关联存储。其中,当第一节点设备为轻节点时,也可以如上述数据节点存储执行结果的方式存储自己的执行结果,此时轻节点的执行区块链用于记录从数据节点获取的各个交易区块的执行结果。
可选的,当数据节点获取到交易区块后,可以判断自己是否为该交易区块的执行对象,若数据节点不是该交易区块中的交易数据的执行对象,将交易区块添加至该轻节点的交易账本中;若数据节点可以执行该交易区块中的交易数据,则执行上述得到执行结果,并存储该执行结果的过程,将交易区块添加至该轻节点的交易账本中。当轻节点获取到交易区块后,可以获取该交易区块的执行情况,若该交易区块中的交易数据对应的交易过程已经执行,则将交易区块添加至该轻节点的交易账本中;若该交易区块中的交易数据对应的交易过程没有执行,则执行上述得到执行结果,并存储执行结果的过程,将交易区块添加至该轻节点的交易账本中。
步骤S406,第一节点设备删除交易区块。
具体的,当区块头属性参数为非法参数或者交易区块的共识结果为共识失败结果时,第一节点设备删除交易区块。进一步地,若共识结果为共识失败结果,则在多个核心节点中确定异常核心节点,异常核心节点为具有异常的投票信息的核心节点;删除交易区块,广播投票信息异常消息,该投票信息异常消息包括上述异常核心节点,以使多个核心节点对异常核心节点进行核验。
本申请实施例中第一节点设备通过获取第二节点设备发送的交易区块,该交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数;检测区块头属性参数的合法性,并根据多个核心节点的投票信息确定交易区块的共识结果,若区块头属性参数为合法参数,且交易区块的共识结果为共识成功结果,将交易区块加入第一节点设备对应的交易账本。通过上述过程,使得第一节点设备从第二节点设备中同步交易区块时,会对该交易区块的区块头和区块体的一致性、准确性及完整性进行核验,同时对该交易区块的投票情况进行核验,从而提高了同步的区块的真实有效性,以提高交易数据的准确性。
参见图9,图9是本申请实施例提供的一种区块同步装置示意图。上述区块同步装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该区块同步装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图9所示,该区块同步装置90可以用于上述图2所对应实施例中的计算机设备,具体的,该区块同步装置90可以包括:第一获取模块11、检测模块12、第一确定模块13及添加模块14。
第一获取模块11,用于第一节点设备获取第二节点设备发送的交易区块,上述交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数;
检测模块12,用于检测上述区块头属性参数的合法性;
第一确定模块13,用于根据上述交易区块的区块头中的上述投票信息确定上述交易区块的共识结果;
添加模块14,用于若上述区块头属性参数为合法参数,且上述共识结果为共识成功结果,则将上述交易区块加入上述第一节点设备对应的交易账本中。
其中,上述投票信息包括投票区块哈希;上述装置90还包括:
第二确定模块15,用于根据上述区块头属性参数确定上述交易区块的区块头哈希;
上述第一确定模块13,包括:
对比单元131,用于对比上述区块头哈希与多个上述投票信息对应的投票区块哈希;
第一确定单元132,用于若多个上述投票信息中存在非法投票信息,则确定上述交易区块的上述共识结果为共识失败结果;上述非法投票信息对应的投票区块哈希与上述区块头哈希不同;
上述第一确定单元132,还用于若上述多个投票信息均为合法投票信息,则确定上述交易区块的上述共识结果为上述共识成功结果。
其中,上述交易区块的区块头中的上述投票信息还包括对应核心节点的标识及投票签名;
上述第一确定模块13,包括:
第一获取单元133,用于获取合法核心节点列表;上述合法核心节点列表包括上述多个核心节点的标识及每个标识对应的公钥;
第二确定单元134,用于若上述多个核心节点中存在不属于上述合法核心节点列表的核心节点,则确定上述交易区块的上述共识结果为共识失败结果;
投票验签单元135,用于若上述多个核心节点均属于上述合法核心节点列表,则根据上述核心节点的标识获取上述核心节点的公钥,采用上述核心节点的公钥对对应核心节点的投票签名进行验签;
上述第二确定单元134,还用于若上述多个核心节点中存在投票签名验签失败的核心节点,则确定上述交易区块的上述共识结果为共识失败结果;
上述第二确定单元134,还用于若上述多个核心节点的投票签名均验签成功,则确定上述交易区块的上述共识结果为上述共识成功结果。
其中,上述第一确定模块13,包括:
统计单元136,用于将上述多个核心节点的投票信息中投票成功的投票信息确定为目标投票信息,统计上述目标投票信息的投票数量;
第三确定单元137,用于若上述投票数量小于投票阈值,则确定上述交易区块的上述共识结果为共识失败结果;
上述第三确定单元137,还用于若上述投票数量大于或等于上述投票阈值,则确定上述交易区块的上述共识结果为上述共识成功结果。
其中,上述区块头属性参数包括上述交易区块的前继哈希值及上述交易区块的区块高度;
上述检测模块12,包括:
第二获取单元121,用于获取上述交易区块的上述前继哈希值及上述区块高度;
第一查找单元122,用于根据上述区块高度确定上述交易区块的前继区块高度,基于上述前继区块高度从上述交易账本中查找上述交易区块的前继区块;
第四确定单元123,用于若未查找到上述前继区块,则确定上述区块头属性参数为非法参数;
上述第四确定单元123,还用于若查找到上述前继区块,则获取上述前继区块的区块头哈希值,若上述前继区块的区块头哈希值与上述前继哈希值不同,则确定上述区块头属性参数为非法参数;
上述第四确定单元123,还用于若上述前继区块的区块头哈希值与上述前继哈希值相同,则确定上述区块头属性参数为上述合法参数。
其中,上述检测模块12,包括:
第三获取单元124,用于获取区块头属性集合,上述区块头属性集合包括多个区块头属性;
第二查找单元125,用于从上述交易区块的区块头中查找每个区块头属性对应的区块头属性参数;
第五确定单元126,用于若上述多个区块头属性中存在缺失区块头属性,则确定上述区块头属性参数为非法参数;上述缺失区块头属性在上述区块头中无对应的上述区块头属性参数。
其中,上述装置90还包括:
第二获取模块16,用于获取上述交易区块的区块体中的交易数据,根据上述交易数据获取上述交易区块的查验默克尔根;
上述检测模块12,包括:
第五获取单元127,用于获取上述交易区块的区块头属性参数中的默认默克尔根;
第六确定单元128,用于若上述默认默克尔根与上述查验默克尔根不相同,则确定上述区块头属性参数为非法参数;
上述第六确定单元128,还用于若上述默认默克尔根与上述查验默克尔根相同,则确定上述区块头属性参数为上述合法参数。
其中,上述交易区块还包括区块生成签名;
上述检测模块12,包括:
第六获取单元129,用于获取上述交易区块的上述区块生成签名及上述交易区块的生成核心节点的公钥;
生成验签单元1210,用于采用上述生成核心节点的公钥对上述区块生成签名进行验签;
第七确定单元1211,用于若验签不通过,则确定上述区块头属性参数为非法参数;
上述第七确定单元1211,还用于若验签通过,则确定上述区块头属性参数为合法参数。
其中,上述装置90还包括:
第三确定模块17,用于若上述共识结果为共识失败结果,则在上述多个核心节点中确定异常核心节点,上述异常核心节点为具有异常的投票信息的核心节点;
删除模块18,用于删除上述交易区块;
广播模块19,用于广播投票信息异常消息,上述投票信息异常消息包括上述异常核心节点,以使上述多个核心节点对上述异常核心节点进行核验。
其中,上述装置90还包括:
解析模块20,用于若上述区块头属性参数为合法参数,且上述共识结果为共识成功结果,则获取上述交易区块的区块体中的交易数据,解析上述交易数据得到交易过程;
执行模块21,用于执行上述交易过程,得到上述交易过程的执行结果;
存储模块22,用于将上述执行结果与上述交易区块关联存储至上述交易账本,通过上述添加模块14执行上述将上述交易区块加入上述第一节点设备对应的交易账本中的步骤。
其中,上述装置90还包括:
第三获取模块23,用于基于心跳机制获取核心网络发送的上述交易区块的生成消息,上述核心网络包括上述多个核心节点;
上述广播模块19,还用于向上述核心网络中的上述多个核心节点广播交易区块同步请求,基于上述交易区块同步请求执行上述第一节点设备获取第二节点设备发送的交易区块的步骤,上述第二节点设备为上述核心网络中的一个核心节点。
本申请实施例描述了区块同步装置,第一节点设备通过上述装置获取第二节点设备发送的交易区块,根据该交易区块的区块头中所包含的多个核心节点的投票信息确定交易区块的共识结果,检测交易区块的区块头中的区块头属性参数的合法性,在共识结果为共识成功结果且区块头属性参数为合法参数时,将交易区块加入第一节点设备对应的交易账本。通过上述过程,使得第一节点设备从第二节点设备中同步交易区块时,会对该交易区块的区块头和区块体的一致性进行核验,并对该交易区块的投票情况进行核验,从而提高同步的区块的真实有效性,以提高交易数据的准确性。
参见图10,图10是本申请实施例提供的一种计算机设备的结构示意图。如图10所示,本申请实施例中的计算机设备1000可以包括:一个或多个处理器1001、存储器1002和输入输出接口1003。上述处理器1001、存储器1002和输入输出接口1003通过总线1004连接。存储器1002用于存储计算机程序,该计算机程序包括程序指令,输入输出接口1003用于输入数据和输出数据,包括轻节点与数据节点间的数据交互,数据节点与核心节点间的数据交互,各个轻节点间的数据交互,各个数据节点间的数据交互以及各个核心节点间的数据交互;处理器1001用于执行存储器1002中存储的程序指令,执行如下操作:
第一节点设备获取第二节点设备发送的交易区块,所述交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数;
检测所述区块头属性参数的合法性;
根据所述交易区块的区块头中的所述投票信息确定所述交易区块的共识结果;
若所述区块头属性参数为合法参数,且所述共识结果为共识成功结果,则将所述交易区块加入所述第一节点设备对应的交易账本中。
其中,在一个实施例中,上述投票信息包括投票区块哈希;上述处理器1001还执行如下步骤:
根据上述区块头属性参数确定上述交易区块的区块头哈希;
上述根据上述交易区块的区块头中的上述投票信息确定上述交易区块的共识结果,包括:
对比上述区块头哈希与多个上述投票信息对应的投票区块哈希;
若多个上述投票信息中存在非法投票信息,则确定上述交易区块的上述共识结果为共识失败结果;上述非法投票信息对应的投票区块哈希与上述区块头哈希不同;
若上述多个投票信息均为合法投票信息,则确定上述交易区块的上述共识结果为上述共识成功结果。
其中,在一个实施例中,上述交易区块的区块头中的上述投票信息还包括对应核心节点的标识及投票签名;
上述处理器1001在执行根据上述交易区块的区块头中的上述投票信息确定上述交易区块的共识结果时,具体执行如下步骤:
获取合法核心节点列表;上述合法核心节点列表包括上述多个核心节点的标识及每个标识对应的公钥;
若上述多个核心节点中存在不属于上述合法核心节点列表的核心节点,则确定上述交易区块的上述共识结果为共识失败结果;
若上述多个核心节点均属于上述合法核心节点列表,则根据上述核心节点的标识获取上述核心节点的公钥,采用上述核心节点的公钥对对应核心节点的投票签名进行验签;
若上述多个核心节点中存在投票签名验签失败的核心节点,则确定上述交易区块的上述共识结果为共识失败结果;
若上述多个核心节点的投票签名均验签成功,则确定上述交易区块的上述共识结果为上述共识成功结果。
其中,在一个实施例中,上述处理器1001在执行根据上述交易区块的区块头中的上述投票信息确定上述交易区块的共识结果时,具体执行如下步骤:
将上述多个核心节点的投票信息中投票成功的投票信息确定为目标投票信息,统计上述目标投票信息的投票数量;
若上述投票数量小于投票阈值,则确定上述交易区块的上述共识结果为共识失败结果;
若上述投票数量大于或等于上述投票阈值,则确定上述交易区块的上述共识结果为上述共识成功结果。
其中,在一个实施例中,区块头属性参数包括上述交易区块的前继哈希值及上述交易区块的区块高度;
上述处理器1001在执行上述检测上述区块头属性参数的合法性时,具体执行如下步骤:
获取上述交易区块的上述前继哈希值及上述区块高度;
根据上述区块高度确定上述交易区块的前继区块高度,基于上述前继区块高度从上述交易账本中查找上述交易区块的前继区块;
若未查找到上述前继区块,则确定上述区块头属性参数为非法参数;
若查找到上述前继区块,则获取上述前继区块的区块头哈希值,若上述前继区块的区块头哈希值与上述前继哈希值不同,则确定上述区块头属性参数为非法参数;
若上述前继区块的区块头哈希值与上述前继哈希值相同,则确定上述区块头属性参数为上述合法参数。
其中,在一个实施例中,上述处理器1001在执行检测上述区块头属性参数的合法性时,具体执行如下步骤:
获取区块头属性集合,上述区块头属性集合包括多个区块头属性;
从上述交易区块的区块头中查找每个区块头属性对应的区块头属性参数;
若上述多个区块头属性中存在缺失区块头属性,则确定上述区块头属性参数为非法参数;上述缺失区块头属性在上述区块头中无对应的上述区块头属性参数。
其中,在一个实施例中,上述处理器1001还执行如下步骤:
获取上述交易区块的区块体中的交易数据,根据上述交易数据获取上述交易区块的查验默克尔根;
上述处理器1001在执行述检测上述区块头属性参数的合法性时,具体执行如下步骤:
获取上述交易区块的区块头属性参数中的默认默克尔根;
若上述默认默克尔根与上述查验默克尔根不相同,则确定上述区块头属性参数为非法参数;
若上述默认默克尔根与上述查验默克尔根相同,则确定上述区块头属性参数为上述合法参数。
其中,在一个实施例中,上述交易区块还包括区块生成签名;
上述处理器1001在执行检测上述区块头属性参数的合法性时,具体执行如下步骤:
获取上述交易区块的上述区块生成签名及上述交易区块的生成核心节点的公钥;
采用上述生成核心节点的公钥对上述区块生成签名进行验签;
若验签不通过,则确定上述区块头属性参数为非法参数;
若验签通过,则确定上述区块头属性参数为合法参数。
其中,在一个实施例中,上述处理器1001还执行如下步骤:
若上述共识结果为共识失败结果,则在上述多个核心节点中确定异常核心节点,上述异常核心节点为具有异常的投票信息的核心节点;
删除上述交易区块,广播投票信息异常消息,上述投票信息异常消息包括上述异常核心节点,以使上述多个核心节点对上述异常核心节点进行核验。
其中,在一个实施例中,上述处理器1001还执行如下步骤:
若上述区块头属性参数为合法参数,且上述共识结果为共识成功结果,则获取上述交易区块的区块体中的交易数据,解析上述交易数据得到交易过程;
执行上述交易过程,得到上述交易过程的执行结果;
将上述执行结果与上述交易区块关联存储至上述交易账本,执行上述将上述交易区块加入上述第一节点设备对应的交易账本中的步骤。
其中,在一个实施例中,上述处理器1001还执行如下步骤:
基于心跳机制获取核心网络发送的上述交易区块的生成消息,上述核心网络包括上述多个核心节点;
向上述核心网络中的上述多个核心节点广播交易区块同步请求,基于上述交易区块同步请求执行上述第一节点设备获取第二节点设备发送的交易区块的步骤,上述第二节点设备为上述核心网络中的一个核心节点。
在一些可行的实施方式中,上述处理器1001可以是中央处理单元(centralprocessing unit,CPU),该处理器1001还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器1002可以包括只读存储器和随机存取存储器,并向处理器1001和输入输出接口1003提供指令和数据。存储器1002的一部分还可以包括非易失性随机存取存储器。例如,存储器1002还可以存储设备类型的信息。
具体实现中,上述计算机设备1000可通过其内置的各个功能模块执行如上述图2中各个步骤所提供的实现方式,具体可参见上述图2中各个步骤所提供的实现方式,在此不再赘述。
本申请实施例通过提供一种计算机设备,包括:处理器、输入输出接口、存储器,通过处理器获取存储器中的计算机指令,执行上述图2中所示方法的各个步骤,进行区块同步操作。通过存储器中的计算机指令,处理器执行以下步骤:第一节点设备通过获取第二节点设备发送的交易区块,根据该交易区块的区块头中所包含的多个核心节点的投票信息确定交易区块的共识结果,检测交易区块的区块头中的区块头属性参数的合法性,在共识结果为共识成功结果且区块头属性参数为合法参数时,将交易区块加入第一节点设备对应的交易账本。通过上述过程,使得第一节点设备从第二节点设备中同步交易区块时,会对该交易区块的区块头和区块体的一致性进行核验,并对该交易区块的投票情况进行核验,从而提高同步的区块的真实有效性,以提高交易数据的准确性。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图2中各个步骤所提供的区块同步方法,具体可参见上述图2各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的区块同步装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种区块同步方法,其特征在于,所述方法包括:
第一节点设备获取第二节点设备发送的交易区块,所述交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数;
检测所述区块头属性参数的合法性;
根据所述交易区块的区块头中的所述投票信息确定所述交易区块的共识结果;
若所述区块头属性参数为合法参数,且所述共识结果为共识成功结果,则将所述交易区块加入所述第一节点设备对应的交易账本中。
2.如权利要求1所述的方法,其特征在于,所述投票信息包括投票区块哈希;所述方法还包括:
根据所述区块头属性参数确定所述交易区块的区块头哈希;
所述根据所述交易区块的区块头中的所述投票信息确定所述交易区块的共识结果,包括:
对比所述区块头哈希与多个所述投票信息对应的投票区块哈希;
若多个所述投票信息中存在非法投票信息,则确定所述交易区块的所述共识结果为共识失败结果;所述非法投票信息对应的投票区块哈希与所述区块头哈希不同;
若所述多个投票信息均为合法投票信息,则确定所述交易区块的所述共识结果为所述共识成功结果。
3.如权利要求1所述的方法,其特征在于,所述交易区块的区块头中的所述投票信息还包括对应核心节点的标识及投票签名;
所述根据所述交易区块的区块头中的所述投票信息确定所述交易区块的共识结果,包括:
获取合法核心节点列表;所述合法核心节点列表包括所述多个核心节点的标识及每个标识对应的公钥;
若所述多个核心节点中存在不属于所述合法核心节点列表的核心节点,则确定所述交易区块的所述共识结果为共识失败结果;
若所述多个核心节点均属于所述合法核心节点列表,则根据所述核心节点的标识获取所述核心节点的公钥,采用所述核心节点的公钥对对应核心节点的投票签名进行验签;
若所述多个核心节点中存在投票签名验签失败的核心节点,则确定所述交易区块的所述共识结果为共识失败结果;
若所述多个核心节点的投票签名均验签成功,则确定所述交易区块的所述共识结果为所述共识成功结果。
4.如权利要求1所述的方法,其特征在于,所述根据所述交易区块的区块头中的所述投票信息确定所述交易区块的共识结果,包括:
将所述多个核心节点的投票信息中投票成功的投票信息确定为目标投票信息,统计所述目标投票信息的投票数量;
若所述投票数量小于投票阈值,则确定所述交易区块的所述共识结果为共识失败结果;
若所述投票数量大于或等于所述投票阈值,则确定所述交易区块的所述共识结果为所述共识成功结果。
5.如权利要求1所述的方法,其特征在于,所述区块头属性参数包括所述交易区块的前继哈希值及所述交易区块的区块高度;
所述检测所述区块头属性参数的合法性,包括:
获取所述交易区块的所述前继哈希值及所述区块高度;
根据所述区块高度确定所述交易区块的前继区块高度,基于所述前继区块高度从所述交易账本中查找所述交易区块的前继区块;
若未查找到所述前继区块,则确定所述区块头属性参数为非法参数;
若查找到所述前继区块,则获取所述前继区块的区块头哈希值,若所述前继区块的区块头哈希值与所述前继哈希值不同,则确定所述区块头属性参数为非法参数;
若所述前继区块的区块头哈希值与所述前继哈希值相同,则确定所述区块头属性参数为所述合法参数。
6.如权利要求1所述的方法,其特征在于,所述检测所述区块头属性参数的合法性,包括:
获取区块头属性集合,所述区块头属性集合包括多个区块头属性;
从所述交易区块的区块头中查找每个区块头属性对应的区块头属性参数;
若所述多个区块头属性中存在缺失区块头属性,则确定所述区块头属性参数为非法参数;所述缺失区块头属性在所述区块头中无对应的所述区块头属性参数。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述交易区块的区块体中的交易数据,根据所述交易数据获取所述交易区块的查验默克尔根;
所述检测所述区块头属性参数的合法性,包括:
获取所述交易区块的区块头属性参数中的默认默克尔根;
若所述默认默克尔根与所述查验默克尔根不相同,则确定所述区块头属性参数为非法参数;
若所述默认默克尔根与所述查验默克尔根相同,则确定所述区块头属性参数为所述合法参数。
8.如权利要求1所述的方法,其特征在于,所述交易区块还包括区块生成签名;
所述检测所述区块头属性参数的合法性,包括:
获取所述交易区块的所述区块生成签名及所述交易区块的生成核心节点的公钥;
采用所述生成核心节点的公钥对所述区块生成签名进行验签;
若验签不通过,则确定所述区块头属性参数为非法参数;
若验签通过,则确定所述区块头属性参数为合法参数。
9.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述共识结果为共识失败结果,则在所述多个核心节点中确定异常核心节点,所述异常核心节点为具有异常的投票信息的核心节点;
删除所述交易区块,广播投票信息异常消息,所述投票信息异常消息包括所述异常核心节点,以使所述多个核心节点对所述异常核心节点进行核验。
10.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述区块头属性参数为合法参数,且所述共识结果为共识成功结果,则获取所述交易区块的区块体中的交易数据,解析所述交易数据得到交易过程;
执行所述交易过程,得到所述交易过程的执行结果;
将所述执行结果与所述交易区块关联存储至所述交易账本,执行所述将所述交易区块加入所述第一节点设备对应的交易账本中的步骤。
11.如权利要求1所述的方法,其特征在于,所述方法还包括:
基于心跳机制获取核心网络发送的所述交易区块的生成消息,所述核心网络包括所述多个核心节点;
向所述核心网络中的所述多个核心节点广播交易区块同步请求,基于所述交易区块同步请求执行所述第一节点设备获取第二节点设备发送的交易区块的步骤,所述第二节点设备为所述核心网络中的一个核心节点。
12.一种区块同步装置,其特征在于,所述装置包括:
获取模块,用于第一节点设备获取第二节点设备发送的交易区块,所述交易区块的区块头中包括多个核心节点的投票信息及区块头属性参数;
检测模块,用于检测所述区块头属性参数的合法性;
第一确定模块,用于根据所述交易区块的区块头中的所述投票信息确定所述交易区块的共识结果;
添加模块,用于若所述区块头属性参数为合法参数,且所述共识结果为共识成功结果,则将所述交易区块加入所述第一节点设备对应的交易账本中。
13.如权利要求12所述的装置,其特征在于,所述投票信息包括投票区块哈希;所述装置还包括:
第二确定模块,用于根据所述区块头属性参数确定所述交易区块的区块头哈希;
所述第一确定模块,包括:
对比单元,用于对比所述区块头哈希与多个所述投票信息对应的投票区块哈希;
第一确定单元,用于若多个所述投票信息中存在非法投票信息,则确定所述交易区块的所述共识结果为共识失败结果;所述非法投票信息对应的投票区块哈希与所述区块头哈希不同;
所述第一确定单元,还用于若所述多个投票信息均为合法投票信息,则确定所述交易区块的所述共识结果为所述共识成功结果。
14.一种计算机设备,其特征在于,包括处理器、存储器、输入输出接口;
所述处理器分别与所述存储器和所述输入输出接口相连,其中,所述输入输出接口用于输入数据和输出数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1-11任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010006922.9A CN111209339B (zh) | 2020-01-03 | 2020-01-03 | 区块同步方法、装置、计算机以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010006922.9A CN111209339B (zh) | 2020-01-03 | 2020-01-03 | 区块同步方法、装置、计算机以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111209339A true CN111209339A (zh) | 2020-05-29 |
CN111209339B CN111209339B (zh) | 2021-09-14 |
Family
ID=70784132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010006922.9A Active CN111209339B (zh) | 2020-01-03 | 2020-01-03 | 区块同步方法、装置、计算机以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209339B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114092252A (zh) * | 2021-11-26 | 2022-02-25 | 成都质数斯达克科技有限公司 | 一种区块链交易执行方法、装置、设备及可读存储介质 |
WO2022134951A1 (zh) * | 2020-12-24 | 2022-06-30 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、装置、设备以及计算机可读存储介质 |
CN115280717A (zh) * | 2021-01-11 | 2022-11-01 | 微福斯有限责任公司 | 区块链审计***和方法 |
WO2023020442A1 (zh) * | 2021-08-18 | 2023-02-23 | 华为技术有限公司 | 一种区块链的生成方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106411503A (zh) * | 2016-11-28 | 2017-02-15 | 中国银行股份有限公司 | 区块链投票记账模式的记账方法及***、投票及记账节点 |
CN108023896A (zh) * | 2017-12-28 | 2018-05-11 | 江苏通付盾科技有限公司 | 区块同步方法及*** |
US10102265B1 (en) * | 2017-04-12 | 2018-10-16 | Vijay K. Madisetti | Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing |
CN108846942A (zh) * | 2018-06-29 | 2018-11-20 | 青岛大学 | 基于以太坊区块链的电子投票方法和*** |
CN109189853A (zh) * | 2018-08-08 | 2019-01-11 | 众安信息技术服务有限公司 | 一种区块链之间数据同步方法与装置 |
CN109213901A (zh) * | 2018-09-18 | 2019-01-15 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据同步方法、装置、设备及介质 |
WO2019113495A1 (en) * | 2017-12-08 | 2019-06-13 | Solana Labs, Inc. | Systems and methods for cryptographic provision of synchronized clocks in distributed systems |
CN109978516A (zh) * | 2019-03-06 | 2019-07-05 | 西安电子科技大学 | 区块链网络中区块的制造和同步方法、信息数据处理终端 |
CN110471931A (zh) * | 2019-08-13 | 2019-11-19 | 山大地纬软件股份有限公司 | 一种基于资产交易链的数字资产交易一致性维护方法 |
CN110602148A (zh) * | 2019-10-10 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
-
2020
- 2020-01-03 CN CN202010006922.9A patent/CN111209339B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106411503A (zh) * | 2016-11-28 | 2017-02-15 | 中国银行股份有限公司 | 区块链投票记账模式的记账方法及***、投票及记账节点 |
US10102265B1 (en) * | 2017-04-12 | 2018-10-16 | Vijay K. Madisetti | Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing |
WO2019113495A1 (en) * | 2017-12-08 | 2019-06-13 | Solana Labs, Inc. | Systems and methods for cryptographic provision of synchronized clocks in distributed systems |
CN108023896A (zh) * | 2017-12-28 | 2018-05-11 | 江苏通付盾科技有限公司 | 区块同步方法及*** |
CN108846942A (zh) * | 2018-06-29 | 2018-11-20 | 青岛大学 | 基于以太坊区块链的电子投票方法和*** |
CN109189853A (zh) * | 2018-08-08 | 2019-01-11 | 众安信息技术服务有限公司 | 一种区块链之间数据同步方法与装置 |
CN109213901A (zh) * | 2018-09-18 | 2019-01-15 | 百度在线网络技术(北京)有限公司 | 一种区块链的数据同步方法、装置、设备及介质 |
CN109978516A (zh) * | 2019-03-06 | 2019-07-05 | 西安电子科技大学 | 区块链网络中区块的制造和同步方法、信息数据处理终端 |
CN110471931A (zh) * | 2019-08-13 | 2019-11-19 | 山大地纬软件股份有限公司 | 一种基于资产交易链的数字资产交易一致性维护方法 |
CN110602148A (zh) * | 2019-10-10 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
Non-Patent Citations (1)
Title |
---|
毛宁等: "基于电商平台的区块链状态同步问题研究", 《研究与开发》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022134951A1 (zh) * | 2020-12-24 | 2022-06-30 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、装置、设备以及计算机可读存储介质 |
CN115280717A (zh) * | 2021-01-11 | 2022-11-01 | 微福斯有限责任公司 | 区块链审计***和方法 |
CN115280717B (zh) * | 2021-01-11 | 2024-06-07 | 微福斯有限责任公司 | 区块链审计***和方法 |
WO2023020442A1 (zh) * | 2021-08-18 | 2023-02-23 | 华为技术有限公司 | 一种区块链的生成方法及装置 |
CN114092252A (zh) * | 2021-11-26 | 2022-02-25 | 成都质数斯达克科技有限公司 | 一种区块链交易执行方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111209339B (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111209339B (zh) | 区块同步方法、装置、计算机以及存储介质 | |
US11550935B2 (en) | Method, apparatus, and electronic device for blockchain-based recordkeeping | |
US10958438B2 (en) | Method, apparatus, and electronic device for blockchain-based recordkeeping | |
JP6882474B2 (ja) | リプレイ攻撃の検出のためのシステム及び方法 | |
CN110826111B (zh) | 测试监管方法、装置、设备及存储介质 | |
KR101962686B1 (ko) | 전자 투표 시스템 및 방법 | |
CN109543065B (zh) | 一种结合区块链的视频主动识别方法 | |
CN109598505B (zh) | 一种基于区块链的质量数据处理方法和装置 | |
CN110958319B (zh) | 一种基于区块链的侵权存证管理方法及装置 | |
CN111143883B (zh) | 基于区块链的数字内容取证方法、装置及设备 | |
US11366932B2 (en) | Consensus method and data verification method, apparatus, and system of consortium blockchain | |
CN113326165B (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
CN109447809B (zh) | 一种结合区块链的视频主动识别方法 | |
CN111556115B (zh) | 一种基于区块链的数据处理方法、装置、设备及存储介质 | |
CN109284331B (zh) | 基于业务数据资源的制证信息获取方法、终端设备及介质 | |
CN110599180A (zh) | 一种基于区块链的疫苗流通管理方法及装置 | |
US20220239668A1 (en) | Blockchain-based message processing method and apparatus, device, and storage medium | |
CN110659967B (zh) | 一种基于区块链的房屋管理方法及装置 | |
CN111475778A (zh) | 一种基于区块链的音乐数据处理方法及装置 | |
CN112069529A (zh) | 基于区块链的卷宗管理方法、装置、计算机以及存储介质 | |
CN111507840B (zh) | 区块链共识方法、装置、计算机以及可读存储介质 | |
US20230009460A1 (en) | Trail recording system and data verification method | |
CN109509095B (zh) | 一种结合区块链的视频主动识别方法 | |
CN112835854A (zh) | 文件存储方法、装置、电子设备和存储介质 | |
CN113468201B (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 |