CN109903049A - 一种区块链交易数据存储方法、装置、设备及存储介质 - Google Patents

一种区块链交易数据存储方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN109903049A
CN109903049A CN201910155934.5A CN201910155934A CN109903049A CN 109903049 A CN109903049 A CN 109903049A CN 201910155934 A CN201910155934 A CN 201910155934A CN 109903049 A CN109903049 A CN 109903049A
Authority
CN
China
Prior art keywords
node
transaction data
hash
cryptographic hash
storage
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
Application number
CN201910155934.5A
Other languages
English (en)
Inventor
王进
魏博洋
张经宇
王磊
李文军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changsha University of Science and Technology
Original Assignee
Changsha University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Changsha University of Science and Technology filed Critical Changsha University of Science and Technology
Priority to CN201910155934.5A priority Critical patent/CN109903049A/zh
Publication of CN109903049A publication Critical patent/CN109903049A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于树存储结构的区块链交易数据存储方法、装置、设备及计算机可读存储介质;本方案在将交易数据存入树存储结构之前,需要创建对应的树存储结构,该树存储结构的哈希节点的下层节点具有至少三个哈希节点,且这至少三个哈希节点中存在至少一个哈希节点直接延伸出存储节点,这种树存储结构的结构层次更加简洁,结构更加紧凑;并且,本方案在存储交易数据时,验证概率较高的交易数据存储在距离根节点更近的节点内,该节点到达根节点所经过的节点数量少,因此,在验证交易数据时,全节点发送的哈希值的数量减少,从而加快了数据传输速度,减轻了网络负载。

Description

一种区块链交易数据存储方法、装置、设备及存储介质
技术领域
本发明涉及区块链技术领域,更具体地说,涉及一种基于树存储结构的区块链交易数据存储方法、装置、设备及计算机可读存储介质。
背景技术
目前,Merkle树(默克树)是一种用来保持大型数据库中数据一致性的方法。具体来说,在比较网络中两个节点的数据是否完全一致时,不需要耗费大量资源对每个数据逐一比较,只需要比较存在差异的部分:首先对所有交易数据进行分组,通过相同的哈希算法计算出每个分组的哈希值。(由于哈希算法的单向性、唯一性,相同数据得到的哈希值相同,有差异的数据得到的哈希值不相同。)再将每两个分区所得到的哈希值结合在一起,向上计算其哈希值。重复以上步骤,最后得到一个哈希值(Merkle根)。节点进行数据验证时只需要验证Merkle根是否一致,如果一致则说明数据一致;如果不一致则向下一级继续比较哈希值,找出不一致的数据。
可以看出,在目前的Merkle树中,交易数据仅存储在最底层的叶子节点。当有大量交易数据时,通过哈希算法得到的Merkle树有大量的叶子节点,Merkle树的存储结构复杂性高。并且,由于交易数据只存储于叶子节点中,其余大量的节点没有得到充分的利用。当轻节点需要验证交易数据时,需要从该交易数据所在的叶子节点开始计算哈希值。再将该哈希值按照Merkle树的结构与配对的哈希值继续进行哈希运算。重复该步骤,得到根哈希值,与原有的Merkle根比较,得出需要验证的交易数据是否缺失或异常。而轻节点只存储了区块头中的数据信息,验证过程中需要验证的交易数据和需要的哈希值由轻节点向全节点发送请求,全节点通过网络发送交易数据和大量的哈希值,使得传输数据的时间较长,网络负载较大。
因此,如何降低目前树存储结构的复杂度,减少全节点传输哈希值的数据量及时间,是本领域技术人员需要解决的问题。
发明内容
本发明的目的在于提供一种基于树存储结构的区块链交易数据存储方法、装置、设备及计算机可读存储介质,以降低目前树存储结构的复杂度,减少全节点传输哈希值的数据量及时间。
为实现上述目的,本发明实施例提供了如下技术方案:
一种基于树存储结构的区块链交易数据存储方法,包括:
以根节点作为目标节点,执行节点延伸操作;所述节点延伸操作包括:以目标节点延伸至少三个存放哈希值的哈希节点;从至少三个哈希节点中,选取至少一个哈希节点延伸存放交易数据的存储节点;
判断可存放交易数据的节点数量是否不小于交易数据的分组数;所述节点数量包括存储节点与叶子哈希节点的总数量;
若否,则继续以每个叶子哈希节点为目标节点,分别执行所述节点延伸操作,直至存放交易数据的节点数量不小于交易数据的分组数为止;
若是,则每个叶子哈希节点均延伸对应的存储节点,生成树存储结构;
以每组交易数据的验证概率从高到低的顺序,由上往下存入所述树存储结构的存储节点,并计算所述树存储结构中每个哈希节点的哈希值。
其中,所述节点延伸操作包括:以目标节点延伸三个存放哈希值的哈希节点;从三个哈希节点中,选取其中一个哈希节点延伸存放交易数据的存储节点。
其中,所述按照所述树存储结构,计算每个哈希节点的哈希值,包括:
在所述树存储结构中,计算与叶子哈希节点对应的存储节点的交易数据的哈希值,作为对应的叶子哈希节点的哈希值;
在所述树存储结构中,除叶子哈希节点之外的其他哈希节点,均通过计算下层至少三个哈希节点的哈希值获得。
其中,每组交易数据的验证概率的确定方法包括:
以每组交易数据的交易金额确定每组交易数据的验证概率;其中,交易数据的交易金额与交易数据的验证概率成正比;和/或,
以每组交易数据的输入输出地址个数确定每组交易数据的验证概率;其中,交易数据的输入输出地址个数与交易数据的验证概率成正比。
其中,本方案还包括:
接收对目标交易数据的验证指令;
从所述树存储结构中确定存储所述目标交易数据的目标存储节点,并计算所述目标存储节点的第一哈希值;
利用所述第一哈希值以及从全节点获取的哈希值计算所述树存储结构的根节点的第二哈希值;
根据所述第二哈希值以及从所述全节点获取的根节点的第三哈希值,得到所述目标交易数据的验证结果。
一种基于树存储结构的区块链交易数据存储装置,包括:树存储结构确定模块及交易数据存储模块;
所述树存储结构确定模块,包括:
根节点延伸单元,用于以根节点作为目标节点,触发延伸单元执行节点延伸操作;
所述延伸单元,用于以目标节点延伸至少三个存放哈希值的哈希节点;从至少三个哈希节点中,选取至少一个哈希节点延伸存放交易数据的存储节点;
判断单元,用于判断可存放交易数据的节点数量是否不小于交易数据的分组数;所述节点数量包括存储节点与叶子哈希节点的总数量;若否,则继续以每个叶子哈希节点为目标节点,触发所述延伸模块对每个目标节点分别执行所述节点延伸操作,直至存放交易数据的节点数量不小于交易数据的分组数为止;
存储节点延伸单元,用于在可存放交易数据的节点数量不小于交易数据的分组数时,每个叶子哈希节点均延伸对应的存储节点,生成树存储结构;
所述交易数据存储模块,包括:
交易数据存储单元,用于以每组交易数据的验证概率从高到低的顺序,由上往下存入所述树存储结构的存储节点;
哈希值计算单元,用于计算所述树存储结构中每个哈希节点的哈希值。
其中,验证概率确定模块包括:
第一确定模块,用于以每组交易数据的交易金额确定每组交易数据的验证概率;其中,交易数据的交易金额与交易数据的验证概率成正比;和/或,
第二确定模块,用于以每组交易数据的输入输出地址个数确定每组交易数据的验证概率;其中,交易数据的输入输出地址个数与交易数据的验证概率成正比。
其中,还包括:
验证指令接收模块,用于接收对目标交易数据的验证指令;
第一计算模块,用于从所述树存储结构中确定存储所述目标交易数据的目标存储节点,并计算所述目标存储节点的第一哈希值;
第二计算模块,用于利用所述第一哈希值以及从全节点获取的哈希值计算所述树存储结构的根节点的第二哈希值;
验证结果生成模块,用于根据所述第二哈希值以及从所述全节点获取的根节点的第三哈希值,得到所述目标交易数据的验证结果。
一种基于树存储结构的区块链交易数据存储设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述区块链交易数据存储方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述区块链交易数据存储方法的步骤。
通过以上方案可知,本发明实施例提供的一种基于树存储结构的区块链交易数据存储方法,包括:以根节点作为目标节点,执行节点延伸操作;其中,所述节点延伸操作包括:以目标节点延伸至少三个存放哈希值的哈希节点;从至少三个哈希节点中,选取至少一个哈希节点延伸存放交易数据的存储节点;判断可存放交易数据的节点数量是否不小于交易数据的分组数;所述节点数量包括存储节点与叶子哈希节点的总数量;若否,则继续以每个叶子哈希节点为目标节点,分别执行所述节点延伸操作,直至存放交易数据的节点数量不小于交易数据的分组数为止;若是,则每个叶子哈希节点均延伸对应的存储节点,生成树存储结构;以每组交易数据的验证概率从高到低的顺序,由上往下存入所述树存储结构的存储节点,并计算所述树存储结构中每个哈希节点的哈希值。
可以看出,本方案在将交易数据存入树存储结构之前,需要创建对应的树存储结构,该树存储结构的哈希节点的下层节点具有至少三个哈希节点,且这至少三个哈希节点中存在至少一个哈希节点直接延伸出存储节点,这种树存储结构的结构层次更加简洁,结构更加紧凑;并且,本方案在存储交易数据时,验证概率较高的交易数据存储在距离根节点更近的节点内,该节点到达根节点所经过的节点数量少,因此,在验证交易数据时,全节点发送的哈希值的数量减少,从而加快了数据传输速度,减轻了网络负载。
本发明还公开了一种基于树存储结构的区块链交易数据存储方装置、设备及计算机可读存储介质,同样能实现上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种基于树存储结构的区块链交易数据存储方法流程示意图;
图2为传统Merkle树存储结构示意图;
图3为本发明实施例公开的一树存储结构示意图;
图4为本发明实施例公开的另一树存储结构示意图;
图5为本发明实施例公开的另一树存储结构示意图;
图6为本发明实施例公开的另一树存储结构示意图;
图7为本发明实施例公开的另一基于树存储结构的区块链交易数据存储方法流程示意图;
图8为本发明实施例公开的基于树存储结构的交易数据验证方法示意图;
图9为本发明实施例提供的一种存储交易数据的树存储结构示意图;
图10为本发明实施例公开的一种基于树存储结构的区块链交易数据存储装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为方便理解本方案,在此,对本方案的关键名词进行解释说明:
Merkle树:即默克树,是一种哈希二叉树,用作快速归纳和校验大规模数据完整性的数据结构,保持大型数据库中数据一致性的高效方法。这种二叉树包含加密哈希值。
Merkle根:即默克根,默克树存储结构中根节点所存储的哈希值。
Hash:即散列函数,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值(也叫哈希值)。是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
全节点:全节点是是拥有完整区块链账本的节点,全节点需要占用内存同步所有的区块链数据,能够独立校验区块链上的所有交易并实时更新数据,主要负责区块链的交易的广播和验证。
轻节点:在同步时可以不同步区块里的交易信息,只同步区块头信息,即未拥有完整的区块链账本的节点。轻节点硬盘占用较少,因此能够存放在移动设备上。
“矿工”节点:区块链中负责打包交易数据的节点。在交易数据打包时需要将交易数据与上一个区块的数据进行对比验证。
目前,在创建新的区块时,参与共识的节点需要对“矿工”节点中的交易信息的同一性进行验证,防止出现篡改数据的情况。节点验证从Merkle根开始比较,出现Merkle根不同的情况时则向下一级开始比较哈希值,哈希值则说明数据存在差异,需要进一步向下延伸比较。重复比较哈希值的过程,找出所有哈希值不同的数据分组,对比分组中的每个数据,找出存在差异的数据。一个新产生的区块中存在大量的数据,节点进行验证时需要对比大量的哈希值和数据。Merkle树的数据结构复杂,需要进行大量的运算,造成验证的效率降低。
在轻节点对某一笔具体交易进行验证时,通过已知的交易数据以及所在分组利用哈希算法求出该组数据的哈希值。全节点根据Merkle树的结构发送验证所需的所有哈希值,轻节点重复哈希运算,直至得到根哈希值。此过程中,全节点需要向轻节点传输大量的哈希值,造成传输数据的时间较长,网络负载较大等问题,同时由于轻节点需要进行的哈希运算次数较多而限制了验证效率。
综上,Merkle树的存储结构复杂性高,轻节点进行交易验证时对网络造成的负载较大、需要进行的哈希运算次数较多,影响了节点同一性验证和轻节点对具体交易验证的验证效率。
因此,本发明实施例公开了一种基于树存储结构的区块链交易数据存储方法、装置、设备及计算机可读存储介质,以降低目前树存储结构的复杂度,减少全节点传输哈希值的数据量及时间。
参见图1,本发明实施例提供的一种基于树存储结构的区块链交易数据存储方法,包括:
S101、以根节点作为目标节点,执行节点延伸操作;
其中,所述节点延伸操作包括:以目标节点延伸至少三个存放哈希值的哈希节点;从至少三个哈希节点中,选取至少一个哈希节点延伸存放交易数据的存储节点;
需要说明的是,在本实施例中,以树存储结构Merkle树为例进行描述,当然本方案并不局限于Merkle树,其他能适用本方案的树存储结构同样适用,例如:Merkle Patricia树也可适用。
参见图2,为传统Merkle树结构,通过图2可以看出,现有的Merkle树存储结构为每两组交易数据求哈希值,两个子树结构用相同的哈希算法继续求出哈希值。重复两两求哈希值得到根哈希值,得到Merkle树存储结构,结构松散不够紧凑。因此在本方案中,对节点执行延伸操作时,需要延伸至少三个存放哈希值的哈希节点;从该至少三个哈希节点中,选取至少一个哈希节点延伸存放交易数据的存储节点,其他的每个哈希节点可继续作为目标节点继续向下延伸出至少三个存放哈希值的哈希节点,通过这种方式得到的树存储结构,每个节点的下层具有至少三个节点,与传统Merkle树相比,结构更加紧凑。
在本实施例中,以每个节点具有三个延伸节点,且其中一个延伸节点为存储交易数据的节点为例进行说明。也就是说,该节点延伸操作包括:以目标节点延伸三个存放哈希值的哈希节点;从三个哈希节点中,选取一个哈希节点延伸存放交易数据的存储节点。
S102、判断可存放交易数据的节点数量是否不小于交易数据的分组数;所述节点数量包括存储节点与叶子哈希节点的总数量;若否,则执行S103,若是,则执行S104-S105;
参见图3,为本发明实施例提供的一种树存储结构示意图;通过该图可以看出,默克根延伸出三个存储哈希值的哈希节点,其中一个哈希节点直接延伸一个存储节点n1,这时,可存放交易数据的节点数量一共三个,其中一个为延伸的存储节点n1,另外两个是默克根延伸的其他两个叶子哈希节点,由于交易数据共包括TX0-TX5这六组交易数据,可以看出,可存放交易数据的节点数量小于交易数据的分组数,因此需要执行S103,继续执行节点延伸操作。
S103、继续以每个叶子哈希节点为目标节点,分别执行所述节点延伸操作,直至存放交易数据的节点数量不小于交易数据的分组数为止;
具体的,如果可存放交易数据的节点数量小于交易数据的分组数,这时需要继续执行节点延伸操作,直至存放交易数据的节点数量不小于交易数据的分组数为止;以图3为例,需要以另外两个哈希节点分别为目标节点,继续执行节点延伸操作,参见图4,从每个哈希节点延伸出的三个哈希节点中,分别选取其中一个哈希节点延伸出存储节点,这时需要再次统计可存放交易数据的节点数量,这时一共有三个存储节点和四个叶子哈希节点,共七个,大于交易数据的分组树,这时需要执行S104-S105。
S104、每个叶子哈希节点均延伸对应的存储节点,生成树存储结构;
需要说明的是,存储交易数据的节点数量不小于分组树后,需要确定其他存储交易数据的节点,参见图4,图4中每个叶子哈希节点需要均延伸出对应的存储节点,生成树存储结构,延伸后的树存储结构详见图5。
S105、以每组交易数据的验证概率从高到低的顺序,由上往下存入所述树存储结构的存储节点,并计算所述树存储结构中每个哈希节点的哈希值。
进一步,树存储结构确定后,需要将每组交易数据存储至不同的存储节点中,并计算每个哈希节点的哈希值。通过图5可以看出,验证上层节点的交易数据时,需要从全节点获取的哈希数据的数量较少,而验证下层节点时,从全节点获取的哈希数据的数量较多,因此在本实施例中,在将不同的交易数据存入不同的存储节点时,需要确定每组交易数据的验证概率,验证概率较高,则存储在上层节点,验证概率较低,则存储在下层节点。
在确定不同组交易数据的验证概率时,可以根据不同组交易数据的交易金额、输入输出地址个数等参数来确定,在此并不具体限定,只要能确定不同组交易数据的验证概率即可。以TX0-TX5这六组交易数据为例,TX0-TX5这六组交易数据的验证概率逐渐减小,因此在存入存储节点时,按照TX0-TX5这个顺序,由上往下存入树存储结构的存储节点,参见图6,为存储这六组交易数据的树存储结构,通过该结构可以看出,存储节点n1为存储节点n2-n7的上层节点,因此按照排序先将交易数据Tx0放入节点n1,再根据排序将剩余的交易数据依次放入叶子节点,若交易数据数量少于能够存放交易数据的叶子节点数量,则空出节点,空出的节点仍进行哈希运算。
交易数据存储至树存储结构后,需要按照所述树存储结构,计算每个哈希节点的哈希值,具体来说,该过程包括:在树存储结构中,计算与叶子哈希节点对应的存储节点的交易数据的哈希值,作为对应的叶子哈希节点的哈希值;在树存储结构中,除叶子哈希节点之外的其他哈希节点,均通过计算下层至少三个哈希节点的哈希值获得。
参加图6,由根哈希值开始,每个哈希值由三个哈希值进行哈希运算得出,其中两个哈希值来自于该哈希值下一层结构的三个哈希值通过哈希运算所得的结果,一个哈希值来自于交易数据通过哈希运算所得到的哈希值,例如:根哈希值通过哈希值7、哈希值0、哈希值8进行哈希运算获得,哈希值0通过TX0进行哈希运算获得,而哈希值7则通过哈希值1、哈希值2、哈希值3进行哈希运算获得,哈希值1通过TX1进行哈希运算获得,哈希值2通过TX2进行哈希运算获得,哈希值3通过TX3进行哈希运算获得,哈希值8同理,在此便不再赘述。
当轻节点验证交易时,找到存储包含此交易的区块所有交易数据的全节点,全节点发送验证中所有需要的哈希值。相比于传统的Merkle树,改进的Merkle树结构层次更简洁,结构更加紧凑,对于上层节点的验证有效地减少了全节点发送的哈希值的数量,减少了传输数据的大小,加快了传输速度,减轻了网络负载。按照新定义的排序规则,将验证概率更高的交易数据存放在改进的Merkle树中接近根节点的上段,如图5中的Tx0,到达根节点所经过的节点数更少,需要验证时只需要传输图中的“哈希值7”、“哈希值8”及“根哈希值”。有效减少了全节点发送数据的大小,提高了验证的效率。
参见图7,本发明实施例提供的一种基于树存储结构的区块链交易数据存储方法,包括:
S201、将根节点作为目标节点;
S202、以目标节点延伸至少三个存放哈希值的哈希节点;从至少三个哈希节点中,选取至少一个哈希节点延伸存放交易数据的存储节点;
S203、判断可存放交易数据的节点数量是否不小于交易数据的分组数;所述节点数量包括存储节点与叶子哈希节点的总数量;若否,则执行S204,若是,则执行S205;
S204、以每个叶子哈希节点为目标节点,继续执行S202;
S205、每个叶子哈希节点均延伸对应的存储节点,生成树存储结构;
S206、以每组交易数据的验证概率从高到低的顺序,由上往下存入所述树存储结构的存储节点,并计算所述树存储结构中每个哈希节点的哈希值;
S207、接收对目标交易数据的验证指令;
S208、从所述树存储结构中确定存储所述目标交易数据的目标存储节点,并计算所述目标存储节点的第一哈希值;
S209、利用所述第一哈希值以及从全节点获取的哈希值计算所述树存储结构的根节点的第二哈希值;
S210、根据所述第二哈希值以及从所述全节点获取的根节点的第三哈希值,得到所述目标交易数据的验证结果。
其中,在本方案中,每组交易数据的验证概率的确定方法包括:
以每组交易数据的交易金额确定每组交易数据的验证概率;其中,交易数据的交易金额与交易数据的验证概率成正比;和/或,
以每组交易数据的输入输出地址个数确定每组交易数据的验证概率;其中,交易数据的输入输出地址个数与交易数据的验证概率成正比。
具体的,在本实施例中,可以按照每组交易数据的交易金额从大到小排序,和/或,按每组交易中金额输入来源与金额输出数量由多到少排序进行排序,根据该顺序,将交易数据按照该排序由上往下放入创建的树存储结构中。
参见图8,为本实施例提供的基于树存储结构的交易数据验证方法,在本实施例中,由根节点开始,每个哈希值由三个哈希值进行哈希运算得出,其中两个哈希值来自于该哈希值下一层结构的三个哈希值通过哈希运算所得的结果,一个哈希值来自于交易数据通过哈希运算所得到的哈希值,重复向下延伸,直至能够存放交易数据的节点数量大于交易数据的分组数,构造出改进Merkle树的结构。
进一步,交易数据中的每笔交易都有具体的交易金额,在轻节点验证交易时,交易额大的交易被验证的可能性更大;因此,本方案需要统计每笔交易的交易金额。并且,每一笔交易都有输入地址和输出地址,有的交易可能存在多个输出地址和多个输入地址。轻节点验证交易时,对多个金额输入源和多个金额输出的交易验证的可能性更大。因此,在确定每笔交易的金额时,同样需要对交易中输入地址和输出地址个数进行统计。
统计后,需要将每笔交易按照交易金额和输入输出地址个数排序,例如:按照交易金额从大到小进行排序,或者按照输入输出地址个数由多到少进行排序,或者通过两者的综合结果进行排序。而传统的Merkle树中,交易数据是随机排列的,不论金额或输入输出地址个数都是将交易数据分组存放在Merkle树最底层的叶子节点上。因此,通过这种方式可将验证概率较高的交易数据存入树存储结构的上层节点中,从而可减少全节点发送哈希值的数量。
将排序好的交易数据分组由上往下放入改进的Merkle树存储结构中,若能够存放交易数据的节点个数大于交易数据的分组数,则对多余的节点记为空节点,对空节点仍进行哈希运算。计算每组数据的哈希值,按照结构每三个哈希值再次进行哈希运算得到哈希值,直至得到根哈希值。
在轻节点验证某笔交易时,找出该交易存放在Merkle树中的位置,计算出哈希值,也即S208中的第一哈希值。全节点按照Merkle树的结构发送验证所需的所有哈希值。轻节点按照Merkle树的结构对所发送的对应位置的哈希值进行哈希运算得到上一层的哈希值。重复哈希运算,最后算出根哈希值,也即S209中的第二哈希值。轻节点比较验证得出的第二哈希值与全节点发送过来的根哈希值(第三哈希值),如果相同,则验证的该笔交易正确无误,如果不相同,则该笔交易产生了错误,从而得到验证结果。
参见图9,为本发明实施例提供的一种存储交易数据的树存储结构示意图;在该图中,假设轻节点需要验证标号为Tx0的交易数据,首先轻节点通过哈希算法计算已有的交易数据的第一哈希值,即为h0节点的哈希值。再由全节点发送hash4、hash5节点的哈希值和根哈希值H,轻节点对hash4、h0、hash5这三个哈希值进行哈希运算得到根哈希值H(第二哈希值),将此哈希值与全节点发送过来的根哈希值(第三哈希值)比较。上述过程中,全节点向轻节点发送了三个哈希值,且只进行了两次哈希运算。而在传统的Merkle树结构中,参见图2,验证每个交易数据时全节点所发送的哈希值都是固定的,当轻节点验证某一交易数据时,全节点需要发送五个哈希值:哈希值1、h2、h10、h14、根哈希值,执行的哈希运算次数为五次。因此改进的Merkle树存储结构能够有效地减少全节点传输的哈希值以及轻节点进行哈希运算的次数。
综上可见,通过本方案构建的紧凑高效的树存储结构,可以减少传输的数据大小,加快了传输时间;并且,本方案提出的这种交易数据存储方式,将验证概率高的交易数据存放在树存储结构的上方,减少了验证时所需数据的大小,提高了交易验证的效率。
下面对本发明实施例提供的数据存储装置进行介绍,下文描述的数据存储装置与上文描述的数据存储方法可以相互参照。
参见图10,本发明实施例提供的一种基于树存储结构的区块链交易数据存储装置,包括:树存储结构确定模块100及交易数据存储模块200;
所述树存储结构确定模块100,包括:
根节点延伸单元101,用于以根节点作为目标节点,触发延伸单元执行节点延伸操作;
所述延伸单元102,用于以目标节点延伸至少三个存放哈希值的哈希节点;从至少三个哈希节点中,选取至少一个哈希节点延伸存放交易数据的存储节点;
判断单元103,用于判断可存放交易数据的节点数量是否不小于交易数据的分组数;所述节点数量包括存储节点与叶子哈希节点的总数量;若否,则继续以每个叶子哈希节点为目标节点,触发所述延伸模块对每个目标节点分别执行所述节点延伸操作,直至存放交易数据的节点数量不小于交易数据的分组数为止;
存储节点延伸单元104,用于在可存放交易数据的节点数量不小于交易数据的分组数时,每个叶子哈希节点均延伸对应的存储节点,生成树存储结构;
所述交易数据存储模块200,包括:
交易数据存储单元201,用于以每组交易数据的验证概率从高到低的顺序,由上往下存入所述树存储结构的存储节点;
哈希值计算单元202,用于计算所述树存储结构中每个哈希节点的哈希值。
其中,所述延伸单元具体用于:以目标节点延伸三个存放哈希值的哈希节点;从三个哈希节点中,选取其中一个哈希节点延伸存放交易数据的存储节点。
其中,所述哈希值计算单元具体用于:在所述树存储结构中,计算与叶子哈希节点对应的存储节点的交易数据的哈希值,作为对应的叶子哈希节点的哈希值;在所述树存储结构中,除叶子哈希节点之外的其他哈希节点,均通过计算下层至少三个哈希节点的哈希值获得。
其中,验证概率确定模块包括:
第一确定模块,用于以每组交易数据的交易金额确定每组交易数据的验证概率;其中,交易数据的交易金额与交易数据的验证概率成正比;和/或,
第二确定模块,用于以每组交易数据的输入输出地址个数确定每组交易数据的验证概率;其中,交易数据的输入输出地址个数与交易数据的验证概率成正比。
其中,本装置还包括:
验证指令接收模块,用于接收对目标交易数据的验证指令;
第一计算模块,用于从所述树存储结构中确定存储所述目标交易数据的目标存储节点,并计算所述目标存储节点的第一哈希值;
第二计算模块,用于利用所述第一哈希值以及从全节点获取的哈希值计算所述树存储结构的根节点的第二哈希值;
验证结果生成模块,用于根据所述第二哈希值以及从所述全节点获取的根节点的第三哈希值,得到所述目标交易数据的验证结果。
本发明还公开了一种基于树存储结构的区块链交易数据存储设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述方法实施例所述的区块链交易数据存储方法的步骤。
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述方法实施例所述的区块链交易数据存储方法的步骤。
其中,该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
综上可以看出,传统Merkle树存储结构中,轻节点验证某笔交易必须从Merkle树底端的叶子节点逐一往上计算哈希值,全节点需要发送相应的验证所需的哈希值。在本方案所提供的改进的Merkle树存储结构中,由于是至少三组哈希值进行哈希运算求出一个哈希值,所以在相同数量的交易数据下,对Merkle树结构的层数进行了缩减,使得全节点发送哈希值的数量减少,减少了发送数据的大小,提高了传输数据的速度,降低了网络的传输负载,以达到提高效率的目的。并且轻节点在验证时,验证大交易额和多个输入输出地址的可能性较大,由于对交易数据进行了排序,使这些交易存放在改进的Merkle树的中上部分,进一步减少了全节点发送哈希值的次数,并减少了验证所需的哈希运算次数,提高了验证效率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种基于树存储结构的区块链交易数据存储方法,其特征在于,包括:
以根节点作为目标节点,执行节点延伸操作;所述节点延伸操作包括:以目标节点延伸至少三个存放哈希值的哈希节点;从至少三个哈希节点中,选取至少一个哈希节点延伸存放交易数据的存储节点;
判断可存放交易数据的节点数量是否不小于交易数据的分组数;所述节点数量包括存储节点与叶子哈希节点的总数量;
若否,则继续以每个叶子哈希节点为目标节点,分别执行所述节点延伸操作,直至存放交易数据的节点数量不小于交易数据的分组数为止;
若是,则每个叶子哈希节点均延伸对应的存储节点,生成树存储结构;
以每组交易数据的验证概率从高到低的顺序,由上往下存入所述树存储结构的存储节点,并计算所述树存储结构中每个哈希节点的哈希值。
2.根据权利要求1所述的区块链交易数据存储方法,其特征在于,所述节点延伸操作包括:以目标节点延伸三个存放哈希值的哈希节点;从三个哈希节点中,选取其中一个哈希节点延伸存放交易数据的存储节点。
3.根据权利要求2所述的区块链交易数据存储方法,其特征在于,所述按照所述树存储结构,计算每个哈希节点的哈希值,包括:
在所述树存储结构中,计算与叶子哈希节点对应的存储节点的交易数据的哈希值,作为对应的叶子哈希节点的哈希值;
在所述树存储结构中,除叶子哈希节点之外的其他哈希节点,均通过计算下层至少三个哈希节点的哈希值获得。
4.根据权利要求1所述的区块链交易数据存储方法,其特征在于,每组交易数据的验证概率的确定方法包括:
以每组交易数据的交易金额确定每组交易数据的验证概率;其中,交易数据的交易金额与交易数据的验证概率成正比;和/或,
以每组交易数据的输入输出地址个数确定每组交易数据的验证概率;其中,交易数据的输入输出地址个数与交易数据的验证概率成正比。
5.根据权利要求1至4中任意一项所述的区块链交易数据存储方法,其特征在于,还包括:
接收对目标交易数据的验证指令;
从所述树存储结构中确定存储所述目标交易数据的目标存储节点,并计算所述目标存储节点的第一哈希值;
利用所述第一哈希值以及从全节点获取的哈希值计算所述树存储结构的根节点的第二哈希值;
根据所述第二哈希值以及从所述全节点获取的根节点的第三哈希值,得到所述目标交易数据的验证结果。
6.一种基于树存储结构的区块链交易数据存储装置,其特征在于,包括:树存储结构确定模块及交易数据存储模块;
所述树存储结构确定模块,包括:
根节点延伸单元,用于以根节点作为目标节点,触发延伸单元执行节点延伸操作;
所述延伸单元,用于以目标节点延伸至少三个存放哈希值的哈希节点;从至少三个哈希节点中,选取至少一个哈希节点延伸存放交易数据的存储节点;
判断单元,用于判断可存放交易数据的节点数量是否不小于交易数据的分组数;所述节点数量包括存储节点与叶子哈希节点的总数量;若否,则继续以每个叶子哈希节点为目标节点,触发所述延伸模块对每个目标节点分别执行所述节点延伸操作,直至存放交易数据的节点数量不小于交易数据的分组数为止;
存储节点延伸单元,用于在可存放交易数据的节点数量不小于交易数据的分组数时,每个叶子哈希节点均延伸对应的存储节点,生成树存储结构;
所述交易数据存储模块,包括:
交易数据存储单元,用于以每组交易数据的验证概率从高到低的顺序,由上往下存入所述树存储结构的存储节点;
哈希值计算单元,用于计算所述树存储结构中每个哈希节点的哈希值。
7.根据权利要求6所述的区块链交易数据存储装置,其特征在于,验证概率确定模块包括:
第一确定模块,用于以每组交易数据的交易金额确定每组交易数据的验证概率;其中,交易数据的交易金额与交易数据的验证概率成正比;和/或,
第二确定模块,用于以每组交易数据的输入输出地址个数确定每组交易数据的验证概率;其中,交易数据的输入输出地址个数与交易数据的验证概率成正比。
8.根据权利要求6或7所述的区块链交易数据存储装置,其特征在于,还包括:
验证指令接收模块,用于接收对目标交易数据的验证指令;
第一计算模块,用于从所述树存储结构中确定存储所述目标交易数据的目标存储节点,并计算所述目标存储节点的第一哈希值;
第二计算模块,用于利用所述第一哈希值以及从全节点获取的哈希值计算所述树存储结构的根节点的第二哈希值;
验证结果生成模块,用于根据所述第二哈希值以及从所述全节点获取的根节点的第三哈希值,得到所述目标交易数据的验证结果。
9.一种基于树存储结构的区块链交易数据存储设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述的区块链交易数据存储方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的区块链交易数据存储方法的步骤。
CN201910155934.5A 2019-03-01 2019-03-01 一种区块链交易数据存储方法、装置、设备及存储介质 Pending CN109903049A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910155934.5A CN109903049A (zh) 2019-03-01 2019-03-01 一种区块链交易数据存储方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910155934.5A CN109903049A (zh) 2019-03-01 2019-03-01 一种区块链交易数据存储方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN109903049A true CN109903049A (zh) 2019-06-18

Family

ID=66946131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910155934.5A Pending CN109903049A (zh) 2019-03-01 2019-03-01 一种区块链交易数据存储方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN109903049A (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110334154A (zh) * 2019-06-28 2019-10-15 阿里巴巴集团控股有限公司 基于区块链的分级存储方法及装置、电子设备
CN110351297A (zh) * 2019-07-23 2019-10-18 深圳前海微众银行股份有限公司 一种应用于区块链的验证方法及装置
CN110728577A (zh) * 2019-08-21 2020-01-24 北京邮电大学 一种中心化可分阶层不断扩展的区块链交易方法
CN111428277A (zh) * 2020-03-20 2020-07-17 中国建设银行股份有限公司 区块链数据的校验方法、装置及系统
CN111447069A (zh) * 2020-03-23 2020-07-24 腾讯科技(深圳)有限公司 一种基于区块链的低频访问数据处理方法
CN111507695A (zh) * 2020-04-17 2020-08-07 腾讯科技(深圳)有限公司 数据处理方法、装置、节点设备及存储介质
US10789222B2 (en) 2019-06-28 2020-09-29 Alibaba Group Holding Limited Blockchain-based hierarchical data storage
CN111984614A (zh) * 2020-08-04 2020-11-24 中国人民银行数字货币研究所 一种共享文件的方法、装置和系统
CN112561700A (zh) * 2020-12-14 2021-03-26 长沙理工大学 区块链中交易数据的存储方法、验证方法、及区块链系统
CN112887365A (zh) * 2021-01-08 2021-06-01 浙江泰科数联信息技术有限公司 基于mmr算法区块链的超轻量级节点验证方法及装置
CN112907248A (zh) * 2021-03-25 2021-06-04 芝麻链(北京)科技有限公司 一种基于区块链的数据存储交易方法、交易系统
US11036720B2 (en) 2019-06-28 2021-06-15 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
CN114553896A (zh) * 2020-11-25 2022-05-27 富士通株式会社 信息处理系统、信息处理方法及计算机可读存储介质
CN115150417A (zh) * 2022-07-01 2022-10-04 南方电网电力科技股份有限公司 一种基于区块链的数据存储方法及相关装置
CN115186304A (zh) * 2022-09-13 2022-10-14 天聚地合(苏州)科技股份有限公司 一种基于区块链的交易数据校验方法和系统
CN115442106A (zh) * 2022-08-31 2022-12-06 长沙理工大学 一种区块链监管方法、系统、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106548091A (zh) * 2016-10-14 2017-03-29 北京爱接力科技发展有限公司 一种数据存证、验证的方法及装置
US20180026791A1 (en) * 2015-02-16 2018-01-25 Nec Europe Ltd. Method and system for verifying information of a data item in a plurality of different data items

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180026791A1 (en) * 2015-02-16 2018-01-25 Nec Europe Ltd. Method and system for verifying information of a data item in a plurality of different data items
CN106548091A (zh) * 2016-10-14 2017-03-29 北京爱接力科技发展有限公司 一种数据存证、验证的方法及装置

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
JAKUB SZEFER: "Towards Fast Hardware Memory Integrity Checking with Skewed Merkle Trees", 《PROCEEDINGS OF THE THIRD WORKSHOP ON HARDWARE AND ARCHITECTURAL SUPPORT FOR SECURITY AND PRIVACY》 *
THIVYA KANDAPPU ET AL.: "A Novel Unbalanced Tree Structure for Low-Cost Authentication of streaming Content on A Novel Unbalanced Tree Structure for Low-Cost Authentication of Streaming Content on Mobile and Sensor Devices", 《2012 9TH ANNUAL IEEE COMMUNICATIONS SOCIETY CONFERENCE ON SENSOR, MESH AND AD HOC COMMUNICATIONS AND NETWORKS(SECON)》 *
企鹅号 - ANDROID优秀开源项目分享: "Merkle树和SPV机制", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/NEWS/212113》 *
李勇等: "基于多分支路径树的云存储数据完整性验证机制", 《清华大学学报(自然科学版)》 *
熊健等: "《区块链技术原理及应用》", 31 December 2018, 合肥工业大学出版社 *
郭浩: "云存储系统中数据完整性验证方案的研究与设计", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 *

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11036720B2 (en) 2019-06-28 2021-06-15 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
CN110334154A (zh) * 2019-06-28 2019-10-15 阿里巴巴集团控股有限公司 基于区块链的分级存储方法及装置、电子设备
US11386054B2 (en) 2019-06-28 2022-07-12 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
CN110334154B (zh) * 2019-06-28 2020-07-21 阿里巴巴集团控股有限公司 基于区块链的分级存储方法及装置、电子设备
US11042518B2 (en) 2019-06-28 2021-06-22 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
US10789222B2 (en) 2019-06-28 2020-09-29 Alibaba Group Holding Limited Blockchain-based hierarchical data storage
CN110351297A (zh) * 2019-07-23 2019-10-18 深圳前海微众银行股份有限公司 一种应用于区块链的验证方法及装置
CN110351297B (zh) * 2019-07-23 2022-04-01 深圳前海微众银行股份有限公司 一种应用于区块链的验证方法及装置
CN110728577B (zh) * 2019-08-21 2022-09-30 北京邮电大学 一种中心化可分阶层不断扩展的区块链交易方法
CN110728577A (zh) * 2019-08-21 2020-01-24 北京邮电大学 一种中心化可分阶层不断扩展的区块链交易方法
CN111428277B (zh) * 2020-03-20 2023-08-18 中国建设银行股份有限公司 区块链数据的校验方法、装置及系统
CN111428277A (zh) * 2020-03-20 2020-07-17 中国建设银行股份有限公司 区块链数据的校验方法、装置及系统
CN111447069A (zh) * 2020-03-23 2020-07-24 腾讯科技(深圳)有限公司 一种基于区块链的低频访问数据处理方法
CN111507695A (zh) * 2020-04-17 2020-08-07 腾讯科技(深圳)有限公司 数据处理方法、装置、节点设备及存储介质
CN111984614A (zh) * 2020-08-04 2020-11-24 中国人民银行数字货币研究所 一种共享文件的方法、装置和系统
CN111984614B (zh) * 2020-08-04 2023-05-26 中国人民银行数字货币研究所 一种共享文件的方法、装置和系统
CN114553896A (zh) * 2020-11-25 2022-05-27 富士通株式会社 信息处理系统、信息处理方法及计算机可读存储介质
CN112561700A (zh) * 2020-12-14 2021-03-26 长沙理工大学 区块链中交易数据的存储方法、验证方法、及区块链系统
CN112561700B (zh) * 2020-12-14 2024-08-27 长沙理工大学 区块链中交易数据的验证方法、及区块链系统
CN112887365B (zh) * 2021-01-08 2022-05-24 浙江泰科数联信息技术有限公司 基于mmr算法区块链的超轻量级节点验证方法及装置
CN112887365A (zh) * 2021-01-08 2021-06-01 浙江泰科数联信息技术有限公司 基于mmr算法区块链的超轻量级节点验证方法及装置
CN112907248A (zh) * 2021-03-25 2021-06-04 芝麻链(北京)科技有限公司 一种基于区块链的数据存储交易方法、交易系统
CN115150417A (zh) * 2022-07-01 2022-10-04 南方电网电力科技股份有限公司 一种基于区块链的数据存储方法及相关装置
CN115442106A (zh) * 2022-08-31 2022-12-06 长沙理工大学 一种区块链监管方法、系统、设备及存储介质
CN115186304A (zh) * 2022-09-13 2022-10-14 天聚地合(苏州)科技股份有限公司 一种基于区块链的交易数据校验方法和系统

Similar Documents

Publication Publication Date Title
CN109903049A (zh) 一种区块链交易数据存储方法、装置、设备及存储介质
CN110602148B (zh) 一种区块的状态树的生成和链上数据验证的方法及装置
CN107688999B (zh) 一种基于区块链的并行交易执行方法
WO2021032138A1 (zh) 一种基于区块链系统的共识方法、装置及系统
CN108062672B (zh) 一种基于区块链智能合约的流程调度方法
CN107274159B (zh) 一种基于区块并发执行算法的记账系统及方法
CN112261159B (zh) 执行跨片事务的方法及系统、主链节点和目标分片节点
CN111008201B (zh) 并行修改和读取状态树的方法和装置
CN109039646B (zh) 一种基于节点能力的区块链区块打包和验证方法及系统
CN109410043B (zh) 一种基于分层树状结构的区块链信息高效存储方法及装置
CN112039926B (zh) 一种区块链的双层链式架构实现方法
CN110809042B (zh) 一种基于de bruijn序列生成技术的智能合约分片存储方法
CN105843933B (zh) 分布式内存列式数据库的索引建立方法
CN110659284A (zh) 基于树图结构的区块定序方法及系统、数据处理终端
CN111723073B (zh) 数据存储处理方法、装置、处理系统以及存储介质
CN112561700B (zh) 区块链中交易数据的验证方法、及区块链系统
CN112261160B (zh) 包含分片的区块链系统中退出跨片事务的方法及系统
CN112286963A (zh) 一种区块链终端数据可信查询系统及其实现方法
CN104731925A (zh) 基于MapReduce的FP-Growth的负载均衡并行计算方法
CN112261157B (zh) 提交跨片事务的方法及系统、主链节点和源分片节点
Forestier et al. Blockclique: scaling blockchains through transaction sharding in a multithreaded block graph
CN109218037A (zh) P2p网络中的消息广播方法及装置
WO2021190179A1 (zh) 一种同步处理方法和相关装置
CN112579261A (zh) 退出跨片事务的方法和系统、主链节点和目标分片节点
CN112261162A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190618

RJ01 Rejection of invention patent application after publication