CN110489420A - 一种基于区块链的数据处理方法及装置 - Google Patents
一种基于区块链的数据处理方法及装置 Download PDFInfo
- Publication number
- CN110489420A CN110489420A CN201910750361.0A CN201910750361A CN110489420A CN 110489420 A CN110489420 A CN 110489420A CN 201910750361 A CN201910750361 A CN 201910750361A CN 110489420 A CN110489420 A CN 110489420A
- Authority
- CN
- China
- Prior art keywords
- receipt data
- cryptographic hash
- processed
- data
- hash
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及科技金融(Fintech)领域,尤其涉及一种基于区块链(Block chain)的数据处理方法及装置,用以提高数据计算效率,节省处理时长。本发明实施例包括:读取N个待处理操作;对所述N个待处理操作并行处理得到N个收据数据的哈希值,其中针对任一待处理操作执行以下处理过程:执行所述待处理操作得到收据数据;对所述收据数据进行哈希计算得到哈希值;按照设定规则将所述收据数据的哈希值存储在对应的缓存位置;所述设定规则用于指示收据数据的存储位置;将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希。
Description
技术领域
本发明涉及科技金融(Fintech)领域,尤其涉及一种基于区块链的数据处理方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Finteh)转变,区块链(Block chain)技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
区块链上的节点按序串行执行交易列表中的交易,每一笔交易执行完成后,会产生交易收据,节点将交易收据附加到交易收据列表中。当节点执行完全部交易后,会依据交易收据列表中的所有交易收据机构建一棵默克尔树或者默克尔树的变种数据结构。
在高交易吞吐量的业务场景中,区块中会包含大量交易,交易执行完成后会产生大量的交易收据。现有的交易处理方式以及构造默克尔树的过程均为串行执行,计算效率较低,耗时较长,不能充分发挥中央处理器(CPU)的多核性能。
发明内容
本申请提供一种基于区块链的数据处理方法及装置,用以提高数据计算效率,节省处理时长。
本发明实施例提供的一种基于区块链的数据处理方法,包括:
读取N个待处理操作;
对所述N个待处理操作并行处理得到N个收据数据的哈希值,其中针对任一待处理操作执行以下处理过程:执行所述待处理操作得到收据数据;对所述收据数据进行哈希计算得到哈希值;按照设定规则将所述收据数据的哈希值存储在对应的缓存位置;所述设定规则用于指示收据数据的存储位置;
将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希。
一种可选的实施例中,所述对所述N个待处理操作并行处理得到N个收据数据的哈希值之前,还包括:
构建用于存储收据数据以及收据数据的哈希值的数组;
所述对所述N个待处理操作并行处理得到N个收据数据的哈希值,包括:
为第i个待处理操作构建第i个闭包,所述第i个闭包用于根据所述预定规则将第i个待处理操作的收据数据的哈希值存储至所述数组的第i位置;所述第i个待处理操作为所述N个待处理操作中的任一个;
并行执行N个闭包。
一种可选的实施例中,所述第i个闭包中至少定义如下操作:执行所述第i个待处理操作得到第i个收据数据、读取所述第i个收据数据、计算所述第i个收据数据的哈希值以及将所述第i个收据数据和所述第i个收据数据的哈希值存入所述数组的第i位置。
一种可选的实施例中,所述树结构为默克尔树;
所述将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希,包括:
根据哈希值的数量和/或CPU的硬件核心数确定M个线程,其中,任一线程对相邻缓存位置的两个哈希值进行计算;
执行所述M个线程,得到所述N个待处理操作的收据数据的根哈希,其中至少两个线程之间并行执行。
一种基于区块链的数据处理装置,包括:
读取模块,用于读取N个待处理操作;
执行模块,用于对所述N个待处理操作并行处理得到N个收据数据的哈希值,其中针对任一待处理操作执行以下处理过程:执行所述待处理操作得到收据数据;对所述收据数据进行哈希计算得到哈希值;按照设定规则将所述收据数据的哈希值存储在对应的缓存位置;所述设定规则用于指示收据数据的存储位置;
构建模块,用于将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希。
一种可选的实施例中,还包括初始化模块,用于构建用于存储收据数据以及收据数据的哈希值的数组;
所述执行模块,具体用于:
为第i个待处理操作构建第i个闭包,所述第i个闭包用于根据所述预定规则将第i个待处理操作的收据数据的哈希值存储至所述数组的第i位置;所述第i个待处理操作为所述N个待处理操作中的任一个;
并行执行N个闭包。
一种可选的实施例中,所述执行模块,具体用于:
在所述第i个闭包中至少定义如下操作:执行所述第i个待处理操作得到第i个收据数据、读取所述第i个收据数据、计算所述第i个收据数据的哈希值以及将所述第i个收据数据和所述第i个收据数据的哈希值存入所述数组的第i位置。
一种可选的实施例中,所述树结构为默克尔树;
所述构建模块,具体用于:
根据哈希值的数量和/或CPU的硬件核心数确定M个线程,其中,任一线程对相邻缓存位置的两个哈希值进行计算;
执行所述M个线程,得到所述N个待处理操作的收据数据的根哈希,其中至少两个线程之间并行执行。
本发明实施例还提供一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。
本发明实施例还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上所述的方法。
本发明实施例中,区块链中的节点读取区块中的N个待处理操作,并对N个待处理操作并行处理得到。具体地,针对任一个待处理操作执行以下处理过程:执行待处理操作得到收据数据;对收据数据进行哈希计算得到哈希值;按照设定规则将收据数据的哈希值存储在对应的缓存位置。其中,设定规则用于指示收据数据的存储位置。将N个收据数据的哈希值按照缓存位置构建树结构,得到N个收据数据的根哈希。本发明实施例中,并行读取多个待处理操作,且对多个待处理操作进行并行执行,从而在多核处理器下提高了计算效率,节省了处理时长。同时,由于收据数据的哈希值位置已预先指定,因此无论采用串行还是并行的处理机制,正常情况下区块链中的节点计算出的根哈希均一致。这样,不同节点之间可以利用收据数据的根哈希进行校验,从而确定区块链中数据未被篡改,保证了数据的安全。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种默克尔树的结构示意图;
图2为本发明实施例提供的一种基于区块链的数据处理方法的流程示意图;
图3为本发明具体实施例一提供的一种基于区块链的数据处理方法的流程示意图;
图4为本发明具体实施例二提供的一种基于区块链的数据处理方法的流程示意图;
图5为本发明实施例提供的一种基于区块链的数据处理装置的结构示意图;
图6为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了便于理解,下面对本发明实施例中可能涉及的名词进行定义和解释。
区块链:区块链是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的Hash值,通过这种方式组成一条链。区块链的核心理念有两个,一个是密码学技术,另一个是去中心化思想,基于这两个理念做到区块链上的历史信息无法被篡改。一个区块由块头和块体组成,其中块头定义包括该区块高度h,上一个区块的Hash值等重要字段,而块体主要存储交易数据。
节点:在区块链中,一个节点是指一个具有唯一身份的参与者,该节点具有一份完整的账本拷贝,具有参与区块链网络共识和维护账本的能力。
智能合约(Smart contract):是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约是运行在区块链系统之上的一份代码和数据的集合,其中代码负责实现智能合约的功能,数据负责存储智能合约状态,智能合约可以接收和发送信息。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。
交易:在区块链中,任何操作(部署合约、调用合约接口等)都是通过发送交易的方式进行。交易由用户发起,并通过客户端发送至区块链节点。区块链节点在收到交易后,会将交易打包为区块并执行。
交易收据(Receipt):区块中每笔交易执行后都会产生一份相应的交易收据。交易收据存储了交易的执行结果,典型的交易收据包含交易哈希、标识交易是否执行成功的状态位及执行期间产生的日志等重要信息。
哈希函数:哈希函数是一种将任意长度数据映射到有限长度的输出域的函数,具有不可逆性和抗碰撞性,其中不可逆性是指哈希函数只能的从输入推导出输出,反之则不行;抗碰撞性是指很难找到两个不同的输出使得哈希函数得到完全一致的输出。哈希函数的返回值称为哈希值,哈希值可以作为输入数据的特征(指纹)。
默克尔树(Merkle Tree):又名哈希树,存储哈希值的一棵二叉树,由一个根节点,一组中间节点和一组叶子节点组成。最下面的叶子节点包含哈希值,每个中间节点是它的两个子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。可以非常高效的验证计算机之间任何数据的存储、处理和传输,能够确认收到的数据没有被破坏或者篡改。
交易收据根:将交易收据数据组织为一颗默克尔树或其变种数据结构,则树根称为该交易的交易收据根。区块链节点在共识的过程中,会使用交易收据根快速验证不同节点执行交易的的结果相同,且交易收据在交易收据列表中的位置和交易在交易列表中的位置一一对应,从而保证区块链数据的一致性与安全性。
闭包:就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数”。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
待处理操作、收据数据:本发明实施例中,将区块链中的交易统称为待处理操作,交易收据统称为收据数据。节点对待处理操作执行完成后得到收据数据,并将收据数据进行存储,当所有待处理操作全执行完成后,节点将根据所有收据数据构建默克尔树,并将默克尔树的根哈希发送至区块中。其余节点即可根据默克尔树的根哈希对待处理操作和收据数据进行验证。
现有技术中,区块链中的节点是按序串行执行交易列表中的交易,并依次将得到的交易收据写入交易收据列表中。当节点执行完全部交易后,将交易收据列表中的交易收据按序依次计算哈希值,再构建成一棵默克尔树或者其变种数据结构。
以如图1所示的默克尔树为例,其具体构造方法如下:
计算交易收据列表中的所有交易收据的哈希值,并将哈希值作为默克尔树的叶子节点。依次将相邻的两个叶子节点的哈希值合并成一个字符串,然后计算这个字符串的哈希值,所得到哈希值作为两个叶子节点的父节点哈希值。逐层向上构造,把每层相邻的两个节点的哈希值合并成一个字符串,然后计算这个字符串的哈希值,所得到哈希值作为两个节点的父节点哈希值。如果某层的节点个数为奇数,则将最后一个节点进行复制,凑成偶数个节点后执行前述父节点哈希值计算过程。反复执行上述过程,直到得到一个单一的节点,该节点便是交易收据根,整个数据结构即为默克尔树结构。
节点在计算出交易收据根后,将交易收据根与交易收据打包至区块中,并发送至其他节点。其他节点收到区块数据后,使用同样的方式计算得出交易收据根,若节点计算出的交易收据根与接收到的交易数据根相同,则证明两个节点得到的交易执行的顺序和结果相同,交易数据未被篡改,可进一步执行后续步骤。
由上述描述可知,在高交易吞吐量的业务场景中,区块中会包含大量的交易,交易执行完成后会产生大量交易收据。因此,串行构造默克尔树的过程计算效率较低,耗时较长,没有充分利用CPU的多核性能。
为了解决上述问题,本发明实施例提供了一种基于区块链的数据处理方法,如图2所示,本发明实施例提供的基于区块链的数据检验方法包括以下步骤:
步骤201、读取N个待处理操作。
具体来说,区块链接收到交易请求后,将请求的交易数据依次进行缓存,较佳地可以按照列表的形式进行缓存。针对不同的待处理操作,可以构建不同的线程或协成进行读取以及执行,或者以其它形式执行。
步骤202、对所述N个待处理操作并行处理得到N个收据数据的哈希值,其中针对任一待处理操作执行以下处理过程:执行所述待处理操作得到收据数据;对所述收据数据进行哈希计算得到哈希值;按照设定规则将所述收据数据的哈希值存储在对应的缓存位置;所述设定规则用于指示收据数据的存储位置。
具体实施过程中,对一个交易执行得到一个交易收据,针对N个交易,可以并行执行得到N个交易收据。为了构建树结构,计算每个交易收据的哈希值,并按照设定规则将每个哈希值存储在对应的缓存位置。一般来说,哈希值的存储位置与交易收据的存储位置相对应,同时与交易数据的存储位置相对应。例如,交易数据按照列表的形式进行存储,则交易收据以及交易收据的哈希值也按照列表的形式进行存储。具体地,交易列表中第一个交易数据的交易收据以及对应的哈希值,缓存在交易收据列表的第一位置;交易列表中第二个交易数据的交易收据以及对应的哈希值,缓存在交易收据列表的第二位置,以此类推。上述读取、执行以及存储的过程,可以利用CPU的多核特性,并行处理。
此外,依据具体情况,交易之间的执行也可以串行执行,或者部分交易串行执行,部分交易并行执行,本发明实施例不做限制。
步骤203、将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希。
本发明实施例中,区块链中的节点读取区块中的N个待处理操作,并对N个待处理操作并行处理得到。具体地,针对任一个待处理操作执行以下处理过程:执行待处理操作得到收据数据;对收据数据进行哈希计算得到哈希值;按照设定规则将收据数据的哈希值存储在对应的缓存位置。其中,设定规则用于指示收据数据的存储位置。将N个收据数据的哈希值按照缓存位置构建树结构,得到N个收据数据的根哈希。本发明实施例中,并行读取多个待处理操作,且对多个待处理操作进行并行执行,从而在多核处理器下提高了计算效率,节省了处理时长。同时,由于收据数据的哈希值位置已预先指定,因此无论采用串行还是并行的处理机制,正常情况下区块链中的节点计算出的根哈希均一致。这样,不同节点之间可以利用收据数据的根哈希进行校验,从而确定区块链中数据未被篡改,保证了数据的安全。
为了便于并行执行交易,将所有的执行过程打包以及对应缓存,本发明实施例利用闭包对交易进行处理。所述对所述N个待处理操作并行处理得到N个收据数据的哈希值之前,还包括:
构建用于存储收据数据以及收据数据的哈希值的数组;
所述对所述N个待处理操作并行处理得到N个收据数据的哈希值,包括:
为第i个待处理操作构建第i个闭包,所述第i个闭包用于根据所述预定规则将第i个待处理操作的收据数据的哈希值存储至所述数组的第i位置;所述第i个待处理操作为所述N个待处理操作中的任一个;
并行执行N个闭包。
具体来说,为了确定收据数据以及哈希值的存储位置,构建一个数组,用于存储收据数据以及收据数据的哈希值,该数组的长度等于收据数据的个数,即数组中每个元素对应一个收据数据以及收据数据的哈希值。为了执行待处理操作,将一个待处理操作封装为一个闭包。其中,每个闭包中至少定义一个操作,该操作将闭包中的收据数据以及收据数据的哈希值按照预定规则存储在数组的规定位置。较佳地,该预定规则可以为,将收据数据以及收据数据的哈希值在数组中的位置与待处理操作在列表中的位置相对应。举例来说,例如,交易列表中包括多个交易,则第一个交易的交易收据在数组中的位置也为第一个,第二个交易的交易收据在数组中的位置也为第二个,以此类推。同理可得交易收据的哈希值的位置。确定每个闭包中交易收据的位置后,可对所有闭包进行并行执行。
为了方便操作,将数据处理与数据存储一同执行,上述第i个闭包中至少定义如下操作:执行所述第i个待处理操作得到第i个收据数据、读取所述第i个收据数据、计算所述第i个收据数据的哈希值以及将所述第i个收据数据和所述第i个收据数据的哈希值存入所述数组的第i位置。
举例来说,针对每个交易,闭包中定义了4个操作:
1.调用交易的执行接口执行交易;
2.获取交易收据;
3.计算交易收据的哈希值;
4.将交易收据与交易收据的哈希值写入数组的对应位置。
利用闭包进行执行和计算,可以读取函数内部的变量,在本发明实施例中即交易列表中的交易数据,同时可以让这些变量的值始终保持在内存中,不会在被调用后被自动清除。这样,将同一个待处理操作从执行到存储的每个步骤均用同一个闭包执行,方便了交易执行的过程,也使得每个待处理操作的收据数据以及收据数据的哈希值均存在规定的位置上,从而使得其它节点接收到收据数据以及收据数据的哈希值后,可以按照这种预设的存储顺序读取收据数据的哈希值,从而计算出根哈希,并进行验证。
进一步地,本发明实施例中的树结构为默克尔树。所述将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希,包括:
根据哈希值的数量和/或CPU的硬件核心数确定M个线程,其中,任一线程对相邻缓存位置的两个哈希值进行计算;
执行所述M个线程,得到所述N个待处理操作的收据数据的根哈希,其中至少两个线程之间并行执行。
具体实施过程中,可以构建多个线程来构建收据数据的哈希值的树结构。其中,线程的数量可以根据哈希值的数量确定,或者根据CPU的硬件核心数确定。由于通过计算默克尔树的相邻的两个子节点的哈希值,得到该两个子节点的父节点的值。因此,本发明实施例中设置为每一线程均对相邻缓存位置的两个哈希值进行计算。这样,计算同一层节点的线程可以并行计算,也可以串行计算。较佳地,将尽量多的不同线程并行执行以提高计算效率。最终,计算得出收据数据的根哈希,进行缓存,作为后续验证的依据。
为了更清楚地理解本发明,下面以具体实施例对上述流程进行详细描述,具体实施例一为执行交易并得出每个交易收据的哈希值的过程,包括初始化、交易封装、交易执行、同步四个阶段,如图3所示,具体包括以下步骤:
步骤S301:读取区块中交易数据,令变量length=交易总数。
步骤S302:分配一个长度为length的数组receipts,receipts中的元素用于存储交易收据及交易收据的哈希值。
步骤S303:分配一个列表transactions,transactions用于存储交易闭包。
上述步骤S301至S303的过程即为初始化过程,用于初始化相关的数据结构。
步骤S304:令变量i=0。
步骤S305:判断i是否小于length,如果是,转至步骤S306,否则,转至步骤S309。
步骤S306:取出交易列表中第i笔交易,调用closure方法将第i笔交易封装为一个交易闭包,closure在交易闭包中加入以下4个操作:
a.调用交易的执行接口执行交易;
b.获取交易收据;
c.计算交易收据的哈希值;
d.将交易收据与交易收据的哈希值写入receipts[i]中。
步骤S307:将生成的交易闭包插入到transactions中。一般来说,将receipts[i]对应的交易闭包写入transactions[i]中。
步骤S308:设置i=i+1,跳转到步骤S305。
上述步骤S304至S308的过程即为交易封装的过程,具体用于遍历交易列表,并将交易封装为闭包。
步骤S309:执行transactions中的所有交易闭包,执行方式可以是串行执行,也可以是并行执行。
步骤S310:同步:用于阻塞主线程,直到所有的交易闭包执行完成。
具体实施例二为计算交易收据的根哈希的过程。为了便于计算,预先定义⊕为一个二元运算符,其功能是接收两个字节序列并按从左至右的顺序拼接为一整个字节序列,然后输出该字节序列的哈希值。本发明具体实施例二中,构建交易收据的默克尔树时,每层按照相邻节点的⊕运算进行分组,即将相邻两个节点分为同一组,将不同组分配到不同线程并行执行以提高执行效率。具体实施例二的输入为一个包含所有交易收据的哈希值的列表receipts_hash,输出为交易收据的根哈希。如图4所示,具体包括以下步骤:
步骤S401:设置变量core_num等于CPU的硬件核心数。
步骤S402:设置变量length等于receipts_hash的元素个数。
步骤S403:设置变量stride等于1。
步骤S404:判断stride是否小于length,如果是,执行步骤S405;如果否,则执行步骤S409。
步骤S405:设置变量thread_num等于length/(stride*2)和core_num中的较小值。
步骤S406:分配thread_num个线程。
其中第i个(0≤i<thread_num)线程的工作流程如步骤S407至S411所示:
步骤S407:初始化变量j=i*length/thread_num;
步骤S408:判断j是否小于(i+1)*length/thread_num,如果是,执行步骤S409;如果否,则执行步骤S411;
步骤S409:计算receipts_hash[j]⊕receipts_hash[j+stride],并将结果置于receipts_hash[j]中;
步骤S410:j=j+stride*2,执行步骤S408;
步骤S411:执行结束,线程退出。
步骤S412:同步,等待所有线程执行结束;
步骤S413:stride=stride*2,执行步骤S404;
步骤S414:返回receipts_hash[0]作为交易收据根,流程结束。
本发明实施例还提供了一种基于区块链的数据处理装置,如图5所示,包括:
读取模块501,用于读取N个待处理操作;
执行模块502,用于对所述N个待处理操作并行处理得到N个收据数据的哈希值,其中针对任一待处理操作执行以下处理过程:执行所述待处理操作得到收据数据;对所述收据数据进行哈希计算得到哈希值;按照设定规则将所述收据数据的哈希值存储在对应的缓存位置;所述设定规则用于指示收据数据的存储位置;
构建模块503,用于将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希。
可选的,还包括初始化模块504,用于构建用于存储收据数据以及收据数据的哈希值的数组;
所述执行模块502,具体用于:
为第i个待处理操作构建第i个闭包,所述第i个闭包用于根据所述预定规则将第i个待处理操作的收据数据的哈希值存储至所述数组的第i位置;所述第i个待处理操作为所述N个待处理操作中的任一个;
并行执行N个闭包。
可选的,所述执行模块502,具体用于:
在所述第i个闭包中至少定义如下操作:执行所述第i个待处理操作得到第i个收据数据、读取所述第i个收据数据、计算所述第i个收据数据的哈希值以及将所述第i个收据数据和所述第i个收据数据的哈希值存入所述数组的第i位置。
可选的,所述树结构为默克尔树;
所述构建模块503,具体用于:
根据哈希值的数量和/或CPU的硬件核心数确定M个线程,其中,任一线程对相邻缓存位置的两个哈希值进行计算;
执行所述M个线程,得到所述N个待处理操作的收据数据的根哈希,其中至少两个线程之间并行执行。
基于相同的原理,本发明还提供一种电子设备,如图6所示,包括:
包括处理器601、存储器602、收发机603、总线接口604,其中处理器601、存储器602与收发机603之间通过总线接口604连接;
所述处理器601,用于读取所述存储器602中的程序,执行下列方法:
读取N个待处理操作;
对所述N个待处理操作并行处理得到N个收据数据的哈希值,其中针对任一待处理操作执行以下处理过程:执行所述待处理操作得到收据数据;对所述收据数据进行哈希计算得到哈希值;按照设定规则将所述收据数据的哈希值存储在对应的缓存位置;所述设定规则用于指示收据数据的存储位置;
将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希。
进一步地,所述处理器601,具体用于执行:
构建用于存储收据数据以及收据数据的哈希值的数组;
为第i个待处理操作构建第i个闭包,所述第i个闭包用于根据所述预定规则将第i个待处理操作的收据数据的哈希值存储至所述数组的第i位置;所述第i个待处理操作为所述N个待处理操作中的任一个;
并行执行N个闭包。
进一步地,所述处理器601,用于定义第i个闭包中的如下操作:
执行所述第i个待处理操作得到第i个收据数据、读取所述第i个收据数据、计算所述第i个收据数据的哈希值以及将所述第i个收据数据和所述第i个收据数据的哈希值存入所述数组的第i位置。
进一步地,所述树结构为默克尔树;
所述处理器601,具体用于:
根据哈希值的数量和/或CPU的硬件核心数确定M个线程,其中,任一线程对相邻缓存位置的两个哈希值进行计算;
执行所述M个线程,得到所述N个待处理操作的收据数据的根哈希,其中至少两个线程之间并行执行。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种基于区块链的数据处理方法,其特征在于,包括:
读取N个待处理操作;
对所述N个待处理操作并行处理得到N个收据数据的哈希值,其中针对任一待处理操作执行以下处理过程:执行所述待处理操作得到收据数据;对所述收据数据进行哈希计算得到哈希值;按照设定规则将所述收据数据的哈希值存储在对应的缓存位置;所述设定规则用于指示收据数据的存储位置;
将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希。
2.如权利要求1所述的方法,其特征在于,所述对所述N个待处理操作并行处理得到N个收据数据的哈希值之前,还包括:
构建用于存储收据数据以及收据数据的哈希值的数组;
所述对所述N个待处理操作并行处理得到N个收据数据的哈希值,包括:
为第i个待处理操作构建第i个闭包,所述第i个闭包用于根据所述预定规则将第i个待处理操作的收据数据的哈希值存储至所述数组的第i位置;所述第i个待处理操作为所述N个待处理操作中的任一个;
并行执行N个闭包。
3.如权利要求2所述的方法,其特征在于,所述第i个闭包中至少定义如下操作:执行所述第i个待处理操作得到第i个收据数据、读取所述第i个收据数据、计算所述第i个收据数据的哈希值以及将所述第i个收据数据和所述第i个收据数据的哈希值存入所述数组的第i位置。
4.如权利要求1所述的方法,其特征在于,所述树结构为默克尔树;
所述将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希,包括:
根据哈希值的数量和/或CPU的硬件核心数确定M个线程,其中,任一线程对相邻缓存位置的两个哈希值进行计算;
执行所述M个线程,得到所述N个待处理操作的收据数据的根哈希,其中至少两个线程之间并行执行。
5.一种基于区块链的数据处理装置,其特征在于,包括:
读取模块,用于读取N个待处理操作;
执行模块,用于对所述N个待处理操作并行处理得到N个收据数据的哈希值,其中针对任一待处理操作执行以下处理过程:执行所述待处理操作得到收据数据;对所述收据数据进行哈希计算得到哈希值;按照设定规则将所述收据数据的哈希值存储在对应的缓存位置;所述设定规则用于指示收据数据的存储位置;
构建模块,用于将所述N个收据数据的哈希值按照缓存位置构建树结构,得到所述N个收据数据的根哈希。
6.如权利要求5所述的装置,其特征在于,还包括初始化模块,用于构建用于存储收据数据以及收据数据的哈希值的数组;
所述执行模块,具体用于:
为第i个待处理操作构建第i个闭包,所述第i个闭包用于根据所述预定规则将第i个待处理操作的收据数据的哈希值存储至所述数组的第i位置;所述第i个待处理操作为所述N个待处理操作中的任一个;
并行执行N个闭包。
7.如权利要求6所述的装置,其特征在于,所述执行模块,具体用于:
在所述第i个闭包中至少定义如下操作:执行所述第i个待处理操作得到第i个收据数据、读取所述第i个收据数据、计算所述第i个收据数据的哈希值以及将所述第i个收据数据和所述第i个收据数据的哈希值存入所述数组的第i位置。
8.如权利要求5所述的装置,其特征在于,所述树结构为默克尔树;
所述构建模块,具体用于:
根据哈希值的数量和/或CPU的硬件核心数确定M个线程,其中,任一线程对相邻缓存位置的两个哈希值进行计算;
执行所述M个线程,得到所述N个待处理操作的收据数据的根哈希,其中至少两个线程之间并行执行。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-4任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1~4任一所述方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910750361.0A CN110489420A (zh) | 2019-08-14 | 2019-08-14 | 一种基于区块链的数据处理方法及装置 |
PCT/CN2020/104619 WO2021027530A1 (zh) | 2019-08-14 | 2020-07-24 | 一种基于区块链的数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910750361.0A CN110489420A (zh) | 2019-08-14 | 2019-08-14 | 一种基于区块链的数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110489420A true CN110489420A (zh) | 2019-11-22 |
Family
ID=68551119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910750361.0A Pending CN110489420A (zh) | 2019-08-14 | 2019-08-14 | 一种基于区块链的数据处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110489420A (zh) |
WO (1) | WO2021027530A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111581214A (zh) * | 2020-05-07 | 2020-08-25 | 成都汉为科技有限公司 | 适用于能源区块链的并行merkle树构建与验证方法 |
WO2021027530A1 (zh) * | 2019-08-14 | 2021-02-18 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据处理方法及装置 |
CN113794558A (zh) * | 2021-09-16 | 2021-12-14 | 烽火通信科技股份有限公司 | 一种XMSS算法中的L-tree计算方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016177283A1 (zh) * | 2015-05-06 | 2016-11-10 | 阿里巴巴集团控股有限公司 | 缓存目录刷新方法和装置 |
CN106407795A (zh) * | 2016-09-05 | 2017-02-15 | 北京众享比特科技有限公司 | 数据存在认证系统、认证方法及验证方法 |
CN108492108A (zh) * | 2018-03-29 | 2018-09-04 | 深圳前海微众银行股份有限公司 | 区块链跨链通信方法、系统和计算机可读存储介质 |
CN109101572A (zh) * | 2018-07-17 | 2018-12-28 | 何晓行 | 基于区块链的存证方法、装置及服务器、存储介质 |
CN109658238A (zh) * | 2018-10-26 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562775B (zh) * | 2017-07-14 | 2020-04-24 | 创新先进技术有限公司 | 一种基于区块链的数据处理方法及设备 |
US20190228386A1 (en) * | 2018-01-19 | 2019-07-25 | Xapo Holdings Limited | Recording evidence of address/account allocations in a distributed ledger |
CN109165221A (zh) * | 2018-08-16 | 2019-01-08 | 北京京东尚科信息技术有限公司 | 区块链的数据存储方法、装置、区块链节点及存储介质 |
CN111768203A (zh) * | 2018-11-07 | 2020-10-13 | 阿里巴巴集团控股有限公司 | 一种构建梅克尔树、简单支付验证方法及装置 |
CN109559234B (zh) * | 2019-01-31 | 2020-10-23 | 杭州复杂美科技有限公司 | 一种区块链状态数据的存储方法、设备和存储介质 |
CN110489420A (zh) * | 2019-08-14 | 2019-11-22 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据处理方法及装置 |
-
2019
- 2019-08-14 CN CN201910750361.0A patent/CN110489420A/zh active Pending
-
2020
- 2020-07-24 WO PCT/CN2020/104619 patent/WO2021027530A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016177283A1 (zh) * | 2015-05-06 | 2016-11-10 | 阿里巴巴集团控股有限公司 | 缓存目录刷新方法和装置 |
CN106407795A (zh) * | 2016-09-05 | 2017-02-15 | 北京众享比特科技有限公司 | 数据存在认证系统、认证方法及验证方法 |
CN108492108A (zh) * | 2018-03-29 | 2018-09-04 | 深圳前海微众银行股份有限公司 | 区块链跨链通信方法、系统和计算机可读存储介质 |
CN109101572A (zh) * | 2018-07-17 | 2018-12-28 | 何晓行 | 基于区块链的存证方法、装置及服务器、存储介质 |
CN109658238A (zh) * | 2018-10-26 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021027530A1 (zh) * | 2019-08-14 | 2021-02-18 | 深圳前海微众银行股份有限公司 | 一种基于区块链的数据处理方法及装置 |
CN111581214A (zh) * | 2020-05-07 | 2020-08-25 | 成都汉为科技有限公司 | 适用于能源区块链的并行merkle树构建与验证方法 |
CN111581214B (zh) * | 2020-05-07 | 2023-07-18 | 成都汉为科技有限公司 | 适用于能源区块链的并行merkle树构建与验证方法 |
CN113794558A (zh) * | 2021-09-16 | 2021-12-14 | 烽火通信科技股份有限公司 | 一种XMSS算法中的L-tree计算方法、装置及系统 |
CN113794558B (zh) * | 2021-09-16 | 2024-02-27 | 烽火通信科技股份有限公司 | 一种XMSS算法中的L-tree计算方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2021027530A1 (zh) | 2021-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489420A (zh) | 一种基于区块链的数据处理方法及装置 | |
US20210243007A1 (en) | Maintaining blocks of a blockchain in a partitioned blockchain network | |
CN109409885A (zh) | 区块链上的跨链交易方法、装置及存储介质 | |
JP2024073535A (ja) | ブロックチェーンを用いる論理ゲート機能の実装 | |
CN110288094A (zh) | 基于联邦学习的模型参数训练方法及装置 | |
Feng et al. | Smart contract model for complex reality transaction | |
CN110457123A (zh) | 一种区块处理任务的控制方法和装置 | |
CN108985772A (zh) | 一种区块链的验证方法、装置、设备及存储介质 | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
CN112650978B (zh) | 基于区块链的侵权检测方法及装置、电子设备 | |
CN109377363B (zh) | 一种基于区块链的物联网数据交易架构及其交易安全方法 | |
CN104011736A (zh) | 用于状态机中的检测的方法及系统 | |
CN106327196A (zh) | 一种支付阈值获取方法和装置 | |
CN107408072A (zh) | 用于随机化计算机指令集、存储器寄存器和指针的方法和装置 | |
US20210073796A1 (en) | Method of selective authentication of a blockchain user with a smart contract | |
CN104660466B (zh) | 一种安全测试方法及系统 | |
CN110324321A (zh) | 数据处理方法及装置 | |
Yang et al. | Research and analysis of blockchain data | |
CN109447636A (zh) | 一种资产转移方法及装置 | |
CN110147202A (zh) | 一种减少区块链智能合约代码存储体积的方法 | |
CN112039702A (zh) | 基于联邦学习和相互学习的模型参数训练方法及装置 | |
CN110096542A (zh) | 去中心化的数据验证处理方法、装置、系统和介质 | |
CN108108190A (zh) | 一种计算方法及相关产品 | |
CN111597167A (zh) | 一种应用区块链技术的大数据管理系统及方法 | |
CN110309629A (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 |