CN114244536A - 一种区块链的业务处理方法、装置、设备及存储介质 - Google Patents
一种区块链的业务处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114244536A CN114244536A CN202210168770.1A CN202210168770A CN114244536A CN 114244536 A CN114244536 A CN 114244536A CN 202210168770 A CN202210168770 A CN 202210168770A CN 114244536 A CN114244536 A CN 114244536A
- Authority
- CN
- China
- Prior art keywords
- block
- executed
- service
- thread
- current 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—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 involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种区块链的业务处理方法、装置、设备及存储介质,涉及区块链技术领域。该方法应用于区块链网络中的当前节点,当前节点为所述区块链网络中的任一节点,当前节点中并行运行有至少一个出块线程、至少一个执行线程以及至少一个广播线程,该方法包括:运行出块线程,根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块;运行广播线程,向区块链网络中除当前节点的其它节点广播待执行区块,以使其它节点根据待执行区块中的在先状态哈希对待执行区块进行校验并得到校验结果;运行执行线程,执行待执行区块中的待执行的业务数据,生成目标区块。应用本申请实施例,可以提升区块链业务处理的吞吐量。
Description
技术领域
本申请涉及区块链技术领域,具体而言,涉及一种区块链的业务处理方法、装置、设备及存储介质。
背景技术
区块链技术是一种分布式的数据库,具有去中心化、不可篡改和可扩展等特点。区块链正在被越来越多的用户所关注,其中最受关注的有交易吞吐量的问题,吞吐量是指对网络、设备、端口、虚拟电路或其它设施,单位时间内成功地传送数据的数量。
目前,区块链的业务处理过程主要通过串行交易方式进行,其中,串行交易方式主要体现为对上一个区块执行完得到执行结果后,出块节点才可以生成下一个区块。
然而,现有技术中的串行交易方式会影响区块链交易处理的效率,导致区块链业务处理的吞吐量不高。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种区块链的业务处理方法、装置、设备及存储介质,可以提升区块链业务处理的吞吐量。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供了一种区块链的业务处理方法,所述方法应用于区块链网络中的当前节点,所述当前节点为所述区块链网络中的任一节点,所述当前节点中并行运行有至少一个出块线程、至少一个执行线程以及至少一个广播线程,所述方法包括:
运行所述出块线程,根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块,所述待执行区块中包括:所述待执行的业务数据以及在先状态哈希,所述预设的状态哈希生成策略用于指示所述待执行区块的所述在先状态哈希为在先区块的状态哈希,其中,所述在先区块的区块高度小于所述待执行区块的区块高度,且,所述在先区块的区块高度与所述待执行区块的高度的差值为预设差值;
运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块,以使所述其它节点根据所述待执行区块中的在先状态哈希对所述待执行区块进行校验并得到校验结果;
运行所述执行线程,执行所述待执行区块中的所述待执行的业务数据,得到所述待执行区块的状态哈希以及业务执行结果,根据所述待执行区块生成目标区块,并将所述目标区块增加至区块链中,其中,所述目标区块中包括:所述待执行的业务数据以及所述目标区块的状态哈希。
可选地,所述运行所述执行线程,执行所述待执行区块中的所述待执行的业务数据之前,还包括:
将所述待执行区块加入到执行队列中,其中,所述执行队列中包括至少一个待执行区块,且各待执行区块按照区块的高度依次排序;
所述运行所述执行线程,执行所述待执行区块中的所述待执行的业务数据,包括:
运行所述执行线程,从所述执行队列中读取并执行所述待执行区块中的所述待执行的业务数据。
可选地,所述运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块,包括:
根据所述区块链网络的业务量和/或所述当前节点的执行线程资源,确定是否并行执行业务;
若确定并行执行业务,且所述待执行区块的背书签名数据满足预设的背书条件,则运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块。
可选地,所述根据所述区块链网络的业务量和/或所述当前节点的执行线程资源,确定是否并行执行业务,包括:
若所述区块链网络的业务量大于预设业务量阈值,和/或,所述当前节点的执行线程资源小于预设资源阈值,则确定并行执行业务。
可选地,所述运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块之前,还包括:
向预设的背书节点发送所述待执行区块,以使各所述背书节点对所述待执行区块进行背书签名,得到各所述背书节点对应的背书签名数据;
根据各所述背书节点对应的背书签名数据,确定所述待执行区块的背书签名数据是否满足预设的背书条件。
可选地,所述方法还包括:
若所述待执行区块的背书签名数据不满足所述预设的背书条件,则切换当前节点得到新的当前节点,利用所述新的当前节点重新生成新的待执行区块。
可选地,所述根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块,包括:
根据所述区块链上已记录的业务数据对所述待执行的业务数据进行去重处理,得到去重处理后的待执行的业务数据;
根据所述去重处理后的待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块。
可选地,所述方法还包括:
将所述业务执行结果缓存在所述当前节点对应的存储队列中。
可选地,所述执行所述待执行区块中的所述待执行的业务数据,包括:
确定所述存储队列上是否存在所述待执行区块依赖的业务执行结果;
若是,则从所述存储队列中获取所述待执行区块依赖的业务执行结果;
基于所述待执行区块依赖的业务执行结果,执行所述待执行区块中的所述待执行的业务数据。
可选地,所述方法还包括:
从所述存储队列中获取预设区块数量的各区块对应的业务执行结果;
对各区块对应的业务执行结果进行去重处理,得到去重处理后的各区块对应的业务执行结果;
将去重处理后的各区块对应的业务执行结果保存在数据库中。
第二方面,本申请实施例还提供了一种区块链的业务处理装置,所述装置应用于区块链网络中的当前节点,所述当前节点为所述区块链网络中的任一节点,所述当前节点中并行运行有至少一个出块线程、至少一个执行线程以及至少一个广播线程,所述装置包括:
生成模块,用于运行所述出块线程,根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块,所述待执行区块中包括:所述待执行的业务数据以及在先状态哈希,所述预设的状态哈希生成策略用于指示所述待执行区块的所述在先状态哈希为在先区块的状态哈希,其中,所述在先区块的区块高度小于所述待执行区块的区块高度,且,所述在先区块的区块高度与所述待执行区块的高度的差值为预设差值;
广播模块,用于运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块,以使所述其它节点根据所述待执行区块中的在先状态哈希对所述待执行区块进行校验并得到校验结果;
执行模块,用于运行所述执行线程,执行所述待执行区块中的所述待执行的业务数据,得到所述待执行区块的状态哈希以及业务执行结果,根据所述待执行区块生成目标区块,并将所述目标区块增加至区块链中,其中,所述目标区块中包括:所述待执行的业务数据以及所述目标区块的状态哈希。
可选地,所述装置还包括:加入模块;
所述加入模块,用于将所述待执行区块加入到执行队列中,其中,所述执行队列中包括至少一个待执行区块,且各待执行区块按照区块的高度依次排序。
可选地,所述执行模块,具体用于运行所述执行线程,从所述执行队列中读取并执行所述待执行区块中的所述待执行的业务数据。
可选地,所述广播模块,具体用于根据所述区块链网络的业务量和/或所述当前节点的执行线程资源,确定是否并行执行业务;若确定并行执行业务,且所述待执行区块的背书签名数据满足预设的背书条件,则运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块。
可选地,所述广播模块,还具体用于若所述区块链网络的业务量大于预设业务量阈值,和/或,所述当前节点的执行线程资源小于预设资源阈值,则确定并行执行业务。
可选地,所述广播模块,还具体用于向预设的背书节点发送所述待执行区块,以使各所述背书节点对所述待执行区块进行背书签名,得到各所述背书节点对应的背书签名数据;根据各所述背书节点对应的背书签名数据,确定所述待执行区块的背书签名数据是否满足预设的背书条件。
可选地,所述装置还包括:切换模块;
所述切换模块,用于若所述待执行区块的背书签名数据不满足所述预设的背书条件,则切换当前节点得到新的当前节点,利用所述新的当前节点重新生成新的待执行区块。
可选地,所述生成模块,具体用于根据所述区块链上已记录的业务数据对所述待执行的业务数据进行去重处理,得到去重处理后的待执行的业务数据;根据所述去重处理后的待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块。
可选地,所述装置还包括:缓存模块;
所述缓存模块,用于将所述业务执行结果缓存在所述当前节点对应的存储队列中。
可选地,所述执行模块,具体用于确定所述存储队列上是否存在所述待执行区块依赖的业务执行结果;若是,则从所述存储队列中获取所述待执行区块依赖的业务执行结果;基于所述待执行区块依赖的业务执行结果,执行所述待执行区块中的所述待执行的业务数据。
可选地,所述装置还包括:去重模块;
所述去重处理,用于从所述存储队列中获取预设区块数量的各区块对应的业务执行结果;对各区块对应的业务执行结果进行去重处理,得到去重处理后的各区块对应的业务执行结果;将去重处理后的各区块对应的业务执行结果保存在数据库中。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行上述第一方面的所述区块链的业务处理方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面的所述区块链的业务处理方法的步骤。
本申请的有益效果是:
本申请实施例提供一种区块链的业务处理方法、装置、设备及存储介质,该方法应用于区块链网络中的当前节点,当前节点为所述区块链网络中的任一节点,当前节点中并行运行有至少一个出块线程、至少一个执行线程以及至少一个广播线程,该方法包括:运行出块线程,根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块;运行广播线程,向区块链网络中除当前节点的其它节点广播待执行区块,以使其它节点根据待执行区块的在先状态哈希对待执行区块进行校验并得到校验结果;运行执行线程,执行待执行区块中的待执行的业务数据,得到待执行区块的状态哈希以及业务执行结果,根据待执行区块生成目标区块,并将目标区块增加至区块链中。
采用本申请实施例提供的区块链的业务处理方法,将待执行区块中的在先状态哈希预先设置为前第N个区块的状态哈希,N大于2。基于此,通过在当前节点中设置多个并行运行的线程,可以对区块链的业务处理过程进行并列处理。具体的,当前节点可利用出块线程根据待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块;然后利用广播线程将待执行区块向其它节点广播,以使其它节点对待执行区块中的在先哈希进行校验,同时,当前节点还可通过运行执行线程对该待执行区块中的待执行的业务数据进行处理,以得到嵌入到区块链末端的目标区块。
可以理解的是,由于当前节点中的线程都是并行运行的,以一个区块来说,在其它节点进行校验的同时,当前节点可利用执行线程对待执行区块进行处理,以多个区块来说,在当前节点利用执行线程对前一区块进行处理的同时,当前节点还可通过出块线程生成后一区块,即当前节点不需要等到上一个区块的执行结果,就可以生成新区快,这样可在业务达到高峰期时,快速对业务数据进行处理。所以,不管是一个区块的共识过程,还是多个区块之间的共识过程,本申请均可利用多线程并行的方式将对区块进行共识的阶段进行分离,即可对多个共识阶段进行并行处理,进而可以提升区块链业务处理的吞吐量。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提到的一种区块链网络的结构示意图;
图2为本申请实施例提供的一种当前节点;
图3为本申请实施例提供的一种区块链的业务处理方法的流程示意图;
图4为本申请实施例提供的另一种区块链的业务处理方法的流程示意图;
图5为本申请实施例提供的又一种区块链的业务处理方法的流程示意图;
图6为本申请实施例提供的再一种区块链的业务处理方法的流程示意图;
图7为本申请实施例提供的另一种区块链的业务处理方法的流程示意图;
图8为本申请实施例提供的又一种区块链的业务处理方法的流程示意图;
图9为本申请实施例提供的一种区块链的业务处理装置的结构示意图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在对本申请实施例进行详细解释之前,首先对本申请的应用场景予以介绍。该应用场景具体可以为在区块链网络中,对生成的业务数据进行处理的场景,其中,业务数据可为金融、保险、医疗或旅游等其它可应用区块链网络的领域,本申请不对其进行限定。为了清楚对下述提到的区块链的业务处理方法的示例进行理解,首先对本申请提到的区块链网络进行介绍。图1为本申请实施例提到的一种区块链网络的结构示意图,如图1所示,该区块链网络包括至少多个节点100,各节点100对应有相同的区块链,区块链中可包括已经入链的区块101(如区块1、区块2等),出块节点在生成区块101对应的待执行区块时,待执行区块中保存待执行的业务数据的同时,还要保存在先区块对应的一个数,这个数可以理解为在先区块的状态哈希。这里提到的在先区块与预设的状态哈希生成策略相关,预设的状态哈希生成策略中包括在先区块的区块高度与待执行区块的区块高度的差值为预设差值,可以理解的是,当待执行区块的区块高度大于2时,可利用本申请实施例的方式对业务数据进行处理。
需要说明的是,本申请不对节点100以及区块链中已有的区块101个数进行限定。其中,节点100在区块链进行共识过程中可充当不同角色,如节点100可为出块节点、背书节点或校验节点等其它角色节点,当节点100为出块节点(即本申请提到的当前节点)时,节点100可生成待执行区块;当节点100为背书节点时,可对出块节点发出的待执行区块进行背书签名;当节点100为校验节点(即本申请提到的其它节点)时,可对当前节点广播的待执行区块进行校验。可以理解的是,本申请提到的当前节点、其它节点、背书节点身份可互相替换。
本申请以当前正在进行出块的节点为例进行说明,当前正在进行出块的节点可称为当前节点,如图2所示,当前节点200可包括多个并行的线程,如出块线程200A、广播线程200B、执行线程200C,当然还可以包括其它线程,如存储线程等,需要说明的是,本申请不对其进行限定。当前节点200中的各线程可并行运行,即并行对业务数据进行处理。需要说明的是,当前节点200可为图1中的任一节点100。
示例性的,以一个区块来说,当前节点200利用出块线程200A生成待执行区块,该待执行区块中设置的在先状态哈希与前第N个在先区块的状态哈希相关,N大于2。随后,当前节点200可利用广播线程200B向区块链网络中除当前节点200外的其它节点广播该待执行区块。在广播的同时,当前节点200可将该待执行区块发送给执行线程200C,也就是说,该待执行区块共识阶段中的执行阶段、验证阶段可并行进行。
示例性的,以两个区块来说,由于待执行区块中的在先状态哈希为前第N个在先区块的状态哈希,N大于2,并且当前节点200中有多个并行的线程。基于此,当前节点200利用广播线程200B、执行线程200C或存储线程对待执行区块进行处理的过程中,当前节点200可利用出块线程200A生成待执行区块的下一个区块。
也就是说,本申请在对一个区块进行共识过程中,可将执行、校验这两个阶段彻底分离,这样可避免对区块执行完成得到执行结果后才能对区块进行广播的现象;对两个相邻区块行共识过程中,后一区块是否出块不再受前一区块是否执行完成限制,即不需要等待前一区块的执行结果,出块节点也可以正常对后一区块进行出块,即将出块、执行这两个阶段彻底分离。
如下结合附图对本申请提到的区块链的业务处理方法进行示例说明。该方法可应用于上述提到的区块链网络中的当前节点200,当前节点200可为区块链网络中的任一节点,当前节点200中并行运行有至少一个出块线程200A、至少一个执行线程200C以及至少一个广播线程200B。
需要说明的是,本申请以对一个区块进行共识的过程为例进行说明,同理可得到对多个连续区块进行共识的过程,具体可见下述实施例描述。
图3为本申请实施例提供的一种区块链的业务处理方法的流程示意图。如图3所示,该方法可包括:
S301、运行出块线程,根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块。
其中,该待执行区块中包括:待执行的业务数据以及在先状态哈希,预设状态哈希生成策略用于指示待执行区块中的在先状态哈希为在先区块的状态哈希,其中,在先区块的区块高度小于待执行区块的区块高度,且,在先区块的区块高度与待执行区块的高度的差值为预设差值。
结合图1进行说明,示例性的,与图1中的区块链网络进行数据交互的一客户端10上具有业务处理功能,如交易数据处理功能。用户在客户端10上进行业务操作后,客户端10可将生成的待执行的业务数据(如待执行的交易数据)发送给区块链网络中的任一节点,可将接收客户端10发送的待执行的业务数据的节点称为接收节点,该接收节点将待执行的业务数据广播给区块链网络中的其它节点,其它节点将该待执行的业务数据存入各自对应的业务池中。由共识机制确定的当前出块节点可从自身对应的业务池中获取待执行的业务数据,当前出块节点可以理解为本申请提到的当前节点,当前节点从自身对应的业务池中获取待执行的业务数据的时机可根据该业务池中的待执行的业务数据的数量与预设业务数据的数量之间的关系确定,或者也可以根据预设出块时间确定,当然,也可根据其它获取待执行的业务数据策略确定,本申请不对其进行限定。
此处以预设出块时间为例进行说明,假设具有出块功能的节点具有对应的出块时间、出块个数。在当前时间到达出块节点的出块时间时,结合图2进行说明,出块节点作为当前节点200运行出块线程200A,出块线程200A可从业务池中获取待执行的业务数据,并结合获取到的在先区块的状态哈希,生成待执行区块。
可选地,当前节点200可利用出块线程200A先生成一个空块,然后出块线程200A再从业务池中获取待执行的业务数据,将待执行的业务数据以及在先区块的状态哈希一起插入到该空块中,随之生成待执行区块。
当前节点200的出块线程200A可通过下述方式获取在先区块的状态哈希,示例性的,出块线程200A根据预设的状态哈希生成策略可知待执行区块中的在先状态哈希与在先区块的状态哈希存在对应关系,出块线程200A根据该对应关系从当前节点200本地区块链中获取在先区块的状态哈子,进而得到该待执行区块中的在先状态哈希。举例来说,在先区块为待执行区块之前的第N个区块,即当待执行区块的区块高度为H时,在先区块的区块高度为(H-N),可将区块高度为(H-N)的在先区块对应的状态哈希作为区块高度为H的待执行区块中的在先状态哈希。同理,当待执行区块的区块高度为(H+1)时,在先区块的区块高度即为(H+1-N),可将区块高度为(H+1-N)的在先区块的状态哈希作为区块高度为(H+1)的待执行区块中的在先状态哈希;待执行区块的区块高度为(H+2)时,在先区块的区块高度即为(H+2-N),可将区块高度为(H+2-N))的在先区块的状态哈希作为区块高度为(H+2)的待执行区块中的在先状态哈希。可以理解的是,随着时间的推移,由于待执行区块之前的区块的状态哈希逐渐得到,所以在生成待执行区块时,待执行区块中的在先状态哈希为已知状态,进而当前节点可正常生成待执行区块。
根据上述描述可知,在先区块的区块高度与待执行区块的区块高度的差值为预设差值可以理解为,待执行区块中设置的在先状态哈希为前第N个在先区块的状态哈希,其中,N大于2。也就是说,在一个新的区块链网络中,首先需要根据当前区块链的业务处理方式(如串行交易方式)生成区块链上的前2个区块,进而再根据本申请提到的并行交易方式(即异步共识机制)生成区块链上的其它区块。
其中,待执行区块的区块高度由区块链上末端区块对应的区块高度确定,末端区块对应的区块高度加1即为该待执行区块的区块高度。
S302、运行广播线程,向区块链网络中除当前节点的其它节点广播待执行区块,以使其它节点根据待执行区块中的在先状态哈希对待执行区块进行校验并得到校验结果。
结合图2进行说明,当前节点200在生成待执行区块后,可直接利用广播线程200B将该待执行区块打包广播给区块链网络中除当前节点外的其它节点,其它节点各自从接收到的待执行区块中提取出在先状态哈希,并且从本地区块链中获取待执行区块之前的第N个区块(即在先区块)的状态哈希。以其它节点中的一个校验节点为例进行说明,该校验节点将该待执行区块中的在先状态哈希与在先区块的状态哈希进行对比,得到校验结果,若校验结果指示两者不一致,则该校验节点将该待执行区块丢弃,若校验结果指示两者一致,则该校验节点可将该待执行区块存储在本地,以对该待执行区块进行执行操作。
根据上述描述可知,如图2所示,当前节点200可包括出块线程200A、广播线程200B、执行线程200C,当然,也可包括其它线程,如存储线程等,本申请不对其进行限定。当前节点200在利用出块线程200A生成待执行区块后,可直接通过广播线程200B向其它节点广播该待执行区块,由于该待执行区块中的在先状态哈希为该待执行区块之前的第N个区块(N大于2)的状态哈希,所以在当前节点200还未利用执行线程200C对待执行区块之前的区块进行执行操作得到执行结果之前,校验节点依旧可以对待执行区块进行校验。或者说,当前节点200利用出块线程200A得到待执行区块后,可直接利用广播线程200B向其它节点广播该待执行区块,避免了通用的需要对待执行区块进行执行操作,得到执行结果,才可向其它节点播报待执行区块的现象。
S303、运行执行线程,执行待执行区块中的待执行的业务数据,得到待执行区块的状态哈希以及业务执行结果,根据待执行区块生成目标区块,并将目标区块增加至区块链中。
其中,该目标区块中包括:待执行的业务数据以及目标区块的状态哈希。一种示例性的,该目标区块中还可包括:与目标区块相邻的前一区块的状态哈希和/或前第N个区块(在先区块)的状态哈希。
结合图2进行说明,示例性的,当前节点200在运行广播线程200B向其它节点广播待执行区块的同时,可将该待执行区块加载到执行线程200C中,通过运行执行线程200C对待执行区块中的待执行的业务数据进行处理,可得到两类结果,分别为待执行区块的状态哈希以及业务执行结果。其中,待执行区块的状态哈希可以理解为待执行区块的防伪标签,且具有唯一性,待执行区块的状态哈希与业务执行结果具有如下关系,可根据业务执行结果计算得到待执行区块的状态哈希,业务执行结果可以理解为需要给客户返回的结果,如余额。
待执行区块中有待执行的业务数据、在先区块的状态哈希,利用执行线程200C对待执行区块中的待执行的业务数据处理后,可将得到的该待执行区块的状态哈希插入待执行区块中,从而可得到目标区块,将目标区块添加至当前节点200对应的区块链的末端,将目标区块的区块高度作为该区块链上最高的区块高度。
以一个区块来说,该待执行区块被当前节点利用广播线程广播至其它节点,在其它节点对该待执行区块进行校验的过程中,当前节点还可同时将该待执行区块加载至执行线程,利用执行线程对该待执行区块中的待执行的业务数据进行处理。以相邻的区块来说,当前节点利用执行线程对待执行区块进行处理的过程中,还可以利用出块线程生成新区块,也就是说,当前节点不需要等到上一个区块的执行结果,就可以生成新区快。
可以看出,本申请可利用多线程的方式,并行处理一个区块中的不同阶段(如验证、执行),还可以并行处理两个不同区块中的不同阶段(如出块、执行),这样可在业务高峰期时,提升区块链业务处理的吞吐量。
综上所述,本申请提供的区块链的业务处理方法中,将待执行区块中的在先状态哈希预先设置为前第N个区块的状态哈希,N大于2。基于此,通过在当前节点中设置多个并行运行的线程,可以对区块链的业务处理过程进行并列处理。具体的,当前节点可利用出块线程根据待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块;然后利用广播线程将待执行区块向其它节点广播,以使其它节点对待执行区块中的在先哈希进行校验,同时,当前节点还可通过运行执行线程对该待执行区块中的待执行的业务数据进行处理,以得到嵌入到区块链末端的目标区块。
可以理解的是,由于当前节点中包括的线程都是并行运行的,以一个区块来说,在其它节点进行校验的同时,当前节点可利用执行线程对待执行区块进行处理,以多个区块来说,在当前节点利用执行线程对前一区块进行处理的同时,当前节点还可通过出块线程生成后一区块,即当前节点不需要等到上一个区块的执行结果,就可以生成新区快,这样可在业务达到高峰期时,快速对业务数据进行处理。所以,不管是一个区块的共识过程,还是多个区块之间的共识过程,本申请均可利用多线程并行的方式将对区块进行共识的阶段进行分离,即可对多个共识阶段进行并行处理,进而可以提升区块链业务处理的吞吐量。
可选地,上述运行执行线程,执行待执行区块中的待执行的业务数据之前,还包括:将待执行区块加入到执行队列中,其中,执行队列中包括至少一个待执行区块,且各待执行区块按照区块的高度依次排序。
可以理解的是,出块线程的出块频率与执行线程的执行频率具有差异,一般情况下,出块频率要快于执行频率。基于此,可将出块线程向执行线程发送的待执行区块预先存储在执行线程对应的执行队列中,且可根据区块高度从小到大的顺序对各待执行区块进行排列,将最小区块高度的待执行区块排列在执行队列的首位,这样执行线程可依次对各待执行区块中的待执行的业务数据进行处理。
由于在对较大区块高度(后一个)待执行区块中的待执行的业务数据进行处理时,需要用到较小区块高度(前一个)待执行区块的业务执行结果,利用执行队列对待执行区块进行排序处理,可以提高区块链的业务处理精确度及效率。
可选地,上述运行执行线程,执行待执行区块中的待执行的业务数据,包括:运行执行线程,从执行队列中读取并执行待执行区块中的待执行的业务数据。
根据上述描述可知,执行队列中所包括的待执行区块按照区块的高度依次排序,当轮到对某一待执行区块进行处理时,执行线程从执行队列中读取该待执行区块,进而对该待执行区块中的各待执行的业务数据按照排列顺序进行处理。也就是说,该待执行区块中的待执行的业务数据之间也有顺序关系,举例来说,假设该待执行区块中包括待执行的业务数据1、待执行的业务数据2以及待执行的业务数据3,待执行的业务数据1、待执行的业务数据2以及待执行的业务数据3依次排序,执行线程先对待执行的业务数据1进行处理,得到结果1,然后再基于结果1对待执行的业务数据2进行处理,得到结果2,最后再基于结果2对待执行的业务数据3进行处理,得到结果3,根据结果3即可得到该待执行区块的业务执行结果,根据该待执行区块的业务执行结果可计算得到该待执行区块的状态哈希。
图4为本申请实施例提供的另一种区块链的业务处理方法的流程示意图。可选地,如图4所示,上述运行广播线程,向区块链网络中除当前节点的其它节点广播待执行区块,包括:
S401、根据区块链网络的业务量和/或当前节点的执行线程资源,确定是否并行执行业务。
可选地,若区块链网络的业务量大于预设业务量阈值,和/或,当前节点的执行线程资源小于预设资源阈值,则确定并行执行业务。
在一种可实现的实施例中,当前节点可将区块链网络的业务量与预设业务量阈值进行对比,当区块链网络的业务量大于或等于预设业务量阈值时,当前节点确定需要并行执行任务,即当区块链中的业务数据波动较大时或者达到业务高峰区时,确定需要并行执行任务,其中,预设业务量阈值可根据具体的应用业务场景进行设置,本申请不对其进行限定。
在另一种可实现的实施例中,当前节点可将执行线程的资源,即当前执行线程所占资源空间大小与预设资源阈值进行比较,当执行线程的资源大于或等于预设资源阈值时,确定当前节点需要并行执行任务。
并行执行任务可以理解为,一个区块的出块阶段、执行阶段、广播阶段、检验阶段完全分离,当前节点不需要等到执行完上一个区块后才对后一个区块进行出块,即多个区块的共识阶段可并行进行。
S402、若确定并行执行业务,且待执行区块的背书签名数据满足预设的背书条件,则运行广播线程,向区块链网络中除当前节点的其它节点广播待执行区块。
一种示例性的,当确定需要进行并行执行任务时,当前节点可将生成的待执行区块发送给区块链网络中预设的背书节点,各背书节点分别对该待执行区块进行背书签名后,可将背书签名发送至当前节点,如果当前节点基于各背书节点发送的背书签名判断出该待执行区块满足预设的背书条件,那么可继续运行广播线程,利用广播线程将该待执行区块广播至其它节点,其它节点可分别从该待执行区块中提取出在先状态哈希,进而对该待执行区块进行校验。
在另一种可实现的实施例中,当确定不需要进行并行执行任务时,如当前节点的执行线程资源大于预设资源阈值时,那么确定需要进行串行执行业务。也就是说,当前节点可在生成待执行区块后,再对待执行区块进行执行操作,然后将执行后的待执行区块广播至其它节点,这样当前节点只有在待执行区块执行完后,才可以生成待执行区块后的区块。
图5为本申请实施例提供的又一种区块链的业务处理方法的流程示意图。可选地,如图5所示,上述运行广播线程,向区块链网络中除当前节点的其它节点广播待执行区块之前,该方法还包括:
S501、向预设的背书节点发送待执行区块,以使各背书节点对待执行区块进行背书签名,得到各背书节点对应的背书签名数据。
S502、根据各背书节点对应的背书签名数据,确定待执行区块的背书签名数据是否满足预设的背书条件。
其中,当前节点在利用出块线程生成待执行区块后,可将该待执行区块发送至预设的背书节点,需要说明的是,本申请不对背书节点的个数进行限定。
各背书节点对该待执行区块进行背书签名,示例性的,各背书节点将该待执行区块中的在先状态哈希与本地的前第N个在先区块的状态哈希进行比较,如果两者一致,则可设置背书签名,若不一致,则不设置背书签名。在预设时间后,当前节点可统计接收到的背书签名的数量,假设预设的背书条件为接收到的背书签名的数量与背书节点之间的数量关系为小于或等于2,若数量关系为小于或等于2,则当前节点可运行广播线程。
举例来说,当前节点接收到的背书签名的数量为3,背书节点的个数为5,那么该待执行区块的背书签名的数量满足预设的背书条件,则当前节点可运行广播线程。
可选地,该方法还包括:若待执行区块的背书签名数据不满足预设的背书条件,则切换当前节点得到新的当前节点,利用新的当前节点重新生成新的待执行区块。
继续上述举例来说,如果接收到的背书签名的数量与背书节点之间的数量关系为大于2,则该待执行区块不满足该预设的背书条件。基于此,可判断当前节点是否还可以继续作为当前出块节点,若不能继续作为当前出块节点,那么可根据共识机制切换当前节点,重新得到进行出块的节点,即新的当前节点,新的当前节点利用其上并行运行的出块线程、执行线程以及广播线程等其它线程重新生成新的待执行区块。
图6为本申请实施例提供的再一种区块链的业务处理方法的流程示意图。可选地,如图6所示,上述根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块,该方法包括:
S601、根据区块链上已记录的业务数据对待执行的业务数据进行去重处理,得到去重处理后的待执行的业务数据。
S602、根据去重处理后的待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块。
当前节点从业务池中获取的待执行的业务数据可包括一个,也可包括多个,本申请不对其进行限定。当前节点在获取到待执行的业务数据后,可将待执行的业务数据与区块链中已记录的业务数量进行对比,若全部的待执行的业务数据未记载在区块链中,则可将获取到的各待执行的业务数据进行排序,将排序好的待执行的业务数据以及根据预先的状态哈希生成策略生成的待执行区块的在先状态哈希打包生成待执行区块。
若有部分的待执行的业务数据记载在区块链中,则需要对获取到的待执行的业务数据进行去重处理,将记录在区块链中的待执行的业务数据剔除,得到去重处理后的业务数据,对去重处理后的业务数据进行排序,得到排序后的业务数据,进而可将排序后的业务数据以及待执行区块的在先状态哈希一起插入预先建立的空块中,以得到待执行区块。
可选地,该方法还可包括:将业务执行结果缓存在当前节点对应的存储队列中。
当前节点上的执行线程对待执行区块中的待执行的业务数据进行处理后,可得到待执行区块的状态哈希以及业务执行结果,其中,待执行区块的状态哈希可存储在目标区块中,业务执行结果可缓存在存储队列中。可以理解的是,每个业务执行结果可与区块高度对应,可将业务执行结果以及区块高度相对应的存储在存储队列中。如区块1业务执行结果、区块2业务执行结果、区块3业务执行结果等,以区块1业务执行结果为例进行说明,区块1业务执行结果中的区块1用于标识区块的区块高度,区块1业务执行结果中的业务执行结果为区块1的业务执行结果。
图7为本申请实施例提供的另一种区块链的业务处理方法的流程示意图。可选地,如图7所示,上述执行待执行区块中的待执行的业务数据,该方法包括:
S701、确定存储队列上是否存在待执行区块依赖的业务执行结果。
S702、若是,则从存储队列中获取待执行区块依赖的业务执行结果。
其中,在当前节点利用执行线程对执行队列中的待执行区块进行处理时,执行线程可直接去当前节点对应的存储队列中获取与该待执行区块依赖的业务执行结果。一般情况下,后一个区块的业务执行结果至少与前一个区块的业务执行结果相关,在后一个区块的区块高度已知的前提下,可从存储队列中获取与待执行区块依赖的业务执行结果。
举例来说,假设该待执行区块的区块高度为区块3,那么可根据区块3去存储队列中查找是否存在区块2的相关信息,该相关信息即为区块2的业务执行结果。如果存在区块2业务执行结果,则从存储队列中读取区块2业务执行结果,若果不存在区块2业务执行结果,则可继续在当前节点的本地数据库中查找区块2的业务执行结果。
可以看出,将业务执行结果缓存在存储队列中,这样可在需要业务执行结果时,直接从存储队列中获取,可以提高区块链的业务处理效率。
S703、基于待执行区块依赖的业务执行结果,执行待执行区块中的待执行的业务数据。
当在存储队列中查到该待执行区块依赖的业务执行结果时,那么可基于该待执行区块依赖的业务执行结果以及该待执行区块中各待执行的业务数据的排序,利用执行线程对各待执行的业务数据进行处理。
图8为本申请实施例提供的又一种区块链的业务处理方法的流程示意图。可选地,如图8示,该方法还包括:
S801、从存储队列中获取预设区块数量的各区块对应的业务执行结果。
S802、对各区块对应的业务执行结果进行去重处理,得到去重处理后的各区块对应的业务执行结果。
S803、将去重处理后的各区块对应的业务执行结果保存在数据库中。
示例性的,当前节点上还可包括存储线程,当前节点可在预设时间间隔后自动触发运行,从存储队列中按照预设区块数量读取相应区块对应的业务执行结果,如预设区块数量为3,那么可一次从存储队列中获取例如区块1业务执行结果、区块2业务执行结果以及区块3业务执行结果。
将区块1业务执行结果、区块2业务执行结果以及区块3业务执行结果进行合并,剔除重复数据,即最后可得到去重处理后的区块1、区块2以及区块3分别对应的业务执行结果。随后可将去重处理后的区块1、区块2以及区块3分别对应的业务执行结果存储在数据库中,这样可以提高将业务执行结果写入数据库中的效率,提高存储资源利用率。
图9为本申请实施例提供的一种区块链的业务处理装置的结构示意图。如图9所示,该装置应用于区块链网络中的当前节点,该当前节点为所述区块链网络中的任一节点,该当前节点中并行运行有至少一个出块线程、至少一个执行线程以及至少一个广播线程,该装置包括:
生成模块901,用于运行出块线程,根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块;
广播模块902,用于运行广播线程,向区块链网络中除当前节点的其它节点广播待执行区块,以使其它节点根据待执行区块中的在先状态哈希对待执行区块进行校验并得到校验结果;
执行模块903,用于运行执行线程,执行待执行区块中的待执行的业务数据,得到待执行区块的状态哈希以及业务执行结果,根据待执行区块生成目标区块,并将目标区块增加至区块链中。
可选地,该装置还包括:加入模块;
该加入模块,用于将待执行区块加入到执行队列中,其中,执行队列中包括至少一个待执行区块,且各待执行区块按照区块的高度依次排序。
可选地,执行模块903,具体用于运行执行线程,从执行队列中读取并执行待执行区块中的待执行的业务数据。
可选地,广播模块902,具体用于根据区块链网络的业务量和/或当前节点的执行线程资源,确定是否并行执行业务;若确定并行执行业务,且待执行区块的背书签名数据满足预设的背书条件,则运行广播线程,向区块链网络中除当前节点的其它节点广播待执行区块。
可选地,广播模块902,还具体用于若区块链网络的业务量大于预设业务量阈值,和/或,当前节点的执行线程资源小于预设资源阈值,则确定并行执行业务。
可选地,广播模块902,还具体用于向预设的背书节点发送待执行区块,以使各背书节点对待执行区块进行背书签名,得到各背书节点对应的背书签名数据;根据各背书节点对应的背书签名数据,确定待执行区块的背书签名数据是否满足预设的背书条件。
可选地,该装置还包括:切换模块;
该切换模块,用于若待执行区块的背书签名数据不满足预设的背书条件,则切换当前节点得到新的当前节点,利用新的当前节点重新生成新的待执行区块。
可选地,生成模块901,具体用于根据区块链上已记录的业务数据对待执行的业务数据进行去重处理,得到去重处理后的待执行的业务数据;根据去重处理后的待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块。
可选地,该装置还包括:缓存模块;
该缓存模块,用于将业务执行结果缓存在当前节点对应的存储队列中。
可选地,执行模块903,具体用于确定存储队列上是否存在待执行区块依赖的业务执行结果;若是,则从存储队列中获取待执行区块依赖的业务执行结果;基于待执行区块依赖的业务执行结果,执行待执行区块中的待执行的业务数据。
可选地,该装置还包括:去重模块;
该去重处理,用于从存储队列中获取预设区块数量的各区块对应的业务执行结果;对各区块对应的业务执行结果进行去重处理,得到去重处理后的各区块对应的业务执行结果;将去重处理后的各区块对应的业务执行结果保存在数据库中。
装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器,或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
图10为本申请实施例提供的一种电子设备的结构示意图,如图10所示,该电子设备可以包括:处理器1001、存储介质1002和总线1003,存储介质1002存储有处理器1001可执行的机器可读指令,当该电子设备运行时,处理器1001与存储介质1002之间通过总线1003通信,处理器1001执行机器可读指令,以执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。
可选地,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述方法实施例的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种区块链的业务处理方法,其特征在于,所述方法应用于区块链网络中的当前节点,所述当前节点为所述区块链网络中的任一节点,所述当前节点中并行运行有至少一个出块线程、至少一个执行线程以及至少一个广播线程,所述方法包括:
运行所述出块线程,根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块,所述待执行区块中包括:所述待执行的业务数据以及在先状态哈希,所述预设的状态哈希生成策略用于指示所述待执行区块的所述在先状态哈希为在先区块的状态哈希,其中,所述在先区块的区块高度小于所述待执行区块的区块高度,且,所述在先区块的区块高度与所述待执行区块的高度的差值为预设差值;
运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块,以使所述其它节点根据所述待执行区块中的在先状态哈希对所述待执行区块进行校验并得到校验结果;
运行所述执行线程,执行所述待执行区块中的所述待执行的业务数据,得到所述待执行区块的状态哈希以及业务执行结果,根据所述待执行区块生成目标区块,并将所述目标区块增加至区块链中,其中,所述目标区块中包括:所述待执行的业务数据以及所述目标区块的状态哈希。
2.根据权利要求1所述的方法,其特征在于,所述运行所述执行线程,执行所述待执行区块中的所述待执行的业务数据之前,还包括:
将所述待执行区块加入到执行队列中,其中,所述执行队列中包括至少一个待执行区块,且各待执行区块按照区块的高度依次排序;
所述运行所述执行线程,执行所述待执行区块中的所述待执行的业务数据,包括:
运行所述执行线程,从所述执行队列中读取并执行所述待执行区块中的所述待执行的业务数据。
3.根据权利要求1所述的方法,其特征在于,所述运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块,包括:
根据所述区块链网络的业务量和/或所述当前节点的执行线程资源,确定是否并行执行业务;
若确定并行执行业务,且所述待执行区块的背书签名数据满足预设的背书条件,则运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块。
4.根据权利要求3所述的方法,其特征在于,所述根据所述区块链网络的业务量和/或所述当前节点的执行线程资源,确定是否并行执行业务,包括:
若所述区块链网络的业务量大于预设业务量阈值,和/或,所述当前节点的执行线程资源小于预设资源阈值,则确定并行执行业务。
5.根据权利要求3所述的方法,其特征在于,所述运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块之前,还包括:
向预设的背书节点发送所述待执行区块,以使各所述背书节点对所述待执行区块进行背书签名,得到各所述背书节点对应的背书签名数据;
根据各所述背书节点对应的背书签名数据,确定所述待执行区块的背书签名数据是否满足预设的背书条件。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述待执行区块的背书签名数据不满足所述预设的背书条件,则切换当前节点得到新的当前节点,利用所述新的当前节点重新生成新的待执行区块。
7.根据权利要求1所述的方法,其特征在于,所述根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块,包括:
根据所述区块链上已记录的业务数据对所述待执行的业务数据进行去重处理,得到去重处理后的待执行的业务数据;
根据所述去重处理后的待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
将所述业务执行结果缓存在所述当前节点对应的存储队列中。
9.根据权利要求8所述的方法,其特征在于,所述执行所述待执行区块中的所述待执行的业务数据,包括:
确定所述存储队列上是否存在所述待执行区块依赖的业务执行结果;
若是,则从所述存储队列中获取所述待执行区块依赖的业务执行结果;
基于所述待执行区块依赖的业务执行结果,执行所述待执行区块中的所述待执行的业务数据。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
从所述存储队列中获取预设区块数量的各区块对应的业务执行结果;
对各区块对应的业务执行结果进行去重处理,得到去重处理后的各区块对应的业务执行结果;
将去重处理后的各区块对应的业务执行结果保存在数据库中。
11.一种区块链的业务处理装置,其特征在于,所述装置应用于区块链网络中的当前节点,所述当前节点为所述区块链网络中的任一节点,所述当前节点中并行运行有至少一个出块线程、至少一个执行线程以及至少一个广播线程,所述装置包括:
生成模块,用于根据获取的至少一个待执行的业务数据以及预设的状态哈希生成策略,生成待执行区块,所述待执行区块中包括:所述待执行的业务数据以及在先状态哈希,所述预设的状态哈希生成策略用于指示所述待执行区块的所述在先状态哈希为在先区块的状态哈希,其中,所述在先区块的区块高度小于所述待执行区块的区块高度,且,所述在先区块的区块高度与所述待执行区块的高度的差值为预设差值;
广播模块,用于运行所述广播线程,向所述区块链网络中除当前节点的其它节点广播所述待执行区块,以使所述其它节点根据所述待执行区块中的在先状态哈希对所述待执行区块进行校验并得到校验结果;
执行模块,用于运行所述执行线程,执行所述待执行区块中的所述待执行的业务数据,得到所述待执行区块的状态哈希以及业务执行结果,根据所述待执行区块生成目标区块,并将所述目标区块增加至区块链中,其中,所述目标区块中包括:所述待执行的业务数据以及所述目标区块的状态哈希。
12.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1-10任一项所述区块链的业务处理方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-10任一项所述区块链的业务处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210168770.1A CN114244536A (zh) | 2022-02-24 | 2022-02-24 | 一种区块链的业务处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210168770.1A CN114244536A (zh) | 2022-02-24 | 2022-02-24 | 一种区块链的业务处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114244536A true CN114244536A (zh) | 2022-03-25 |
Family
ID=80747853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210168770.1A Pending CN114244536A (zh) | 2022-02-24 | 2022-02-24 | 一种区块链的业务处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114244536A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896080A (zh) * | 2022-06-13 | 2022-08-12 | 深圳信息职业技术学院 | 基于区块链技术的分布式系统避免死锁处理方法及装置 |
CN116820709A (zh) * | 2023-05-26 | 2023-09-29 | 京信数据科技有限公司 | 任务链的运行方法、装置、终端及计算机存储介质 |
CN116820709B (zh) * | 2023-05-26 | 2024-06-11 | 京信数据科技有限公司 | 任务链的运行方法、装置、终端及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108681565A (zh) * | 2018-04-28 | 2018-10-19 | 百度在线网络技术(北京)有限公司 | 区块链数据并行处理方法、装置、设备和存储介质 |
CN112395300A (zh) * | 2021-01-20 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN112508577A (zh) * | 2021-02-04 | 2021-03-16 | 北京全息智信科技有限公司 | 区块生成及验证的方法、装置、电子设备和可读存储介质 |
CN112598525A (zh) * | 2021-02-26 | 2021-04-02 | 北京全息智信科技有限公司 | 一种智能合约分簇并行的区块链实现方法及装置 |
CN113377798A (zh) * | 2021-07-07 | 2021-09-10 | 支付宝(杭州)信息技术有限公司 | 一种区块链一致性处理方法、区块链节点和区块链系统 |
-
2022
- 2022-02-24 CN CN202210168770.1A patent/CN114244536A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108681565A (zh) * | 2018-04-28 | 2018-10-19 | 百度在线网络技术(北京)有限公司 | 区块链数据并行处理方法、装置、设备和存储介质 |
CN112395300A (zh) * | 2021-01-20 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN112508577A (zh) * | 2021-02-04 | 2021-03-16 | 北京全息智信科技有限公司 | 区块生成及验证的方法、装置、电子设备和可读存储介质 |
CN112598525A (zh) * | 2021-02-26 | 2021-04-02 | 北京全息智信科技有限公司 | 一种智能合约分簇并行的区块链实现方法及装置 |
CN113377798A (zh) * | 2021-07-07 | 2021-09-10 | 支付宝(杭州)信息技术有限公司 | 一种区块链一致性处理方法、区块链节点和区块链系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896080A (zh) * | 2022-06-13 | 2022-08-12 | 深圳信息职业技术学院 | 基于区块链技术的分布式系统避免死锁处理方法及装置 |
CN116820709A (zh) * | 2023-05-26 | 2023-09-29 | 京信数据科技有限公司 | 任务链的运行方法、装置、终端及计算机存储介质 |
CN116820709B (zh) * | 2023-05-26 | 2024-06-11 | 京信数据科技有限公司 | 任务链的运行方法、装置、终端及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9575984B2 (en) | Similarity analysis method, apparatus, and system | |
CN109450900B (zh) | 拟态判决方法、装置及系统 | |
CN110730225A (zh) | 基于区块链的物联网的数据处理方法、物联网及存储介质 | |
CN104067239A (zh) | 用于数据组块去复制的系统和方法 | |
CN107070645B (zh) | 比较数据表的数据的方法和系统 | |
WO2023040364A1 (zh) | 共识方法、装置及区块链系统 | |
Xu et al. | A lightweight virtual machine image deduplication backup approach in cloud environment | |
CN105511812A (zh) | 一种存储系统大数据优化方法及装置 | |
US20150066877A1 (en) | Segment combining for deduplication | |
CN114244536A (zh) | 一种区块链的业务处理方法、装置、设备及存储介质 | |
CN109271545A (zh) | 一种特征检索方法及装置、存储介质和计算机设备 | |
CN112631731A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN103995863A (zh) | 一种重复数据删除的方法及装置 | |
CN111338688A (zh) | 数据长效缓存方法、装置、计算机系统及可读存储介质 | |
CN103186418A (zh) | 一种任务分发方法及系统 | |
CN112181964A (zh) | 一种业务通知去重方法、装置、服务器及储存介质 | |
CN109033003B (zh) | 数据流切片比对的方法、装置和异构系统 | |
CN110798492A (zh) | 数据存储方法及装置、数据处理系统 | |
CN111274209B (zh) | 话单文件处理方法及装置 | |
CN112181974B (zh) | 标识信息分配方法、系统及存储设备 | |
CN113572747A (zh) | 一种ip地址的处理方法、装置、存储介质和处理器 | |
CN113326064A (zh) | 划分业务逻辑模块的方法、电子设备及存储介质 | |
CN114254050B (zh) | 区块链网络共识预加载方法、装置、设备及存储介质 | |
CN111061712A (zh) | 一种数据连接操作的处理方法及装置 | |
CN106528577B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220325 |
|
RJ01 | Rejection of invention patent application after publication |