CN111541756B - 区块生成方法、装置、节点设备及存储介质 - Google Patents
区块生成方法、装置、节点设备及存储介质 Download PDFInfo
- Publication number
- CN111541756B CN111541756B CN202010304422.3A CN202010304422A CN111541756B CN 111541756 B CN111541756 B CN 111541756B CN 202010304422 A CN202010304422 A CN 202010304422A CN 111541756 B CN111541756 B CN 111541756B
- Authority
- CN
- China
- Prior art keywords
- block
- target
- target block
- hash value
- group
- 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
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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
-
- 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)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种区块生成方法、装置、节点设备及存储介质,其中方法包括:响应于生成目标区块的触发指令,检测目标区块是否属于第一类型区块,所述触发指令包括至少一个业务请求信息;若目标区块属于第一类型区块,则确定是否存在与生成目标区块相关的关联区块组;若存在,则获取关联区块组中每个关联区块的区块头哈希值,并基于所述每个关联区块的区块头哈希值和至少一个业务请求信息生成目标区块。采用本发明实施例可以有效地生成区块。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块生成方法、装置、节点设备及存储介质。
背景技术
随着科技的不断发展,为了各种业务处理的安全性,多数企业将企业相关业务转移到区块链中进行比如开票业务、银行贷款业务等等。现有技术中,区块链包括多个区块,每个区块包括区块主体和区块头,区块主体中存储有至少一个业务请求信息,区块头中存储有前一个区块头哈希值以及本区块头哈希值等。目前,在区块链网络中,生成区块的方法可包括:当检测到需要生成新区块时,获取该新区块的前一个区块的区块头哈希值;获取需要存储在新区块中的至少一个业务请求信息;对至少一个业务请求信息进行哈希运算,得到新区块的区块头哈希值;将前一个区块的区块头哈希值和新区块的区块头哈希值存储在区块头中以生成新区块。这种区块生成方法比较单一,因此,在区块链网络中如何有效地生成区块成为当前研究的热点问题。
发明内容
本发明实施例提供了一种区块生成方法、装置、节点设备及存储介质,丰富了区块生成方法,可以有效地生成区块。
一方面,本发明实施例提供了一种区块生成方法,应用于区块链网络,所述区块链网络包括至少一个区块组,每个区块组包括多个区块,所述方法包括:
响应于生成目标区块的触发指令,检测所述目标区块是否属于第一类型区块,所述触发指令包括至少一个业务请求信息;
若所述目标区块属于第一类型区块,则确定是否存在与生成所述目标区块相关的关联区块组,所述关联区块组包括的各个关联区块是并发生成的;
若存在,则获取所述关联区块组中每个关联区块的区块头哈希值,并基于所述每个关联区块的区块头哈希值和所述至少一个业务请求信息生成目标区块。
一方面,本发明实施例提供了一种区块生成装置,应用于区块链网络,所述区块链网络包括至少一个区块组,每个区块组包括多个区块,所述装置包括:
检测单元,用于响应于生成目标区块的触发指令,检测所述目标区块是否属于第一类型区块,所述触发指令包括至少一个业务请求信息;
确定单元,还用于若所述目标区块属于第一类型区块,则确定是否存在与生成所述目标区块相关的关联区块组,所述关联区块组包括的各个关联区块是并发生成的;
获取单元,用于若存在,则获取所述关联区块组中每个关联区块的区块头哈希值;
生成单元,用于基于所述每个关联区块的区块头哈希值和所述至少一个业务请求信息生成所述目标区块。
一方面,本发明实施例提供了一种节点设备,其特征在于,包括:处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如下步骤:
响应于生成目标区块的触发指令,检测所述目标区块是否属于第一类型区块,所述触发指令包括至少一个业务请求信息;
若所述目标区块属于第一类型区块,则确定是否存在与生成所述目标区块相关的关联区块组,所述关联区块组包括的各个关联区块是并发生成的;
若存在,则获取所述关联区块组中每个关联区块的区块头哈希值,并基于所述每个关联区块的区块头哈希值和所述至少一个业务请求信息生成目标区块。
一方面,本发明实施例提供了一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时,用于执行如下步骤:
响应于生成目标区块的触发指令,检测所述目标区块是否属于第一类型区块,所述触发指令包括至少一个业务请求信息;
若所述目标区块属于第一类型区块,则确定是否存在与生成所述目标区块相关的关联区块组,所述关联区块组包括的各个关联区块是并发生成的;
若存在,则获取所述关联区块组中每个关联区块的区块头哈希值,并基于所述每个关联区块的区块头哈希值和所述至少一个业务请求信息生成目标区块。
本发明实施例中,将区块链网络中划分出多个区块组,每个区块组包括多个区块,区块链网络中的节点设备响应于生成目标区块的触发指令,检测目标区块所属类型;若该目标区块属于第一类型区块,则确定是否该区块链网络中存在与生成该目标区块相关的关联区块组;如果存在,则基于关联区块组中每个关联区块的区块头哈希值和触发指令中包括的至少一个业务请求信息生成目标区块。在上述区块生成过程中,生成目标区块时,需要依赖目标区块所属的区块类型以及关联区块组中各个关联区块的区块头哈希值,丰富了生成区块的方法,可以有效地生成区块。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的一种区块生成系统的结构示意图;
图1b是本发明实施例提供的一种区块链中区块组的划分示意图;
图1c是本发明实施例提供的另一种区块链中区块组的划分示意图;
图2是本发明实施例提供的一种区块生成方法的流程示意图;
图3是本发明实施例提供的另一种区块生成方法的流程示意图;
图4是本发明实施例提供的一种区块链结构的示意图;
图5是本发明实施例提供的一种区块生成装置的结构示意图;
图6是本发明实施例提供的一种节点设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提供了一种区块生成方案,该区块生成方案可以应用于区块链网络中,所述区块链网络中包括的区块被划分到多个不同的区块组,每个区块组包括多个区块且每个区块组包括的区块数量可以相同,也可以不同,比如每个区块组均包括64个区块;再如,区块链网络中包括2个区块组,其中一个区块组包括10个区块,另外一个区块组包括64个区块。当区块链网络检测到生成目标区块的触发指令时,若该目标区块属于第一类型区块,并且区块链中存储有与生成目标区块的相关的关联区块组,则根据关联区块组中每个关联区块的区块头哈希值和触发指令包括的至少一个业务请求生成目标区块。与现有技术中依赖前一个区块的区块头哈希值生成目标区块的方法相比,丰富了生成区块的方法,实现有效地生成区块。
基于上述的区块生成方案,本发明实施例提供了一种区块生成系统,参考图1a所示,为本发明实施例提供的一种区块生成系统的结构示意图。图1a所示的区块生成系统包括至少一个用户终端101,一个区块链网络102,所述用户终端101可以是区块链网络102中的一个节点设备,也可以是独立于区块链网络102,但是可以与102进行信息交互的终端设备。在本发明实施例中,假设用户终端101是独立于区块链网络102存在的终端设备,比如手机、笔记本电脑、智能穿戴等任何智能设备。
在一个实施例中,用户可以通过用户终端101向区块链网络102中提交业务请求信息,所述业务请求信息可以包括开票业务、转账业务、贷款业务等任意一种或多种业务。所述业务请求信息用于指示区块链网络102执行业务请求信息所指示的业务并将执行结果返回给用户终端101,以便于用户查看。
在一个实施例中,区块链网络102可以理解为一个数据共享系统,可以用于进行节点设备之间数据共享,区块链网络102中可以包括多个节点设备103,区块链102中的多个节点设备103在进行正常工作时可以接收到业务请求信息,并基于接收到的业务请求信息维护区块链内的共享数据。为了保证区块链内节点设备之间互通,每个节点设备之间可以存在连接,节点设备之间通过该连接进行数据传输。例如,当区块链中的任意节点设备接收到业务请求信息时,区块链中的其他节点设备便根据共识算法获取该业务请求信息,将该业务请求信息作为共享数据中的数据进行存储,使得区块链中全部节点存储的数据均一致。
区块链中的每个节点设备均存储一条相同的区块链,区块链由多个区块组成,每个区块中可包括区块头和区块主体,区块头中存储有业务请求信息特征值(或者称为本区块的哈希值)、版本号、时间戳和难度值等,区块主体中存储业务请求信息。区块链中包括的多个区块按照区块的区块高度值值由小到大依次链接。可选的,区块链中的区块高度值可以是大于等于0的连续整数,比如区块高度值依次为0,1,2,…;或者,区块链中的区块高度值也可以是大于等于1的连续整数,比如区块高度值为1,2,3…;再或者,区块高度值也可以是不连续的整数,比如区块高度值为0,2,4…等等。
在本发明实施例中,将区块链中包括的多个区块划分为多个区块组,每个区块组中包括的区块数量可以相同也可以不同。参考图1b所示,为本发明实施例提供的一种区块链网络中区块组划分的示意图,假设每个区块组中包括的区块数量相同,均为2个。基于此,第一个区块和第二个区块划分为同一个区块组,第三个区块和第四个区块划分为同一个区块组,第五个区块和后面要生成的第六个区块划分为同一个区块组,依次类推得到区块链网络包括的多个区块组。
参考图1c,为本发明实施例提供的另一种区块组划分的示意图,假设每个区块组中包括的区块数量不相同,第一区块组可包括两个区块,如图1c第一区块组包括第一个区块和第二个区块;第二区块组可包括三个区块,如图1c所示第二区块组可包括第三个区块、第四个区块以及第五个区块。
在图1a所示的区块生成系统中,当节点设备检测到生成目标区块的触发指令时,检测将要生成的目标区块是否属于第一类型区块,其中,所述触发指令中可包括至少一个业务请求信息,该至少一个业务请求信息可以是节点设备从其对应的交易池中获取的。所述第一类型区块可以指非创世区块,在图1b中第一个区块即为创世区块;若目标区块属于第一类型区块,也即目标区块为非创世区块,则确定是否存在与生成目标区块相关的关联区块组,所述关联区块组中各个关联区块是并发生成的,所述与生成目标区块相关的关联区块组(下面简称为目标区块相关的关联区块组)可以理解为在目标区块之前是否存在区块组,如果存在,则该区块组称为关联区块组。例如,在图1b中,如果第二个区块为目标区块,则不存在目标区块相关的关联区块组;再如,如果第三个区块为目标区块,则第一区块组即为目标区块相关的关联区块组;又如,如果第五个区块为目标区块,则第一区块组和第二区块组均可以作为目标区块相关的关联区块组。
如果存在目标区块相关的关联区块组,则获取关联区块组中每个关联区块的区块头哈希值,并基于每个关联区块的区块头哈希值和至少一个业务请求信息生成目标区块。
在一个实施例中,在基于每个关联区块的区块头哈希值和至少一个业务请求信息生成目标区块时,可以理解为:基于至少一个业务请求信息生成目标区块的哈希值,然后基于目标区块的区块头哈希值、每个关联区块的区块头哈希值以及其他参数,比如目标区块对应的版本号、难度值、时间戳以及随机数等,对区块头进行验证;验证通过后,将每个关联区块的区块头哈希值、目标区块的哈希值、版本号以及时间戳等存储在区块头中;将至少一个业务请求信息存储在区块主体中,得到区块头和区块主体便得到了目标区块。
在一个实施例中,如果目标区块属于第二类型区块,所述第二类型区块可以指创世区块,比如图1b中的第一个区块;或者,目标区块属于第一类型区块,但是区块链网络中不存在目标区块相关的关联区块组比如图1b中的第二个区块,则可以直接根据至少一个业务请求信息生成目标区块。应当理解的,采用上述的方法生成目标区块,丰富了生成区块的方法,可以有效地生成区块。
在一个实施例中,在按照上述方法生成目标区块的过程中,如果检测到生成了新区块,则判断是否该新区块与目标区块处于同一个区块组,如果处于同一个区块组,则目标区块的关联区块组也是该区块的关联区块组比如在图1b中,第三个区块和第四个区块都位于第二区块组中,第一区块组既为第三个区块的关联区块组,也为第四个区块的关联区块组。因此,若目标区块与新区块位于同一个区块组,在生成目标区块的过程中同步基于每个关联区块的区块头哈希值生成新区块,如此一来,可以实现并行生成属于同一个区块组中的区块,提高区块生成效率。如果不是属于同一个区块组,则表明新区块应该是下一个区块组中的区块,由前述可知,目标区块所在的区块组应该为新区块的关联区块组,生成新区块时需要参考该目标区块所在区块组的各个区块的区块头哈希值,因此若新区块与目标区块不是同一个区块组,则在确定所述目标区块的区块头哈希值后,基于所述目标区块所属区块组中每个区块的区块头哈希值生成所述新区块。
如此一来,实现了并行生成同一个区块组中各个区块,与现有技术中串行生成各个区块相比,可以节省生成区块的时间,提高了生成区块的效率。
基于上述的区块生成系统,本发明实施例提供了一种区块生成方法,参考图2,为本发明实施例提供的一种区块生成方法的流程示意图。图2所示的区块生成方法可以应用于区块链网络,所述区块链网络包括至少一个区块组,每个区块组包括多个区块。图2所示的区块生成方法可以由区块链网络中的节点设备执行,具体可由节点设备的处理器执行,所述区块生成方法可包括如下步骤:
步骤S201、响应于生成目标区块的触发指令,检测目标区块是否属于第一类型区块。
其中,触发指令可以是区块链网络检测到生成新区块的时间到达,触发指令中可以包括至少一个业务请求信息。在一个实施例中,所述业务请求信息可以是用户通过用户终端提交的;或者,在其他实施例中,所述业务请求可以是节点设备从该节点设备对应的交易池中选择的。应当理解的,节点设备接收到用户提交的业务请求信息后,可以将业务请求信息存储在交易池中,当需要生成区块时,从交易池中选择一定数量的业务请求信息。
作为一种可行的实施方式,节点设备从交易池中选择打包以生成目标区块的业务请求信息时,可以依据接收到每个业务请求信息的时间进行选择,越早接收到的业务请求信息则越早被打包进区块,越晚接收到的业务请求信息则越晚被打包进区块。
可选的,区块链网络也可以将交易池划分为多个交易池,每个交易池对应一个等级,因此区块链网络中的交易池被划分为多个等级交易池,比如高等级交易池,低等级交易池以及中等级交易池。每个等级交易池对应一个权重值,所有等级交易池的权重值之和等于1。每个等级交易池中存储的业务请求信息获得打包成区块的机会受到等级高低的影响,等级越高的交易池,其中存储的业务请求信息被打包进区块的机会越大,相反,等级越低的交易池,其中存储的业务请求信息被打包进区块的机会越小。举例来说,区块链网络中包括两个等级交易池,分别为高等级交易池和低等级交易池,高等级交易池对应的权重值为0.6,低交易池对应的权重值为0.4,如果需要从交易池中选择10个业务请求信息打包进一个区块,则应该从高等级交易池中选择0.6*10=6个业务请求信息,从低等级交易池中选择0.4*10=4个业务请求信息,此时如果高等级交易池和低等级交易池中均包括20个业务请求信息,则高等级交易池中每个业务请求信息被选择的概率为30%,低等级交易池中每个业务请求新消息被选择的概率为20%。
用户可以预先通过用户终端申请一个等级交易池,并支付相应的费用。若用户申请等级成功,则该用户向区块链网络提交的业务请求信息则会被存储在用户申请的等级交易池中。
作为另一种可行的实施方式,节点设备从交易池中选择打包进目标区块的业务请求信息时,可以根据每个等级交易池对应的权重值以及需要选取的业务请求信息的总数量进行选择。
应当理解的,上述几种方式只是本发明实施例列举的两种获取业务请求信息的方法,在实际应用中,节点设备还可以通过其他方式获取至少一个业务请求信息以打包进目标区块,比如依据业务请求信息的类型等,本发明实施例中不做具体限定。
步骤S202、若目标区块属于第一类型区块,则确定是否存在生成与目标区块相关的关联区块组。
其中,所述第一类型区块包括非创世区块,比如在图1b中,第一个区块为创世区块,因此第一个区块不属于第一类型区块,第二个区块以及第二个区块后面的区块均属于第一类型区块。本发明实施例中,可以称创世区块为第二类型区块。应当理解的,若目标区块属于第二类型区块,也即目标区块为创世区块,则区块链中一定不存与生成目标区块相关的关联区块组。
可选的,关联区块组的数量可以为一个或多个,所述关联区块组是指在目标区块之前的一个或几个区块组。在一个实施例中,若区块链网络的多个区块组中包括的区块数量相同,均为数量阈值个,则所述确定是否存在与生成目标区块相关的关联区块组的实施方式为:根据数量阈值和目标区块与创世区块之间包括的区块数量确定是否存储关联区块组。具体实现中:获取所述目标区块与创世区块之间包括的区块数量;若所述区块数量大于所述数量阈值,则确定存在与生成所述目标区块相关的关联区块组;若所述区块数量小于或等于所述数量阈值,则确定不存在与生成所述目标区块相关的关联区块组。其中,所述目标区块与创世区块之间包括的区块数量包括所述目标区块和所述创世区块,例如,在图1b中,第三个区块为目标区块,则目标区块和创世区块之间包括的区块包括创世区块(也即第一个区块)、第二个区块和目标区块(也即第三个区块),区块数量为3。
如果区块数量大于数量阈值,表明目标区块与创世区块不在一个区块组中,也就是说在目标区块之前已经存在了至少一个区块组,因此在区块数量大于数量阈值的情况下,确定区块链中存在目标区块相关的关联区块组;如果区块数量小于或等于数量阈值,表明目标区块与创世区块位于同一个区块组中,也就是说在目标区块之前不存在区块组,因此在区块数量小于或等于数量阈值的情况下,确定区块链中不存在与生成目标区块相关的关联区块组。
举例来说,在图1b中,假设数量阈值为2,假设目标区块为第二个区块,第二个区块与创世区块之间包括的区块数量为2,区块数量与数量阈值相同,则确定区块链中不存在目标区块相关的关联区块组;假设目标区块为第三个区块,第三个区块与创世区块之间包括的区块数量为3,区块数量大于数量阈值,则确定区块链中存在目标区块相关的关联区块组,此种情况下关联区块组的数量为一个,即为第一区块组;假设目标区块为第五个区块,第五个区块与创世区块之间包括的区块数量为5,区块数量大于数量阈值,则确定区块链中存在目标区块相关的关联区块组,此种情况下关联区块组的数量为2个,即第一区块组和第二区块组。
步骤S203、若存在,则获取关联区块组中每个关联区块的区块头哈希值,并基于每个关联区块的区块头哈希值和至少一个业务请求信息生成目标区块。
在一个实施例中,每个关联区块的区块头哈希值是对相应区块的区块头中包括的信息进行哈希运算得到的。
由前述可知,区块链网络中每个区块由区块头和区块主体组成,生成一个区块可以理解为在该区块对应的区块头和区块主体中存入相应信息。基于此,目标区块可包括目标区块头和目标区块主体,所述基于每个关联区块的区块头哈希值和至少一个业务请求信息生成目标区块,包括:基于所述至少一个业务请求信息生成目标区块的哈希值;获取对目标区块头进行验证所需的验证参数,并基于所述验证参数对所述目标区块头进行验证;验证通过后,将所述每个关联区块的区块头哈希值以及所述目标区块的哈希值存储在所述目标区块头中;将所述至少一个业务请求信息存储在目标区块的目标区块主体中。
简而言之,所述基于目标区块相关的关联区块组和所述至少一个业务请求生成目标区块是指基于目标区块相关的关联区块组和至少一个业务请求信息确定需要存入目标区块的目标区块头以及目标区块主体中的信息。
在一个实施例中,上述对目标区块头进行验证的验证参数可包括:已知参数值的第一参数、待确定参数值的第二参数、每个关联区块的区块头哈希值以及所述目标区块的哈希值。其中,已知参数值的第一参数可包括目标区块对应的版本号、难度值以及时间戳等参数中的任意一个或多个;待确定参数值的第二参数可包括随机数。所述目标区块对应的版本号可以指区块链中相关区块协议的版本信息,所述难度值在一段时间内为一个确定值。
基于此,所述基于所述验证参数对所述目标区块头进行验证,包括:获取任意一个未被选择的参数值作为当前遍历过程中所述第二参数的当前参数值;将所述第一参数的参数值、所述第二参数的当前参数值、所述每个关联区块的区块头哈希值以及所述目标区块的哈希值输入预设规则中进行计算,得到计算结果;若所述计算结果大于或等于阈值,则迭代上述步骤;若所述计算结果小于阈值,则结束当前遍历,并确定对所述目标区块头验证通过。其中,阈值是预先设定的,所述预设规则可以包括哈希运算,常用的哈希算法可包括SHA256,SHA-0,SHA-1以及SHA-2中的任意一种或多种。
上述对目标区块头进行验证的过程可以概括为:尝试不同的第二参数的参数值,并将第二参数的参数值、第一参数的参数值、目标区块的哈希值以及各个关联区块组中每个关联区块的区块头哈希值进行多次哈希运算,直到哈希运算结果小于阈值时,确定目标区块头是有效的区块头,此时对目标区块头的验证通过。上述过程可通过以下公式(1)表示:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TRAGET (1)
其中,假设预设规则为哈希运算,采用的哈希算法为SHA256,version表示目标区块对应的版本号,prev_hash表示关联区块组中每个关联区块的区块头哈希值,merkle_root表示目标区块的哈希值,ntime表示时间戳,nbits表示难度值,x表示随机数,TRAGET表示阈值,阈值可以是根据难度值确定的。
在上面的公式中,尝试不同的随机数x,进行多次计算,直到使得上述公式成立,则确定对目标区块头的验证通过。
在一个实施例中,在通过步骤S201-步骤S203生成目标区块后,区块链网络将基于目标区块的区块高度值将目标区块连接到区块链上。比如,目标区块的区块高度值为5,则将该区块连接在区块高度值为4的区块后。
在一个实施例中,在执行确定是否存在与生成所述目标区块相关的关联区块组之前,所述方法还包括:判断目标区块是否为目标区块所属区块组的第一个区块;若是,执行确定是否存在与生成所述目标区块相关的关联区块组的步骤;若否,则可不执行上述步骤,可直接基于至少一个业务请求生成该目标区块。比如,在图1b中,假设第三个区块为目标区块,第三个区块为第二区块组中的第一个区块,则可以执行判断是否存在与生成目标区块相关的关联区块组的步骤;再如,假设第四个区块为目标区块,第四个区块不是第二区块组中的第一个区块,则可不执行判断是否存在与生成目标区块相关的关联区块组的步骤。这样一来,可以使得第二区块组中,第三个区块的生成与第一区块组有关,第四个区块的生成与第一区块组无关。
如此一来,实现了只将后一个区块组中的第一个区块与前一个区块组相关联,并且也可以达到区块中存储的业务请求信息不被篡改的目的,保证了区块链存储数据的安全性,也能节省终端的部分功耗开销。
本发明实施例中,将区块链网络中划分出多个区块组,每个区块组包括多个区块,当检测到生成目标区块的触发指令时,判断该目标区块所属的区块类型;若该目标区块属于第一类型区块,则确定是否该区块链网络中存在与生成该目标区块相关的关联区块组;如果存在,则基于关联区块组中每个关联区块的区块头哈希值和触发指令中包括的至少一个业务请求信息生成目标区块。在上述区块生成过程中,在生成目标区块时,需要依赖目标区块所属的区块类型以及关联区块组中各个关联区块的区块头哈希值,丰富了区块生成方法,可以有效地生成区块。
基于上述的区块生成系统以及区块生成方法,本发明实施例提供了另一种区块生成方法,参考图3,为本发明实施例提供的另一种区块生成方法的流程示意图。图3所示的区块生成方法可以应用于区块链网络,所述区块链网络包括至少一个区块组,每个区块组包括多个区块。各个区块组包括的区块数量相同,均为数量阈值个,且所述区块链网络中区块高度值是等于或者大于0的整数。图3所示的区块生成方法可以由区块链网络中的节点设备执行,具体可由节点设备的处理器执行,所述区块生成方法可包括如下步骤:
步骤S301、响应于生成目标区块的触发指令,检测目标区块是否属于第一类型区块。
在一个实施例中,步骤S301中包括的一些可行的实施方式可参考图2实施例中相关步骤的描述,在此不再赘述。
步骤S302、若目标区块属于第一类型区块,则获取目标区块的区块高度值。
步骤S303、根据目标区块的区块高度值和数量阈值确定是否存在与生成目标区块相关的关联区块组。
在一个实施例中,如果区块链中各个区块的区块高度值是从0开始并且连续的,则在确定区块链中是否存在与生成目标区块相关的关联区块组时,可以依据目标区块的区块高度值确定。具体实现包括步骤S302和步骤S303即:若目标区块属于第一类型区块,则获取目标区块的区块高度值;根据目标区块的区块高度值和数量阈值确定是否存在与生成目标区块相关的关联区块组。
在一个实施例中,所述根据目标区块的区块高度和数量阈值确定是否存在与生成目标区块相关的关联区块组,包括:若所述区块高度值小于或等于数量阈值,则确定不存在与生成目标区块相关的关联区块;若所述区块高度值大于数量阈值,则确定存在与生成目标区块相关的关联区块。由前述可知,将区块链中每数量阈值个区块划分为一个区块组,如果目标区块的区块高度值小于或等于数量阈值,表明目标区块是位于第一区块组中的区块,也即在目标区块之前不存在区块组,因此可确定不存在与生成目标区块相关的关联区块组;反之,如果目标区块的区块高度值大于数量阈值,表明目标区块不位于区块链中的第一区块组中,也即在目标区块之前已经存在了至少一个区块组,因此可确定存在与目标区块的区块头哈希值计算相关的关联区块组。
由前述可知,第一类型区块可包括非创世区块,第二类型区块可包括创世区块。应当理解的,如果目标区块属于第二类型区块,也即目标区块为创世区块,则区块链中不存在与生成目标区块相关的关联区块。
步骤S304、若存在,则获取关联区块组中每个关联区块的区块头哈希值,并基于每个关联区块的区块头哈希值和至少一个业务请求信息生成目标区块。
在一个实施例中,由图2实施例中相关步骤描述可知,所述基于每个关联区块链的区块头哈希值和至少一个业务请求信息确定目标区块的区块头哈希值,可包括:获取对所述目标区块进行哈希值计算所需的计算参数,所述计算参数包括已知参数值的第一参数和待确定参数值的第二参数;基于所述计算参数、所述每个关联区块的区块头哈希值以及哈希值计算规则确定所述目标区块的区块头哈希值。
在具体实现中,所述基于所述计算参数、所述每个关联区块的区块头哈希值以及哈希值计算规则确定所述目标区块的区块头哈希值,包括:基于所述至少一个业务请求信息生成目标区块的哈希值;获取对目标区块头进行验证所需的验证参数,并基于所述验证参数对所述目标区块头进行验证;验证通过后,将所述每个关联区块的区块头哈希值、所述第一参数以及所述目标区块的哈希值存储在所述目标区块头中;将所述至少一个业务请求信息存储在目标区块的目标区块主体中。
其中,所述基于所述验证参数对所述目标区块头进行验证,包括:获取任意一个未被选择的参数值作为当前遍历过程中所述第二参数的当前参数值;将所述第一参数的参数值、所述第二参数的当前参数值、所述每个关联区块的区块头哈希值以及所述目标区块的哈希值输入预设规则中进行计算,得到计算结果;若所述计算结果大于或等于阈值,则迭代上述步骤;若所述计算结果小于阈值,则结束当前遍历,并确定对所述目标区块头验证通过。
在一个实施例中,所述将所述第一参数的参数值、所述第二参数的当前参数值、所述每个关联区块的区块头哈希值以及目标区块的哈希值输入预设规则中进行计算,得到计算结果,包括:对所述每个关联区块的区块头哈希值进行预设合并运算,得到合并结果;将所述第一参数的参数值、所述第二参数的当前参数值、所述目标区块的哈希值以及所述合并结果输入到所述预设规则中进行计算,得到计算结果。也就是说,首先将各个关联区块的区块头哈希值进行一次预设合并运算,将得到的运算结果和第一参数的参数值、第二参数的当前参数值以及目标区块的哈希值一同输入到预设规则中进行计算。所述预设合并运算可以包括相加运算、加权平均运算、哈希运算等一种或多种,如此一来,提升了生成目标区块复杂度,从而提高了目标区块存储的业务请求信息的安全性。
在一个实施例中,生成目标区块之后,区块链网络基于目标区块的区块高度值将目标区块连接到区块链上。
步骤S305、在生成目标区块的过程中,若检测到生成新区块的指令,则检测新区块与目标区块是否属于同一个区块组。
在一个实施例中,所述检测新区块与目标区块是否属于同一个区块组的实施方式可包括:获取所述目标区块与创世区块之间的区块数量,以及获取新区块与创世区块之间的区块数量;根据目标区块与创世区块之间的区块数量和数量阈值确定目标区块所属的第一区块组别,以及根据新区块与创世区块之间的区块数量和数量阈值确定新区块所属的第二区块组别。如果第一区块组别与第二区块组别相同,则确定新区块与目标区块属于同一个区块组;如果第一区块组别与第二区块组别不相同,则确定新区块与目标区块不属于同一个区块组。
具体实现中,所述根据目标区块与创世区块之间的区块数量和数量阈值确定目标区块所属的第一区块组别,包括:将所述目标区块与创世区块之间的区块数量与数量阈值进行相除运算,如果运算结果不包括余数,则将运算得到的商作为目标区块所属的第一区块组别;如果运算结果包括余数和商,则将商+1作为目标区块所属的第一区块组别,余数表示目标区块为第一区块组别中的第几个区块。
举例来说,如图1b所示,假设数量阈值为2,第四个区块为目标区块,目标区块与创世区块之间的区块数量为4,4/2=2,计算结果中不包括余数,则确定目标区块所属的区块组别为2,也即目标区块在第二区块组中。第五个区块为目标区块,目标区块与创世区块之间的区块数量为5个,5/2=2余1,目标区块所属的区块组别为3,且目标区块为第三区块组中的第一个区块。
在一个实施例中,所述根据新区块与创世区块之间的区块数量和数量阈值确定新区块所属的第二区块组别的实施方式与上述根据目标区块与创世区块之间的区块数量和数量阈值确定目标区块所属的第二区块组别相同,可参见上述,在此不再赘述。
在其他实施例中,若各个区块组包括的区块数量相同,均为数量阈值个,且所述区块链网络中区块高度值是等于或者大于0的整数,则所述检测新区块与目标区块是否属于同一个区块组的实施方式可包括:获取新区块的区块高度值以及目标区块的区块高度值;若新区块的区块高度值与目标区块的区块高度值均大于或等于数量阈值的N-1倍,小于数量阈值的N倍,其中N为大于2的整数,则确定新区块与目标区块属于同一个区块组;若不满足上述条件,则确定新区块与目标区块不属于同一个区块组。
举例来说,假设数量阈值为2,在图1b中,假设目标区块为第四个区块,目标区块的区块高度值为3,新区块为第五个区块,新区块的区块高度值为4,,3和4均满足大于或等于1*2,但是4不满足小于2*2的条件,因此可确定目标区块与新区块不属于同一个区块组。再如,假设目标区块为第三个区块,目标区块的区块高度值为2,新区块为第四个区块,新区块的区块高度值为3,2和3均满足大于或等于1*2,小于2*2的条件,因此可确定目标区块与新区块属于同一区块组。
步骤S306、若是,则在生成目标区块的过程中同步基于每个关联区块的区块头哈希值和指令包括的业务请求信息生成新区块。
本发明实施例中,如果目标区块与新区块属于同一个区块组,则在生成目标区块同时可以并行生成新区块,生成新区块的方法可以与生成目标区块方法相同,参见上述相关描述,在此不再追说。如此一来,实现了并行出块,与现有技术中串行出块相比,节省了生成区块的时间,从而可提高生成区块的效率。
步骤S307、若否,则在生成目标区块后,基于所述新区块对应的关联区块组中每个关联区块的区块头哈希值和指令包括的业务请求信息生成所述新区块。
如果目标区块与新区块不属于同一个区块组,则新区块是位于目标区块的后一个区块组。由前述可知,此种情况下,目标区块的区块组可以为新区块的关联区块组或者为新区块的关联区块组之一。为了生成新区块,至少需要知道目标区块所在区块组的各个区块的区块头哈希值,因此,如果目标区块与新区块不属于同一个区块组,则需要等待生成目标区块后,再生成新区块。
总结来说,区块链网络中的节点设备可以并行生成同一个区块组中各个区块,或者说,可以并行生成数量阈值个区块,然后在每两个连续相邻的区块组之间,后一个区块组中各个区块的生成需要考虑前一个区块组中各个区块的区块头哈希值,如此既实现了各个区块组之间相互关联,保证区块中存储的业务请求信息不被篡改,又提高了生成区块的效率。
采用图3所示的区块生成方法生成区块链网络中各个区块之后,达到了如下效果:对于包括创世区块的区块组,其中任一区块的区块头中包括任一区块本身的哈希值以及其他信息,其他信息可包括难度值、版本号、时间戳中的一种或多种;对于不包括创世区块的区块组,同一个区块组中任一区块的区块头中存储有该区块组的关联区块组中各个关联区块的区块头哈希值、该任一区块本身的哈希值以及其他信息。
举例来说,参考图4,为本发明实施例提供的一种区块链的结构示意图,假设在图4中每两个区块组成一个区块组,假设每个区块的关联区块组为与其所在区块组连续相邻的区块组。在图4中的第一区块组中包括创世区块,因此第一区块组中每个区块头中包括每个区块本身的哈希值以及其他信息,也即第一个区块的区块头中包括第一个区块的哈希值和其他信息,第二个区块的区块头中包括第二个区块的哈希值和其他信息。
在图4中,第二区块组为不包括创世区块的区块组,第二区块组的关联区块为第一区块组,第二区块组中包括了第三个区块和第四个区块,第三个区块和的区块头中存储了关联区块组也即第一区块组中各个区块的区块头哈希值、第三个区块本身的哈希值以及其他信息,同理的,第四个区块的区块头中存储有关联区块组也即第一区块组中每个区块的区块头哈希值,第四个区块自身的哈希值以及其他信息。
本发明实施例中,将区块链网络中划分出多个区块组,每个区块组包括多个区块,当检测到生成目标区块的触发指令时,检测目标区块是否属于第一类型区块,若是则获取目标区块的区块高度值,并根据目标区块的区块高度值和数量阈值确定是否存在与生成目标区块相关的关联区块组;在存在关联区块组的情况下,基于关联区块组中每个关联区块的区块头哈希值和至少一个业务请求信息生成目标区块。在上述区块生成过程中,在生成目标区块时,需要依赖目标区块所属的区块类型以及关联区块组中各个关联区块的区块头哈希值,丰富了区块的生成方法,可以有效地生成区块。
另外,在生成目标区块的过程中,若检测到生成新区块的指令,则检测新区块与目标区块是否属于同一个区块组;若是,则在生成目标区块的过程中同步基于每个关联区块的区块头哈希值和指令包括的业务请求信息生成新区块;若不是,则在生成目标区块之后,再基于新区块的关联区块组中每个关联区块的区块头哈希值和指令包括的业务请求信息生成新区块。也就是说,节点设备可以并行生成同一个区块组中各个区块,或者说,可以并行生成数量阈值个区块,然后在每两个连续相邻的区块组之间,后一个区块组中各个区块的生成需要考虑前一个区块组中各个区块的区块头哈希值,如此既实现了各个区块组之间相互关联,保证区块中存储的业务请求信息不被篡改,又提高了区块生成的效率。
基于上述的方法实施例,本发明实施例还提供了一种区块生成装置,参考图5,为本发明实施例提供的一种区块生成装置的结构示意图。所述区块生成装置可以应用于区块链网络中,所述区块链网络包括至少一个区块组,每个区块组包括多个区块。图5所示的区块生成装置可运行如下单元:
检测单元501,用于响应于生成目标区块的触发指令,检测所述目标区块是否属于第一类型区块,所述触发指令包括至少一个业务请求信息;
确定单元502,用于若所述目标区块属于第一类型区块,则确定是否存在与生成所述目标区块相关的关联区块组,所述关联区块组包括的各个关联区块是并发生成的;
获取单元503,还用于若存在,则获取所述关联区块组中每个关联区块的区块头哈希值;
生成单元504,用于基于所述每个关联区块的区块头哈希值和至少一个业务请求信息生成所述目标区块。
在一个实施例中,所述检测单元501,用于在生成目标区块的过程中,若检测到生成新区块的指令,则检测所述新区块与所述目标区块是否属于同一个区块组;所述生成单元504,还用于若是,则在生成目标区块的区块头哈希值的过程中同步基于所述每个关联区块的区块头哈希值和指令包括的业务请求信息生成所述新区块;所述生成单元504,还用于若否,则在生成所述目标区块后,基于所述新区块对应的关联区块中每个关联区块的区块头哈希值和指令包括的业务请求信息生成所述新区块,所述新区块对应的关联区块组可包括以下一种或多种:所述目标区块所在的区块组,以及所述目标区块和所述目标区块对应的关联区块组。
在一个实施例中,所述多个区块组中各个区块组包括的区块数量相同,均为数量阈值个,所述确定单元502在确定是否存在与生成所述目标区块相关的关联区块组时,执行如下操作:获取所述目标区块与创世区块之间包括的区块数量;若所述区块数量大于所述数量阈值,则确定存在与生成所述目标区块相关的关联区块组;若所述区块数量小于或等于所述数量阈值,则确定不存在与生成所述目标区块相关的关联区块组。
在一个实施例中,所述多个区块组中各个区块组包括的区块数量相同,均为数量阈值个,且所述区块链网络中区块高度值是等于或者大于0的连续的整数,所述确定单元502在确定是否存在与生成所述目标区块相关的关联区块组时,执行如下操作:获取所述目标区块的区块高度值;若所述区块高度值小于或等于数量阈值,则确定不存在与生成所述目标区块相关的关联区块组;若所述区块高度值大于所述数量阈值,则确定存在与生成所述目标区块相关的关联区块组。
在一个实施例中,所述生成单元504还用于若所述目标区块属于第二类型区块,或者,所述目标区块属于第一类型区块且不存在与生成所述目标区块相关的关联区块组,则基于所述至少一个业务请求信息生成目标区块。
在一个实施例中,所述第一类型区块包括非创世区块,所述第二类型区块包括创世区块。
在一个实施例中,所述目标区块包括目标区块主体和目标区块头,所述生成单元504在基于所述每个关联区块的区块头哈希值和所述至少一个业务请求生成目标区块时,执行如下操作:基于所述至少一个业务请求信息生成所述目标区块的哈希值;获取对目标区块头进行验证所需的验证参数,并基于所述验证参数对所述目标区块头进行验证;验证通过后,将所述每个关联区块的区块头哈希值以及所述目标区块的哈希值存储在所述目标区块头中;将所述至少一个业务请求信息存储在所述目标区块的目标区块主体中。
在一个实施例中,所述验证参数包括已知参数值的第一参数、待确定参数值的第二参数、每个关联区块的区块头哈希值以及所述目标区块的哈希值;所述生成单元504在基于所述验证参数对所述目标区块头进行验证时,执行如下操作:获取任意一个未被选择的参数值作为当前遍历过程中所述第二参数的当前参数值;将所述第一参数的参数值、所述第二参数的当前参数值、所述每个关联区块的区块头哈希值以及所述目标区块的哈希值输入预设规则中进行计算,得到计算结果;若所述计算结果大于或等于所述哈希值阈值,则迭代上述步骤;若所述计算结果小于所述哈希值阈值,则结束当前遍历,并确定对所述目标区块头验证通过。
在一个实施例中,所述生成单元504在所述将所述第一参数的参数值、所述第二参数的当前参数值、所述每个关联区块的区块头哈希值以及所述目标区块的哈希值输入预设规则中进行计算,得到计算结果时,执行如下步骤:对所述每个关联区块的区块头哈希值进行预设合并运算,得到合并结果;将所述第一参数的参数值、所述第二参数的当前参数值、所述合并结果以及所述目标区块的哈希值输入预设规则中进行计算,得到计算结果。
根据本发明的一个实施例,图2以及图3所示的区块生成方法中可由图5所示的区块生成装置中的各个单元来执行。例如。图2中所示的S201可由图5所示的区块生成装置中的检测单元501来执行,步骤S202可由图5所示的区块生成装置中的确定单元502来执行,步骤S203可由图5所示的区块生成装置中的获取单元503和生成单元504来执行。再如,图3所示的区块生成方法中步骤S301和步骤S302可由图5所示的区块生成装置中的检测单元501来执行,步骤S303、步骤S305-步骤S307由图5所示的区块生成装置中的确定单元502来执行,步骤S304可由图5所示的区块生成装置中的获取单元503和生成单元504来执行。
根据本发明的另一个实施例,图5所示的区块生成装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于区块生成装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本发明的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2以及图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图5中所示的区块生成装置设备,以及来实现本发明实施例的数据处理方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本发明实施例中,将区块链网络中划分出多个区块组,每个区块组包括多个区块,当检测到生成目标区块的触发指令时判断该目标区块所属的区块类型;若该目标区块属于第一类型区块,则确定是否该区块链网络中存在与生成该目标区块相关的关联区块组;如果存在,则基于关联区块组中每个关联区块的区块头哈希值和至少一个业务请求信息生成目标区块。在上述区块生成过程中,在生成目标区块时,需要依赖目标区块所属的区块类型以及关联区块组中各个关联区块的区块头哈希值,丰富了生成区块的方法,可以有效地生成各个区块。
基于上述方法以及装置项实施例的描述,本发明实施例提供了一种节点设备,参考图6,为本发明实施例提供的一种节点设备的结构示意图。该节点设备可以位于区块链网络中,所述区块链网络包括至少一个区块组,每个区块组包括多个区块。所述节点设备包括处理器601和计算机存储介质602。
计算机存储介质602可以存储在节点设备的存储器中,所述计算机存储介质602用于存储计算机程序,所述计算机程序包括程序指令,所述处理器601用于执行所述计算机存储介质602存储的程序指令。处理器601或称CPU(Central Processing Unit,中央处理器))是节点设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能;在一个实施例中,处理器601可以用于执行:响应于生成目标区块的触发指令,检测所述目标区块是否属于第一类型区块,所述触发指令包括至少一个业务请求信息;若所述目标区块属于第一类型区块,则确定是否存在与生成所述目标区块相关的关联区块组;若存在,则获取所述关联区块组中每个关联区块的区块头哈希值,并基于所述每个关联区块的区块头哈希值和至少一个业务请求信息生成所述目标区块。
本发明实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是节点设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括节点设备中的内置存储介质,当然也可以包括节点设备所支持的扩展存储介质。计算机存储介质提供存储空间,在该存储空间中存放了适于被处理器601加载并执行的一条或多条指令,这些指令可以是一个或多个计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,处理器601加载并执行一条或多条指令时,用于执行:响应于生成目标区块的触发指令,检测所述目标区块是否属于第一类型区块,所述触发指令包括至少一个业务请求信息;;若所述目标区块属于第一类型区块,则确定是否存在与生成所述目标区块相关的关联区块组;若存在,则获取所述关联区块组中每个关联区块的区块头哈希值,并基于所述每个关联区块的区块头哈希值和至少一个业务请求信息生成所述目标区块。
在一个实施例中,所述处理器601还执行:在生成所述目标区块的过程中,若检测到生成新区块的指令,则检测所述新区块与所述目标区块是否属于同一个区块组;若是,则在生成所述目标区块的过程中同步基于所述每个关联区块的区块头哈希值和指令包括的业务请求信息生成所述新区块;若否,则在生成所述目标区块后,基于所述新区块对应的关联区块中每个关联区块的区块头哈希值和指令包括的业务请求信息生成所述新区块,所述新区块对应的关联区块组可包括以下一种或多种:所述目标区块所在的区块组,以及所述目标区块和所述目标区块对应的关联区块组。
在一个实施例中,所述多个区块组中各个区块组包括的区块数量相同,均为数量阈值个,所述处理器601在确定是否存在与生成所述目标区块相关的关联区块组时,执行如下操作:获取所述目标区块与创世区块之间包括的区块数量;若所述区块数量大于所述数量阈值,则确定存在与生成所述目标区块相关的关联区块组;若所述区块数量小于或等于所述数量阈值,则确定不存在与生成所述目标区块相关的关联区块组。
在一个实施例中,所述多个区块组中各个区块组包括的区块数量相同,均为数量阈值个,且所述区块链网络中区块高度值是等于或者大于0的连续的整数,所述处理器601在确定是否存在与生成所述目标区块相关的关联区块组时,执行如下操作:获取所述目标区块的区块高度值;若所述区块高度值小于或等于数量阈值,则确定不存在与生成所述目标区块相关的关联区块组;若所述区块高度值大于所述数量阈值,则确定存在与生成所述目标区块相关的关联区块组。
在一个实施例中,所述处理器601还执行:若所述目标区块属于第二类型区块,或者,所述目标区块属于第一类型区块且不存在与生成所述目标区块相关的关联区块组,则基于所述至少一个业务请求信息生成所述目标区块。
在一个实施例中,所述第一类型区块包括非创世区块,所述第二类型区块包括创世区块。
在一个实施例中,所述目标区块包括目标区块主体和目标区块头,所述处理器601基于所述每个关联区块的区块头哈希值和所述至少一个业务请求生成目标区块时,执行如下操作:基于所述至少一个业务请求信息生成所述目标区块的哈希值;获取对目标区块头进行验证所需的验证参数,并基于所述验证参数对所述目标区块头进行验证;验证通过后,将所述每个关联区块的区块头哈希值以及所述目标区块的哈希值存储在所述目标区块头中;将所述至少一个业务请求信息存储在所述目标区块的目标区块主体中。
在一个实施例中,所述验证参数包括已知参数值的第一参数、待确定参数值的第二参数、每个关联区块的区块头哈希值以及所述目标区块的哈希值;所述处理器601在基于所述验证参数对所述目标区块头进行验证时,执行如下操作:获取任意一个未被选择的参数值作为当前遍历过程中所述第二参数的当前参数值;将所述第一参数的参数值、所述第二参数的当前参数值、所述每个关联区块的区块头哈希值以及所述目标区块的哈希值输入预设规则中进行计算,得到计算结果;若所述计算结果大于或等于阈值,则迭代上述步骤;若所述计算结果小于所述阈值,则结束当前遍历,并确定对所述目标区块头验证通过。
在一个实施例中,所述处理器601在所述将所述第一参数的参数值、所述第二参数的当前参数值、所述每个关联区块的区块头哈希值以及所述目标区块的哈希值输入预设规则中进行计算,得到计算结果时,执行如下操作:对所述每个关联区块的区块头哈希值进行预设合并运算,得到合并结果;将所述第一参数的参数值、所述第二参数的当前参数值、所述合并结果以及所述目标区块的还细致输入到所述预设规则中进行计算,得到计算结果。
本发明实施例中,将区块链网络中划分出多个区块组,每个区块组包括多个区块,当检测到生成目标区块的触发指令时,判断该目标区块所属的区块类型;若该目标区块属于第一类型区块,则确定是否该区块链网络中存在与生成该目标区块相关的关联区块组;如果存在,则基于关联区块组中每个关联区块的区块头哈希值和至少一个业务请求信息生成目标区块。在上述区块生成过程中,在生成目标区块时,需要依赖目标区块所属的区块类型以及关联区块组中各个关联区块的区块头哈希值,丰富了区块生成方法,可以有效地生成各个区块。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明部分实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (12)
1.一种区块生成方法,其特征在于,应用于区块链网络,所述区块链网络包括至少一个区块组,每个区块组包括多个区块,所述至少一个区块组中各个区块组包括的区块数量相同,均为数量阈值个,所述方法包括:
响应于生成目标区块的触发指令,检测所述目标区块是否属于第一类型区块,所述第一类型区块包括非创世区块,所述触发指令包括至少一个业务请求信息;
若所述目标区块属于第一类型区块,则根据所述数量阈值和所述目标区块与创世区块之间包括的区块数量确定是否存在与生成所述目标区块相关的关联区块组,或者,根据所述数量阈值和所述目标区块的区块高度值确定是否存在与生成所述目标区块相关的关联区块组,所述关联区块组包括的各个关联区块是并发生成的;
若存在,则获取所述关联区块组中每个关联区块的区块头哈希值,并基于所述每个关联区块的区块头哈希值和所述至少一个业务请求信息生成目标区块。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在生成所述目标区块的过程中,若检测到生成新区块的指令,则检测所述新区块与所述目标区块是否属于同一个区块组;
若是,则在生成所述目标区块的过程中同步基于所述每个关联区块的区块头哈希值和所述指令包括的业务请求信息生成所述新区块;
若否,则在生成所述目标区块后,基于所述新区块对应的关联区块组中每个关联区块的区块头哈希值和所述指令包括的业务请求信息生成所述新区块,所述新区块对应的关联区块组可包括以下一种或多种:所述目标区块所在的区块组以及所述目标区块对应的关联区块组。
3.如权利要求1所述的方法,其特征在于,所述根据所述数量阈值和所述目标区块与创世区块之间包括的区块数量确定是否存在与生成所述目标区块相关的关联区块组,包括:
获取所述目标区块与创世区块之间包括的区块数量;
若所述区块数量大于所述数量阈值,则确定存在与生成所述目标区块相关的关联区块组;
若所述区块数量小于或等于所述数量阈值,则确定不存在与生成所述目标区块相关的关联区块组。
4.如权利要求1所述的方法,其特征在于,所述区块链网络中区块高度值是等于或者大于0的连续的整数,所述根据所述数量阈值和所述目标区块的区块高度值确定是否存在与生成所述目标区块相关的关联区块组,包括:
获取所述目标区块的区块高度值;
若所述区块高度值小于或等于所述数量阈值,则确定不存在与生成所述目标区块的相关的关联区块组;
若所述区块高度值大于所述数量阈值,则确定存在与生成所述目标区块相关的关联区块组。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标区块属于第二类型区块,或者若所述目标区块属于第一类型区块,且不存在与生成所述目标区块相关的关联区块组,则基于所述至少一个业务请求信息生成所述目标区块。
6.如权利要求5所述的方法,其特征在于,所述第一类型区块包括非创世区块,所述第二类型区块包括创世区块。
7.如权利要求1所述的方法,其特征在于,所述目标区块包括目标区块主体和目标区块头,所述基于所述每个关联区块的区块头哈希值和所述至少一个业务请求信息生成目标区块,包括:
基于所述至少一个业务请求信息生成所述目标区块的哈希值;
获取对所述目标区块头进行验证所需的验证参数,并基于所述验证参数对所述目标区块头进行验证;
验证通过后,将所述每个关联区块的区块头哈希值以及所述目标区块的哈希值存储在所述目标区块头中;
将所述至少一个业务请求信息存储在所述目标区块的目标区块主体中。
8.如权利要求7所述的方法,其特征在于,所述验证参数包括已知参数值的第一参数、待确定参数值的第二参数、每个关联区块的区块头哈希值以及所述目标区块的哈希值,所述基于所述验证参数对所述目标区块头进行验证,包括:
获取任意一个未被选择的参数值作为当前遍历过程中所述第二参数的当前参数值;
将所述第一参数的参数值、所述第二参数的当前参数值、所述每个关联区块的区块头哈希值以及所述目标区块的哈希值输入预设规则中进行计算,得到计算结果;
若所述计算结果大于或等于阈值,则迭代上述步骤;
若所述计算结果小于所述阈值,则结束当前遍历,并确定对所述目标区块头验证通过。
9.如权利要求8所述的方法,其特征在于,所述将所述第一参数的参数值、所述第二参数的当前参数值、所述每个关联区块的区块头哈希值以及所述目标区块的哈希值输入预设规则中进行计算,得到计算结果,包括:
对所述每个关联区块的区块头哈希值进行预设合并运算,得到合并结果;
将所述第一参数的参数值、所述第二参数的当前参数值、所述合并结果以及所述目标区块的哈希值输入到所述哈希值计算规则中进行计算,得到计算结果。
10.一种区块生成装置,其特征在于,应用于区块链网络,所述区块链网络包括至少一个区块组,每个区块组包括多个区块,所述至少一个区块组中各个区块组包括的区块数量相同,均为数量阈值个,所述装置包括:
检测单元,用于响应于生成目标区块的触发指令,检测所述目标区块是否属于第一类型区块,所述第一类型区块是指非创世区块,所述触发指令包括至少一个业务请求信息;
确定单元,用于若所述目标区块属于第一类型区块,则根据所述数量阈值和所述目标区块与创世区块之间包括的区块数量确定是否存在与生成所述目标区块相关的关联区块组,或者,根据所述数量阈值和所述目标区块的区块高度值确定是否存在与生成所述目标区块相关的关联区块组;
获取单元,用于若存在,则获取所述关联区块组中每个关联区块的区块头哈希值;
生成单元,用于基于所述每个关联区块的区块头哈希值和所述至少一个业务请求信息生成所述目标区块。
11.一种节点设备,其特征在于,包括:
处理器适用于实现一条或多条指令;以及
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-9任一项所述的区块生成方法。
12.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时,用于执行如权利要求1-9任一项所述的区块生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010304422.3A CN111541756B (zh) | 2020-04-17 | 2020-04-17 | 区块生成方法、装置、节点设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010304422.3A CN111541756B (zh) | 2020-04-17 | 2020-04-17 | 区块生成方法、装置、节点设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111541756A CN111541756A (zh) | 2020-08-14 |
CN111541756B true CN111541756B (zh) | 2021-10-15 |
Family
ID=71979968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010304422.3A Active CN111541756B (zh) | 2020-04-17 | 2020-04-17 | 区块生成方法、装置、节点设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111541756B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112508577A (zh) * | 2021-02-04 | 2021-03-16 | 北京全息智信科技有限公司 | 区块生成及验证的方法、装置、电子设备和可读存储介质 |
CN112529589B (zh) * | 2021-02-10 | 2021-07-27 | 北京全息智信科技有限公司 | 一种长耗时区块链交易的处理方法、装置和电子设备 |
CN115708118A (zh) * | 2021-08-18 | 2023-02-21 | 华为技术有限公司 | 一种区块链的生成方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107396360A (zh) * | 2017-08-15 | 2017-11-24 | 中国联合网络通信集团有限公司 | 区块验证方法及装置 |
CN108810119A (zh) * | 2018-05-31 | 2018-11-13 | 中国联合网络通信集团有限公司 | 区块链处理方法、装置及区块链节点 |
CN109034809A (zh) * | 2018-08-16 | 2018-12-18 | 北京京东尚科信息技术有限公司 | 区块链的生成方法、装置、区块链节点及存储介质 |
CN109101572A (zh) * | 2018-07-17 | 2018-12-28 | 何晓行 | 基于区块链的存证方法、装置及服务器、存储介质 |
CN109246084A (zh) * | 2018-08-13 | 2019-01-18 | 中国联合网络通信集团有限公司 | 新区块生成方法、装置、电子设备与存储介质 |
CN109491996A (zh) * | 2018-09-27 | 2019-03-19 | 上海点融信息科技有限责任公司 | 用于区块链网络的区块生成方法、区块数据访问方法、计算设备、存储介质 |
CN109586949A (zh) * | 2018-10-17 | 2019-04-05 | 北京新唐思创教育科技有限公司 | 区块生成方法及计算机存储介质 |
CN110263579A (zh) * | 2018-11-16 | 2019-09-20 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、系统及相关设备 |
CN110633323A (zh) * | 2019-09-16 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 业务数据存储方法、装置、存储介质和计算机设备 |
CN110851535A (zh) * | 2019-11-18 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、存储介质及终端 |
CN110889729A (zh) * | 2019-11-29 | 2020-03-17 | 腾讯科技(深圳)有限公司 | 一种基于区块链网络的数据验证方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11139957B2 (en) * | 2016-12-08 | 2021-10-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for creating a finite blockchain |
CN107124403A (zh) * | 2017-04-14 | 2017-09-01 | 朱清明 | 区块链中共识区块的生成方法与计算设备 |
KR102417067B1 (ko) * | 2017-12-08 | 2022-07-05 | 한국전자통신연구원 | 블록 체인 네트워크의 노드에서 수행되는 블록 생성 방법 및 장치 |
-
2020
- 2020-04-17 CN CN202010304422.3A patent/CN111541756B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107396360A (zh) * | 2017-08-15 | 2017-11-24 | 中国联合网络通信集团有限公司 | 区块验证方法及装置 |
CN108810119A (zh) * | 2018-05-31 | 2018-11-13 | 中国联合网络通信集团有限公司 | 区块链处理方法、装置及区块链节点 |
CN109101572A (zh) * | 2018-07-17 | 2018-12-28 | 何晓行 | 基于区块链的存证方法、装置及服务器、存储介质 |
CN109246084A (zh) * | 2018-08-13 | 2019-01-18 | 中国联合网络通信集团有限公司 | 新区块生成方法、装置、电子设备与存储介质 |
CN109034809A (zh) * | 2018-08-16 | 2018-12-18 | 北京京东尚科信息技术有限公司 | 区块链的生成方法、装置、区块链节点及存储介质 |
CN109491996A (zh) * | 2018-09-27 | 2019-03-19 | 上海点融信息科技有限责任公司 | 用于区块链网络的区块生成方法、区块数据访问方法、计算设备、存储介质 |
CN109586949A (zh) * | 2018-10-17 | 2019-04-05 | 北京新唐思创教育科技有限公司 | 区块生成方法及计算机存储介质 |
CN110263579A (zh) * | 2018-11-16 | 2019-09-20 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、系统及相关设备 |
CN110633323A (zh) * | 2019-09-16 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 业务数据存储方法、装置、存储介质和计算机设备 |
CN110851535A (zh) * | 2019-11-18 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、存储介质及终端 |
CN110889729A (zh) * | 2019-11-29 | 2020-03-17 | 腾讯科技(深圳)有限公司 | 一种基于区块链网络的数据验证方法和装置 |
Non-Patent Citations (3)
Title |
---|
"Ouroboros Genesis: Composable Proof-of-Stake Blockchains with Dynamic Availability";Christian Badertscher,et al;《IEEE》;20190222;全文 * |
"针对区块链可扩展性的双子链模型设计";肖尧等;《物联网技术》;20190220;全文 * |
A Master-Slave Blockchain Paradigm and Application in Digital Rights Management;Zhaofeng Ma等;《中国通信》;20180815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111541756A (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111541756B (zh) | 区块生成方法、装置、节点设备及存储介质 | |
US20200026699A1 (en) | Highly Performant Decentralized Public Ledger with Hybrid Consensus | |
CN108804706B (zh) | 一种区块链数据处理方法、装置、设备及存储介质 | |
CN111885050B (zh) | 基于区块链网络的数据存储方法、装置、相关设备及介质 | |
CN112907369B (zh) | 基于区块链的数据共识方法及装置、电子设备、存储介质 | |
Dias et al. | Parallel computing applied to the stochastic dynamic programming for long term operation planning of hydrothermal power systems | |
CN109872161B (zh) | 一种加速iota子链交易验证过程的芯片及系统 | |
CN111061735B (zh) | 一种基于单链区块链的扩容方法及装置 | |
CN110599177A (zh) | 一种交易验证方法及相关设备 | |
CN111429122A (zh) | 基于dag区块链的数据验证方法、装置和计算机设备 | |
CN110995589B (zh) | 一种区块链网络出块时的区块传递方法、装置及设备 | |
CN110084596B (zh) | 一种处理区块链混合共识的方法和装置 | |
CN110247753B (zh) | 基于区块链节点网络的出块方法及装置 | |
CN113468271A (zh) | 智能合约账户的存储空间管理方法和装置 | |
CN111338688A (zh) | 数据长效缓存方法、装置、计算机系统及可读存储介质 | |
CN113448694B (zh) | 一种提高事务处理能力的区块链共识方法 | |
CN109921897A (zh) | 工作量证明计算的触发方法、装置、计算设备及存储介质 | |
CN110601780B (zh) | 一种基于区块链的动态频谱接入方法 | |
CN112486912A (zh) | 一种文件转换系统、方法、电子设备及存储介质 | |
Hambrusch et al. | C/sup 3: an architecture-independent model for coarse-grained parallel machines | |
CN116088939A (zh) | 一种gpu加速的多数据多线程sha-256计算实现方法 | |
CN109981286A (zh) | 一种工作量证明计算的触发方法、装置及计算设备 | |
CN114661477A (zh) | 一种低能耗的区块资源证明方法、装置和电子设备 | |
CN110601834B (zh) | 一种共识方法、装置、设备及可读存储介质 | |
CN113268322A (zh) | 一种拥有资源能力计算的方法、系统、装置以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40027957 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |