掌桥专利:专业的专利平台
掌桥专利
首页

一种基于区块链网络的数据处理方法以及相关设备

文献发布时间:2024-01-17 01:27:33


一种基于区块链网络的数据处理方法以及相关设备

技术领域

本申请涉及计算机技术领域,尤其涉及一种基于区块链网络的数据处理方法、装置、计算机设备及计算机可读存储介质。

背景技术

目前的主流区块链平台均采用采用未花费输出(Unspent Transaction Output,UTXO)模型作为底层资产以及所有权的数据存储结构。当前未花费输出模型区块链普遍采用单机硬盘的存储空间作为未花费输出的数据库,并且各个区块链节点在进行交易打包时,每一笔交易都需要读取并写入内存池,以对待打包的交易进行交易脚本的验证(即对锁定脚本和解锁脚本进行验证)。但是,由于内存池的容量有限,且单机硬盘的读写性能受限,因此,目前区块链网络的交易打包效率较低,数据吞吐量较小。

发明内容

本申请实施例提供一种基于区块链网络的数据处理方法、装置、计算机设备及计算机可读存储介质,可以提高区块链网络中交易打包的效率。

本申请实施例一方面提供了一种基于区块链网络的数据处理方法,应用于区块链网络中的区块链节点,每个区块链节点对应一个分布式存储集群,该分布式存储集群包括至少一个存储节点,每个存储节点的目标存储空间用于存储交易数据,该方法包括:

当交易打包条件满足时,向对应的分布式存储集群包括的每个存储节点发送交易获取请求;

接收每个存储节点响应交易获取请求发送的交易子集,并根据每个存储节点发送的交易子集确定第一交易集合,该交易子集包括每个存储节点的内存池存储的待打包交易;

对第一交易集合进行打包处理,生成目标区块,并在区块链网络中广播目标区块。

本申请实施例一方面提供了一种基于区块链网络的数据处理装置,包括:

通信模块,用于当交易打包条件满足时,向对应的分布式存储集群包括的每个存储节点发送交易获取请求;

上述通信模块,还用于接收每个存储节点响应交易获取请求发送的交易子集;

确定模块,用于根据每个存储节点发送的交易子集确定第一交易集合,该交易子集包括每个存储节点的内存池存储的待打包交易;

处理模块,用于对第一交易集合进行打包处理,生成目标区块;

上述通信模块,还用于在区块链网络中广播目标区块。

本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请实施例提供的数据处理方法。

本申请实施例一方面提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行本申请实施例提供的数据处理方法。

本申请实施例一方面提供了一种计算机程序产品或计算机程序,计算机程序产品或计算机程序包括计算机指令,计算机指令存储在计算机可读存储介质中,计算机指令被计算机设备的处理器执行时,执行本申请实施例提供的数据处理方法。

本申请实施例中,每个区块链节点对应一个分布式存储集群,交易数据存储在对应的分布式存储集群中的各个存储节点上,具体可以存储在存储节点的目标存储空间(如内部存储空间)中,当需要对交易进行打包来产生新区块时,任一区块链节点可以接收对应的分布式存储集群中的每个存储节点发送的交易子集,并根据各个交易子集确定出第一交易集合,以对该第一交易集合中包括待打包交易进行打包处理,从而生成目标区块,进而通过分布式存储集群中的各个存储节点快速地完成对目标区块所需交易的打包处理,进而提升交易打包的效率。

附图说明

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

图1是本申请实施例提供的一种基于区块链网络的数据处理系统;

图2是本申请实施例提供的一种分布式存储集群的结构示意图;

图3是本申请实施例提供的一种基于区块链网络的数据处理方法的流程示意图;

图4a是本申请实施例提供的一种输入交易对前一个输出交易的引用的示意图;

图4b是本申请实施例提供的另一种基于区块链网络的数据处理方法的流程示意图;

图5是本申请实施例提供的又一种基于区块链网络的数据处理方法的流程示意图;

图6是本申请实施例提供的还一种基于区块链网络的数据处理方法的流程示意图;

图7是本申请实施例提供的一种基于区块链网络的数据处理装置的结构示意图;

图8是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

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

本申请实施例提供了一种基于区块链网络的数据处理方法,可以在区块链网络中实现更加快速地对待打包交易进行打包,以及实现更加快速地对每笔交易的验证,从而提高区块链网络中交易打包和验证的效率。本申请实施例提供的数据处理方法可以基于区块链技术中的一种或者多种技术实现。

区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链,本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。

区块链底层平台可以包括用户管理、基础服务、智能合约以及运营管理等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,管理和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营管理模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:管理网络情况、维护节点设备健康状态等。

平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。

请参见图1,图1为本申请实施例提供的一种基于区块链网络的数据处理系统。由图1所示,该系统可以由多个区块链节点10(接入网络中的任意形式的计算设备,如服务器、用户终端)和多个分布式存储集群11,通过网络通信的形式(如通过区块链节点网关12)连接形成的分布式系统。由图1所示,在上述分布式系统中,每个区块链节点可以对应一个分布式存储集群。其中,区块链节点10可以是具备数据处理功能的服务器,如区块服务器;该区块链节点10可以用于对分布式存储集群11上存储的交易进行打包,以及分别向各个分布式存储集群11发送验证请求等。

如图2所示,图2为分布式存储集群的结构示意图。由图2可知,每个分布式存储集群11中可以包括至少一个存储节点,每个存储节点可以是具备数据存储功能以及数据验证功能的服务器,如UTXO服务器;每个存储节点的目标存储空间可以用于存储交易数据。其中,目标存储空间可以为内部存储空间(如内存),并非与硬盘类似的外部存储空间,以使得存储节点在对其所存储的交易进行验证时,可以保证较高的读写性能,从而更好地支持高频的区块链交易处理场景。需要说明的是,区块链节点可以置于分布式存储集群内部,也可以如图1所示置于分布式存储集群外部,本申请对此不作限制。下文以区块链节点置于分布式存储集群内部为例,进行举例说明,不对本申请造成限制。

其中,上述服务器(如区块链服务器和UTXO服务器)可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,等等,但并不局限于此。

本申请实施例提供的基于区块链的数据处理方法可以由区块链节点10执行,具体的:当交易打包条件满足时,向对应的分布式存储集群11包括的每个存储节点发送交易获取请求;以接收每个存储节点响应该交易获取请求发送的交易子集,并根据每个存储节点发送的交易子集确定出第一交易集合;从而对该第一交易集合中包括的每个存储节点的内存池存储的待打包交易进行打包处理,以生成目标区块,并在区块链网络中广播该目标区块;进而完成对目标区块所需交易的打包处理,并使得区块链网络中的各个区块链节点都接收到该目标区块,提高交易打包的效率。

需要说明的是,在各个区块链节点10接收到目标区块后,还可以对该目标区块中的各个交易发送交易验证请求,以指示每个存储节点对各个交易进行验证,具体的:从目标区块中获取第二交易集合;获取该第二交易集合中包括的至少一个交易子集所对应的输入交易集合以及输出交易集合;以根据输入交易集合中每个输入交易对应的输出交易,确定每个存储节点对应的输入交易子集;从而向每个存储节点发送交易验证请求,以用于指示每个存储节点根据目标存储空间中存储的交易数据,对对应的输入交易子集包括的每个输入交易进行验证;进而根据各个存储节点的验证结果,确定是否将交易输出分发给各个存储节点,以完成对目标区块中的各个交易的验证,提高交易验证的效率。

请参见图3,图3是本申请实施例提供的一种基于区块链网络的数据处理方法的流程示意图。该方法可以由图1所示的区块链节点执行,该数据处理方法包括如下步骤:

S301,当交易打包条件满足时,向对应的分布式存储集群包括的每个存储节点发送交易获取请求。

本申请实施例中,当交易打包条件满足时,区块链节点可以向对应的需要进行打包处理的分布式存储集群所包括的每个存储节点发送交易获取请求。其中,该交易获取请求可以用于向各个存储节点获取待打包交易,以使得区块链节点可以对获取到的待打包交易进行打包处理。

其中,上述当交易打包条件满足,可以理解为满足交易打包的数量;例如:若设置一个区块可以包括100个交易,则存储节点上存储的待打包交易满足100个交易时,即为满足交易打包条件。可选的,上述当交易打包条件满足,也可以理解为接收到打包指令;例如:若接收到来自用户的打包指令,则可以认为满足交易打包条件。

S302,接收每个存储节点响应交易获取请求发送的交易子集,并根据每个存储节点发送的交易子集确定第一交易集合,该交易子集包括每个存储节点的内存池存储的待打包交易。

由前述内容可知,每个分布式存储集群可以包括至少一个存储节点,区块链节点可以向每个存储节点均发送交易获取请求。相应的,每个存储节点均可以响应上述交易获取请求向区块链节点发送一个交易子集,该交易子集中可以包括该存储节点的内存池中存储的待打包交易。其中,若某一存储节点上不存在需要打包的交易,则该存储节点可以响应交易获取请求,并向区块链节点发送一个空的交易子集,本申请对此不作限制。

需要说明的是,区块链节点从各个存储节点获取到各个交易子集之后,可以根据各个交易子集确定出第一交易集合。也就是说,区块链节点可以根据各个存储节点的内存池中存储的待打包交易,确定出待打包的第一交易集合,以对该第一交易集合进行打包处理,从而完成对待打包交易的打包处理。

在一种实现方式中,获取目标交易;确定目标交易中的输入交易对应的输出交易所在的目标存储节点;向目标存储节点发送目标交易中的输入交易,以使得目标存储节点根据目标存储空间中存储的交易数据,对目标交易中的输入交易进行验证;在验证通过时,向目标存储节点发送目标交易,以使得目标存储节点将目标交易存储到内存池中。

其中,上述目标交易可以为待验证的任意一笔交易。需要说明的是,各个存储节点的内存池中存储的待打包交易均为验证通过的待打包交易。也就是说,存储节点在将每笔交易存储在内存池之前,区块链节点可以先对每笔交易的输入交易进行验证,并在验证通过的情况下,区块链节点可以将各个验证通过的交易发送至对应的存储节点,以使得各个存储节点分别将各个交易存储到内存池中。

由区块链中每笔交易的基本结构可知,每笔交易的输入交易可以引用至少一个已完成的交易的输出交易。如图4a所示,图4a为输入交易对前一个输出交易引用的示意图。由图4a可知,交易B的输入交易即引用了交易A的输出交易。其中,交易A可以为图4a中第一笔交易的交易id,交易B可以为图4a中第二笔交易的交易id。可以理解的是,每一笔交易的交易id可以为唯一的。

需要说明的是,区块链节点获取到上述目标交易之后,可以根据目标交易中的输入交易获取到该输入交易所引用的输出交易,并确定出该输出交易所在的目标存储节点,以向该目标存储节点发送上述目标交易中的输入交易,从而使得该目标存储节点根据目标存储空间中存储的交易数据,对目标交易中的输入交易进行验证。

示例性的,假设目标交易(如交易D)的输入交易引用的是交易A的输出交易,则区块链节点可以将交易D的输入交易发送至交易A的输出交易所在的存储节点(如存储节点8)上,以使得该存储节点8可以根据其目标存储空间中的交易数据对交易D的输入交易进行验证。

需要说明的是,区块链节点在存储节点对每笔交易进行存储之前的验证方法,与下文所提及的区块链节点在收到目标区块时对目标区块中各个交易进行验证的方法一致,具体内容可参见下文的详细描述,本申请对此不再赘述。

在一种实现方式中,接收每个存储节点发送的交易子集的摘要信息;根据上述每个存储节点发送的交易子集的摘要信息,确定第一交易集合的摘要信息。

其中,上述摘要信息也可以称为消息摘要,如哈希值(Hash)。上述交易子集的摘要信息可以为交易子集的哈希值,第一交易集合的摘要信息可以为第一交易集合的哈希值。

需要说明的是,为了加速所生成的目标区块中的区块哈希的运算,各个存储节点可以预先对各个交易子集进行默克尔哈希计算(如通过MerkleRoot函数),具体公式如下:

其中,上述

可选的,区块链节点在接收到每个存储节点发送的交易子集的摘要信息之后,可以对各个存储节点的交易子集的摘要信息进行异或运算,从而确定第一交易集合的摘要信息,具体公式如下:

其中,上述

S303,对第一交易集合进行打包处理,生成目标区块,并在区块链网络中广播该目标区块。

本申请实施例中,各个待打包交易存储在分布式存储集群的存储节点中,是分散存储的;以存储节点为UTXO服务器为例,每个UTXO服务器上所存储的待打包交易的公式如下:

其中,上述

可以理解的是,所有UTXO服务器上内存池中的待打包交易,即第一交易集合,可以被打包为:

其中,TX

可选的,区块链节点中可以包括交易打包器(也可称作交易打包模块),该交易打包器可以为区块链节点中具有交易打包功能的模块,本申请对此不作限制。可选的,从上述S301,到上述对第一交易集合进行打包处理,生成目标区块的步骤,可以由区块链节点中的交易打包器来执行。

如图4b所示,图4b以区块链节点中包括交易打包器为例,具体说明了本申请实施例所提供的方法的流程示意图。其中,图4b中以存储节点为UTXO服务器,区块链节点为区块链服务器为例进行说明,不对本申请造成限制。

A1.交易打包器读取待打包交易。交易打包器向各个UTXO服务器发送交易获取请求后,可以接收到各个UTXO服务器发送的交易子集,并根据该交易子集确定出第一交易集合。

A2.交易打包器提交目标区块。交易打包器将上述第一交易集合进行打包处理,可以生成目标区块,并将该目标区块提交给区块服务器。可选的,区块链节点接收到目标区块后,还可以对目标区块进行节点的签名、共识机制的操作等,并将该目标区块写入区块链节点的内部存储中。

A3.区块链节点网关广播目标区块。可选的,区块服务器在接收到目标区块之后,可以将该目标区块发送给区块链节点网关(图3中未示出该步骤),以使得区块链节点网关在区块链网络中广播该目标区块。

需要说明的是,上述A1-A3的相关内容可参见前述图3对应实施例中S301-S303的详细描述,本申请在此不再赘述。

本申请实施例中,区块链节点通过在交易打包条件满足的情况下,向对应的分布式存储集群包括的每个存储节点发送交易获取请求,可以接收到每个存储节点响应该交易获取请求发送的交易子集,并可以根据每个存储节点发送的交易子集确定出第一交易集合,从而可以对该第一交易集合中包括的每个存储节点的内存池存储的待打包交易进行打包处理,以生成目标区块,并在区块链网络中广播该目标区块,进而可以更快速地完成对分布式存储集群上各个存储节点中存储的待打包交易的打包处理,以提升交易打包的效率。

图5是本申请实施例提供的一种基于区块链网络的数据处理方法的流程示意图。该方法可以由图1所示的区块链节点执行,该数据处理方法包括如下步骤:

S501,当交易打包条件满足时,向对应的分布式存储集群包括的每个存储节点发送交易获取请求。

S502,接收每个存储节点响应交易获取请求发送的交易子集,并根据每个存储节点发送的交易子集确定第一交易集合,该交易子集包括每个存储节点的内存池存储的待打包交易。

S503,对第一交易集合进行打包处理,生成目标区块,并在区块链网络中广播该目标区块。

需要说明的是,上述S501-S503的相关内容可参见前述图3对应实施例中S301-S303的详细描述,本申请在此不再赘述。

S504,从目标区块中获取第二交易集合,该第二交易集合包括至少一个交易子集。

本申请实施例中,区块链节点获取到目标区块之后,可以对目标区块中所包括的交易集合(即第二交易集合),进行验证,以向验证通过的对应的各个存储节点发送输出交易,从而在各个存储节点上存储输出交易。

需要说明的是,在不存在交易打包遗漏或交易打包错误等情况下,上述第二交易集合可以与前述第一交易集合相同;在存在交易打包遗漏或交易打包错误等情况下,上述第二交易集合可以与前述第一交易集合不相同,本申请对此不作限制。

S505,获取第二交易集合对应的输入交易集合以及输出交易集合。

需要说明的是,区块链节点可以对第二交易集合的输入交易和输出交易进行打散处理(如通过Split函数),以获得第二交易集合的输入交易集合和输出交易集合,具体公式可以如下:

TXIN

其中,上述TXIN

在一种实现方式中,区块链节点还可以获取第二交易集合包括的每个交易子集的摘要信息;并根据第二交易集合包括的每个交易子集的摘要信息,确定第二交易集合的摘要信息;若第二交易集合的摘要信息与第一交易集合的摘要信息匹配,则执行上述根据输入交易集合中每个输入交易对应的输出交易,确定每个存储节点对应的输入交易子集的步骤。

需要说明的是,区块链节点在对第二交易集合中所包括的每笔交易分别进行验证之前,可以首先对交易的完整性和一致性进行验证,即对第二交易集合中所包括的各个交易子集的哈希值进行计算,从而可以对各个交易子集的哈希值进行异或运算以得到第二交易集合的哈希值,具体公式如下:

VerifiedTXroot

其中,上述VerifiedTXroot

具体的,最终交易的完整性和一致性结果可以表示为:

Result=(VerifiedTXroot

其中,上述Result可以表示验证的结果,其值可以为真或者为假。具体的,若Result为真,即第二交易集合的哈希值与前述第一交易集合的哈希值相同,则说明目标区块未收到篡改;若Result为假,即第二交易集合的哈希值与前述第一交易集合的哈希值不相同,则区块链节点可以确定上述目标区块的完整性和一致性验证失败,并终止后续其他的验证操作,同时可以撤回该目标区块。

S506,根据输入交易集合中每个输入交易对应的输出交易,确定每个存储节点对应的输入交易子集。

其中,每个输入交易对应的输出交易,可以理解为每个输入交易所引用的输出交易,或者也可以理解为每个输入交易所依赖的输出交易。也就是说,此处的每个输入交易所对应的输出交易,是所引用的前一个交易的输出交易。

在一种实现方式中,区块链节点还可以根据输入交易集合中每个输入交易的引用信息,确定每个输入交易对应的输出交易;并确定每个输入交易对应的输出交易所在的存储节点;将每个输入交易对应的输出交易所在的存储节点,作为每个输入交易对应的存储节点,以确定出每个存储节点对应的输入交易子集。

需要说明的是,区块链节点首先可以对输入交易集合里的每个输入交易进行验证,即对上述TXIN

可选的,以存储节点为UTXO服务器为例,具体公式如下:

InputOf(TXIN.txid)=MD5(txid)%LEN(UTXOServer)

其中,上述

示例性的,假设一共有3个UTXO服务器,则该3个UTXO服务器均可以分别接收到一个输入交易集合(如输入交易集合1、输入交易集合2和输入交易集合3),并分别对各自接收到的输入交易集合中各个输入交易进行分发,以将各个输入交易分发至对应的UTXO服务器上,从而构建出各个UTXO服务器的输入交易子集。假设发送到第1个UTXO服务器的输入交易集合1中包括10个输入交易,则可以分别根据该10个交易的交易id生成该10个交易中各个交易的输入交易花费的输出交易所在的UTXO服务器id。若该10个输入交易中,有5个交易所在的UTXO服务器id为2,则第2个UTXO服务器的输入交易子集中可以包括上述5个交易。

示例性的,假设一共有3个UTXO服务器,发送到第1个UTXO服务器的输入交易集合1所包括的10个输入交易中有5个交易所在的UTXO服务器id为2,发送到第2个UTXO服务器的输入交易集合2所包括的10个输入交易中有6个交易所在的UTXO服务器id为2,发送到第3个UTXO服务器的输入交易集合3所包括的10个输入交易中有2个交易所在的UTXO服务器id为2,则第2个UTXO服务器的输入交易子集即为上述13个输入交易(即上述5个交易与6个交易与2个交易之和)。可选的,发送给每个UTXO服务器的输入交易集合中所包括的输入交易的个数可以相同,也可以不同,本申请对此不做限制。

S507,向每个存储节点发送交易验证请求,该交易验证请求包括对应的输入交易子集,该交易验证请求用于指示每个存储节点根据目标存储空间中存储的交易数据,对对应的输入交易子集包括的每个输入交易进行验证。

区块链节点确定出每个存储节点对应的输入交易子集后,可以向每个存储节点发送交易验证请求,以指示每个存储节点可以根据各个存储节点的目标存储空间中存储的交易数据,对每个存储节点对应的输入交易子集中包括的各个输入交易进行验证,从而获得验证结果。

示例性的,以存储节点为UTXO服务器为例,在各个UTXO服务器确定出对应的输入交易子集后,将对各自的输入交易子集进行验证。例如,假设第2个UTXO服务器的输入交易子集中包括13个输入交易,则第2个UTXO服务器将对该13个输入交易进行验证。具体的,UTXO服务器可以将输入脚本(即上述TXIN中携带的解锁脚本)与输出脚本(即UTXO服务器的目标存储空间中对应的解锁脚本)进行联结,并通过脚本解释器进行执行,若最后的栈顶元素为真,则说明交易脚本验证通过。

需要说明的是,在各个存储节点对各个输入交易进行验证之后,区块链节点可以获取各个存储节点上的交易验证结果。若存在验证失败的输入交易,说明该输入交易不成对,则区块链节点可以将该输入交易所对应的输出交易从存储节点的目标存储空间中剔除;若所有的输入交易均验证通过,则区块链节点可以分别向各个存储节点分发输出交易,具体公式如下:

其中,上述

需要说明的是,在确定出发送到各个UTXO服务器上的未花费输出交易集合之后,各个UTXO服务器可以将该未花费输出交易集合中的各个输出交易存储到内存中,以使得在后续的输入交易进行验证时,可以提供对应的验证依据。

可选的,区块链节点中可以包括交易验证器(也可称作交易验证模块),该交易验证器可以为区块链节点中具有交易验证功能的模块,本申请对此不作限制。可选的,从上述S504到上述S507的步骤,可以由区块链节点中的交易验证器来执行。

如图6所示,图6以区块链节点中包括交易验证器为例,具体说明了本申请实施例所提供的方法的流程示意图。其中,图6中以存储节点为UTXO服务器,区块链节点为区块链服务器为例进行说明,不对本申请造成限制。

B1.区块服务器收到目标区块。区块服务器通过区块链节点网关在区块链网络中广播目标区块之后,区块链网络中的各个区块服务器可以从各自的区块链节点网关接收到目标区块。可选的,区块链节点网关接收到目标区块之后,可以首先经过共识机制的确认,再将该目标区块发送给区块服务器。

B2.区块服务器向交易验证器提交交易验证请求(如称作交易验证请求1)。区块服务器可以将目标区块发送给交易验证器,交易验证器可以从目标区块中获取第二交易集合,以便响应区块服务器的交易验证请求1,对第二交易集合中的各个交易进行验证。其中,交易验证请求1可以为区块服务器发送给交易验证器的交易验证请求,本申请对此不作限制。可选的,交易验证器在获取第二交易集合后,可以首先对第二交易集合中交易的完整性和一致性进行验证,在验证交易的完整性和一致性成功的情况下,可以继续如下的验证步骤。

B3.交易验证器向各个UTXO服务器分发交易。交易验证器首先可以获取第二交易集合对应的输入交易集合以及输出交易集合,并根据输入交易集合中每个输入交易对应的输出交易,确定各个UTXO服务器对应的输入交易子集。

B4.交易验证器获得验证结果。交易验证器将各个UTXO服务器对应的输入交易子集分发给各个UTXO服务器之后,可以向各个UTXO服务器发送交易验证请求(如称作交易验证请求2),以指示各个UTXO服务器根据目标存储空间中存储的交易数据,对各个UTXO服务器对应的输入交易子集中包括的各个输入交易进行验证,从而获得验证结果。可选的,交易验证器获取到验证结果之后,在所有输入交易均验证通过的情况下,可以向各个UTXO服务器分发输出交易集合,以供各个UTXO服务器存储在目标内存空间中。

B5.交易验证器向区块服务器提交验证结果。若B4中所有输入交易均验证通过,则交易验证器向区块服务器提交目标区块验证成功的结果;若B4中部分输入交易验证失败,则交易验证器向区块服务器提交验证失败的交易id,以通知客户端;若B2中验证交易完整性及一致性失败,则交易验证器向区块服务器发送消息,以通知区块服务器撤回该目标区块。

需要说明的是,上述B1-B5的相关内容可参见前述图5对应实施例中S504-S507的详细描述,本申请在此不再赘述。

本申请实施例中,区块链节点从目标区块中获取第二交易集合,并从该第二交易集合中包括的至少一个交易子集获取对应的输入交易集合以及输出交易集合,以根据输入交易集合中每个输入交易对应的输出交易,确定出每个存储节点对应的输入交易子集,从而向每个存储节点发送交易验证请求,以用于指示每个存储节点根据目标存储空间中存储的交易数据,对对应的输入交易子集包括的每个输入交易进行验证,进而可以通过各个存储节点,更加快速地完成对目标区块中的各个交易的验证,从而提高交易验证的效率。

另外,在本申请的具体实施方式中,涉及到交易打包条件、各个交易(如交易子集、第一交易集合、待打包交易、第二交易集合、输入交易集合、输出交易集合以及输入交易子集)、各个请求(如交易获取请求、交易验证请求)以及各个存储空间(如目标存储空间、内存池)中的相关的数据,所涉及使用到的数据均是经过用户授权的。当本申请以上实施例运用到具体产品或技术中时,所涉及使用到的数据需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

进一步的,请参见图7,图7是本申请实施例提供的一种基于区块链网络的数据处理装置的结构示意图。如图7所示,数据处理装置700可以应用于上述图1对应实施例中的区块链节点。具体的,数据处理装置700可以是运行于区块链节点中的一个计算机程序(包括程序代码),例如该数据处理装置700为一个应用软件;该数据处理装置700可以用于执行图3和图5对应实施例提供的方法中的相应步骤。

数据处理装置700可以包括:通信单元701、确定单元702和处理单元703。

通信单元701,用于当交易打包条件满足时,向对应的分布式存储集群包括的每个存储节点发送交易获取请求;

上述通信单元701,还用于接收每个存储节点响应交易获取请求发送的交易子集;

确定单元702,用于根据每个存储节点发送的交易子集确定第一交易集合,该交易子集包括每个存储节点的内存池存储的待打包交易;

处理单元703,用于对第一交易集合进行打包处理,生成目标区块;

上述通信单元701,还用于在区块链网络中广播目标区块。

在一种实现方式中,数据处理装置700还包括:获取单元704。该获取单元704,用于从目标区块中获取第二交易集合,该第二交易集合包括至少一个交易子集;上述获取单元704,还用于获取第二交易集合对应的输入交易集合以及输出交易集合;该确定单元702,用于根据输入交易集合中每个输入交易对应的输出交易,确定每个存储节点对应的输入交易子集;上述通信单元701,还用于向每个存储节点发送交易验证请求,该交易验证请求包括对应的输入交易子集,该交易验证请求用于指示每个存储节点根据目标存储空间中存储的交易数据,对对应的输入交易子集包括的每个输入交易进行验证。

在一种实现方式中,上述确定单元702,还用于根据输入交易集合中每个输入交易的引用信息,确定每个输入交易对应的输出交易;上述确定单元702,还用于确定每个输入交易对应的输出交易所在的存储节点;上述处理单元703,还用于将每个输入交易对应的输出交易所在的存储节点,作为每个输入交易对应的存储节点,以确定出每个存储节点对应的输入交易子集。

在一种实现方式中,上述通信单元701,还用于接收每个存储节点发送的验证结果;上述确定单元702,还用于根据每个存储节点的验证结果,从输出交易集合中确定每个存储节点对应的待存储的输出交易子集;上述通信单元701,还用于向每个存储节点发送对应的待存储的输出交易子集,以使得每个存储节点在目标存储空间中存储对应的待存储的输出交易子集。

在一种实现方式中,上述获取单元704,还用于获取第二交易集合包括的每个交易子集的摘要信息;上述确定单元702,还用于根据第二交易集合包括的每个交易子集的摘要信息,确定第二交易集合的摘要信息;上述处理单元703,还用于若第二交易集合的摘要信息与第一交易集合的摘要信息匹配,则执行上述根据输入交易集合中每个输入交易对应的输出交易,确定每个存储节点对应的输入交易子集的步骤。

在一种实现方式中,上述通信单元701,还用于接收每个存储节点发送的交易子集的摘要信息;上述确定单元702,还用于根据上述每个存储节点发送的交易子集的摘要信息,确定第一交易集合的摘要信息

在一种实现方式中,上述获取单元704,还用于获取目标交易;上述确定单元702,还用于确定目标交易中的输入交易对应的输出交易所在的目标存储节点;上述通信单元701,还用于向目标存储节点发送目标交易中的输入交易,以使得目标存储节点根据目标存储空间中存储的交易数据,对目标交易中的输入交易进行验证;上述通信单元701,还用于在验证通过时,向目标存储节点发送目标交易,以使得目标存储节点将目标交易存储到内存池中。

根据本申请的实施例,图7所示的数据处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于数据处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。

根据本申请的实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图3和图5所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7中所示的数据处理装置,以及来实现本申请实施例数据处理方法。上述计算机程序可以记载于例如计算机存储介质上,并通过计算机存储介质装载于上述计算设备中,并在其中运行。

进一步地,请参见图8,图8是本申请实施例提供的一种计算机设备的结构示意图。该计算机设备800还可以用于实现上述方法实施例中区块链节点的功能。如图8所示,该计算机设备800至少可包括:处理器801、通信接口802以及计算机存储介质803。其中,处理器801、通信接口802以及计算机存储介质803可通过总线或其他方式连接。

计算机存储介质803可以存储在计算机设备800的存储器804中,该计算机存储介质803用于存储计算机程序,该计算机程序包括程序指令,上述处理器801用于执行计算机存储介质803存储的程序指令。处理器801(或称CPU(Central Processing Unit,中央处理器))是计算机设备800的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行:

当交易打包条件满足时,向对应的分布式存储集群包括的每个存储节点发送交易获取请求;

接收每个存储节点响应交易获取请求发送的交易子集;根据每个存储节点发送的交易子集确定第一交易集合,该交易子集包括每个存储节点的内存池存储的待打包交易;

对第一交易集合进行打包处理,生成目标区块,并在区块链网络中广播目标区块。

在一种实现方式中,上述处理器801,还用于从目标区块中获取第二交易集合,该第二交易集合包括至少一个交易子集;上述处理器801,还用于获取第二交易集合对应的输入交易集合以及输出交易集合;上述处理器801,还用于根据输入交易集合中每个输入交易对应的输出交易,确定每个存储节点对应的输入交易子集;上述处理器801,还用于向每个存储节点发送交易验证请求,该交易验证请求包括对应的输入交易子集,该交易验证请求用于指示每个存储节点根据目标存储空间中存储的交易数据,对对应的输入交易子集包括的每个输入交易进行验证。

在一种实现方式中,上述处理器801,还用于根据输入交易集合中每个输入交易的引用信息,确定每个输入交易对应的输出交易;上述处理器801,还用于确定每个输入交易对应的输出交易所在的存储节点;上述处理器801,还用于将每个输入交易对应的输出交易所在的存储节点,作为每个输入交易对应的存储节点,以确定出每个存储节点对应的输入交易子集。

在一种实现方式中,上述处理器801,还用于接收每个存储节点发送的验证结果;上述处理器801,还用于根据每个存储节点的验证结果,从输出交易集合中确定每个存储节点对应的待存储的输出交易子集;上述处理器801,还用于向每个存储节点发送对应的待存储的输出交易子集,以使得每个存储节点在目标存储空间中存储对应的待存储的输出交易子集。

在一种实现方式中,上述处理器801,还用于获取第二交易集合包括的每个交易子集的摘要信息;上述处理器801,还用于根据第二交易集合包括的每个交易子集的摘要信息,确定第二交易集合的摘要信息;上述处理器801,还用于若第二交易集合的摘要信息与第一交易集合的摘要信息匹配,则执行上述根据输入交易集合中每个输入交易对应的输出交易,确定每个存储节点对应的输入交易子集的步骤。

在一种实现方式中,上述处理器801,还用于接收每个存储节点发送的交易子集的摘要信息;上述处理器801,还用于根据上述每个存储节点发送的交易子集的摘要信息,确定第一交易集合的摘要信息

在一种实现方式中,上述处理器801,还用于获取目标交易;上述处理器801,还用于确定目标交易中的输入交易对应的输出交易所在的目标存储节点;上述处理器801,还用于向目标存储节点发送目标交易中的输入交易,以使得目标存储节点根据目标存储空间中存储的交易数据,对目标交易中的输入交易进行验证;上述处理器801,还用于在验证通过时,向目标存储节点发送目标交易,以使得目标存储节点将目标交易存储到内存池中。

应当理解,本申请实施例中所描述的计算机设备800可执行前文图3和图5所对应实施例中对数据处理方法的描述,也可执行前文图7实施例中对数据处理装置700在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。

此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且计算机存储介质中存储有前文提及的数据处理装置700所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3和图5所对应实施例中对数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,分布在多个地点且通过通信网络互联的多个计算机设备上执行,分布在多个地点且通过通信网络互联的多个计算机设备可以组合为区块链网络。

根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可以执行前文图3和图5所对应实施例中的方法,因此,这里将不再进行赘述。

本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的各示例的单元及步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用,使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程设备。计算机指令可以存储在计算机存储介质中,或者通过计算机存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字用户线(DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

技术分类

06120116220868