数据处理方法及装置与流程

文档序号:17469248发布日期:2019-04-20 05:42阅读:146来源:国知局
数据处理方法及装置与流程

本申请涉及互联网技术领域,尤其涉及一种数据处理方法及装置。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,其中,共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法,区块链要求其系统中每个节点的状态需要保持一致。

目前,主要通过比较区块链系统中各个节点的哈希值,来判断各个节点的状态是否一致,其中,在计算节点的哈希值时,涉及到计算节点中每个区块的哈希值。可见,区块的哈希值的计算效率关系到节点的哈希值的计算效率,因此,需要提出一种数据处理方法,以提高区块的哈希值的计算效率,进而从整体上提高节点的哈希值的计算效率。



技术实现要素:

本说明书实施例的目的是提供一种数据处理方法及装置,本说明书实施例是这样实现的:

第一方面,提供了一种数据处理方法,所述方法包括:

创建区块链的逻辑合约以及对应的多个数据合约;

将所述逻辑合约和所述多个数据合约部署到所述区块链上;

将所述区块链中目标区块的数据存储至所述多个数据合约中;

计算所述多个数据合约的哈希值;

基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值。

第二方面,提供了一种数据处理装置,所述装置包括:

创建模块,用于创建区块链的逻辑合约以及对应的多个数据合约;

部署模块,用于将所述逻辑合约和所述多个数据合约部署到所述区块链上;

存储模块,用于将所述区块链中目标区块的数据存储至所述多个数据合约中;

第一计算模块,用于计算所述多个数据合约的哈希值;

确定模块,用于基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值。

第三方面,提供了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:

创建区块链的逻辑合约以及对应的多个数据合约;

将所述逻辑合约和所述多个数据合约部署到所述区块链上;

将所述区块链中目标区块的数据存储至所述多个数据合约中;

计算所述多个数据合约的哈希值;

基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值。

第四方面,提供了一种计算机存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:

创建区块链的逻辑合约以及对应的多个数据合约;

将所述逻辑合约和所述多个数据合约部署到所述区块链上;

将所述区块链中目标区块的数据存储至所述多个数据合约中;

计算所述多个数据合约的哈希值;

基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值。

由以上本说明书实施例提供的技术方案可见,考虑到在计算区块链中区块的哈希值时,如果将该区块的所有数据均存储至一个合约中,那么随着合约中数据量的不断增多,会造成哈希值计算算法(例如merkletree算法)的计算效率急剧下降,区块哈希值的计算效率较低。本说明书实施例中,在计算区块链中区块的哈希值时,通过将智能合约分离为逻辑合约和多个数据合约,将区块的所有数据分散存储到多个数据合约中,可以提高哈希值计算算法对单个合约的哈希值计算效率,从而提高区块哈希值的计算效率,进而从整体上提高节点的哈希值计算效率。

附图说明

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

图1是本说明书的一个实施例的数据处理方法的流程图;

图2是本说明书的一个实施例的数据处理方法的实例图;

图3是本说明书的另一个实施例的数据处理方法的流程图;

图4是本说明书的一个实施例的数据处理装置的结构示意图;

图5是本说明书的一个实施例的电子设备的结构示意图。

具体实施方式

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

区块链节点的哈希(hash)值的计算过程:例如,区块链由n个区块构成,分别为:区块1、区块2、区块3,…,区块n,首先根据区块1中的数据计算区块1的hash值,之后根据区块1的hash值和区块2中的数据计算区块2的hash值,再之后根据区块2的hash值和区块3中的数据计算区块3的hash值,以此类推,计算区块n的hash值,区块n的hash值即为节点的hash值;其中,计算hash值的算法通常为默克尔树(merkletree)算法。

目前,在计算区块的hash值时,是将这个区块的数据存储至一个智能合约中进行merkletreehash计算,得到该区块的hash值。然而,merkletree的计算效率会随合约中数据量的不断增长而降低,导致区块的hash值计算效率较低。为了解决上述技术问题,本说明书实施例提供了一种数据处理方法及装置。

下面首先对本说明书实施例中涉及到的一些概念进行介绍。

区块链技术:也被称之为分布式账本技术,是一种去中性化的分布式数据库技术,其特点是去中心化、公开透明、不可篡改、可信任。区块链的每笔数据,都会广播全网的区块链节点,每个节点都有全量的、一致的数据,即每个节点的状态需要保持一致,包括数据库的状态。这就要求应用执行区块链交易的顺序是有序的、且各个节点中都保持一致,每个节点按序运行这些交易,就能得到相同的数据状态。

区块:每个区块记录着上一个区块的哈希(hash)值、本区块中的交易集合、本区块的hash值等基础数据。由于每个区块都有上一区块的hash值,区块间由这个值两两串联,形成区块链。

交易:区块链接收的数据称之为交易。

merkletree:一种数据结构,可以快速对已组织的结构进行hash计算。

state:表示区块链存储的数据集合,包括区块链数据,区块链交易执行后,各个账户和智能合约的数据。

statehash:整个state的数据可以通过hash算法计算出一个hash值,分布式的区块链各个节点的state应该是保持一致的,通过对比statehash值是否一致来判断。

接下来对本说明书实施例提供的一种数据处理方法进行介绍。

需要说明的是,本说明书实施例提供的方法适用于支持智能合约和merkletree的私有链、联盟链、公有链的区块链平台。

图1是本说明书的一个实施例的数据处理方法的流程图,如图1所示,该方法可以包括以下步骤:步骤102、步骤104、步骤106、步骤108和步骤110,其中,

在步骤102中,创建区块链的逻辑合约以及对应的多个数据合约。

本说明书实施例中,可以将智能合约分离为逻辑合约和数据合约,具体的,将智能合约的逻辑部分分离出来,创建相应的逻辑合约,在创建逻辑合约时创建对应的多个数据合约;其中,逻辑合约用于处理业务逻辑,数据合约用于存储数据。

在一个例子中,创建1个逻辑合约和3个数据合约。

本说明书实施例中,将智能合约分离为逻辑合约和数据合约,在升级合约时,只需升级逻辑合约,数据合约无需改动,相应的,上述方法还可以增加以下步骤:升级逻辑合约,以升级区块链的智能合约。

本说明书实施例中,将智能合约分离为逻辑合约和数据合约,数据合约中的数据可以方便分享给其他智能合约,相应的,上述方法还可以增加以下步骤:将数据合约中的数据分享给其他智能合约。

在步骤104中,将逻辑合约和多个数据合约部署到区块链上。

接上一步骤中的例子,将逻辑合约和3个数据合约部署到区块链上。

在步骤106中,将区块链中目标区块的数据存储至多个数据合约中。

本说明书实施例中,目标区块可以为区块链中任一区块。

本说明书实施例中,为了提高计算效率,可以将目标区块的数据均匀存储至多个数据合约中,即每个数据合约中存储的数据量相接近,其中,每个数据合约中存储的数据不相同。

接上一步骤中的例子中,将目标区块的数据存储至3个数据合约中;优选地,将目标区块的数据均匀地存储至3个数据合约中。

需要说明的是,如果目标区块为区块链的第一个区块,则目标区块的数据即为目标区块中的数据;如果目标区块为区块链的非第一个区块,则目标区块的数据包括:目标区块中的数据和前一区块的哈希值。

在步骤108中,计算多个数据合约的哈希值。

本说明书实施例中,对于每个存储有区块数据的数据合约,对该数据合约进行merkletreehash计算,得到该数据合约的哈希值。

本说明书实施例中,考虑到各数据合约之间的关联性较弱,因此可以并行计算多个数据合约的哈希值,即同时计算多个数据合约的哈希值,以提高计算效率。

接上一步骤中的实例,在将目标区块的数据均匀存储至3个数据合约后,可以同时计算数据合约1、数据合约2和数据合约3的哈希值。

在步骤110中,基于多个数据合约的哈希值,确定区块链中目标区块的哈希值。

本说明书实施例中,考虑到数据合约中的数据量通常比较大,而逻辑合约中的数据量通常比较小,因此可以仅依据数据合约的哈希值计算目标区块的哈希值。

本说明书实施例中,也可以结合逻辑合约的哈希值和数据合约的哈希值计算目标区块的哈希值,在这种情况下,上述方法还可以增加以下步骤:计算所述逻辑合约的哈希值;相应的,上述步骤110具体可以包括以下步骤:

基于逻辑合约的哈希值、以及基于多个数据合约的哈希值,确定区块链中目标区块的哈希值。

在一个例子中,如图2所示,区块链包括:区块1、区块2、区块3,…,区块n,在计算每个区块的hash值时,将区块的数据存储至n个数据合约中,例如,计算区块2的hash值时,将区块2的数据存储至n个数据合约中,之后,对n个数据合约进行merkletreehash计算,得到n个hash值,根据计算得到的n个hash值,确定区块2的hash值。

由上述实施例可见,考虑到在计算区块链中区块的哈希值时,如果将该区块的所有数据均存储至一个合约中,那么随着合约中数据量的不断增多,会造成哈希值计算算法(例如merkletree算法)的计算效率急剧下降,区块哈希值的计算效率较低。该实施例中,在计算区块链中区块的哈希值时,通过将智能合约分离为逻辑合约和多个数据合约,将区块的所有数据分散存储到多个数据合约中,可以提高哈希值计算算法对单个合约的哈希值计算效率,从而提高区块哈希值的计算效率,进而从整体上提高节点的哈希值计算效率。

图3是本说明书的另一个实施例的数据处理方法的流程图,本说明书实施例中,可以根据业务量和业务规则对数据合约的数量进行动态扩展,此时,如图3所示,该方法可以包括以下步骤:步骤302、步骤304、步骤306、步骤308、步骤310、步骤312和步骤314,其中,

在步骤302中,创建区块链的逻辑合约以及对应的多个数据合约。

本说明书实施例中,可以将智能合约分离为逻辑合约和数据合约,具体的,将智能合约的逻辑部分分离出来,创建相应的逻辑合约,在创建逻辑合约时创建对应的多个数据合约;其中,逻辑合约用于处理业务逻辑,数据合约用于存储数据。

在一个例子中,创建1个逻辑合约和3个数据合约。

本说明书实施例中,将智能合约分离为逻辑合约和数据合约,在升级合约时,只需升级逻辑合约,数据合约无需改动,相应的,上述方法还可以增加以下步骤:升级逻辑合约,以升级区块链的智能合约。

本说明书实施例中,将智能合约分离为逻辑合约和数据合约,数据合约中的数据可以方便分享给其他智能合约,相应的,上述方法还可以增加以下步骤:将数据合约中的数据分享给其他智能合约。

在步骤304中,将逻辑合约和多个数据合约部署到区块链上。

接上一步骤中的例子,将逻辑合约和3个数据合约部署到区块链上。

在步骤306中,将区块链中目标区块的数据存储至多个数据合约中。

本说明书实施例中,目标区块可以为区块链中任一区块。

本说明书实施例中,为了提高计算效率,可以将目标区块的数据均匀存储至多个数据合约中,即每个数据合约中存储的数据量相接近,其中,每个数据合约中存储的数据不相同。

接上一步骤中的例子中,将目标区块的数据存储至3个数据合约中;优选地,将目标区块的数据均匀地存储至3个数据合约中。

需要说明的是,如果目标区块为区块链的第一个区块,则目标区块的数据即为目标区块中的数据;如果目标区块为区块链的非第一个区块,则目标区块的数据包括:目标区块中的数据和前一区块的哈希值。

在步骤308中,判断区块链上的数据合约的容量是否达到预设阈值,若是则执行步骤310,否则执行步骤312。

本说明书实施例中,可以通过判断区块链上的数据合约的容量是否达到预设阈值,来判断区块链上的数据合约是否达到计算瓶颈,如果数据合约的容量达到预设阈值,那么表明数据合约达到计算瓶颈,此时,创建新的数据合约,并部署到区块链上,之后将数据存储至新创建的数据合约中,以此来达到避免数据量过多导致merkletreehash计算效率下降过低的目的。

在步骤310中,为区块链创建新增的数据合约。

在步骤312中,计算多个数据合约的哈希值。

本说明书实施例中,对于每个存储有区块数据的数据合约,对该数据合约进行merkletreehash计算,得到该数据合约的哈希值。

本说明书实施例中,考虑到各数据合约之间的关联性较弱,因此可以并行计算多个数据合约的哈希值,即同时计算多个数据合约的哈希值,以提高计算效率。

接上一步骤中的实例,在将目标区块的数据均匀存储至3个数据合约后,可以同时计算数据合约1、数据合约2和数据合约3的哈希值。

在步骤314中,基于多个数据合约的哈希值,确定区块链中目标区块的哈希值。

本说明书实施例中,考虑到数据合约中的数据量通常比较大,而逻辑合约中的数据量通常比较小,因此可以仅依据数据合约的哈希值计算目标区块的哈希值。

本说明书实施例中,可以结合逻辑合约的哈希值和数据合约的哈希值计算目标区块的哈希值,在这种情况下,上述方法还可以增加以下步骤:计算所述逻辑合约的哈希值;相应的,上述步骤314具体可以包括以下步骤:

基于逻辑合约的哈希值、以及基于多个数据合约的哈希值,确定区块链中目标区块的哈希值。

由上述实施例可见,该实施例中,可以基于数据量来动态调整数据合约的数量,当现有的数据合约达到计算瓶颈时,可以通过创建新的数据合约来提高区块哈希值的计算效率,进而从整体上提高节点的哈希值计算效率。

图4是本说明书的一个实施例的数据处理装置的结构示意图,如图4所示,在一种软件实施方式中,数据处理装置400,可以包括:创建模块401、部署模块402、存储模块403、第一计算模块404和确定模块405,其中,

创建模块401,用于创建区块链的逻辑合约以及对应的多个数据合约;

部署模块402,用于将所述逻辑合约和所述多个数据合约部署到所述区块链上;

存储模块403,用于将所述区块链中目标区块的数据存储至所述多个数据合约中;

第一计算模块404,用于计算所述多个数据合约的哈希值;

确定模块405,用于基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值。

由上述实施例可见,考虑到在计算区块链中区块的哈希值时,如果将该区块的所有数据均存储至一个合约中,那么随着合约中数据量的不断增多,会造成哈希值计算算法(例如merkletree算法)的计算效率急剧下降,区块哈希值的计算效率较低。该实施例中,在计算区块链中区块的哈希值时,通过将智能合约分离为逻辑合约和多个数据合约,将区块的所有数据分散存储到多个数据合约中,可以提高哈希值计算算法对单个合约的哈希值计算效率,从而提高区块哈希值的计算效率,进而从整体上提高节点的哈希值计算效率。

可选地,作为一个实施例,所述创建模块401,还可以用于:

如果所述区块链上的数据合约的容量达到预设阈值,则为所述区块链创建新增的数据合约。

可选地,作为一个实施例,所述数据处理装置400,还可以包括:

升级模块,用于升级所述逻辑合约,以升级所述区块链的智能合约。

可选地,作为一个实施例,所述数据处理装置400,还可以包括:

分享模块,用于将所述数据合约中的数据分享给其他智能合约。

可选地,作为一个实施例,所述存储模块403,可以包括:

数据存储子模块,用于将所述区块链中目标区块的数据均匀存储至所述多个数据合约中。

可选地,作为一个实施例,所述第一计算模块404,可以包括:

计算子模块,用于并行计算所述多个数据合约的哈希值。

可选地,作为一个实施例,所述数据处理装置400,还可以包括:

第二计算模块,用于计算所述逻辑合约的哈希值;

所述确定模块405,可以包括:

哈希值确定子模块,用于基于所述逻辑合约的哈希值、以及基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值。

图5是本说明书的一个实施例的电子设备的结构示意图,如图5所示,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据处理装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

创建区块链的逻辑合约以及对应的多个数据合约;

将所述逻辑合约和所述多个数据合约部署到所述区块链上;

将所述区块链中目标区块的数据存储至所述多个数据合约中;

计算所述多个数据合约的哈希值;

基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值。

可选地,作为一个实施例,创建对应的多个数据合约,还包括:

如果所述区块链上的数据合约的容量达到预设阈值,则为所述区块链创建新增的数据合约。

可选地,作为一个实施例,所述方法还包括:

升级所述逻辑合约,以升级所述区块链的智能合约。

可选地,作为一个实施例,所述方法还包括:

将所述数据合约中的数据分享给其他智能合约。

可选地,作为一个实施例,所述将所述区块链中目标区块的数据存储至所述多个数据合约中,包括:

将所述区块链中目标区块的数据均匀存储至所述多个数据合约中。

可选地,作为一个实施例,所述计算所述多个数据合约的哈希值,包括:

并行计算所述多个数据合约的哈希值。

可选地,作为一个实施例,所述方法还包括:

计算所述逻辑合约的哈希值;

所述基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值,包括:

基于所述逻辑合约的哈希值、以及基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值。

上述如本说明书图5所示实施例揭示的数据处理装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图1的方法,并实现数据处理装置在图1所示实施例的功能,本说明书实施例在此不再赘述。

本说明书实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下方法:

创建区块链的逻辑合约以及对应的多个数据合约;

将所述逻辑合约和所述多个数据合约部署到所述区块链上;

将所述区块链中目标区块的数据存储至所述多个数据合约中;

计算所述多个数据合约的哈希值;

基于所述多个数据合约的哈希值,确定所述区块链中目标区块的哈希值。

总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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