一种交易数据的处理方法及装置与流程

文档序号:16040041发布日期:2018-11-24 10:23阅读:207来源:国知局

本发明涉及互联网技术领域,尤其涉及一种交易数据的处理方法及装置。

背景技术

区块链是一种全民参与记账的方式,具有去中心化和去信任的特点。在现有技术中,使用区块链对交易数据进行处理的过程中,区块链网络中的某个节点每接收到用户提交的一笔交易数据,均会对接收到的一笔交易数据进行签名处理,并将签名处理后的每一笔交易数据广播给网络中的其他节点,然而,当区块链网络中接收到的交易数据量较大时,若对每一笔交易进行签名需要消耗较长的时间以及消耗较多的资源,且对签名后的每一笔交易进行广播,需要频繁的网络操作,会影响到交易确认的时间以及造成网络压力。



技术实现要素:

本发明实施例提供一种交易数据的处理方法及装置,用于,用于降低区块链中交易数据处理时对网络产生的压力和对资源的消耗,以及提升的区块链中交易数据处理效率。

第一方面,本发明实施例提供了的一种交易数据的处理方法,包括:

区块链中的第一节点接收网络中的交易数据;

当所述交易数据与所述第一节点中存储的未处理的其他交易数据满足封装为批的预设条件时,所述第一节点将所述交易数据与所述其他交易数据封装为批,所述批中包括所述交易数据与所述其他交易数据;

所述第一节点将所述批签名后广播给所述区块链中的第二节点,所述第二节点与所述第一节点不同。

可选的,所述预设条件包括以下任一种或多种:

所述交易数据与所述其他交易数据的交易笔数之和大于交易笔数阈值,所述交易数据与所述其他交易数据的数据量之和大于数据量阈值,以及所述第一节点存储所述其他交易数据中的第一笔交易数据时开始计时至计时时长达到时长阈值。

可选的,所述批中还包括所述批的标识id,所述第一节点将所述交易数据与所述其他交易数据封装为批之后,所述方法还包括:

在所述第一节点的第一原始批队列中存储所述批;

所述第一节点将所述批发送业务处理模块进行处理,获得处理后的第一交易结果集;

并将所述第一交易结果集以及所述id存储在第一节点对应的第一区块头中。

可选的,所述第一节点将所述批广播给所述区域链中的第二节点之后,所述方法还包括:

所述第二节点对接收到所述批进行签名校验,若签名校验成功之后,则将所述批存储在第二节点的第二原始批队列中;

所述第二节点将所述批发送所述业务处理模块进行处理,获得处理后的第二交易结果集;

并将所述第二交易结果集以及所述id存储在第二节点对应的第二区块头中。

可选的,所述第一节点获得所述第一交易结果集以及所述第二节点获得所述第二交易结果集之后,所述方法还包括:

所述第一节点与所述第二节点对所述批进行共识操作,获得共识结果;

若所述共识结果中共识成功的区块为所述第二区块头与所述批中的交易数据生成的区块,则所述第二节点将所述id、所述第二区块头以及所述第二交易结果集广播给所述第一节点,并将所述区块存储在所述第二节点的本地账本中;

若所述共识结果中共识成功的区块为所述第一区块头与所述批中的交易数据生成的区块,则所述第一节点将所述id、所述第一区块头以及所述第一交易结果集广播给所述第二节点,并将所述区块存储在所述第一节点的本地账本中。

可选的,若所述共识结果中共识成功的区块为所述第二区块头与所述批中的交易数据生成的区块,则所述第一节点接收到所述第二节点广播的所述id、所述第二区块头以及所述第二交易结果集之后,所述方法还包括:

所述第一节点根据所述id,从所述第一原始批队列中获取所述批,并将所述批中的交易数据与所述第二区块头组装成原始区块,将所述原始区块存储在所述第一节点的本地账本中,并根据所述第二交易结果,删除所述第一原始批队列中存储的所述批中被成功处理的交易数据。

可选的,若所述共识结果中共识成功的区块为所述第一区块头与所述批中的交易数据生成的区块,则所述第二节点接收到所述第一节点广播的所述id、所述第一区块头以及所述第一交易结果集之后,所述方法还包括:

所述第二节点根据所述id,从所述第二原始批队列中获取所述批,并将所述批中的交易数据与所述第一区块头组装成原始区块,将所述原始区块存储在所述第二节点的本地账本中,并根据所述第一交易结果,删除所述第二原始批队列中存储的所述批中被成功处理的交易数据。

可选的,若所述共识结果中共识成功的区块为所述第二区块头与所述批中的交易数据生成的区块,所述第二节点将所述区块存储在所述第二节点的本地账本中之后,所述方法还包括:

所述第二节点删除所述第二原始批队列中存储的所述批;

或者

若所述共识结果中共识成功的区块为所述第一区块头与所述批中的交易数据生成的区块,所述第一节点将所述区块存储在所述第一节点的本地账本中之后,所述方法还包括:

所述第一节点删除所述第一原始批队列中存储的所述批。

可选的,所述当所述交易数据与所述第一节点中存储的未处理的其他交易数据满足封装为批的预设条件之前,所述方法包括:

将所述交易数据存储在所述第一节点中生成的最新的批中,所述最新的批中存储有所述其他交易数据,所述当所述交易数据与所述第一节点中存储的未处理的其他交易数据满足封装为批的预设条件,具体为:

当所述交易数据与所述其他交易数据满足封装为批的预设条件时,对所述最新的批进行封装,形成所述批;

或者

将所述交易数据存储在第一节点的交易池中,所述交易池中存储有所述其他交易数据,所述当所述交易数据与所述第一节点中存储的未处理的其他交易数据满足封装为批的预设条件,具体包括:当所述交易数据与所述其他交易数据满足封装为批的预设条件时,根据所述交易数据与所述其他交易数据生成批,并对批进行封装。

第二方面,本发明实施例提供了一种交易数据的处理装置,包括:

接收单元,用于通过区块链中的第一节点接收网络中的交易数据;

封装单元,用于当所述交易数据与所述第一节点中存储的未处理的其他交易数据满足封装为批的预设条件时,将所述交易数据与所述其他交易数据封装为批,所述批中包括所述交易数据与所述其他交易数据;

广播单元,用于通过所述第一节点将所述批签名后广播给所述区块链中的第二节点,所述第二节点与所述第一节点不同。

可选的,所述预设条件包括以下任一种或多种:

所述交易数据与所述其他交易数据的交易笔数之和大于交易笔数阈值,所述交易数据与所述其他交易数据的数据量之和大于数据量阈值,以及所述第一节点存储所述其他交易数据中的第一笔交易数据时开始计时至计时时长达到时长阈值。

可选的,所述批中还包括所述批的标识id,所述装置还包括存储单元,所述存储单元包括所述第一节点的第一原始批队列,用于:

存储所述批,并通过所述第一节点将所述批发送业务处理模块进行处理,获得处理后的第一交易结果集;

并将所述第一交易结果集以及所述id存储在第一节点对应的第一区块头中。

可选的,所述存储单元包括所述第二节点的第二原始批队列,用于:

对所述第二节点接收到所述批进行签名校验,若签名校验成功之后,则将所述批存储在所述第二原始批队列中;

并基于所述第二节点将所述批发送所述业务处理模块进行处理,获得处理后的第二交易结果集;

并将所述第二交易结果集以及所述id存储在第二节点对应的第二区块头中。

可选的,所述装置还包括共识单元,用于:

通过所述第一节点与所述第二节点对所述批进行共识操作,获得共识结果;

若所述共识结果中共识成功的区块为所述第二区块头与所述批中的交易数据生成的区块,则基于所述第二节点将所述id、所述第二区块头以及所述第二交易结果集广播给所述第一节点,并将所述区块存储在所述第二节点的本地账本中;

若所述共识结果中共识成功的区块为所述第一区块头与所述批中的交易数据生成的区块,则基于所述第一节点将所述id、所述第一区块头以及所述第一交易结果集广播给所述第二节点,并将所述区块存储在所述第一节点的本地账本中。

可选的,所述共识单元,还用于:

基于所述第一节点根据所述id,从所述第一原始批队列中获取所述批,并将所述批中的交易数据与所述第二区块头组装成原始区块,将所述原始区块存储在所述第一节点的本地账本中,并根据所述第二交易结果,删除所述第一原始批队列中存储的所述批中被成功处理的交易数据。

可选的,所述共识单元,还用于:

所述第二节点根据所述id,从所述第二原始批队列中获取所述批,并将所述批中的交易数据与所述第一区块头组装成原始区块,将所述原始区块存储在所述第二节点的本地账本中,并根据所述第一交易结果,删除所述第二原始批队列中存储的所述批中被成功处理的交易数据。

可选的,所述共识单元,还用于:

基于所述第二节点删除所述第二原始批队列中存储的所述批;

或者

所述共识单元,还用于:

基于所述第一节点删除所述第一原始批队列中存储的所述批。

可选的,所述接收单元还用于:

将所述交易数据存储在所述第一节点中生成的最新的批中,所述最新的批中存储有所述其他交易数据,当所述交易数据与所述其他交易数据满足封装为批的预设条件时,对所述最新的批进行封装,形成所述批;

或者

将所述交易数据存储在第一节点的交易池中,所述交易池中存储有所述其他交易数据,当所述交易数据与所述其他交易数据满足封装为批的预设条件时,根据所述交易数据与所述其他交易数据生成批,并对批进行封装。

在本发明实施例中,在区块链中的第一节点接收到网络中的交易数据之后,确定该交易数据即本次接收到的交易数据,与第一节点中存储的未处理的其他交易数据是否满足封装为批的预设条件,预设条件可以是本次接收到的交易数据与之前接收到的未处理的其他交易数据的交易笔数之和大于交易笔数阈值,还可以是本次接收到的交易数据与之前接收到的未处理的其他交易数据的数据量之和大于数据量阈值,也可以是之前接收到的未处理的其他交易数据中的第一笔交易数据时开始计时至计时时长达到时长阈值等等。

当满足封装为批的预设条件时,则将本次接收到的交易数据与第一节点中存储的未处理的其他交易数据封装为批,并对批签名后广播该批,避免了现有技术中将交易数据一笔一笔的分别进行签名和广播时,导致的需要频繁的进行网络操作而造成较大的网络压力和资源消耗,所以,具有降低区块链中交易数据处理时对网络产生的压力和对资源的消耗的效果,同时,由于通过批的方式能够同时对多笔交易数据进行处理,所以,也具有提升的区块链中交易数据处理效率的有益技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。

图1为本发明实施例提供的一种交易数据处理方法流程图;

图2为本发明实施例提供的一种交易数据处理示意图;

图3为本发明实施例提供的第一节点对批进行处理的流程图;

图4为本发明实施例提供的交易结果集示意图;

图5为本发明实施例提供的第二节点对批进行处理的流程图;

图6为本发明实施例提供的另一种交易数据处理示意图;

图7为本发明实施例提供一种交易数据处理装置示意图。

具体实施方式

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

下面对本发明实施例中涉及的部分概念进行介绍。

区块链:即blockchain,是利用块链式数据结构来验证与存储数据,利用分布式节点共识算法来生成和更新数据并维护其在节点间的一致性,利用密码学的方式保证数据传输和访问的安全,以及利用由自动化脚本代码组成的智能合约来编程和操作数据的一种分布式基础架构与计算范式,简单来说区块链就是一个个区块连起来的链条。

区块头:即head,是一种标识区块唯一性、合法性的一种数据结构。

区块体:区块中交易的集合,通常,区块中的交易又可称为交易数据。

区块:由区块头和区块体组成区块。

批:即batch,是指交易(交易数据)的集合,通常一个批构成一个区块体。

批号:即batchid,批的标识。

位序列:用二进制位来记录交易结果的一种数据结构。

下面结合附图,对本发明实施例提供的交易数据的处理方法进行说明。

请参考图1,为本发明实施例提供的一种交易数据的处理方法,包括:

步骤101:区块链中的第一节点接收网络中的交易数据。

在本发明实施例中,区块链中可以包括多个节点,其中,步骤101中的第一节点为区块链中任一可以接收到网络中的交易数据的节点,步骤101中的网络是指区块链网络(以下均简称为网络),网络中的交易数据可以是终端设备提交到网络中第一节点的交易数据,从而使第一节点接收到该交易数据;网络中的交易数据也可是基于终端设备中的客户端提交到网络中第一节点的交易数据,还可以通过其他方式提交到网络中第一节点的交易数据。

在本发明实施例中,在执行步骤101之后步骤102之前,第一节点还可以先对接收到的交易数据进行校验,以便验证接收到的交易数据是否可靠,在验证接收到的交易数据为可靠的数据时,再执行步骤102。

步骤102:当所述交易数据与所述第一节点中存储的未处理的其他交易数据满足封装为批的预设条件时,所述第一节点将所述交易数据与所述其他交易数据封装为批,所述批中包括所述交易数据与所述其他交易数据。

在本发明实施例中,当第一节点接收到提交到网络中的交易数据之后,第一节点可以判断该交易数据以及第一节点中存储的未处理的其他交易数据是否满足封装为批的预设条件。

其中,预设条件可以为步骤101中接收到的数据交易与第一节点中存储的未处理的其他交易数据的交易笔数之和大于交易笔数阈值,其中,交易笔数阈值可以根据实际需要进行设置,如设置为100笔,或设置为1000笔等等。

预设条件还可以为步骤101中接收到的数据交易与第一节点中存储的未处理的其他交易数据的数据量之和大于数据量阈值,其中,数据量阈值可以根据实际需要进行设置,如设置为1m(兆),或设置为2m等等。

预设条件还可以为第一节点在接收到上文提及的其他交易数据中第一笔交易数据时开始计时至计时时长达到时长阈值,其中,其他交易数据中第一笔交易数据是指:在该其他交易数据中,第一节点最先接收到一笔交易数据。其中,时长阈值可以根据实际需要进行设置,如设置为3s(秒),或设置为5s等等。当然,在实际应用中,预设条件还可以为上述列举的多种条件之间的任意组合,也可以为其他未列举的能够减少签名次数的条件。

在步骤102中接收到的数据交易与第一节点中存储的未处理的其他交易数据(下文简称为其他交易数据)满足封装为批的预设条件时,可以如图2所示封装成批,在图2中,假设步骤101中接收到的交易数据为txidn,第一节点中存储未处理的其他交易数据为txid1至txidn-1,那么,在txid1至txidn满足封装成批的预设条件时,将txid1至txidn封装成批batchn,那么,批batchn中就包括交易数据txid1至txidn,在实际应用中,还可以为封装后的批设置一个标识id,批的标识id又可称为批号,那么,批batchn中就可以包括交易数据txid1至txidn,以及该批的id。

步骤103:所述第一节点将所述批签名广播给所述区块链中的第二节点,所述第二节点与所述第一节点不同。

这里继续以图2所示的封装的批为batchn为例,那么,在本发明实施例中,还可以对封装的批即batchn进行签名验证,然后将签名验证后的batchn广播给区块链中的第二节点,其中,第二节点是指区块链中参与记账的任意节点,例如,当区块链中参与记账的只有一个节点2时,步骤103中第一节点就可以将批即batchn签名验证后发送给节点2,当区块链中参与记账的节点包括节点2、节点3、以及节点4时,步骤103中第一节点就可以将批即batchn签名验证后分别发送给节点2、节点3、以及节点4。

所以,通过上述方法,在区块链中的第一节点接收到网络中的交易数据之后,确定该交易数据即本次接收到的交易数据,与第一节点中存储的未处理的其他交易数据是否满足封装为批的预设条件,预设条件可以是本次接收到的交易数据与之前接收到的未处理的其他交易数据的交易笔数之和大于交易笔数阈值,还可以是本次接收到的交易数据与之前接收到的未处理的其他交易数据的数据量之和大于数据量阈值,也可以是之前接收到的未处理的其他交易数据中的第一笔交易数据时开始计时至计时时长达到时长阈值等等。

当满足封装为批的预设条件时,则将本次接收到的交易数据与第一节点中存储的未处理的其他交易数据封装为批,并对批签名后广播该批,避免了现有技术中将交易数据一笔一笔的分别进行签名和广播时,导致的需要频繁的进行网络操作而造成较大的网络压力和资源消耗,所以,具有降低区块链中交易数据处理时对网络产生的压力和对资源的消耗的效果,同时,由于通过批的方式能够同时对多笔交易数据进行处理,所以,也具有提升的区块链中交易数据处理效率的有益技术效果。

一种可选的方式,在本发明实施例中,第一节点可以先生成一个空批,其中,空批是指没有存储交易数据的批,那么,当第一节点接收到交易数据之后,可以将交易数据存储在空批中,直到空批中存储的交易数据满足对该空批进行批封装的预设条件(预设条件具体如上文步骤102中的叙述)时,对存储了交易数据的空批进行批封装,形成批,再对形成的批进行如上文的处理。然后第一节点又生成一个新的空批,用于存储接收到的交易数据,直到该新的空批中存储的交易数据满足对该新的空批进行批封装的预设条件时,对该新的空批进行批封装,形成批,在此就不重复了。

一种可选的方式,在本发明实施例中,第一节点也可以将接收的交易数据直接存储在第一节点的交易池中,其中,交易池为第一节点中用于存储未处理的交易数据的存储单元,然后,判断交易池中存储的未处理的交易数据是否满足封装为批的预设条件,若不满足,则在第一节点下次接收到交易数据时,在将接收到的交易数据存放到交易池中,直到交易池中存储的未处理的交易数据满足封装为批的预设条件时,将交易池中存储的未处理的交易数据封装为批,然后再对形成的批进行如上文的处理。

一种可选的方式,在本发明实施例中,步骤102中封装的批中还可以包括该批的标识id,因此,在执行完步骤102之后,还可以执行如图3所示的流程。

图3所示的流程包括:

步骤301:在所述第一节点的第一原始批队列中存储所述批;

步骤302:所述第一节点将所述批发送业务处理模块进行处理,获得处理后的第一交易结果集;

步骤303:并将所述第一交易结果集以及所述id存储在第一节点对应的第一区块头中。

请继续结合图2和图3进行参考,在本发明实施例中,可以在区块链中的各节点即第一节点和第二节点中设置用于存储封装的批的原始批队列,为叙述方便,将第一节点中设置的存储封装的批的原始批队列称为第一原始批队列,即图2中的orgbatch,将第二节点中设置的存储封装的批的原始批队列称为第二原始批队列,那么,第一节点在根据本次接收到的交易数据与第一节点中存储的未处理的其他交易数据封装为批之后,就可以将该批存储在第一原始批队列中,然后,第一节点还可以将该批发送给业务处理模块,以便对该批中包括的所有交易数据进行处理获得交易结果集,为叙述方便,将该交易结果集称为第一交易结果集。

在本发明实施例中,可以采用位序列的方式记录交易结果集,假设这里继续以封装的批为batchn为例,第一节点将batchn发送给业务处理模块进行业务处理后,得到的第一交易结果集如图4所示,每一个二进制位代表一个交易结果,在本发明实施例中,以0表示交易失败,1表示交易成功。然后,第一节点可以将得到的第一交易结果集以及batchn的批号即id存储在第一节点对应的第一区块头中。

同样的,区块链中的第二节点接收到第一节点广播的批之后,还可以执行如图5所示的流程,包括:

步骤501:所述第二节点对接收到所述批进行签名校验,若签名校验成功之后,则将所述批存储在第二节点的第二原始批队列中;

步骤502:所述第二节点将所述批发送所述业务处理模块进行处理,获得处理后的第二交易结果集;

步骤503:并将所述第二交易结果集以及所述批的id存储在第二节点对应的第二区块头中。

即第二节点接收到第一节点广播的批之后,可以先对批进行签名校验,以验证该批的可靠性,如图6所示,在本发明实施例中,第二节点还可以对批做其他校验,例如验证批是否重复,验证批是否陈旧,验证批的某些参数是否合法等等,在此就不一一列举。若第二节点对批的签名校验或其他验证失败时,可以将该批中校验失败的交易数据直接删除,但是保留该交易数据在批中的位置(不同的节点同一个批中交易的位置保持一致)。这里假设对批进行签名校验成功,则可以将该批存储到第二节点中的第二原始批队列。

在本发明实施例中,第二节点还可以将校验成功的批发送业务处理模块进行处理,获得处理后的第二交易结果集,这里同样可以使用位序列的方式标识第二交易结果集,即位序列中的每一个二进制位代表一个交易结果,以0表示交易失败,1表示交易成功。然后,第二节点可以将得到的第二交易结果集以及接收到的批中的批号即id存储在第二节点对应的第二区块头中。

需要说明的是,当区块链中参与记账的节点即第二节点包括多个时,例如包括节点2、节点3、以及节点4时,那么节点2、节点3、以及节点4中每个节点均可执行上述图5所示的流程,对应的,节点2可以将验证成功的批存储在节点2对应的原始批队列,节点2还可以将批发送业务处理模块进行处理,获得处理后的交易结果集,节点3与节点4同理,在此就不重复叙述了。

一种可选的方式,在本发明实施例中,在第一节点获得第一交易结果集以及第二节点获得第二交易结果集之后,第一节点和第二节点还可以对批进行共识操作,获得共识结果,在本发明实施例中,获得的共识结果至少包括两种情况:

第一种情况:

若第一节点和第二节点对批进行共识操作的共识结果中,共识成功的区块为第二区块头与批中的交易数据生成的区块,则第二节点将批的id、第二区块头以及第二交易结果集广播给第一节点,并将区块存储在第二节点的本地账本中。

即在第一种情况中,共识结果中共识成功的区域为第二区块头与批中的交易数据生成的区块,此时,第二节点就可以将批的id、第二区块头以及第二交易结果集广播给网络中的第一节点。这里继续以批为上文叙述的batchn为例,当在区块链中参与记账的只有一个参与记账的节点2时,第二节点指代节点2,那么,共识成功的区域为节点2区块头与批中的交易数据生成的区块,那么,节点2就可以将节点2对应的区块头2,batchn的id,以及节点2对应的交易结果集2发送给第一节点。同时,节点2还可以直接删除节点2中原始队里中存储的批batchn,即能够整批进行删除,避免了现有技术,需要一一交易的删除,所以,在区块中的交易数越多的情况下,会进一步提升区块链的整体性能。

那么,第一节点接收到节点2发送的上述信息之后,第一节点根据batchn的id,从第一原始批队列中存储的批中获取与batchn的id对应的批,即批batchn,并将batchn中的交易数据与区块头2组装成原始区块,然后将原始区块存储在第一节点的本地账本中,然后第一节点还可以根据节点2对应的交易结果集2,删除第一原始批队列中存储的批batchn中被成功处理的交易数据。由于在本发明实施例中,使用的是位序列表示交易结果集,其中以0表示交易失败,1表示交易成功,那么,第一节根据交易结果集2,删除第一原始批队列中存储的批batchn中被成功处理的交易数据,即第一节将第一原始批队列中存储的批batchn中,对应交易结果集2中位序列为1的交易数据进行删除。

当在区块链中参与记账的节点包括节点2、节点3以及节点4时,若共识成功的区域为节点4区块头与批中的交易数据生成的区块,那么,此时,第二节点指代节点4,且节点4会将节点4对应的区块头4,batchn的id,以及节点4对应的交易结果集4分别发送给第一节点、节点2以及节点3,同时,节点4还可以直接删除节点4中原始队里中存储的批batchn。

那么,第一节点、节点2以及节点3接收到节点4发送的上述信息之后,第一节点、节点2以及节点3中的每一节点均会根据batchn的id,从各自对应的原始批队列中存储的批中获取与batchn的id对应的批,即批batchn,并将batchn中的交易数据与各自对应的区块头组装成原始区块,然后将原始区块存储在各自的本地账本中,还可以根据节点4对应的交易结果集4,删除各自原始批队列中存储的批batchn中被成功处理的交易数据。在此就不重复叙述了。

第二种情况:

若第一节点和第二节点对批进行共识操作的共识结果中,共识成功的区块为第一区块头与批中的交易数据生成的区块,则第一节点将id、第一区块头以及第一交易结果集广播给第二节点,并将区块存储在第一节点的本地账本中。

即在第二种情况中,共识结果中共识成功的区域为第一区块头与批中的交易数据生成的区块,此时,第一节点就可以将批的id、第一区块头以及第一交易结果集广播给网络中的第二节点,同时,第一节点还可以直接删除第一原始队里中存储的批batchn。

这里继续以批为上文叙述的batchn为例,当在区块链中参与记账的只有一个参与记账的节点2时,那么,第一节点就可以将批的id、第一区块头以及第一交易结果集广播给网络中的节点2,节点2接收到上述信息之后,根据batchn的id,从节点2对应的原始批队列中存储的批中获取与batchn的id对应的批,即批batchn,并将batchn中的交易数据与区块头2(节点2对应区块头)组装成原始区块,然后将原始区块存储在节点2的本地账本中,然后根据第一交易结果集,删除节点2对应的原始批队列中存储的批batchn中被成功处理的交易数据。当在区块链中参与记账的节点包括节点2、节点3以及节点4时,第一节点就可以将批的id、第一区块头以及第一交易结果集广播给网络中的节点2、节点3、节点4,节点2、节点3、节点4中每个节点均会根据batchn的id,从各自对应的原始批队列中存储的批中获取与batchn的id对应的批,即批batchn,并将batchn中的交易数据与各自对应的区块头组装成原始区块,然后将原始区块存储在各自的本地账本中,还可以根据第一节点对应的第一交易结果集,删除各自原始批队列中存储的批batchn中被成功处理的交易数据,在此就不重复叙述了。

所以,通过上述方法可知,在本发明实施例中,当区块链中的节点对批进行共识操作之后,广播区块的时候不用广播区块体,只需要将区块头、批号以及交易结果集广播给其它节点,所以,减少了网络宽带,进一步节约了网络资源的开销,且在进行交易回收时,整批进行删除,在区块中的交易数越多的情况下,会进一步提升区块链的整体性能。

基于同一发明构思,本发明实施例中提供了一种交易数据的处理装置,该装置的交易数据处理方法的具体实施可参见上述方法实施例部分的描述,重复之处不再赘述,如图7所示,该装置包括:

接收单元70,用于通过区块链中的第一节点接收网络中的交易数据;

封装单元71,用于当所述交易数据与所述第一节点中存储的未处理的其他交易数据满足封装为批的预设条件时,将所述交易数据与所述其他交易数据封装为批,所述批中包括所述交易数据与所述其他交易数据;

广播单元72,用于通过所述第一节点将所述批签名后广播给所述区块链中的第二节点,所述第二节点与所述第一节点不同。

可选的,所述预设条件包括以下任一种或多种:

所述交易数据与所述其他交易数据的交易笔数之和大于交易笔数阈值,所述交易数据与所述其他交易数据的数据量之和大于数据量阈值,以及所述第一节点存储所述其他交易数据中的第一笔交易数据时开始计时至计时时长达到时长阈值。

可选的,所述批中还包括所述批的标识id,所述装置还包括存储单元73,所述存储单元包括所述第一节点的第一原始批队列,用于:

存储所述批,并通过所述第一节点将所述批发送业务处理模块进行处理,获得处理后的第一交易结果集;

并将所述第一交易结果集以及所述id存储在第一节点对应的第一区块头中。

可选的,所述存储单元包括所述第二节点的第二原始批队列,用于:

对所述第二节点接收到所述批进行签名校验,若签名校验成功之后,则将所述批存储在所述第二原始批队列中;

并基于所述第二节点将所述批发送所述业务处理模块进行处理,获得处理后的第二交易结果集;

并将所述第二交易结果集以及所述id存储在第二节点对应的第二区块头中。

可选的,所述装置还包括共识单元74,用于:

通过所述第一节点与所述第二节点对所述批进行共识操作,获得共识结果;

若所述共识结果中共识成功的区块为所述第二区块头与所述批中的交易数据生成的区块,则基于所述第二节点将所述id、所述第二区块头以及所述第二交易结果集广播给所述第一节点,并将所述区块存储在所述第二节点的本地账本中;

若所述共识结果中共识成功的区块为所述第一区块头与所述批中的交易数据生成的区块,则基于所述第一节点将所述id、所述第一区块头以及所述第一交易结果集广播给所述第二节点,并将所述区块存储在所述第一节点的本地账本中。

可选的,所述共识单元,还用于:

基于所述第一节点根据所述id,从所述第一原始批队列中获取所述批,并将所述批中的交易数据与所述第二区块头组装成原始区块,将所述原始区块存储在所述第一节点的本地账本中,并根据所述第二交易结果,删除所述第一原始批队列中存储的所述批中被成功处理的交易数据。

可选的,所述共识单元,还用于:

所述第二节点根据所述id,从所述第二原始批队列中获取所述批,并将所述批中的交易数据与所述第一区块头组装成原始区块,将所述原始区块存储在所述第二节点的本地账本中,并根据所述第一交易结果,删除所述第二原始批队列中存储的所述批中被成功处理的交易数据。

可选的,所述共识单元,还用于:

基于所述第二节点删除所述第二原始批队列中存储的所述批;

或者

所述共识单元,还用于:

基于所述第一节点删除所述第一原始批队列中存储的所述批。

可选的,所述接收单元还用于:

将所述交易数据存储在所述第一节点中生成的最新的批中,所述最新的批中存储有所述其他交易数据,当所述交易数据与所述其他交易数据满足封装为批的预设条件时,对所述最新的批进行封装,形成所述批;

或者

将所述交易数据存储在第一节点的交易池中,所述交易池中存储有所述其他交易数据,当所述交易数据与所述其他交易数据满足封装为批的预设条件时,根据所述交易数据与所述其他交易数据生成批,并对批进行封装。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1