CN109902091A - 数据区块在区块链上记录的方法、领导记账节点和介质 - Google Patents
数据区块在区块链上记录的方法、领导记账节点和介质 Download PDFInfo
- Publication number
- CN109902091A CN109902091A CN201910130823.9A CN201910130823A CN109902091A CN 109902091 A CN109902091 A CN 109902091A CN 201910130823 A CN201910130823 A CN 201910130823A CN 109902091 A CN109902091 A CN 109902091A
- Authority
- CN
- China
- Prior art keywords
- data block
- block
- block chain
- branch
- recorded
- 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
Classifications
-
- 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
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- 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/602—Providing cryptographic facilities or services
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- 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
- H04L9/3239—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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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
Abstract
本公开提供了一种数据区块在区块链上记录的方法、领导记账节点和介质。所述方法包括:生成当前数据区块;确定所述多个支区块链中的每个支区块链是否有数据区块尚未完成共识、等待上链;如果存在无数据区块尚未完成共识、等待上链的支区块链,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链;将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中;将所述当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上。本公开实施例提高了区块链上记录数据区块的效率。
Description
技术领域
本公开涉及区块链领域,具体涉及一种数据区块在区块链上记录的方法、领导记账节点和介质。
背景技术
在区块链系统中,需要向区块链上记录交易信息的记账节点向领导记账节点发送交易信息,领导记账节点将需要上链的交易信息打包成一个个的区块,而每个区块中都会保存前一个区块的摘要,通过这种机制将一个个的区块串联起来形成块链结构,以达到放篡改的效果。因为如果篡改区块链上的一个区块的话,其后一个区块中记录着该区块的摘要,会与篡改后的区块无法匹配。
由于每次产生一个区块的时候,都需要加入前一个区块的摘要,所以决定了出块的过程天然是串行的过程。而这种串行的过程又会导致整个系统的记录速度会受到很大的限制。
发明内容
本公开的一个目的在于提高区块链上记录数据区块的效率。
根据本公开实施例的一方面,公开了一种数据区块在区块链上记录的方法,所述区块链包括多个支区块链,所述多个支区块链由同一组记账节点进行数据区块的记录,所述方法由该组记账节点中的领导记账节点执行,所述方法包括:
生成当前数据区块;
确定所述多个支区块链中的每个支区块链是否有数据区块尚未完成共识、等待上链;
如果存在无数据区块尚未完成共识、等待上链的支区块链,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链;
将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中;
将所述当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上。
根据本公开实施例的一方面,公开了一种用于区块链记录的领导记账节点,所述区块链包括多个支区块链,所述多个支区块链由同一组记账节点进行数据区块的记录,所述领导记账节点是从该组记账节点中选出的,所述领导记账节点包括:
当前数据区块生成模块,用于生成当前数据区块;
确定模块,用于确定所述多个支区块链中的每个支区块链是否有数据区块尚未完成共识、等待上链;
支区块链选择模块,用于如果存在无数据区块尚未完成共识、等待上链的支区块链,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链;
摘要值记录模块,用于将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中;
共识上链模块,用于将所述当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上。
根据本公开实施例的一方面,公开了一种领导记账节点,包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行如上所述的方法。
根据本公开实施例的一方面,公开了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行如上所述的方法。
本公开实施例中,区块链包括多个支区块链,这些支区块链都由同一组记账节点进行数据区块的记录。这样,在要将当前数据区块上链时,就可以找支区块链中那些没有数据区块处于共识阶段、等待上链的那些支区块链上链。在区块头中记录前一数据区块的摘要时,不是将整个区块链的前一数据区块的摘要记录在区块头中,而是将选择的支区块链上前一记录的数据区块(已共识完,不用等待)的摘要记录在当前数据区块的区块头中。这样,避免了现有技术中等待整个区块链上前一数据区块共识完,才能获得其摘要,记录在当前数据区块的区块头,而一旦前一数据区块没有完成共识,就要一直等待造成的低效率。通过这种多个支区块链的方式,让出块过程在一定程度上并行,提高了系统出块的效率。由于多个支区块链都由同一组记账节点记账,保证了在同一个进程中维护,每个记账节点都拥有该组记账节点记录数据的全部历史信息,避免了跨区块链记录数据信息不全的缺点。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。
图1A-1C示出了根据本公开一个实施例的数据区块在区块链上记录的方法的三种体系构架图。
图2A-2E示出了在电子发票上链的应用场景之下数据区块在区块链上记录的方法执行过程中的界面图。
图3A示出了一般的单区块链结构记录数据区块的示意图;图3B是根据本公开实施例的多支区块链结构中记录数据区块的示意图。
图4A示出了一般的区块链上的区块的数据结构示意图;图4B是根据本公开实施例的区块头的数据结构示意图。
图5A示出了一般的区块数据结构中交易信息输入项和输出项的链接关系;图5B示出了根据本公开的实施例的区块数据结构中交易信息输入项和输出项的链接关系。
图6示出了根据本公开一个实施例在区块链上记录数据区块的时序图。
图7示出了根据本公开实施例多支区块链结构中记录数据区块的过程示意图。
图8示出了排布成多维矩阵形式的多个支区块链示意图。
图9示出了根据本公开一个实施例的数据区块在区块链上记录的方法的流程图。
图10示出了根据本公开一个实施例的步骤430的一个具体过程流程图。
图11示出了根据本公开一个实施例的步骤4303的一个具体过程流程图。
图12示出了根据本公开一个实施例的步骤450的一个具体过程流程图。
图13示出了根据本公开一个实施例的其它记账节点生成对当前数据区块的验证结果的流程图。
图14示出了根据本公开一个实施例的领导记账节点的确定过程的详细流程图。
图15示出了根据本公开一个实施例的领导记账节点的模块图。
图16示出了根据本公开一个实施例的领导记账节点的硬件图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些示例实施方式使得本公开的描述将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多示例实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的示例实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、步骤等。在其它情况下,不详细示出或描述公知结构、方法、实现或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。
附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
下面先参照图1A-1C描述一下本公开实施例所应用的体系构架和整体流程。
在图1A所示的体系构架中,一组记账节点100包括多个记账节点101,在多个记账节点101中有一个领导记账节点102。该领导记账节点102可以是一成不变的,也可以是定期从所有记账节点101中选举出的。如图1A所示的体系构架中,每个记账节点100同时又是产生交易信息的产生方节点,即交易信息产生方记账节点103。
交易信息产生方记账节点103产生需要记录到区块链200的交易信息,发送给领导记账节点102。领导记账节点102不是立即将该交易信息上链,而是将其缓存,等到满足打包条件(例如缓存的交易信息达到预定数目,或预定大小),将其打成一个包准备上链。由于区块链200包括三个(图中示出三个,但可以是其它数目)支区块链201,领导记账节点102要确定将该包记录到哪个支区块链201。当前数据区块的前一个要记录在区块链上的数据区块要记录在的支区块链是支区块链1,还没有完成共识,按照现有技术,就要等到该前一个数据区块共识完,才能确定摘要,进而完成当前数据区块的区块头的填写。这样,会造成上链效率低。由于图1中有三条支区块链,除支区块链1的两条支区块链2和3的最后一个数据区块都已经共识完,因此,可以在支区块链2和3中选择一个支区块链上链。由于这两个支区块链的目前最后一个数据区块已经共识完,其摘要是确定的,可以将该摘要填写在当前数据区块的区块头中,并将当前数据区块发送给该组记账节点100中的其它记账节点101共识后,上链到该支区块链,实现出块效率的提高。
图1B示出了根据本公开实施例的数据区块在区块链上记录的方法所应用的另一种体系架构。图1B与图1A的区别是,记账节点100本身不作为产生交易信息的产生方节点。交易信息产生方节点104在该组记账节点100外部,每个交易信息产生方节点104在该组记账节点100中有一个对应的记账节点102。当交易信息产生方节点104产生需要上链的交易信息后,发送给对应的记账节点102,由对应的记账节点102发送给领导记账节点102。领导记账节点打包并上链的过程与图1A所示相同,故不赘述。
在图1B中,交易信息产生方节点104没有记账(数据区块上链)权限,也不能对记账节点101的任何记账行为进行验证和见证,只能完全信赖记账节点101。
在图1C中,交易信息产生方业务节点106也在该组记账节点100外部。但与图1B不同的是,各交易信息产生方业务节点106组成了一组业务节点107,其中,该组业务节点107中的业务节点106虽然也没有记账(数据区块上链)权限,但能对记账节点101的记账行为进行验证和见证。
具体地说,当交易信息产生方业务节点106有需要上链的交易信息时,将交易信息发送给代理节点105。代理节点105是该组业务节点107中专用于在该组记账节点100和该组业务节点107之间进行接口的节点。代理节点105将该交易信息发送到该组记账节点100中的一个记账节点102,由该记账节点102将该交易信息发送给领导记账节点102。领导记账节点102打包并上链的过程与图1A所示相同,故不赘述。
领导记账节点102将数据区块上链时,在区块头中加入对该数据区块的区块体进行摘要运算得出的摘要、以及对摘要用领导记账节点102的私钥加密得到的签名。领导记账节点102完成上链后,将数据区块的区块头通过代理节点105发放到各交易信息产生方业务节点106,各交易信息产生方业务节点106用领导记录节点102的公钥解密该签名,得到摘要,与区块头中本身含有的摘要进行比较,如果一致,则签名验证通过,否则,签名验证不通过,由此来防止记账节点101的集体作弊行为,对记账节点101的记账进行验证。因此,图1C的体系构架与图1B不同的是,业务节点106可以对记账节点101的记账行为进行见证,而不是被动地信赖记账节点101。
图2A-2E示出了在电子发票上链的应用场景之下数据区块在区块链上记录的方法执行过程中的界面图。
电子发票从一方转移到另一方的过程被认为是电子发票的一次交易。交易相关的信息称为交易信息。税务局终端将电子发票发放到开票单位终端,电子发票完成了一次发行的交易,需要将发行电子发票的交易信息写到区块链上。开票单位终端将电子发票开出到报销人终端,电子发票完成了一次开票的交易,需要将开票的交易信息写到区块链上。报销人终端与报销单位终端进行报销结算,电子发票完成了一次报销的交易,需要将报销的交易信息写到区块链上。在这些情况下,都需要对交易信息上链。
领导记账节点102接收到要添加在当前数据区块中的交易信息后,不是立即交易信息打包上链,而是要等到要添加在当前数据区块中的交易信息凑够足够的大小,或者具有足够的条数,然后才能打包成一个当前数据区块。当要添加在当前数据区块中的交易信息凑够足够的大小时,在领导记账节点102出现如图2A所示的界面,提示“目前待上链电子发票交易信息已凑够打包大小,开始打包”。
如果图2A的界面上,管理员点击“确定”,则开始选择要记录的支区块链。该区块链上前一数据区块要记录在支区块链1上,但还未完成共识。如果当前数据区块也记录到支区块链1上,就要等待前一数据区块共识完成,从而将其摘要记录在当前数据区块的区块头中,这样造成上链效率非常低。因此,可以在最后一个数据区块已经共识完成的2个支区块链,即支区块链2和3中,选择一个支区块链,如支区块链2。可以直接将支区块链2的当前最后一个数据区块的摘要记录在当前数据区块的区块头中,并将当前数据区块记录在支区块链2上。这样,就避免了前一数据区块共识未完成、无法获得摘要填写区块体,造成无限制的等待。这时,在图2B的界面上提示“区块链上前一数据区块记录在支区块链1上,当前生成的数据区块将被记录在支区块链2上”。
在图2B的界面上,如果管理员点击“确定”,出现图2C的界面,提示“已将支区块链2上的前一数据区块的摘要值记录在当前数据区块的区块头,是否发送到其它记账节点共识”。如果管理员选择“确定”,将当前数据区块发送到其它记账节点共识,本记账节点将当前数据区块记录到区块链上。
当其它记账节点共识成功后,显示图2D所示的界面,提示“其它记账节点共识成功,是否进行上链”。如果管理员选择“确定”,其它记账节点将当前数据区块记录到区块链上。
上链后,出现图2E所示的界面,提示“上链完成”。
下面结合图3A和图3B讨论一下根据本公开实施例在多支区块链结构中记录数据区块与在现有的单区块链结构中记录数据区块的区别。
如图4A所示,数据区块的数据结构包括区块头301和区块体302。区块体302是包含上链的所有交易信息的部分,是上链的实质性内容。区块头301是携带上链的额外信息(如标识信息)的部分。区块头302至少要记录两方面的内容,一个是当前数据区块的区块体的摘要,一个是区块链上前一数据区块的摘要。前者是为了形成唯一代表该数据区块的标识,为了查询方便。后者是为了让每一区块包含前一区块有关的内容,同时自己的内容也关联在后一区块中,达到不可更改的目的。如果私自篡改区块链上的一个区块,将造成前一区块和后一区块的区块头中的内容无法匹配,因此很容易发现。
因此,如图3A所示,在现有的单区块链结构中,每个数据区块的区块头中都需要填写前一数据区块的摘要值,所以在前一数据区块完成共识之前,当前数据区块始终有一个字段的值是没有确定的,这也就导致了必须等待前一数据区块已经共识后,当前数据区块才能上链。如图3A中,必须等到前一数据区块成为已上链数据区块203(完成了共识)后,共识中数据区块204才能上链。
在本公开实施例中,如图3B所示,区块链分为多个支区块链1-5。图3B中曲线是各支区块链被选为上链的支区块链的顺序。在区块链上已经记录了10个已上链数据区块203的情况下,数据区块204正在共识,其选定将记录在支区块链1上,后面的待上链数据区块205将不选择记录在支区块链1上,而是陆续选择记录在没有正在共识的数据区块的支区块链2、3、4……这是因为,如果选择记录在支区块链1上,必须等待数据区块204共识,才能获得其摘要,从而将摘要记录在下一待上链数据区块205的区块头中,完成上链,这样会造成很长的等待时间,不能并行处理,效率低。陆续选择记录在支区块链2、3、4等就没有这一问题,因为这些支区块链上目前最后一个数据区块已经共识完毕,可以将该支区块链上目前最后一个数据区块的摘要写入要上链的数据区块的区块头,因此可以比较快速地记录在该支区块链中,提高上链效率。
如图9所示,根据本公开的一个实施例,提供了一种数据区块在区块链上记录的方法。该方法由图1A-C中的领导记账节点102执行。该领导记账节点可以是固定的,也可以是定时选出的。领导记账节点102的选出方法将在后文中详细描述。
该实施例中,区块链包括多个支区块链。支区块链是区块链分成的、由同一组记账节点进行数据区块的记录并占用同一进程的链。同一进程是指,支区块链的分配是统一调度的,每个支区块链上记录的数据区块也是按照一个总的调度顺序来记录的。这与子区块链的概念形成对比。子区块链是指区块链分成的、由不同组记账节点进行数据区块的记录并占用不同进程的链。例如,子区块链1、2、3可能分别记录供应链金融、电子发票、法定数字货币的交易的数据区块,其分别由专门记录供应链金融、电子发票、法定数字货币数据区块的记账节点组1、记账节点组2、记账节点组3完成上链。每个数据区块在每个记账节点组上链的顺序也相互独立,不互相影响。相比而言,支区块链1、2、3由同一组记账节点来记录,数据区块在支区块链1、2、3上的记录顺序也是受其在该组记账节点中的数据区块生成顺序影响的,其在支区块链上被记录的顺序并不独立,是受其在整个区块链中的生成顺序控制的。
如图9所示,在该实施例中,所述方法包括:
步骤410、生成当前数据区块;
步骤420、确定所述多个支区块链中的每个支区块链是否有数据区块尚未完成共识、等待上链;
步骤430、如果存在无数据区块尚未完成共识、等待上链的支区块链,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链;
步骤440、将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中;
步骤450、将所述当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上。
下面对这些步骤进行详细描述。
在步骤410中,生成当前数据区块。
当前数据区块是包含要上链的交易信息的、当前要上链的数据区块。在一个实施例中,领导记账节点102接收到要添加在当前数据区块中的交易信息后,不是立即交易信息打包上链,而是要等到要添加在当前数据区块中的交易信息满足预定条件,例如凑够足够的大小,或者具有足够的条数,然后才能打包成一个当前数据区块。
在步骤420中,确定所述多个支区块链中的每个支区块链是否有数据区块尚未完成共识、等待上链。
由于该组记账节点需要上链的数据区块都是通过领导记账节点来上链的,因此,领导记账节点非常清楚,这些支区块链上哪些支区块链有数据区块尚未完成共识,有哪些支区块链没有尚未共识完的数据区块。在一个实施例中,在领导记录节点中可以针对每个支区块链设一个共识标志位。每当生成一个数据区块,并选择该数据区块要记录的支区块链时,该支区块链对应的共识标志位置1。一旦所述支区块链的共识完成,将该支区块链对应的共识标志位置0。这样,共识标志位为0的那些支区块链,就是无数据区块尚未完成共识、等待上链的支区块链。
在步骤430中,如果存在无数据区块尚未完成共识、等待上链的支区块链,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链。
选择记录当前数据区块的支区块链的一种方式可以是,在无数据区块尚未完成共识、等待上链的支区块链中,依照序号的顺序,进行选择。
在该实施例中,所述从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链,包括:
将所述无数据区块尚未完成共识、等待上链的支区块链中、序号大于区块链前一数据区块所记录在的支区块链的序号的支区块链中序号最小的一个,选择为记录当前数据区块的支区块链;
如果所述无数据区块尚未完成共识、等待上链的支区块链中,没有序号大于区块链前一数据区块所记录在的支区块链的序号的支区块链,选择所述无数据区块尚未完成共识、等待上链的支区块链中序号最小的一个支区块链,作为记录当前数据区块的支区块链。
从所述无数据区块尚未完成共识、等待上链的支区块链中、序号大于区块链前一数据区块所记录在的支区块链的序号的支区块链中进行选择,保障了按照序号的由小到大顺序进行选择。在这些序号大于区块链前一数据区块所记录在的支区块链的序号的支区块链中选择序号最小的一个,保障了中间不会遗漏。例如,有5个支区块链,序号为1-5,但只有序号为1、3、5的支区块链是无数据区块尚未完成共识的支区块链。前一数据区块上链到支区块链2中,此时应在大于序号2的支区块链3、5中选择,有序号3是较小的序号,因此,选择支区块链3上链。
另外,还要有循环的机制保证当支区块链选择到非常大的序号时,造成没有比其序号大的、无数据区块尚未完成共识的支区块链时,能够循环回序号最小的支区块链开始检查。因此,如果没有序号比前一数据区块上链的支区块链的序号大的、无数据区块尚未完成共识的支区块链时,选择所述无数据区块尚未完成共识、等待上链的支区块链中序号最小的一个支区块链,作为记录当前数据区块的支区块链,即循环回序号最小的区块链重新选择。例如,有5个支区块链,序号为1-5,但只有序号为1-3的支区块链是无数据区块尚未完成共识的支区块链。前一数据区块上链到支区块链4中,没有序号比4更大的、无数据区块尚未完成共识的支区块链,因此,应循环回序号1,选择支区块链1上链。
上述实施例的优点是按照序号轮询的方式,简便易行,实行成本低。
选择记录当前数据区块的支区块链的一种方式可以是,按照均衡每个支区块链上的数据区块数的原则,将当前数据区块分配到目前记录的数据区块最少的支区块链上。在该实施例中,所述从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链,包括:
确定无数据区块尚未完成共识、等待上链的每个支区块链的已记录数据区块数;
选择已记录数据区块数最少的一个支区块链,作为记录当前数据区块的支区块链。
在一个实施例中,确定无数据区块尚未完成共识、等待上链的每个支区块链的已记录数据区块数,可以通过查询无数据区块尚未完成共识、等待上链的每个支区块链的最后一个数据区块的区块高度实现。区块高度是指区块在该支区块链上按记录时间顺序的序号。在某一支区块链上,记录第一个数据区块,高度为1;记录第二个数据区块,高度为2……以此类推。这样,区块高度就代表了该支区块链上的已记录数据区块数。
该实施例的优点是,有利于均衡支区块链的数据区块数量,提高资源利用合理性。
选择记录当前数据区块的支区块链的另一种方式可以是,按照每个支区块链上时间均衡等记录的原则,将当前数据区块分配到确定无数据区块尚未完成共识、等待上链的每个支区块链上当前最后一个数据区块的记录时间与当前数据的差最大的一个支区块链中。在该实施例中,所述从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链,包括:
确定无数据区块尚未完成共识、等待上链的每个支区块链上当前最后一个数据区块的记录时间与当前数据的差;
选择所述差最大的一个支区块链,作为记录当前数据区块的支区块链。
领导记账节点中可以维护一个数据区块标识与记录时间的对应关系列表。可以根据无数据区块尚未完成共识、等待上链的每个支区块链上当前最后一个数据区块的标识,查找该对应关系列表,得到无数据区块尚未完成共识、等待上链的每个支区块链上当前最后一个数据区块的记录时间。
选择已记录的最后一个数据区块的记录时间与当前时间相差最大的一个其它支区块链,作为记录当前数据区块的支区块链的优点是,有利于让上链时间比较近的数据区块分散到不同支区块链中,让各支区块链存储上链时间上比较分散的数据区块,使各支区块链在数据区块的上链时间方面负荷均衡。
在另一个实施例中,如图10所示,述从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链,包括:
步骤4301、确定无数据区块尚未完成共识、等待上链的每个支区块链的已记录数据区块数;
步骤4302、确定无数据区块尚未完成共识、等待上链的每个支区块链上当前最后一个数据区块的记录时间与当前数据的差;
步骤4303、根据所述已记录数据区块数和所述差,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链。
该实施例与仅考虑支区块链的已记录的数据区块数、或者仅考虑已记录的最后一个数据区块的区块头中的记录时间与当前时间的差来确定记录当前数据区块的支区块链的实施例相比,既考虑到了数据区块数量在每个支区块链上的均衡,又考虑到了各个不同时间上链的数据区块在各支区块链上的均衡,有利于数据区块在各支区块链上的整体负荷均衡,提高资源协同利用率。
如图11所示,在一个实施例中,步骤4303包括:
步骤43031、针对无数据区块尚未完成共识、等待上链的每个支区块链的所述已记录数据区块数,确定第一分数;
步骤43032、针对无数据区块尚未完成共识、等待上链的每个支区块链的所述差,确定第二分数;
步骤43033、基于第一分数和第二分数的加权和,确定记录当前数据区块的支区块链。
该实施例中,将支区块链的已记录的数据区块数、或者已记录的最后一个数据区块的区块头中的记录时间与当前时间的差分数化,依靠分数的值综合确定记录当前数据区块的支区块链。这样做的好处是,用更加量化的方法选择记录当前数据区块的支区块链,提高支区块链选择的精确性。
在一个实施例中,步骤43031可以通过公式的方式实现。由于将支区块链的已记录的数据区块数越少,越希望将其确定为记录当前数据区块的支区块链,可以为其设置更高的第一分数。因此,可以设置有以下公式:
S1=a1/(1+P) 公式1
其中,S1代表第一分数,a1是预先根据经验设置的常数,P是支区块链的已记录的数据区块数。之所以在分母上设置加1的项,是为了防止在某一支区块链目前还没有任何数据区块上链的情况下,分母等于0。通过公式1,可以针对针对无数据区块尚未完成共识、等待上链的每个支区块链,计算出第一分数。
公式法计算第一分数的优点是提高了选择的支区块链的准确性。
在另一个实施例中,步骤43031可以通过查找预设的支区块链的已记录的数据区块数与第一分数对应关系表的方式实现。以下是该对应关系表的一个例子。
已记录的数据区块数 | 第一分数 |
0-1 | 1 |
2-4 | 0.8 |
5-9 | 0.6 |
10-19 | 0.4 |
20-49 | 0.2 |
50以上 | 0 |
表1支区块链的已记录的数据区块数与第一分数对应关系表
这样,可以通过查找支区块链的已记录的数据区块数与第一分数对应关系表,就可以得到该支区块链的第一分数。
该查表方式的优点是操作简便易行。
在一个实施例中,步骤43032可以通过公式的方式实现。由于已记录的最后一个数据区块的区块头中的记录时间与当前时间的差越大,越希望将其确定为记录当前数据区块的支区块链,可以为其设置更高的第二分数。
因此,可以设置有以下公式:
S2=a2ΔT 公式2
其中,S2代表第二分数,a2是预先根据经验设置的常数,ΔT是已记录的最后一个数据区块的区块头中的记录时间与当前时间的差。通过公式2,可以针对针对无数据区块尚未完成共识、等待上链的每个支区块链,计算出第二分数。
同理,在另一个实施例中,步骤43032可以通过查找预设的已记录的最后一个数据区块的区块头中的记录时间与当前时间的差与第二分数对应关系表的方式实现。以下是该对应关系表的一个例子。
表2已记录的最后一个数据区块的区块头中的记录时间与当前时间的差与第二分数对应关系表
在步骤43033中,基于第一分数和第二分数的加权和,确定记录当前数据区块的支区块链。
该实施例的优点是,为第一分数和第二分数分配不同的权重,充分考虑了支区块链的已记录的数据区块数、和已记录的最后一个数据区块的区块头中的记录时间与当前时间的差对支区块链的选择的贡献不同,提高了确定支区块链的精确性。
具体实施时,可以将第一分数和第二分数的加权和最大的支区块链,确定为记录当前数据区块的支区块链。也可以从第一分数和第二分数的加权和或加权平均值超过预定加权和阈值的所有支区块链中任取一个支区块链,确定为记录当前数据区块的支区块链。
在步骤440中,将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中。
这里的选择的支区块链上记录的前一数据区块,是指选择的支区块链上目前记录的最后一个数据区块。该最后一个数据区块是已经完成上链的数据区块,可以立即将它的摘要值放在当前数据区块的区块头中上链,而不用等待,提高上链效率。
在一个实施例中,如图4A所示,区块头还包括当前数据区块的区块体的摘要值。区块体包含当前数据区块中的所有交易信息。摘要值的作用是,由于区块体的内容不同,摘要值就不同,因此,该摘要值唯一代表了该数据区块。在查询时,可以根据该摘要值对数据区块进行查询。
在该实施例中,步骤440包括:
按照预定摘要算法,计算当前数据区块的区块体的摘要值;
将当前数据区块的区块体的摘要值、与选择的支区块链上记录的前一数据区块的摘要值一起记录在当前数据区块的区块头中。
在步骤450中,将所述当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上。
如图3B所示,将当前数据区块记录在选择的支区块链上,意味着将当前数据区块记录在选择的支区块链上的前一数据区块的后面,其前一数据区块的摘要值记录在当前数据区块的区块头中,当前数据区块的摘要值又记录在该支区块链上当前数据区块的下一个即将记录的数据区块的区块头中,形成相互验证、不能篡改的链。该支区块链的区块高度加1。
在一个实施例中,每个支区块链具有标识。各支区块链的标识彼此不同。步骤450包括:将选择的支区块链上记录的前一数据区块的摘要值、以及选择的支区块链的标识记录在当前数据区块的区块头中。
实际上,如图4B所示,在区块头中可能不仅包括选择的支区块链上记录的前一数据区块的摘要值(hashPrevBlock)和选择的支区块链的标识(nChinaId),可能还包括当前数据区块的区块体的摘要值(图4B具体为默克尔树根,其为摘要值的一种,hashMerkleRoot)、区块链版本号(nVersion)、区块链的记录时间(即上链时间,nTime)以及区块链特殊标记(nNonce)。
图4B中,现有的区块头仅包括区块链版本号(nVersion)、支区块链上记录的前一数据区块的摘要值(hashPrevBlock)、当前数据区块的区块体的摘要值(hashMerkleRoot)、区块链的记录时间(即上链时间,nTime)以及区块链特殊标记(nNonce)。本公开实施例中,区块头中增加了支区块链的标识(nChinaId)。但是,本领域技术人员应当理解,区块链版本号(nVersion)、区块链的记录时间(nTime)以及区块链特殊标记(nNonce)是可选的。在一个实施例中,区块头中可以完全不包括它们。在另一个实施例中,区块头中可以包括它们中的一项或多项。在另一个实施例中,区块头中还可以包括除了上述提及的字段之外的其它字段。
区块链版本号(nVersion)表示区块链系统的版本号。例如,记录电子发票信息的区块链系统可能由一代系统升级到二代系统,其区块链系统的组网方式、区块链上数据区块的数据结构升级后可能都有变化。在区块头中标识出区块链版本号,有助于标识该数据区块是在哪个区块链系统版本下上链的数据区块。
区块链的记录时间(nTime)即数据区块记录到该区块链上的时间。它可以由领导记账节点在当前数据区块上链时将当前时间写入该记录时间字段,然后进行上链。
区块链特殊标记(nNonce)是对于标识比特币交易来说经常会使用的一个字段。
区块头含有该支区块链的标识,是为了上链时可以方便地根据该标识将数据区块记录到该标识对应的支区块链中。在一个实施例中,如图12所示,步骤450包括:
步骤4501、将当前数据区块发送到该组记账节点中的其它记账节点;
步骤4502、接收到来自所述其它记账节点的对当前数据区块的验证结果;
步骤4503、当基于验证结果确定验证成功后,将当前数据区块记录在选择的支区块链上,并通知该组记账节点中的其它记账节点,以便所述其它记账节点根据所述区块头中的支区块链的标识,将当前数据区块记录在选择的支区块链上。
下面对步骤4501-4503进行详细描述。
在步骤4501中,将当前数据区块发送到该组记账节点中的其它记账节点,是为了让该组记账节点中其它记账节点验证该当前数据区块,达到共识的目的。
在步骤4502中,接收到来自所述其它记账节点的对当前数据区块的验证结果。
其它记账节点的对当前数据区块的验证包括输出项耗用验证、数据区块签名验证、交易信息签名验证等。
下面先讨论输出项耗用验证。
在一个实施例中,区块体中的每个交易信息具有输入项和输出项。交易可以理解成将已经存在的一些信息输入交易信息产生方节点,由交易信息产生方节点对输入的信息进行处理,产生并输出交易结果信息的过程,其中,输入交易信息产生方节点的信息叫做输入项,由交易信息产生方节点输出的交易结果信息叫做输出项。
例如,电子发票应用场景中,税务局终端向开票单位终端发行电子发票时,税务局终端输入的发行方信息(如税务局名称、地址等)就是输入项,而作为发行电子发票的结果,产生的一系列电子发票的标识(如电子发票的编号等)、电子发票上填的开票单位终端信息(开票单位名称、纳税人识别号等)就是输出项。开票单位终端向报销人终端开出电子发票时,开票单位终端上输入的电子发票信息(如开出的电子发票的标识等)就是输入项,而作为开出电子发票的结果,在电子发票上填写的报销人名称、联系方式等,就是输出项。报销人终端向报销单位终端报销时,报销单位终端上输入的报销人名称、联系方式等,就是输入项,而作为报销的结果,报销单位的名称、纳税人识别号等,就是输出项。从中可以看出,输入项和输出项是相对的。
从上可以看出,一个交易信息中的输入项可能就是另一个交易信息中的输出项。例如,开出电子发票的交易信息的输入项是发行电子发票的交易信息的输出项,报销电子发票的交易信息的输入项是开出电子发票的交易信息的输出项。因此,所述输入项经常会链接到该当前数据区块之前记录在区块链上的另一数据区块的交易信息的输出项。例如,当前数据区块是报销电子发票的交易信息所在的数据区块的输入项,其链接到开出电子发票的交易信息所在的数据区块的输出项。链接的含义是,某一交易信息中的输入项就是另一个交易信息中的输出项时,将该输入项用另一个交易信息中的输出项表示,从而清晰表示出数据区块的交易信息之间的关系。
在一个实施例中,所述输入项包括:输入项所链接到的支区块链标识(nPreOutChinaId)、输入项所链接到的数据区块的摘要值(hashPrevTx)、输入项所链接到的数据区块内的交易信息的索引(NPreOutIndex)。
如图4B所示,现有的区块体中的交易信息的输入项可以包括5个字段,分别是区块链版本号(nVersion)、输入项所链接到的数据区块的摘要值(hashPrevTx)、输入项所链接到的数据区块内的交易信息的索引(NPreOutIndex)、脚本长度(nScriptLength)、脚本(bScript)。输入项所链接到的数据区块的摘要值(hashPrevTx)标识了输入项链接到了区块链上记录的之前的哪个数据区块。输入项所链接到的数据区块内的交易信息的索引(NPreOutIndex)标识了输入项链接到了该数据区块内哪个交易信息。通过输入项所链接到的数据区块的摘要值(hashPrevTx)、输入项所链接到的数据区块内的交易信息的索引(NPreOutIndex),唯一限定了单区块链上输入项所链接到的区块链上之前记录的交易信息的位置。但是,在多支区块链的情况下,输入项中还需要另外一个字段,即输入项所链接到的支区块链标识(nPreOutChinaId)。通过输入项所链接到的支区块链标识(nPreOutChinaId),先找到输入项链接到的支区块链。找到该支区块链后,再通过输入项所链接到的数据区块的摘要值(hashPrevTx),找到输入项链接到的之前的数据区块。找到该数据区块后,再通过输入项所链接到的数据区块内的交易信息的索引(NPreOutIndex),找到输入项链接到的交易信息,实现多支区块链结构中输入项链接到的之前记录的交易信息的精确定位。
图5A和图5B分别清楚地示出了在现有的单区块链结构中数据区块的交易信息的输入项与之前记录的交易信息的输出项的链接、以及在本公开实施例的多支区块链结构中数据区块的交易信息的输入项与之前记录的、可能处于不同支区块链上的交易信息的输出项的链接。
如图5A所示,在现有的单区块链结构中,数据区块中某一交易信息的输入项如果链接到其它交易信息的输出项,一定是链接到该区块链上之前记录的某一数据区块中的某一交易信息的输出项。
如图5B所示,在本公开实施例的多支区块链结构中,数据区块中某一交易信息的输入项如果链接到其它交易信息的输出项,却不一定是该交易信息所在的本支区块链上的之前记录的数据区块中的交易信息的输出项,有可能链接到了本支区块链之外的其它支区块链上之前记录的某一数据区块中的某一交易信息的输出项。通过这种方式,保证了各支区块链之间共享同一进程,共享同样的未占用资源。无论是哪个支区块链占用了资源,都占用了区块链的总资源,这与子区块链的情形完全不同。
在一个实施例中,所述来自所述其它记账节点的对当前数据区块的验证结果是通过以下方式生成的(输入项耗用验证过程):
确定所述当前数据区块中的每个交易信息的输入项链接到的另一数据区块的交易信息的输出项是否已被在当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块的交易信息的输入项所链接,如果是,则验证结果为不通过;反之,则验证结果为通过。
该验证的意义在于,防止特定交易行为的重复发生,例如电子发票重复报销。电子发票报销的交易信息的输入项链接到之前的开出电子发票的交易信息的输出项。如果在开出电子发票的交易信息的数据区块上链后,该电子发票已经被报销过,该报销电子发票的交易信息的输入项同样会链接到该开出电子发票的交易信息的输出项,而当前数据区块中的交易信息又是链接到该开出电子发票的交易信息的输出项,说明是重复报销行为,输出项耗用验证不通过。
在一个实施例中,所述确定所述当前数据区块中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项是否已被在当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块的交易信息的输入项所链接,包括:
遍历当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块中交易信息的输入项,逐一确定该输入项是否链接到该另一数据区块的交易信息的输出项。
由于在数据区块的区块头中记录有数据区块的记录时间,即上链时间,因此,可以从当前数据区块和该另一数据区块获取到当前数据区块和该另一数据区块的记录时间。然后,找出在这两个记录时间之间记录在区块链上的所有数据区块。
在一个实施例中,找出在这两个记录时间之间记录在区块链上的所有数据区块的方式可以是,在领导记账节点中维护有所有记录的数据区块标识(例如摘要值)、记录时间和记录的支区块链标识的对应关系表。这要求领导记账节点每将一个数据区块记录到一个支区块链上,就将记录的数据区块标识(例如摘要值)、记录时间和记录的支区块链标识相对应的记录在对应关系表中。这样,可以查找对应关系表中记录时间在所述两个记录时间之间的所有记录,按照找到的记录中的支区块链标识找到对应的支区块链,按照找到的记录中的数据区块标识(例如摘要值)找到支区块链上对应的数据区块。该实施例的好处在于,通过查表的方式,提高了查找在所述两个记录时间之间记录在区块链上的所有数据区块的处理速度。
在另一个实施例中,找出在这两个记录时间之间记录在区块链上的所有数据区块的方式可以是,针对各支区块链上的每个数据区块,确定该数据区块的区块头中的记录时间是否在所述两个记录时间之间,如果是,则该数据区块就是一个在这两个记录时间之间记录在区块链上的数据区块。该实施例的好处是,不占用领导记账节点内存,节省资源。
找出在这两个记录时间之间记录在区块链上的所有数据区块后,针对其中的每一个数据区块中交易信息的输入项,逐一确定该输入项是否链接到该另一数据区块的交易信息的输出项,其中,如果确定出一个输入项链接到该另一数据区块的交易信息的输出项,则说明有重复进行某一交易的行为,如重复报销,确定该交易信息无效;反之,则确定该交易信息有效。
这种遍历当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块中交易信息的输入项,逐一确定该输入项是否链接到该另一数据区块的交易信息的输出项的方式的好处是,可以提高验证该交易信息的有效性的准确性。
在另一个实施例中,所述确定所述当前数据区块中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项是否已被在当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块的交易信息的输入项所链接,包括:
查询所述当前数据区块中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项所对应的占用状态字,如果该占用状态字指示占用,则验证结果为不通过;反之,则验证结果为通过。
相应地,在步骤450之后,所述方法还包括:
设置当前数据区块的每个交易信息的输出项所对应的占用状态字为指示未占用;
设置当前数据区块的每个交易信息的输入项所链接到的另一数据区块的交易信息的输出项对应的占用状态字为指示占用。
在该实施例中,领导记账节点每上链一个数据区块,就为该数据区块中的每一个交易信息输出项分配一个占用状态字,与该交易信息对应存储在领导记账节点的内存中,并将该占用状态字设置为未占用,如设置为0。后续一旦上链任何数据区块,除了为这些数据区块中的交易信息的输出项也同样分配占用状态字并设置为指示未占用之外,还将这些交易信息输入项链接到的交易信息输出项对应的占用状态字设置为指示占用,如设置为1。已经被设置为指示占用的占用状态字不能被再次设置为指示占用,这样就避免了重复报销等交易的重复发生。
具体地,查询所述区块体中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项所对应的占用状态字,如果该占用状态字指示占用,则说明很有可能是重复发生了某种交易(如重复报销),确定验证结果不通过;反之,则确定验证结果通过。
该实施例的优点在于,能够快速通过查询内存中的占用状态字,进行输出项耗用验证,提高了输出项耗用验证的效率。
下面讨论数据区块签名验证的过程。
在一个实施例中,步骤440包括:将选择的支区块链上记录的前一数据区块的摘要值、以及用特定于所述领导记账节点的私钥对所述摘要值加密形成的签名一起,记录在当前数据区块的区块头中。
所述来自所述其它记账节点的对当前数据区块的验证结果通过以下方式生成:
用特定于所述领导记账节点的公钥对所述签名解密;
将解密的结果与区块头中的摘要值比对,如一致,则验证结果为通过,反之,则验证结果为不通过。
该实施例的好处在于,可以对领导记账节点的记账进行验证,从而在以后的过程中该记账具有不可抵赖性。由于领导记账节点用特定于所述领导记账节点的私钥对区块体签名,除了领导记账节点自己一般不会具有该领导记账节点的私钥,因此,如果能从领导记账节点的公钥对所述区块体和签名验证成功,说明该区块体一定是该领导记账节点上链的。今后该区块体的内容发生任何问题,如被举报篡改,其一定是领导记账节点做的,因为只有领导记录节点才能用其私钥签名,因此,产生了不可抵赖性,提高了区块链上链的安全性。
领导记账节点的公私钥可以由专门的授权中心节点(未示)统一发放。
下面讨论交易信息签名验证的过程。
上面实施例侧重于对整个数据区块的区块体进行签名的情况,下面的实施例描述对区块体中的每个交易信息进行签名的情况。对区块体中的每个交易信息进行签名是交易信息的产生方节点作出的。
该实施例中,要添加在当前数据区块中的交易信息由产生该交易信息的产生方节点用特定于所述产生方节点的私钥签名。
在图1A的体系构架中,产生交易信息的产生方节点是交易信息产生方记账节点103。在图1B的体系构架中,产生交易信息的产生方节点是该组记账节点100之外的交易信息产生方节点104。在图1C的体系构架中,产生交易信息的产生方节点是业务节点组107中的交易信息产生方业务节点106。
在一个实施例中,特定于所述产生方节点的公私钥也可以由专门的授权中心节点(未示)统一发放。
在该实施例中,所述当前数据区块中的每个交易信息由产生该交易信息的产生方节点用特定于所述产生方节点的私钥签名,并与该交易信息一起记录在当前数据区块中。即,区块体中不仅仅包括各交易信息,还包括与各交易信息对应的签名。交易信息和签名一一对应地记录在区块体中。
如图13所示,在该实施例中,所述来自所述其它记账节点的对当前数据区块的验证结果通过以下方式生成:
步骤610、针对当前数据区块中的每个交易信息的签名,用用特定于所述产生方节点的公钥解密;
步骤620、对当前数据区块中的每个交易信息,求摘要值;
步骤630、将解密的结果与当前数据区块中对应的交易信息的摘要值比对,如针对每个交易信息的解密的结果与对应的交易信息的摘要值都一致,则验证结果为通过,反之,则验证结果为不通过。
交易信息签名验证的目的在于,验证出区块体中的每个交易信息是否是相应的产生方节点真实产生的,没有被篡改过,且传输过程中没有丢失。该实施例进一步提高了数据区块中交易信息的安全性。
交易信息产生方节点产生交易信息的签名一般遵循以下过程:对交易信息按照预定摘要算法生成摘要,用特定于交易信息的产生方节点的私钥对摘要加密,得到交易信息的签名。相应地,进行第二签名验证时,用特定于交易信息的产生方节点的公钥对交易信息的签名解密,再按照产生交易信息的签名时同样的预定摘要算法对交易信息生成摘要,将生成的摘要与解密得到的摘要进行比对,如一致,则说明该交易信息是交易信息产生方节点真实产生的,且传输无丢失,交易信息签名验证通过;否则,交易信息签名验证不通过。
上述数据区块的输出项耗用验证、数据区块签名验证和交易信息签名验证的过程都是在图6的领导记账节点将需要上链的数据区块发送到各其它记账节点后各其它记账节点的验证过程中执行的。在验证都通过后,每个验证通过的记账节点向其它所有记账节点发送验证成功的消息。
在步骤4503中,当基于验证结果确定验证成功后,将当前数据区块记录在选择的支区块链上,并通知该组记账节点中的其它记账节点,以便所述其它记账节点根据所述区块头中的支区块链的标识,将当前数据区块记录在选择的支区块链上。
在一个实施例中,在上述输出项耗用验证、数据区块签名验证和交易信息签名验证同时存在的情况下,只要上述三项验证有一项不通过,该其它记账节点就向领导记账节点发送验证不通过的验证结果;上述三项验证都通过,该其它记账节点向领导记账节点发送验证通过的验证结果。
在一个实施例中,通过以下方式,基于验证结果确定验证成功:
如果领导记账节点接收到验证通过的验证结果数量达到(2f+1),确定验证成功,其中,f是小于(N-1)/3的最大整数,N是该组记账节点中记账节点的数量。接收到预设数量(2f+1)以上的其它记账节点反馈的验证通过的验证结果,就能够防止f个以上的记账节点联合作恶,达到提高记账安全性的效果。
这一过程在图6中体现得比较明显。图6中,领导记账节点向其它记账节点广播数据区块。其它记账节点在接收到区块体后,必须进行验证,如果验证通过,要返回一个验证通过的验证结果。领导记账节点接收到(2f+1)以上个验证通过的验证结果后,确定验证成功。
然后,如图6所示,领导记账节点将当前数据区块提交到区块头中的支区块链标识对应的支区块链。由于区块链系统中,每个记账节点都要同步一套同样的区块链,因此,领导记录节点还需要将当前数据区块发送到该组记账节点中的其它记账节点,以便其它记账节点根据所述区块头中的支区块链的标识,将当前数据区块提交在选择的支区块链上。这样,同步完成。在每个其它记账节点提交成功后,会向领导记账节点发送提交成功的消息。领导记账节点可以在接收到预设数量(2f+1)的其他记账节点发送的提交成功的消息后,确定上链完成。其中,f是小于(N-1)/3的最大整数,N是该组记账节点中记账节点的数量。f是算法能容忍的该组记账节点中作恶记账节点的数量。
在一个实施例中,在步骤420之后,所述方法还包括:如果每个支区块链都有数据区块尚未完成共识、等待上链,等待各支区块链的数据区块完成共识,将数据区块最早完成共识的支区块链,选择为记录当前数据区块的支区块链。
前述步骤430的前提条件是,存在无数据区块尚未完成共识、等待上链的支区块链。然而,在一些特殊情况下,可能由于短时间内要上链的数据区块非常多等原因,造成所有支区块链都不存在这种情况,即所有支区块链都有数据区块尚未完成共识、等待上链。这时,可以将等待各支区块链的数据区块完成共识,将数据区块最早完成共识的支区块链,选择为记录当前数据区块的支区块链。这样做的好处时,哪个支区块链的数据区块最早完成共识,可以立即利用该支区块链上链,节省了上链时间,提高了上链效率。
在该步骤之后,仍然需要执行步骤440和步骤450,即记录摘要值和共识上链的过程,这部分与前相同,故不赘述。
图3B示出了多个支区块链一维排布的组织形式,即多个支区块链在一个维度上按顺序依次排列,例如支区块链1-支区块链2-支区块链3-支区块链4-支区块链5,它在支区块链的个数比较少的情况下是比较容易管理的。如果支区块链的个数达到上千个,可能多维排布就是更好的形式。
因此,在一个实施例中,所述多个支区块链是排布成M维矩阵的多个支区块链,M为大于1的正整数,每个支区块链的标识是M个元素的向量,每个元素表示该支区块链在相应一个维度上的序号。
在图8的例子中,M=2,即维度为2,每个维度上最大序号是3,即每个维度上有1、2、3三种序号,这时每个支区块链的标识是一个2个元素的向量,每个向量取值为1-3,一共有(1,1)、(1,2)、(1,3)、(2,1)、(2,2)、(2,3)、(3,1)、(3,2)、(3,3)9种标识,分别代表9个支区块链。在每个支区块链上数据区块按记录到该支区块链的顺序排布。
图8中,示出了每个支区块链上排布3个数据区块的示意图。实际上,每个支区块链可能排布其它数量的数据区块。而且,支区块链可以排布成更多维度的矩阵,每个维度上可以有其它数目个序号。在各支区块链之间可以预先规定记录的先后顺序。在选择记录当前数据区块的支区块链时,就可以将按照预定的先后顺序前一数据区块所在的支区块链的下一个支区块链作为记录当前数据区块的支区块链。例如,在图8中,可以按照(1,1)-(1,2)-(1,3)-(2,1)-(2,2)-(2,3)-(3,1)-(3,2)-(3,3)的顺序选择记录用的支区块链。当前一数据区块记录在支区块链(1,3)时,当前数据区块记录在支区块链(2,1)。
多维矩阵排布形式的优点是,在支区块链的数目较大时,有利于提高支区块链调度的效率。
图7综合示出了本公开实施例的应用效果。图7中,交易信息产生方节点1-3产生交易信息,都发送给领导记账节点上链。领导记账节点接收到这些交易信息,认为达到了打包条件,将其打包。然后,领导记账节点开始选择要记录的支区块链,即从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链。然后,把这个支区块链的标识加入数据区块的区块头,广播给记账节点1-3。记账节点1-3接收到该数据区块后,进行上述输出项耗用验证、数据区块签名验证、交易信息签名验证等验证,并且把验证结果广播到该组记账节点中的其它所有记账节点。领导记账节点在接收到预设数量的记账节点发来的验证通过的验证结果时,按照区块头中的支区块链标识,将数据区块提交到对应的支区块链。各其它记账节点也按照区块头中的支区块链标识,将数据区块提交到对应的支区块链。
从该图中可以看出,由于领导记账节点选择记录的支区块链时选择的是无数据区块尚未完成共识、等待上链的支区块链,因此不需要等待前一数据区块上链完成,可以选择将该无数据区块尚未完成共识、等待上链的支区块链上最后一个数据区块的摘要值记录在当前数据区块的区块头中,进行上链,减少了等待时间,提高了上链效率。
在一个实施例中,如图14所示,领导记账节点从该组记账节点中按照以下方式选出:
步骤710、获取该组记账节点中每个记账节点的当前处理负荷;
步骤720、基于所述当前处理负荷,确定领导记账节点。
该实施例中,领导记账节点不是固定不变的,而是根据每个记账节点的处理负荷而调整,达到了均衡记账节点处理负荷的效果。
处理负荷是指节点正在处理的任务量。它可以用节点正在处理的任务数表示。步骤710中,获取该组记账节点中每个记账节点的当前处理负荷可以采取各记账节点主动上报和被动查询两种方式。
在主动上报的实施例中,步骤710包括:
接收该组记账节点中每个记账节点定时广播的实时处理负荷;
将接收到的每个记账节点最近一次广播的实时处理负荷,作为该记账节点的当前处理负荷。
实时处理负荷是指节点在广播的定时的处理负荷。
当需要获取该组记账节点中每个记账节点的当前处理负荷时,查找接收到并存储的每个记账节点最近一次广播的实时处理负荷,作为该记账节点的当前处理负荷。例如,每隔3秒钟,记账节点向该组记账节点中的其它所有记账节点广播实时处理负荷。在12:37:31接收到记账节点广播的实时处理负荷。在12:37:33时,需要确定记账节点的当前处理负荷。确定出最近一次接收到记账节点广播的实时处理负荷是在12:37:31。因此,将12:37:31广播的实时处理负荷作为该记账节点的当前处理负荷。
主动上报的实施例的好处是,减少了领导记账节点查询的处理开销。
在被动查询的实施例中,步骤710包括:
向该组记账节点中每个记账节点发送当前处理负荷查询请求;
从每个记账节点接收当前处理负荷。
被动查询的实施例的好处是,在需要确定记账节点的当前处理负荷时,才开始查询,查询到的当前处理负荷就是需要确定记账节点的当前处理负荷时的真实负荷,提高了确定记账节点的当前处理负荷的准确性。
在一个实施例中,步骤720包括:
将所述当前处理负荷最小的记账节点,确定为领导记账节点。
当前处理负荷最小的记账节点很可能是工作量最不饱满的记账节点。选取其作为领导记账节点,更有利于均衡记账节点工作负荷。
在另一个实施例中,步骤720包括:
从所述当前处理负荷低于预定处理负荷阈值的记账节点中任取一个,作为领导记账节点。
该实施例中,认为只要当前处理负荷低于预定处理负荷阈值,都认为是可以作为领导记账节点的。该实施例的优点是,防止只选择处理负荷最小的记账节点,又造成该处理负荷最小的记账节点拥塞。
如图15所示,根据本公开的一个实施例,提供了一种用于区块链记录的领导记账节点,其特征在于,所述区块链包括多个支区块链,所述多个支区块链由同一组记账节点进行数据区块的记录,所述领导记账节点是从该组记账节点中选出的,所述领导记账节点包括:
当前数据区块生成模块910,用于生成当前数据区块;
确定模块920,用于确定所述多个支区块链中的每个支区块链是否有数据区块尚未完成共识、等待上链;
第一支区块链选择模块930,用于如果存在无数据区块尚未完成共识、等待上链的支区块链,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链;
摘要值记录模块940,用于将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中;
共识上链模块950,用于将所述当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上。
在一个实施例中,所述领导记账节点还包括:
第二支区块链选择模块,用于如果每个支区块链都有数据区块尚未完成共识、等待上链,等待各支区块链的数据区块完成共识,将数据区块最早完成共识的支区块链,选择为记录当前数据区块的支区块链。
在一个实施例中,所述多个支区块链具有序号。第一支区块链选择模块930进一步用于:
将所述无数据区块尚未完成共识、等待上链的支区块链中、序号大于区块链前一数据区块所记录在的支区块链的序号的支区块链中序号最小的一个,选择为记录当前数据区块的支区块链;
如果所述无数据区块尚未完成共识、等待上链的支区块链中,没有序号大于区块链前一数据区块所记录在的支区块链的序号的支区块链,选择所述无数据区块尚未完成共识、等待上链的支区块链中序号最小的一个支区块链,作为记录当前数据区块的支区块链。
在一个实施例中,所述第一支区块链选择模块930进一步用于:
确定无数据区块尚未完成共识、等待上链的每个支区块链的已记录数据区块数;
确定无数据区块尚未完成共识、等待上链的每个支区块链上当前最后一个数据区块的记录时间与当前数据的差;
根据所述已记录数据区块数和所述差,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链。
在一个实施例中,所述根据所述已记录数据区块数和所述差,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链,包括:
针对无数据区块尚未完成共识、等待上链的每个支区块链的所述已记录数据区块数,确定第一分数;
针对无数据区块尚未完成共识、等待上链的每个支区块链的所述差,确定第二分数;
基于第一分数和第二分数的加权和,确定记录当前数据区块的支区块链。
在一个实施例中,每个支区块链具有标识。所述摘要值记录模块940进一步用于:将选择的支区块链上记录的前一数据区块的摘要值、以及选择的支区块链的标识记录在当前数据区块的区块头中。所述共识上链模块950进一步用于:
将当前数据区块发送到该组记账节点中的其它记账节点;
接收到来自所述其它记账节点的对当前数据区块的验证结果;
当基于验证结果确定验证成功后,将当前数据区块记录在选择的支区块链上,并通知该组记账节点中的其它记账节点,以便所述其它记账节点根据所述区块头中的支区块链的标识,将当前数据区块记录在选择的支区块链上。
在一个实施例中,所述当前数据区块中的每个交易信息具有输入项和输出项,所述输入项链接到该当前数据区块之前记录在区块链上的另一数据区块的交易信息的输出项。所述来自所述其它记账节点的对当前数据区块的验证结果是通过以下方式生成的:
确定所述当前数据区块中的每个交易信息的输入项链接到的另一数据区块的交易信息的输出项是否已被在当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块的交易信息的输入项所链接,如果是,则验证结果为不通过;反之,则验证结果为通过。
在一个实施例中,所述确定所述当前数据区块中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项是否已被在当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块的交易信息的输入项所链接,包括:
遍历当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块中交易信息的输入项,逐一确定该输入项是否链接到该另一数据区块的交易信息的输出项。
在一个实施例中,所述确定所述当前数据区块中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项是否已被在当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块的交易信息的输入项所链接,包括:
查询所述当前数据区块中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项所对应的占用状态字,如果该占用状态字指示占用,则验证结果为不通过;反之,则验证结果为通过;
在将当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上之后,所述方法还包括:
设置当前数据区块的每个交易信息的输出项所对应的占用状态字为指示未占用;
设置当前数据区块的每个交易信息的输入项所链接到的另一数据区块的交易信息的输出项对应的占用状态字为指示占用。
在一个实施例中,所述摘要值记录模块940进一步用于:将选择的支区块链上记录的前一数据区块的摘要值、以及用特定于所述领导记账节点的私钥对所述摘要值加密形成的签名一起,记录在当前数据区块的区块头中。所述来自所述其它记账节点的对当前数据区块的验证结果通过以下方式生成:
用特定于所述领导记账节点的公钥对所述签名解密;
将解密的结果与区块头中的摘要值比对,如一致,则验证结果为通过,反之,则验证结果为不通过。
在一个实施例中,所述当前数据区块中的每个交易信息由产生该交易信息的产生方节点用特定于所述产生方节点的私钥签名,并与该交易信息一起记录在当前数据区块中。所述来自所述其它记账节点的对当前数据区块的验证结果通过以下方式生成:
针对当前数据区块中的每个交易信息的签名,用特定于所述产生方节点的公钥解密;
对当前数据区块中的每个交易信息,求摘要值;
将解密的结果与当前数据区块中对应的交易信息的摘要值比对,如针对每个交易信息的解密的结果与对应的交易信息的摘要值都一致,则验证结果为通过,反之,则验证结果为不通过。
在一个实施例中,所述多个支区块链是排布成M维矩阵的多个支区块链,M为大于1的正整数,每个支区块链的标识是M个元素的向量,每个元素表示该支区块链在相应一个维度上的序号。
根据本公开实施例的在区块链网络中记录数据区块的方法可以由图16的领导记账节点102实现。下面参照图16来描述根据本公开实施例的领导记账节点102。图16显示的领导记账节点102仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图16所示,领导记账节点102以通用计算设备的形式表现。领导记账节点102的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述示例性方法的描述部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图9中所示的各个步骤。
存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
领导记账节点102也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该领导记账节点102交互的设备通信,和/或与使得该领导记账节点102能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,领导记账节点102还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与领导记账节点102的其它模块通信。应当明白,尽管图中未示出,可以结合领导记账节点102使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行上述方法实施例部分描述的方法。
根据本公开的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (15)
1.一种数据区块在区块链上记录的方法,其特征在于,所述区块链包括多个支区块链,所述多个支区块链由同一组记账节点进行数据区块的记录,所述方法由该组记账节点中的领导记账节点执行,所述方法包括:
生成当前数据区块;
确定所述多个支区块链中的每个支区块链是否有数据区块尚未完成共识、等待上链;
如果存在无数据区块尚未完成共识、等待上链的支区块链,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链;
将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中;
将所述当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上。
2.根据权利要求1所述的方法,其特征在于,在确定所述多个支区块链中的每个支区块链是否有数据区块尚未完成共识、等待上链之后,所述方法还包括:
如果每个支区块链都有数据区块尚未完成共识、等待上链,等待各支区块链的数据区块完成共识,将数据区块最早完成共识的支区块链,选择为记录当前数据区块的支区块链。
3.根据权利要求1所述的方法,其特征在于,所述多个支区块链具有序号,
所述从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链,包括:
将所述无数据区块尚未完成共识、等待上链的支区块链中、序号大于区块链前一数据区块所记录在的支区块链的序号的支区块链中序号最小的一个,选择为记录当前数据区块的支区块链;
如果所述无数据区块尚未完成共识、等待上链的支区块链中,没有序号大于区块链前一数据区块所记录在的支区块链的序号的支区块链,选择所述无数据区块尚未完成共识、等待上链的支区块链中序号最小的一个支区块链,作为记录当前数据区块的支区块链。
4.根据权利要求1所述的方法,其特征在于,所述从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链,包括:
确定无数据区块尚未完成共识、等待上链的每个支区块链的已记录数据区块数;
确定无数据区块尚未完成共识、等待上链的每个支区块链上当前最后一个数据区块的记录时间与当前数据的差;
根据所述已记录数据区块数和所述差,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链。
5.根据权利要求4所述的方法,其特征在于,所述根据所述已记录数据区块数和所述差,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链,包括:
针对无数据区块尚未完成共识、等待上链的每个支区块链的所述已记录数据区块数,确定第一分数;
针对无数据区块尚未完成共识、等待上链的每个支区块链的所述差,确定第二分数;
基于第一分数和第二分数的加权和,确定记录当前数据区块的支区块链。
6.根据权利要求1所述的方法,其特征在于,每个支区块链具有标识,
所述将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中,包括:将选择的支区块链上记录的前一数据区块的摘要值、以及选择的支区块链的标识记录在当前数据区块的区块头中;
所述将当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上,包括:
将当前数据区块发送到该组记账节点中的其它记账节点;
接收到来自所述其它记账节点的对当前数据区块的验证结果;
当基于验证结果确定验证成功后,将当前数据区块记录在选择的支区块链上,并通知该组记账节点中的其它记账节点,以便所述其它记账节点根据所述区块头中的支区块链的标识,将当前数据区块记录在选择的支区块链上。
7.根据权利要求6所述的方法,其特征在于,所述当前数据区块中的每个交易信息具有输入项和输出项,所述输入项链接到该当前数据区块之前记录在区块链上的另一数据区块的交易信息的输出项,
所述来自所述其它记账节点的对当前数据区块的验证结果是通过以下方式生成的:
确定所述当前数据区块中的每个交易信息的输入项链接到的另一数据区块的交易信息的输出项是否已被在当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块的交易信息的输入项所链接,如果是,则验证结果为不通过;反之,则验证结果为通过。
8.根据权利要求7所述的方法,其特征在于,所述确定所述当前数据区块中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项是否已被在当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块的交易信息的输入项所链接,包括:
遍历当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块中交易信息的输入项,逐一确定该输入项是否链接到该另一数据区块的交易信息的输出项。
9.根据权利要求7所述的方法,其特征在于,所述确定所述当前数据区块中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项是否已被在当前数据区块和该另一数据区块记录在区块链上的时间之间记录在区块链上的数据区块的交易信息的输入项所链接,包括:
查询所述当前数据区块中每个交易信息的输入项链接到的另一数据区块的交易信息的输出项所对应的占用状态字,如果该占用状态字指示占用,则验证结果为不通过;反之,则验证结果为通过;
在将当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上之后,所述方法还包括:
设置当前数据区块的每个交易信息的输出项所对应的占用状态字为指示未占用;
设置当前数据区块的每个交易信息的输入项所链接到的另一数据区块的交易信息的输出项对应的占用状态字为指示占用。
10.根据权利要求6所述的方法,其特征在于,所述将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中,包括:将选择的支区块链上记录的前一数据区块的摘要值、以及用特定于所述领导记账节点的私钥对所述摘要值加密形成的签名一起,记录在当前数据区块的区块头中;
所述来自所述其它记账节点的对当前数据区块的验证结果通过以下方式生成:
用特定于所述领导记账节点的公钥对所述签名解密;
将解密的结果与区块头中的摘要值比对,如一致,则验证结果为通过,反之,则验证结果为不通过。
11.根据权利要求1所述的方法,其特征在于,所述当前数据区块中的每个交易信息由产生该交易信息的产生方节点用特定于所述产生方节点的私钥签名,并与该交易信息一起记录在当前数据区块中;
所述来自所述其它记账节点的对当前数据区块的验证结果通过以下方式生成:
针对当前数据区块中的每个交易信息的签名,用特定于所述产生方节点的公钥解密;
对当前数据区块中的每个交易信息,求摘要值;
将解密的结果与当前数据区块中对应的交易信息的摘要值比对,如针对每个交易信息的解密的结果与对应的交易信息的摘要值都一致,则验证结果为通过,反之,则验证结果为不通过。
12.根据权利要求1所述的方法,其特征在于,所述多个支区块链是排布成M维矩阵的多个支区块链,M为大于1的正整数,每个支区块链的标识是M个元素的向量,每个元素表示该支区块链在相应一个维度上的序号。
13.一种用于区块链记录的领导记账节点,其特征在于,所述区块链包括多个支区块链,所述多个支区块链由同一组记账节点进行数据区块的记录,所述领导记账节点是从该组记账节点中选出的,所述领导记账节点包括:
当前数据区块生成模块,用于生成当前数据区块;
确定模块,用于确定所述多个支区块链中的每个支区块链是否有数据区块尚未完成共识、等待上链;
支区块链选择模块,用于如果存在无数据区块尚未完成共识、等待上链的支区块链,从所述无数据区块尚未完成共识、等待上链的支区块链中,选择记录当前数据区块的支区块链;
摘要值记录模块,用于将选择的支区块链上记录的前一数据区块的摘要值记录在当前数据区块的区块头中;
共识上链模块,用于将所述当前数据区块发送到该组记账节点中的其它记账节点共识,以记录在选择的支区块链上。
14.一种领导记账节点,其特征在于,包括:
存储器,存储有计算机可读指令;
处理器,读取存储器存储的计算机可读指令,以执行权利要求1-12中的任一个所述的方法。
15.一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1-12中的任一个所述的方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910130823.9A CN109902091B (zh) | 2019-02-21 | 2019-02-21 | 数据区块在区块链上记录的方法、领导记账节点和介质 |
PCT/CN2020/075976 WO2020169061A1 (zh) | 2019-02-21 | 2020-02-20 | 数据区块在区块链上记录的方法、领导记账节点和介质 |
JP2021547120A JP7204278B2 (ja) | 2019-02-21 | 2020-02-20 | ブロックチェーンにデータブロックを記録する方法、リーダーアカウンティングノード及びコンピュータプログラム |
EP20759324.5A EP3929762B1 (en) | 2019-02-21 | 2020-02-20 | Method for recording data block on blockchain, and leader accounting node and medium |
KR1020217016532A KR102633548B1 (ko) | 2019-02-21 | 2020-02-20 | 블록체인에 데이터 블록을 기록하는 방법과, 리더 회계 노드 및 매체 |
US17/229,352 US11902446B2 (en) | 2019-02-21 | 2021-04-13 | Method for recording data block on blockchain, leader accounting node, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910130823.9A CN109902091B (zh) | 2019-02-21 | 2019-02-21 | 数据区块在区块链上记录的方法、领导记账节点和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109902091A true CN109902091A (zh) | 2019-06-18 |
CN109902091B CN109902091B (zh) | 2021-08-10 |
Family
ID=66945172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910130823.9A Active CN109902091B (zh) | 2019-02-21 | 2019-02-21 | 数据区块在区块链上记录的方法、领导记账节点和介质 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11902446B2 (zh) |
EP (1) | EP3929762B1 (zh) |
JP (1) | JP7204278B2 (zh) |
KR (1) | KR102633548B1 (zh) |
CN (1) | CN109902091B (zh) |
WO (1) | WO2020169061A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110535836A (zh) * | 2019-08-12 | 2019-12-03 | 安徽师范大学 | 一种基于角色分类的信任区块链共识方法 |
CN111275553A (zh) * | 2020-01-20 | 2020-06-12 | 联动优势(北京)数字科技有限公司 | 一种区块链的数据存储方法及区块链系统 |
WO2020169061A1 (zh) * | 2019-02-21 | 2020-08-27 | 腾讯科技(深圳)有限公司 | 数据区块在区块链上记录的方法、领导记账节点和介质 |
CN111695128A (zh) * | 2020-06-15 | 2020-09-22 | 中国银行股份有限公司 | 用于数据资产分配的区块链网络的数据处理方法及装置 |
CN113612761A (zh) * | 2021-07-30 | 2021-11-05 | 立信(重庆)数据科技股份有限公司 | 一种基于区块链的调研数据上链方法及系统 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109949111B (zh) * | 2019-03-06 | 2023-12-08 | 深圳市智税链科技有限公司 | 电子票据标识分配方法、电子票据生成方法、装置及系统 |
CN112584364B (zh) * | 2019-09-30 | 2024-03-08 | 阿里巴巴集团控股有限公司 | 蓝牙网络及其通信方法、设备和存储介质 |
CN111984735A (zh) * | 2020-09-03 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 一种数据归档方法、装置、电子设备和存储介质 |
KR102477240B1 (ko) * | 2020-12-31 | 2022-12-14 | 심왕섭 | 듀얼 블록체인 시스템을 이용한 회계정보 관리 수단 |
CN113421097B (zh) * | 2021-08-23 | 2021-11-30 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN113761071B (zh) * | 2021-10-09 | 2023-07-11 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
KR102557196B1 (ko) * | 2021-11-23 | 2023-07-19 | 주식회사 디지캡 | 프록시 서버를 이용하여 노드간 트랜잭션을 전달하는 블록체인 시스템 |
CN114140102A (zh) * | 2021-12-02 | 2022-03-04 | 杭州复杂美科技有限公司 | 交易发送方法、计算机设备和存储介质 |
CN114466024B (zh) * | 2022-02-21 | 2024-02-13 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于新型PoM共识算法的分布式账本系统及方法 |
CN116192382B (zh) * | 2023-03-01 | 2023-09-15 | 齐齐哈尔大学 | 一种基于区块链的dh密钥第三方篡改验证方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180152442A1 (en) * | 2003-12-22 | 2018-05-31 | Guardtime Ip Holdings Limited | Blockchain-supported, hash tree-based digital signature infrastructure |
CN108810119A (zh) * | 2018-05-31 | 2018-11-13 | 中国联合网络通信集团有限公司 | 区块链处理方法、装置及区块链节点 |
CN108876361A (zh) * | 2017-05-12 | 2018-11-23 | 李平 | 区块链系统、区块生成方法及计算机可读存储介质 |
CN108984744A (zh) * | 2018-07-16 | 2018-12-11 | 夸克链科技(深圳)有限公司 | 一种非主链区块自增长方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9608829B2 (en) * | 2014-07-25 | 2017-03-28 | Blockchain Technologies Corporation | System and method for creating a multi-branched blockchain with configurable protocol rules |
US20170236123A1 (en) * | 2016-02-16 | 2017-08-17 | Blockstack Inc. | Decentralized processing of global naming systems |
US10204341B2 (en) * | 2016-05-24 | 2019-02-12 | Mastercard International Incorporated | Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees |
US10198325B2 (en) * | 2016-05-24 | 2019-02-05 | Mastercard International Incorporated | Method and system for desynchronization recovery for permissioned blockchains using bloom filters |
EP3491605A1 (en) * | 2016-08-01 | 2019-06-05 | Cryptowerk Corp. | Computer-implemented method and system of tamper-evident recording of a plurality of service data items |
US10387684B2 (en) * | 2016-12-09 | 2019-08-20 | International Business Machines Corporation | Interlocked blockchains to increase blockchain security |
US11281644B2 (en) * | 2017-07-28 | 2022-03-22 | Hitachi, Ltd. | Blockchain logging of data from multiple systems |
CN107480990B (zh) | 2017-08-01 | 2021-02-26 | 中国联合网络通信集团有限公司 | 区块链记账方法及装置 |
CN107767478B (zh) * | 2017-09-06 | 2020-10-16 | 阿里巴巴集团控股有限公司 | 一种保存工作记录的方法及装置 |
TWI659373B (zh) * | 2018-02-14 | 2019-05-11 | 財團法人工業技術研究院 | 區塊鏈系統及應用其的方法 |
US10630463B2 (en) * | 2018-02-26 | 2020-04-21 | Ca, Inc. | Meta block chain |
CN108667632B (zh) * | 2018-04-19 | 2020-10-30 | 创新先进技术有限公司 | 基于区块链的信用记录共享方法及装置、电子设备 |
US10728019B2 (en) * | 2018-04-27 | 2020-07-28 | Gulfstream Aerospace Corporation | Communication nodes, distributed communication networks, and methods for monitoring communication in a communication network using blockchains |
US11030217B2 (en) * | 2018-05-01 | 2021-06-08 | International Business Machines Corporation | Blockchain implementing cross-chain transactions |
CN109359973A (zh) * | 2018-08-24 | 2019-02-19 | 阿里巴巴集团控股有限公司 | 基于区块链的数据存证方法和装置 |
CN109241772B (zh) * | 2018-09-07 | 2023-05-16 | 深圳市智税链科技有限公司 | 发票区块链记录方法、装置、区块链网关服务器和介质 |
WO2020160391A1 (en) * | 2019-01-31 | 2020-08-06 | Sensoriant, Inc. | An efficient, environmental and consumer friendly consensus method for cryptographic transactions |
CN109902091B (zh) * | 2019-02-21 | 2021-08-10 | 腾讯科技(深圳)有限公司 | 数据区块在区块链上记录的方法、领导记账节点和介质 |
-
2019
- 2019-02-21 CN CN201910130823.9A patent/CN109902091B/zh active Active
-
2020
- 2020-02-20 EP EP20759324.5A patent/EP3929762B1/en active Active
- 2020-02-20 JP JP2021547120A patent/JP7204278B2/ja active Active
- 2020-02-20 KR KR1020217016532A patent/KR102633548B1/ko active IP Right Grant
- 2020-02-20 WO PCT/CN2020/075976 patent/WO2020169061A1/zh unknown
-
2021
- 2021-04-13 US US17/229,352 patent/US11902446B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180152442A1 (en) * | 2003-12-22 | 2018-05-31 | Guardtime Ip Holdings Limited | Blockchain-supported, hash tree-based digital signature infrastructure |
CN108876361A (zh) * | 2017-05-12 | 2018-11-23 | 李平 | 区块链系统、区块生成方法及计算机可读存储介质 |
CN108810119A (zh) * | 2018-05-31 | 2018-11-13 | 中国联合网络通信集团有限公司 | 区块链处理方法、装置及区块链节点 |
CN108984744A (zh) * | 2018-07-16 | 2018-12-11 | 夸克链科技(深圳)有限公司 | 一种非主链区块自增长方法 |
Non-Patent Citations (1)
Title |
---|
刘肖飞: "《基于动态授权的拜占庭容错共识算法的区块链性能改进研究》", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020169061A1 (zh) * | 2019-02-21 | 2020-08-27 | 腾讯科技(深圳)有限公司 | 数据区块在区块链上记录的方法、领导记账节点和介质 |
US11902446B2 (en) | 2019-02-21 | 2024-02-13 | Tencent Technology (Shenzhen) Company Limited | Method for recording data block on blockchain, leader accounting node, and storage medium |
CN110535836A (zh) * | 2019-08-12 | 2019-12-03 | 安徽师范大学 | 一种基于角色分类的信任区块链共识方法 |
CN110535836B (zh) * | 2019-08-12 | 2021-10-29 | 安徽师范大学 | 一种基于角色分类的信任区块链共识方法 |
CN111275553A (zh) * | 2020-01-20 | 2020-06-12 | 联动优势(北京)数字科技有限公司 | 一种区块链的数据存储方法及区块链系统 |
CN111275553B (zh) * | 2020-01-20 | 2023-08-11 | 联动优势科技有限公司 | 一种区块链的数据存储方法及区块链系统 |
CN111695128A (zh) * | 2020-06-15 | 2020-09-22 | 中国银行股份有限公司 | 用于数据资产分配的区块链网络的数据处理方法及装置 |
CN111695128B (zh) * | 2020-06-15 | 2023-11-21 | 中国银行股份有限公司 | 用于数据资产分配的区块链网络的数据处理方法及装置 |
CN113612761A (zh) * | 2021-07-30 | 2021-11-05 | 立信(重庆)数据科技股份有限公司 | 一种基于区块链的调研数据上链方法及系统 |
CN113612761B (zh) * | 2021-07-30 | 2022-03-22 | 立信(重庆)数据科技股份有限公司 | 一种基于区块链的调研数据上链方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US11902446B2 (en) | 2024-02-13 |
US20210234703A1 (en) | 2021-07-29 |
JP7204278B2 (ja) | 2023-01-16 |
EP3929762A4 (en) | 2022-04-13 |
KR20210080550A (ko) | 2021-06-30 |
EP3929762A1 (en) | 2021-12-29 |
EP3929762B1 (en) | 2023-04-19 |
KR102633548B1 (ko) | 2024-02-02 |
WO2020169061A1 (zh) | 2020-08-27 |
JP2022521693A (ja) | 2022-04-12 |
CN109902091B (zh) | 2021-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109902091A (zh) | 数据区块在区块链上记录的方法、领导记账节点和介质 | |
US10812254B2 (en) | Identity confidence score based on blockchain based attributes | |
CN109716707B (zh) | 分布式电子记录和交易历史的服务器设备和方法 | |
CN109447648A (zh) | 在区块链网络中记录数据区块的方法、记账节点和介质 | |
CN109684375B (zh) | 在区块链网络中查询交易信息的方法、记账节点和介质 | |
CN109447811A (zh) | 在区块链网络中查询交易信息的方法、记账节点和介质 | |
CN109428886A (zh) | 用于经由区块链进行评论验证和可信度评分的方法和系统 | |
JP2021534468A (ja) | 自動化された企業トランザクションデータアグリゲーションおよび会計 | |
US10911455B2 (en) | Using third party information to improve predictive strength for authentications | |
US11893493B2 (en) | Clustering techniques for machine learning models | |
US10970780B2 (en) | Zero-knowledge predictions market | |
US11894971B2 (en) | Techniques for prediction models using time series data | |
CN109831310A (zh) | 一种身份验证方法、系统及相关装置 | |
US11436596B2 (en) | Eligibility determination for delegation exemption to strong authentication requirements | |
US20230196147A1 (en) | Unified explainable machine learning for segmented risk | |
CN108537065A (zh) | 征信信息处理方法 | |
US20210065170A1 (en) | Selecting exemptions to strong authentication requirements | |
US20230162053A1 (en) | Machine-learning techniques for risk assessment based on clustering | |
Ramasamy et al. | Cluster based multi layer user authentication data center storage architecture for big data security in cloud computing | |
KR20230132878A (ko) | 실행-오더-검증 블록체인 모델들에서 트랜잭션 취소들 감소 | |
CN117597666A (zh) | 在客户端设备上执行机器学习模型 | |
US20210142407A1 (en) | Distributed Markets | |
CN114579585A (zh) | 区块链选择性世界状态数据库 | |
CN114004456B (zh) | 数据标签的计算方法、装置、计算机设备和存储介质 | |
US20230177528A1 (en) | Systems and methods for data insights from consumer accessible data |
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: 40009424 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 |