首页> 中国专利> 基于区块链的超级账本并行处理方法及并行处理装置

基于区块链的超级账本并行处理方法及并行处理装置

摘要

本发明涉及区块链技术,具体提供一种基于区块链的超级账本并行处理方法及并行处理装置,其中,该方法包括:根据转出账号对转账交易进行分类得到多个分组;将各分组中的转账交易分别分配至预先建立的多个转账业务子通道,以使各转账业务子通道中的区块链节点并行执行各分组中的转账交易,并通过对应的记账节点将所述转账交易对应账号的世界状态存储至共享数据库中。本发明的基于区块链的超级账本并行处理方法能够解决同一业务中的交易并行处理,应用本方法可极大提高区块链系统中的业务处理速度。

著录项

  • 公开/公告号CN112767168A

    专利类型发明专利

  • 公开/公告日2021-05-07

    原文格式PDF

  • 申请/专利权人 中国工商银行股份有限公司;

    申请/专利号CN202110183504.1

  • 发明设计人 戴丹;漆英;王卓成;蓝振杰;

    申请日2021-02-10

  • 分类号G06Q40/04(20120101);G06K9/62(20060101);G06F16/27(20190101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人任默闻;孙乳笋

  • 地址 100140 北京市西城区复兴门内大街55号

  • 入库时间 2023-06-19 10:54:12

说明书

技术领域

本发明涉及区块链技术,特别涉及一种基于区块链的超级账本并行处理方法及并行处理装置。

背景技术

由于区块链中的交易数据具备有序性,故区块链内的处理必然是串行的,这极大地限制了业务处理速度。若要实现并行处理,必须通过多条区块链同时对业务进行处理。超级账本fabric1.0引入通道概念,使不同业务经过不同的通道,并产生不同的区块链,进而实现多个业务的并行处理。

在超级账本fabric1.6中,如图1所示,一个交易从提交到最终记账会经历三个阶段:交易背书、交易排序和交易验证,每个阶段都需要多节点的参与,即共识算法是综合的,是在分阶段职责基础上共同联合实现共识。

交易背书阶段中的背书节点主要实现签名与计算;交易验证阶段中的记账节点主要实现在状态数据库中当前的状态与“读集”相符时,则将“写集”写入状态数据库中作为最新状态。例如,从图1可以看出,在超级账本fabric1.6中,用于处理转账业务的通道只有一条,所有的转账交易都必须通过该转账业务通道内的区块链节点先后执行,因此,同时产生的多个交易只有一个能执行成功,其他交易会成为废交易。

例如几乎同时产生的交易1(A转账给B)与交易3(B转账给C)有一个关联账号B,因此交易1与交易3会被打包在原超级账本的同一个区块中,即B对应的区块中。由于背书节点的模拟数据是基于交易1和交易3产生之前的B对应的区块的数据,即产生的交易1和交易3“读写集”的“读集”数据也均是基于交易1和交易3产生之前的B对应的区块的数据。由于区块链中的交易数据只能串行处理,因此即使交易1与交易3几乎同时发生,也必然有一个交易先执行。假设交易1先执行,交易3后执行,则在先执行的交易1会对B对应的区块的数据产生“写”的操作,则B对应的区块的数据会被更新。这使得在后执行的交易3的“读集”数据与交易3执行时B对应的区块的数据不相符,因此交易3无法成功执行。由此可知,交易1与交易3的执行结果与其排序相关,只有一个成功(另一个是废交易),若排序为“交易1——>交易3”,则交易1成功;若排序为“交易3——>交易1”,则交易3成功。

因此,在现有的机制下,超级账本无法实现对存在关联账号的多个交易的并行处理。

发明内容

基于现有技术中存在的问题,本发明提供一种基于区块链的超级账本并行处理方法,涉及区块链技术。该并行处理方法包括:

根据转出账号对转账交易进行分类得到多个分组;

将各分组中的转账交易分别分配至预先建立的多个转账业务子通道,以使各转账业务子通道中的区块链节点并行执行各分组中的转账交易,并通过对应的记账节点将所述转账交易对应账号的世界状态存储至共享数据库中。

在一实施例中,所述根据转出账号对转账交易进行分类得到多个分组,包括:

将转出账号尾号相同的转账交易划分为一组;或

将转出账号尾号为奇数的转账交易划分为一组,将转出账号尾号为偶数的转账交易划分为一组。

在一实施例中,所述共享数据库中存储有转账交易对应账号的多个世界状态,所述世界状态包括:

账号ID、版本号、版本余额、版本对应的交易ID以及转入转出标记。

本发明还提供另一种基于区块链的超级账本并行处理方法,该方法包括:

接收预先建立的多个转账业务子通道中的区块链节点输出的转账交易的执行结果,所述多个转账业务子通道中执行的转账交易不同,所述执行结果中包括转账交易对应账号的当前版本世界状态;

根据转账交易的执行结果、转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态,并存储至共享数据库中;所述转入集中存储有转入账号的交易信息,所述转出集中存储了转出账号的交易信息。

在一实施例中,根据转账交易执行结果、转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态之前,包括:

根据各转账交易执行结果从所述共享数据库中获取转账交易对应账号的最新版本世界状态;

判断执行结果中转账交易对应账号的当前版本世界状态是否与获取的转账交易对应账号的最新版本世界状态一致;

若一致,根据转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的当前版本世界状态获取转账交易对应账号的下一版本世界状态;若不一致,根据转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态。

在一实施例中,所述转入账号的交易信息包括:

转入账号ID、转入账号的最新版本号、转入账号的最新版本余额、本次转账交易ID以及转入金额;

所述转出账号的交易信息包括:

转出账号ID、转出账号的最新版本号、转出账号的最新版本余额、本次转账交易ID以及转出金额。

本发明还提供一种基于区块链的超级账本并行处理装置,可用于实现本发明提供的基于区块链的超级账本并行处理方法的全部步骤,该装置包括:

分组模块,用于根据转出账号对转账交易进行分类得到多个分组;

分配模块,用于将各分组中的转账交易分别分配至预先建立的多个转账业务子通道,以使各转账业务子通道中的区块链节点并行执行各分组中的转账交易,并通过对应的记账节点将所述转账交易对应账号的世界状态存储至共享数据库中。

在一实施例中,所述分组模块包括:

第一分组单元,用于将转出账号尾号相同的转账交易划分为一组;和/或

第二分组单元,用于将转出账号尾号为奇数的转账交易划分为一组,将转出账号尾号为偶数的转账交易划分为一组。

在一实施例中,所述共享数据库中存储有转账交易对应账号的多个世界状态;所述世界状态包括:

账号ID、版本号、版本余额、版本对应的交易ID以及转入转出标记。

本发明还提供另一种基于区块链的超级账本并行处理装置,可用于实现本发明提供的基于区块链的超级账本并行处理方法的全部步骤,该装置包括:

接收模块,用于接收预先建立的多个转账业务子通道中的区块链节点输出的转账交易的执行结果,其中所述多个转账业务子通道中执行的转账交易不同,所述执行结果中包括转账交易对应账号的当前版本世界状态;

状态获取模块,用于根据转账交易的执行结果、转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态,并存储至共享数据库中;所述转入集中存储有转入账号的交易信息,所述转出集中存储了转出账号的交易信息。

在一实施例中,所述基于区块链的超级账本并行处理装置还包括:

获取单元,用于根据各转账交易执行结果从所述共享数据库中获取转账交易对应账号的最新版本世界状态;

判断单元,用于判断执行结果中转账交易对应账号的当前版本世界状态是否与获取的转账交易对应账号的最新版本世界状态一致;

当转账交易对应账号的当前版本世界状态是否与获取的转账交易对应账号的最新版本世界状态一致时,所述状态获取模块根据转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的当前版本世界状态获取转账交易对应账号的下一版本世界状态;当转账交易对应账号的当前版本世界状态是否与获取的转账交易对应账号的最新版本世界状态不一致时,所述状态获取模块根据转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态。

在一实施例中,所述转入账号的交易信息包括:

转入账号ID、转入账号的最新版本号、转入账号的最新版本余额、本次转账交易ID以及转入金额;

所述转出账号的交易信息包括:

转出账号ID、转出账号的最新版本号、转出账号的最新版本余额、本次转账交易ID以及转出金额。

本发明提供的基于区块链的超级账本并行处理方法和并行处理系统,根据转出账号对转账交易进行分组,将原来的一条转账业务通道处理转账业务改变为多条转账业务子通道同时处理转账业务,实现了同一业务中的交易在区块链系统中的并行处理,极大地提高了区块链系统中的业务处理速度。假如按转出账号将转装交易分为10组,则本方案的业务处理速度较超级账本fabric1.6可提升近10倍。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为现有的超级账本fabric1.6的交易示意图。

图2为本发明的基于区块链的超级账本并行处理方法的示意图。

图3为本发明的另一种基于区块链的超级账本并行处理方法的示意图。

图4为本发明的另一种基于区块链的超级账本并行处理方法的示意图。

图5为本发明的基于区块链的超级账本并行处理装置的示意图。

图6为本发明的另一种基于区块链的超级账本并行处理装置的示意图。

图7为本发明的另一种基于区块链的超级账本并行处理装置的示意图。

图8为本发明的另一种基于区块链的超级账本并行处理装置的示意图。

图9为本发明的基于区块链的超级账本并行处理系统的交易示意图。

图10为本发明的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图2所示,本发明提供一种基于区块链的超级账本并行处理方法,该方法包括:

步骤S202,根据转出账号对转账交易进行分类得到多个分组。

此处对转账交易进行分类是以转出账号为例进行说明,在实际应用中,也可根据需要以转入账号或其他交易特征为例进行说明,本发明不限于此。但考虑到在同一时刻,多个转出账号同时向同一转入账号转账的情况出现的可能性较大,若以转入帐号为依据进行分类,则这几个转账交易必然要分到同一个组,后续执行时的效率较低;而同一转出账号同时向多个转入账号转账的几率很小,因此以转出账号为依据对转账交易进行分类,可以尽可能的提高转账效率。

步骤S204,将各分组中的转账交易分别分配至预先建立的多个转账业务子通道,以使各转账业务子通道中的区块链节点并行执行各分组中的转账交易,并通过对应的记账节点将所述转账交易对应账号的世界状态存储至共享数据库中。

此处对现有的超级账本fabric1.6中的一条转账业务通道进一步设计为多条转账业务子通道,各条转账业务子通道中的区块链节点可并行执行不同的转账交易。因此,在步骤S202中根据转出账号对转账交易进行分类得到多个分组后,将各分组中的转账交易分别分配至预先建立的多条转账业务子通道,可使各转账业务子通道中的区块链节点并行执行各分组中的转账交易。尽管分到每条转账业务子通道内的转账交易依然是串行执行的,但各转账业务子通道的转账交易并行执行,大大提高了业务处理速度。同时,转账业务子通道的数量越多,业务处理速度越快,效率越高。

图2所示的基于区块链的超级账本并行处理方法的执行主体可以是区块链系统中的各排序节点。

由图2所示的流程可知,本发明的基于区块链的超级账本并行处理方法通过设置多条转账业务子通道,并行处理不同的转账交易,大大提高了业务处理速度和效率。

在一实施例中,所述根据转出账号对转账交易进行分类得到多个分组,包括:将转出账号尾号相同的转账交易划分为一组;或将转出账号尾号为奇数的转账交易划分为一组,将转出账号尾号为偶数的转账交易划分为一组。

本实施例仅给出了两种根据转出账号对转账交易进行分类的方式,实际应用中,还可根据其他方式进行分组,本申请不以此为限。例如可以不设置具体的分类规则,根据各转账业务子通道内的转账交易的数量灵活分配,不限定每条转账业务子通道必须执行特定的转账交易;灵活分配可以是根据某一时间段分配至各转账业务子通道内的转账交易的数量,重新分配转账交易,例如某一时间段内分配至第一条转账业务子通道内的转账交易较多,而分配到第三条转账业务子通道内的转账交易较少,即可将第一条转账业务子通道内的部分转账交易分配至第三条转账业务子通道,使各转账业务子通道内转账交易的数量尽可能均衡,以保证转账业务的处理效率。

在一实施例中,所述共享数据库中存储有转账交易对应账号的多个世界状态,所述世界状态包括:账号ID、版本号、版本余额、版本对应的交易ID以及转入转出标记。

与超级账本fabric1.6中的三元组<账号ID,当前余额,当前版本>不同,本实施例中以五元组<账号ID,版本号,版本余额,版本对应的交易ID,转入转出标记>来表示账户的世界状态。

如图3所示,本发明还提供另一种基于区块链的超级账本并行处理方法,该方法包括:

步骤S302,接收预先建立的多个转账业务子通道中的区块链节点输出的转账交易的执行结果,所述多个转账业务子通道中执行的转账交易不同,所述执行结果中包括转账交易对应账号的当前版本世界状态。

其中,所述转账交易执行结果包括交易执行标识、转出账号ID和转入账号ID。识别交易执行标识用来标识交易是否成功,若识别到交易成功对应的交易执行标识,则根据转出账号ID和转入账号ID即可从共享数据库中找到与转出账号和转入账号对应的当前世界状态。

步骤S304,根据转账交易的执行结果、转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态,并存储至共享数据库中。

其中,所述转入集中存储有转入账号的交易信息,所述转出集中存储了转出账号的交易信息。所述转入集和转出集是根据转账交易唯一生成的,转账交易的转入账户信息和转入金额作为转入集中的部分交易信息,转账交易的转出账户信息和转出金额作为转出集中的部分交易信息。

图3所示的基于区块链的超级账本并行处理方法的执行主体可以是区块链系统中的各记账节点。所述转入集和转出集可以在交易验证的阶段预先生成,随着交易执行流程一并传输。此处需要说明的是,所述执行结果中的转账交易对应账号的当前版本世界状态也可以是在生成转入集和转出集的同时获取到的,后续和转入集、转出集一起随着交易执行流程传输。因此所述交易对应账号的当前版本世界状态只是作为所述执行结果的一部分信息,而非必须在转账交易执行的过程中获取。

由图3所示的流程可知,本发明的基于区块链的超级账本并行处理方法通过设置多条转账业务子通道,并行处理不同的转账交易,大大提高了业务处理速度和效率。

d,如图4所示,根据转账交易执行结果、转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态之前,包括:

步骤S3041,根据各转账交易执行结果从所述共享数据库中获取转账交易对应账号的最新版本世界状态。

步骤S3042,判断执行结果中转账交易对应账号的当前版本世界状态是否与获取的转账交易对应账号的最新版本世界状态一致。

步骤S3043,若一致,根据转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的当前版本世界状态获取转账交易对应账号的下一版本世界状态;若不一致,根据转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态。

为了便于理解,本发明举一实际例子对前述两个实施例中的“当前版本世界状态”、“最新版本世界状态”以及“下一版本世界状态”进行说明:

假设交易1为账户A转给账户B200元,交易2为账户B转给账户C100元,且交易1与交易2在不同的转账业务子通道并行执行。交易1的执行结果中包括账户A的当前版本世界状态和账户B的当前版本世界状态,交易2的执行结果中包括账户B的当前版本世界状态和账户C的当前版本世界状态。假设账户A的当前版本世界状态为A=1000元,账户B的当前版本世界状态为B=500元;账户C的当前版本世界状态为C=2000元。

可以理解的是,即使交易1与交易2并行执行,但其最终生成下一版本世界状态(此处简称为记账)时必然存在先后顺序。假设交易1先记账,且交易1获取账户A的当前版本世界状态和账户B的当前版本世界状态之后无其他涉及账户A、账户B和账户C的交易产生,此时,从所述共享数据库中获取账户A和账户B的最新版本世界状态(对应步骤S3041),由于无其他涉及账户A和账户B的交易产生,共享数据库中账户A和账户B的世界状态并未更新,因此,账户A的当前版本世界状态与账户A的最新版本世界状态一致,都是A=1000,账户B的当前版本世界状态与账户B的最新版本世界状态一致,都是B=500(对应步骤S3042);因此直接根据账户A的当前版本世界状态A=1000生成账户A的下一版本世界状态:A=800,根据账户B的当前版本世界状态B=500生成账户B的下一版本世界状态:B=700。

交易1记账完成后,交易2开始记账。此时,从所述共享数据库中获取账户B和账户C的最新版本世界状态,由于交易2记账之前,交易1对账户B记账了,此时,账户B的最新版本世界状态为B=700,与账户B的当前版本世界状态B=500不一致,因此需要根据账户B的最新版本世界状态B=700生成账户B的下一版本世界状态:B=600;同时由于无其他涉及账户C的交易产生,账户C的当前版本世界状态与账户C的最新版本世界状态一致,都是C=2000,因此,直接根据账户C的当前版本世界状态C=2000生成账户C的下一版本世界状态:C=2100。

此处与超级账本fabric1.6的“读集”和“写集”类似,上述的“当前版本世界状态”相当于“读集”,“最新版本世界状态”相当于“写集”。超级账本fabric1.6中,当“读集”和“写集”不相符时,交易失败,本次交易需重新排队重新执行。而本实施例中的方法,当“当前版本世界状态”与“最新版本世界状态”不相符时,直接根据“最新版本世界状态”生成“下一版本世界状态”,以保证交易继续执行。

与超级账本fabric1.6的共享数据库仅存储账户的一个版本的世界状态不同,这里的共享数据库中对应每个账户都存储有多个版本的世界状态,每个版本的世界状态都对应一个已成功执行转账交易。因此,需要找到转出账号和转入账号对应的最新世界状态,在该最新世界状态的基础上进行更新得到下一版本的世界状态,保证了交易记账结果是正确的。

且超级账本fabric1.6的共享数据库中仅存储有账号的一条世界状态,当产生新的交易时,会用新的世界状态覆盖更新上一条世界状态,也正因如此,导致背景技术中提到的“读集”与“写集”不符,产生废交易的问题。而本实施例中则在共享数据库中存储账户的多个版本的世界状态,每一版本的世界状态对应一次交易。因此在记账时,判断“读集”是否是最新版本,若不是,则直接获取账户最新版本的世界状态作为新的“读集”即可正常记账,不会产生废交易,提高了业务处理效率。

在一实施例中,所述转入账号的交易信息包括:转入账号ID、转入账号的最新版本号、转入账号的最新版本余额、本次转账交易ID以及转入金额;

所述转出账号的交易信息包括:转出账号ID、转出账号的最新版本号、转出账号的最新版本余额、本次转账交易ID以及转出金额。

上述实施例中的转入集和转出集与所述世界状态(即账号ID、版本号、版本余额、版本对应的交易ID以及转入转出标记)是对应的。在记账时,根据转入账号的当前版本世界状态和转入集即可得到转入账号的下一版本世界状态;根据转出账号的当前版本世界状态和转出集即可得到转出账号的下一版本的世界状态。

本发明提供的另一种基于区块链的超级账本并行处理方法通过比较转账交易对应的“当前版本世界状态”和“最新版本世界状态”,并在两者不相符时用“最新版本世界状态”对“当前版本世界状态”进行更新,解决了超级账本fabric1.6的“读集”和“写集”不相符时产生废交易而导致业务处理效率低的问题。

如图5所示,本发明还提供一种基于区块链的超级账本并行处理装置,可用于实现本发明提供的基于区块链的超级账本并行处理方法的全部步骤,该装置包括:

分组模块51,用于根据转出账号对转账交易进行分类得到多个分组;

分配模块52,用于将各分组中的转账交易分别分配至预先建立的多个转账业务子通道,以使各转账业务子通道中的区块链节点并行执行各分组中的转账交易,并通过对应的记账节点将所述转账交易对应账号的世界状态存储至共享数据库中。

在一实施例中,如图6所示,所述分组模块51包括:

第一分组单元511,用于将转出账号尾号相同的转账交易划分为一组;和/或

第二分组单元512,用于将转出账号尾号为奇数的转账交易划分为一组,将转出账号尾号为偶数的转账交易划分为一组。

在一实施例中,所述共享数据库中存储有转账交易对应账号的多个世界状态;所述世界状态包括:

账号ID、版本号、版本余额、版本对应的交易ID以及转入转出标记。

如图7所示,本发明还提供另一种基于区块链的超级账本并行处理装置,可用于实现本发明提供的基于区块链的超级账本并行处理方法的全部步骤,该装置包括:

接收模块71,用于接收预先建立的多个转账业务子通道中的区块链节点输出的转账交易的执行结果,其中所述多个转账业务子通道中执行的转账交易不同,所述执行结果中包括转账交易对应账号的当前版本世界状态;

状态获取模块72,用于根据转账交易的执行结果、转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态,并存储至共享数据库中;所述转入集中存储有转入账号的交易信息,所述转出集中存储了转出账号的交易信息。

在一实施例中,如图8所示,所述状态获取模块72还包括:

第一获取单元721,用于根据各转账交易执行结果从所述共享数据库中获取转账交易对应账号的最新版本世界状态;

判断单元722,用于判断执行结果中转账交易对应账号的当前版本世界状态是否与获取的转账交易对应账号的最新版本世界状态一致;

第二获取模块723当转账交易对应账号的当前版本世界状态是否与获取的转账交易对应账号的最新版本世界状态一致时,所述状态获取模块根据转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的当前版本世界状态获取转账交易对应账号的下一版本世界状态;当转账交易对应账号的当前版本世界状态是否与获取的转账交易对应账号的最新版本世界状态不一致时,所述状态获取模块根据转账交易的转入集、转账交易的转出集以及共享数据库中存储的转账交易对应账号的最新版本世界状态获取转账交易对应账号的下一版本世界状态。

在一实施例中,所述转入账号的交易信息包括:

转入账号ID、转入账号的最新版本号、转入账号的最新版本余额、本次转账交易ID以及转入金额;

所述转出账号的交易信息包括:

转出账号ID、转出账号的最新版本号、转出账号的最新版本余额、本次转账交易ID以及转出金额。

本发明将提供以下的具体例子对本发明提供的基于区块链的超级账本并行处理方法进行说明。

参见图9,背书节点模拟和签名等功能不变,但对原来产生交易的“读集”、“写集”,改为产生交易的“转出集”、“转入集”。

记账节点上记账进程不再利用“读集”、“写集”入账,而是利用“转出集”、“转入集”,转化为“世界状态”共享数据库中的五元组

假设交易1为A转账给B 20元,交易2为B转账给C10元,且交易1与交易2在不同的转账业务子通道并行执行,且交易1获取账户A的当前版本世界状态和账户B的当前版本世界状态之后无其他涉及账户A、账户B和账户C的交易产生,在背书节点上,修改为基于当前版本世界状态进行模拟试算,并将需要操作的情况记录下来,不再做记账。假设背书节点获取到的账户A、账户B与账户C的当前版本世界状态分别为:

//A的ver5版本下,余额为100,最近动账的交易ID是taaa,最近的操作是aflag

//B的verb6版本下,余额为30,最近动账的交易ID是tbbb最近的操作是bflag

//C的verc2版本下,余额为80,最近动账的交易ID是tccc最近的操作是cflag

假设交易1的ID为Tx1,交易2的ID为Tx2,则背书节点生成的转账交易表达为:

交易1转出集:OUT

交易1转入集:IN;、//

交易2转出集:OUT;//

交易2转入集:IN

可以理解的是,此处背书节点将获取到的账户的当前世界状态以及交易1和交易2的转出集和转入集一并传输给后续节点。

交易1与交易2在并行执行完成后,输出一执行结果,该结果包括转账交易对应账户的当前世界状态以及交易对应的转入集和转出集。

在记账节点上,也将当前余额从3元数组转换为5元数组,则获取交易1转出账户的下一世界状态具体为:

根据交易1的转出集OUT和账户A的当前版本世界状态(即vera5版本),得到账户A的下一世界状态为,并存储至共享数据库中。此时共享数据库里依然保留了账户A的上次余额情况,即vera5版本世界状态

获取交易1转入账户的下一世界状态具体为:

根据交易1的转入集IN和账户B的当前世界状态(即verb8版本),得到B的下一世界状态为,并存储至共享数据库中。此时共享数据库里依然需要保留了账户B的上次余额情况,即verb8版本世界状态

获取交易2转出账户的下一世界状态具体为:

由于账户B的当前版本世界状态与账户B的最新版本世界状态不一致,因此根据交易2的转出集OUT和B的最新版本世界状态(即verb9版本),得到账户B的下一版本世界状态为,并存储至共享数据库中。此时共享数据库里依然需要保留了B的上次余额情况,即verb9版本世界状态

注意此处直接根据转出账户B的最新版本世界状态,即verb9版本世界状态,获取账户B的下一版本世界状态,而非根据最开始获取的当前版本世界状态,即verb8版本世界状态。

获取交易2转入账户的下一世界状态具体为:

根据交易2的转入集IN和C的当前版本世界状态(即verc2版本),得到C的下一世界状态为,并存储至共享数据库中。此时共享数据库里依然需要保留了C的上次余额情况,即verc2版本世界状态

通过上述例子可知,与图1所述的超级账本fabric1.6的交易示意图相比,本发明具有如下优势,参见表1:

表1:本发明的基于区块链的超级账本并行处理方法与图1的超级账本fabric1.6的交易比较表

这里说的“交易无效”是指在该交易记账时,“读集”条件不满足,不能执行“写集”。但该交易仍在区块中。当然,在客户端重新发起该交易还是能完成业务功能(实际上,记账节点看到的是另一个交易,因为它的“读集”是基于已改变了的数据)。

本方案仅在转出账号属于同一分组时不能并行,属于极小概率事件。日常的转账业务,大量交易间的账户是分散的,假如按转出账号分成10组,本方案的速度较超级账本fabric1.6可提升近10倍的记账效率。

本发明的实施例还提供一种包括上述实施例中的基于区块链的超级账本并行处理装置的电子设备的具体实施方式,参见图10,所述电子设备100具体包括:

中央处理器(processor)110、存储器(memory)120、通信模块(Communications)130、输入单元140、输出单元150以及电源160。

其中,所述存储器(memory)120、通信模块(Communications)130、输入单元140、输出单元150以及电源160分别与所述中央处理器(processor)110相连接。所述中央处理器110可调用所述存储器120中存储的计算机程序,所述中央处理器110执行所述计算机程序时实现上述实施例中的接口自动化契约测试方法中的全部步骤。

本申请的实施例还提供一种计算机存储介质,用于存储计算机程序,所述计算机程序可被处理器执行。所述计算机程序被处理器执行时实现本发明所提供的任一基于区块链的超级账本并行处理方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号