区块链的数据存储方法、装置、设备及介质与流程

文档序号:20918106发布日期:2020-05-29 13:47阅读:258来源:国知局
区块链的数据存储方法、装置、设备及介质与流程

本发明一般涉及区块链技术领域,具体涉及一种区块链的数据存储方法、装置、设备及介质。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,其本质上是一个去中心化的数据库,由一串使用密码学方法相关联产生的数据块组成,每个数据块包含了一批次比特币网络交易的数据信息,为了保证每次交易的有序进行,高效的管理和存储区块数据十分重要。

当前区块链网络中采用不同的数据存储结构对不同区块中的节点数据进行存储,例如比特币的系统采用默克尔树(merkletree)的结构,以太坊的系统中采用默克尔前缀树(merklepatriciatree,简称mpt)进行数据的读写等。

但是,默克尔树结构的所有数据均存储在最底层的叶子节点中,数据越多,树的层级也越多,导致中间节点过多,仅通过摘要值无法定位出数据的位置,而mpt树的每个节点既有摘要值也有value,且在value中包含了下一级节点的摘要值,由于摘要值与数据未分离,无法快速确定数据在树结构中的位置。



技术实现要素:

鉴于现有技术中的上述缺陷或不足的至少之一,期望提供一种区块链的数据存储方法、装置、设备及介质,能够直接根据摘要值确定待处理数据在树结构中的存储位置,大大简化了数据的寻址过程。

第一方面,本发明提供了一种区块链的数据存储方法,该方法包括:

对获取的待处理数据计算摘要值;

根据所述摘要值和树结构中的节点类型确定所述待处理数据在所述树结构中的存储位置;

存储所述待处理数据至所述树结构中的所述存储位置。

在其中一个实施例中,根据所述摘要值和树结构中的节点类型确定所述待处理数据在所述树结构中的存储位置,包括:

根据预设规则对所述摘要值进行分组,确定多个分组值以及与每个所述分组值对应的序号,所述序号与所述树结构的层号一一对应;

按照所述序号由小至大的顺序,依次将与所述序号对应的分组值和树结构中至少一个节点对应的位置标识进行比对,确定所述位置标识中是否存在第一位置标识,所述至少一个节点对应的位置标识位于所述树结构中的同一层,所述第一位置标识与所述序号对应的分组值相等;

当存在所述第一位置标识时,确定与所述第一位置标识对应的第一节点的节点类型,并基于所述节点类型确定所述待处理数据在所述树结构中的存储位置。

在其中一个实施例中,确定与所述第一位置标识对应的第一节点的节点类型,包括:

判断所述第一节点是否存在子节点;

当所述第一节点不存在子节点时,确定所述节点类型为叶子节点;

当所述第一节点中存在子节点时,确定所述节点类型为中间节点。

在其中一个实施例中,当所述第一节点为叶子节点时,基于所述节点类型确定所述待处理数据在所述树结构中的存储位置,包括:

确定所述叶子节点中是否存储有数据;

当所述叶子节点中存储有数据时,以所述叶子节点为父节点生成两个子节点;

基于两个所述子节点,确定所述待处理数据在所述树结构中的存储位置。

在其中一个实施例中,当所述第一节点为中间节点时,基于所述节点类型确定所述待处理数据在所述树结构中的存储位置,包括:

将与所述中间节点对应的层号加一,确定当前层号;

确定所述摘要值中与所述当前层号相等的序号对应的分组值;

将与所述序号对应的分组值和树结构中至少一个节点对应的位置标识进行比对,所述至少一个节点对应的位置标识位于树结构的当前层;

当所述当前层中至少一个节点对应的位置标识存在第一位置标识,且与所述第一位置标识对应的节点的节点类型为叶子节点时,确定所述待处理数据在所述树结构中的存储位置。

在其中一个实施例中,在确定所述位置标识中是否存在第一位置标识之后,所述方法还包括:

当确定所述位置标识中不存在第一位置标识时,在与所述序号值相等的层号对应的树结构层中生成分支节点;

将所述分支节点的位置确定为所述待处理数据在所述树结构中的存储位置。

第二方面,本发明提供了一种区块链的存储装置,该装置包括:

计算模块,用于对获取的待处理数据计算摘要值;

确定模块,用于根据所述摘要值和树结构中的节点类型确定所述待处理数据在所述树结构中的存储位置;

存储模块,用于存储所述待处理数据至所述树结构中的所述存储位置。

第三方面,本申请实施例提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述所述区块链的数据存储方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述区块链的数据存储方法。

综上所述,本申请提供的一种区块链的数据存储方法,通过对获取的待处理数据计算摘要值,并根据摘要值和树结构中的节点类型确定待处理数据在树结构中的存储位置,存储该待处理数据至树结构中的存储位置。该技术方案能够计算待处理数据的摘要值,直接根据该摘要值和节点类型确定待处理数据在树结构中的存储位置,从而对待处理数据进行存储,与现有技术相比,大大减少了中间节点的存在,很大程度上简化了数据的寻址过程,进而能够快速确定出待处理数据的存储位置,提高了区块链中数据的存储效率。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本申请实施例提供的区块链的数据存储方法流程示意图;

图2为本申请实施例提供的树结构的结构示意图;

图3为本申请实施例提供的区块链的数据存储方法流程示意图;

图4为本申请实施例提供的确定数据a和数据b在树结构中的存储位置的结构示意图;

图5为本申请实施例提供的区块链的数据存储方法流程示意图;

图6为本申请实施例提供的确定数据a和数据c在树结构中的存储位置的结构示意图;

图7为本申请实施例提供的区块链的数据存储装置的结构示意图;

图8为本申请实施例提供的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

如背景技术中提到的,区块链网络中的每个交易数据、每个用户数据都是以键值对{key,value}的形式存在的,当前区块链网络采用不同的数据存储结构对不同区块的节点数据进行存储,如比特币系统基于merkel树结构,通过区块的方式和链式结构实现,将交易记录保存在数据区块中,以太坊的系统中采用mpt树结构。但是,merkel树结构中的数据均存储在最底层的叶子节点中,且中间节点过多,导致树结构的层级也多,仅根据某一数据节点的摘要值无法定位出数据在树结构中的存储位置;而mpt树的每个节点中既存储有摘要值也有value,且value中包含了下一级节点的摘要值,由于摘要值与数据未分离,导致无法确定数据在树结构中的存储位置。

基于上述缺陷,本申请提供了一种区块链的数据存储方法,通过对获取的待处理数据计算摘要值,并根据摘要值和树结构中的节点类型确定待处理数据在树结构中的存储位置,存储待处理数据至树结构中的存储位置。与现有技术相比,该方法能够直接计算的待处理数据的摘要值,并根据该摘要值和树结构中的节点类型,快速确定待处理数据在树结构中的存储位置,大大减少了中间节点的存在,很大程度上简化了数据的寻址过程,提高了区块链中数据的存储效率。

为了便于理解和说明,下面通过图1至图8详细说明本申请实施例提供的区块链的数据存储方法、装置、设备及介质。

图1为本申请实施例提供的区块链的数据存储方法流程示意图。

如图1所示,该方法包括:

步骤s101、对获取的待处理数据计算摘要值。

具体的,当需要对区块链网络中单个节点的数据进行存储时,先获取到待处理数据,该待处理数据可以是交易记录,可选的,待处理数据可以是一个,也可以是多个。当获取到待处理数据后,对该待处理数据进行哈希算法操作,计算得到摘要值。

其中,摘要值通常用一个短的随机字母和数字组成的字符串来代表,是一组任意长度的输入信息通过哈希算法得到的“数据指纹”,也称为哈希值,其在计算机底层机器码采用二进制形式表示,可以使用散列函数将输入的任意长度的待处理数据变换成固定长度的输出数据,其输出数据得到的是待处理数据对应的摘要值,散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快的定位。可选的,常用的散列函数可以有:直接寻址法、数字分析法、平方取中法、随机数法等。得到的摘要值的摘要长度为256位,共32个字节。

步骤s102、根据摘要值和树结构中的节点类型确定待处理数据在树结构中的存储位置。

步骤s103、存储待处理数据至树结构中的存储位置。

具体的,在对获取的待处理数据计算出摘要值后,根据该摘要值,将待处理数据存储在树结构中,可以先根据摘要值和树结构中节点对应的节点类型确定待处理数据在树结构中的存储位置。

参见图2所示,上述树结构为倒立的树形结构,可以包括根节点、中间节点和叶子节点,其中,根节点无父节点,有子节点的节点称为中间节点,根节点是特殊的中间节点,无子节点的节点称为叶子节点,且叶子节点中存储有数据。树结构最多可以有65层,根节点为第0层,节点层数可以依次递增,最多可以递增至第64层,中间节点的子节点数可以大于等于2且小于等于16,该树结构中的摘要值为256位,每一个字符代表4位。

需要说明的是,树结构中的每个节点有对应的摘要值,也称为key值,其表现形式为{depth,id},其中,depth表示当前节点在树结构中所在的层号,id表示当前节点在树结构中所在位置的位置标识,id值的长度可以为256位,每8位为一字节,共32个字节。根节点是特殊的中间节点,根节点的key值为{0,uint256(0)},即根节点的depth为0,id为0,位于树结构的第0层。叶子节点的id值由父节点的id值与叶子节点所在的分支共同决定。

当确定出待处理数据的摘要值后,可以根据该摘要值和树结构中节点对应的节点类型,从树结构的根节点开始逐层向下查找,从而确定待处理数据在树结构中的存储位置,并将待处理数据存储至树结构中,该数据寻址的时间复杂度为o(log(n)),其中n为树结构中所存储的数据数量。

本申请实施例中通过对获取的待处理数据计算摘要值,并根据摘要值和树结构中的节点类型确定待处理数据在树结构中的存储位置,存储该待处理数据至树结构中的存储位置。该技术方案能够计算待处理数据的摘要值,直接根据该摘要值和节点类型确定待处理数据在树结构中的存储位置,从而对待处理数据进行存储,与现有技术相比,大大减少了中间节点的存在,很大程度上简化了数据的寻址过程,进而使得快速确定出待处理数据的存储位置,提高了区块链中数据的存储效率。

作为一种可实现方式,在上述实施例的基础上,图3为本申请实施例提供的确定待处理数据在树结构中的存储位置方法的流程示意图,如图3所示,该方法包括:

步骤s201、根据预设规则对摘要值进行分组,确定多个分组值以及与每个分组值对应的序号,序号与树结构的层号一一对应。

具体的,通过哈希算法对待处理数据进行计算得到的摘要值可以为256位,其表现形式为{depth,id},当确定出待处理数据的摘要值后,可以根据预设规则对该摘要值进行分组,得到多个分组值以及每个分组值对应的序号,其中,该预设规则可以是按4位为一组,该摘要值中的每个分组值的序号对应树结构中的层号。

示例性地,当待处理数据的摘要值为10100001001001000000...0000,该摘要值总共256位,对该摘要值进行分组后得到的分组值分别为1010,0001,0010,0100,0000,...,0000,每个分组值对应的序号依次为1,2,3,4,5,...,64,且依次对应树结构的第1层,第2层,第3层,第4层,第5层,...,第64层,最高四位代表第1层,最低四位代表第64层,每个分组值对应为其父节点的所属分支值。

例如,当父节点为根节点,当前节点处于第一层,属于根节点的第13分支,则对应的id值为0x1101000000000000000000000000000000000000000000000000000000000000,若要确定该节点的第10个子节点的id,则需以该节点id为基础,假设子节点所在的层为第2层,那就要将第二组数据更改为a,最终的id值为:0x1101101000000000000000000000000000000000000000000000000000000000。

步骤s202、按照序号由小至大的顺序,依次将与序号对应的分组值和树结构中至少一个节点对应的位置标识进行比对,确定位置标识中是否存在第一位置标识,至少一个节点对应的位置标识位于树结构中的同一层,第一位置标识与序号对应的分组值相等。

步骤s203、当存在第一位置标识时,确定与第一位置标识对应的第一节点的节点类型,并基于节点类型确定待处理数据在树结构中的存储位置。

需要说明的是,在对摘要值进行分组,确定出多个分组值和对应的序号后,可以按照序号由小至大的顺序,依次将与序号对应的分组值和树结构的同一层中至少一个节点对应的位置标识进行比对,确定该位置标识中是否存在第一位置标识,其中,该树结构同一层中至少一个节点的位置标识对应的层号与该分组值对应的序号相同,第一位置标识为与序号对应的分组值相等。

进一步的,当确定位置标识中不存在第一位置标识时,在与序号值相等的层号对应的树结构层中生成分支节点,并将分支节点的位置确定为待处理数据在树结构中的存储位置。

当存在第一位置标识时,确定与第一位置标识对应的第一节点的节点类型,并基于第一节点的节点类型确定待处理数据在树结构中的存储位置,该第一节点为与树结构中与分组值对应的序号相同,且位置标识与该序号对应的分组值相等的节点。

其中,可以先确定与第一位置标识对应的第一节点的节点类型,先判断该第一节点是否存在子节点,如果第一节点不存在子节点,则确定该第一节点对应的节点类型为叶子节点,如果第一节点存在子节点时,则该第一节点对应的节点类型为中间节点。

可选的,当确定出第一节点为叶子节点时,可以先确定该叶子节点中是否存储有数据,如果叶子节点中存储有数据时,则表示该数据和待处理数据的摘要值,按每4位为一组划分后,在当前层对应的这一组上的数据是相同的,则以该数据作为旧数据,该旧数据的节点位置作为中间节点位置,且该位置对应的位置标识为中间节点的位置标识,以该叶子节点为中间节点,并以该中间节点作为父节点生成两个子节点,并基于两个子节点确定待处理数据和旧数据的存储位置,如果该旧数据和待处理数据的存储位置依旧重叠,即旧数据和待处理数据计算出的当前分支相同,则继续将此分支对应的当前位置节点变为一个中间节点,并进一步确定待处理数据在树结构中的位置,直至旧数据与待处理数据分别存储在树结构的不同存储位置中。

示例性地,如图4所示,当需要将数据a和数据b存储在树结构中时,该数据a的摘要值为0x8196a48500000000000000000000000000000000000000000000000000000000,数据b的摘要值为0x8396a48500000000000000000000000000000000000000000000000000000000,其中,该摘要值的每个数字字符代表4位数值,每个摘要值为256位,树结构为空树,数据a和数据b的摘要值的第1位字符相同,均为8,第2位字符不同,数据a的第2位字符为0,数据b的第2位字符为3,需要从树结构的根节点开始存储数据,例如先存储数据a,再存储数据b。

存储数据a的过程是先对其摘要值进行分组,每四位为一组,确定分组值和每个分组值对应的序号,即数据a的每个分组值分别为8,1,9,6,a,4,8,5,...,0,每个分组值对应的序号分别为1,2,3,4,5,6,7,8,...,64,按序号由小到大的查找顺序,依次将序号1,2,3,...,64对应的分组值8,1,9,...,0,与树结构中至少一个节点对应的位置标识进行比对,即先根据数据a的第一位字符8,确定出其应该在根节点对应的第8个分支,由于该树结构为空树,即树结构的此分支节点上无数据,则确定出数据a的存储位置在根节点对应的第8个分支节点的位置,将数据a存储在该位置。

进一步地,当在树结构中存储了数据a后,继续在该树结构中寻址数据b的存储位置,同理,先对数据b的摘要值进行分组,每四位为一组,确定分组值和每个分组值对应的序号,即数据b的每个分组值分别为8,3,9,6,a,4,8,5,...,0,每个分组值对应的序号分别为1,2,3,4,5,6,7,8,...,64,按序号由小到大的查找顺序,依次将序号1,2,3,...,64对应的分组值8,3,9,...,0,与树结构中至少一个节点对应的位置标识进行比对,即先根据数据b的第一位字符8,确定出数据b应该在根节点对应的第8个分支,此时该分支节点的位置为叶子节点,且该叶子节点存储有数据a,则将数据a暂时取出,将根节点对应的第8个分支的节点变为中间节点,且该中间节点的位置标识为0x8000000000000000000000000000000000000000000000000000000000000000。并依次中间节点为父节点生成两个子节点,将该中间节点作为数据a和数据b的父节点,并使用数据a和数据b的第2个字符来确定数据a和数据b分别在其父节点的哪个分支。数据a的第2个字符为1,则属于其父节点的第1个分支,在树结构中的位置标识为0x8100000000000000000000000000000000000000000000000000000000000000;数据b的第2个字符为3,则属于其父节点的第3个分支,在树结构中的位置标识为0x8300000000000000000000000000000000000000000000000000000000000000。将数据a和数据b分别存储在树结构的第二层,位于第一层中间节点对应的第9个分支和3个分支。

本申请实施例中在确定待处理数据在树结构中的存储位置时,通过确定叶子节点中是否存储有数据,当叶子节点中存储有数据时,以该叶子节点为中间节点生成两个子节点,并基于子节点确定待处理数据在树结构中的存储位置,能够简化数据的寻址,加快了数据的定位速度,进一步提高了数据的存储效率。

可选的,在上述实施例的基础上,图5为当确定出第一节点为中间节点时,根据节点类型确定待处理数据在树结构中的存储位置方法流程示意图。如图5所示,该方法包括:

步骤s301、将与中间节点对应的层号加一,确定当前层号。

步骤s302、确定摘要值中与当前层号相等的序号对应的分组值。

步骤s303、将与序号对应的分组值和树结构中至少一个节点对应的位置标识进行比对,至少一个节点对应的位置标识位于树结构的当前层。

步骤s304、若当前层中至少一个节点对应的位置标识存在第一位置标识,且与第一位置标识对应的节点的节点类型为叶子节点时,确定待处理数据在树结构中的存储位置。

具体的,在按照摘要值中各分组值对应的序号由小至大的顺序,依次将与序号对应的分组值和树结构中至少一个节点对应的位置标识进行比对时,确定出树结构中存在与该序号对应的分组值相等的第一位置标识,且确定出该第一位置标识对应的第一节点为中间节点,则可以确定该中间节点对应的层号,并将该层号加一,得到当前层号,进而确定摘要值中与当前层号相等的序号对应的分组值,并将与序号对应的分组值与树结构中至少一个节点对应的位置标识进行比对,确定该位置标识中是否存在与该序号对应的分组值相等的第一位置标识,其中,该至少一个节点均处于树结构的当前层号对应的同一层中。

如果当前层中至少一个节点对应的位置标识中存在第一位置标识,且与第一位置标识对应的节点的节点类型为叶子节点时,则可以继续判断该叶子节点中是否存储有数据,当叶子节点中存储有数据时,则以该叶子节点为中间节点并生成两个子节点,并确定两个子节点为其父节点的哪个分支,以确定待处理数据在树结构中的存储位置。如果与第一位置标识对应的节点的节点类型为中间节点时,则继续确定该中间节点对应的层号,并将该层号加一,得到当前层号,进而确定摘要值中与当前层号相等的序号对应的分组值,并将与序号对应的分组值与树结构中至少一个节点对应的位置标识进行比对,确定该位置标识中是否存在与该序号对应的分组值相等的第一位置标识,以此类推,直到确定出待处理数据与其他数据树结构中的存储位置不重叠,则确定出待处理数据的存储位置。

例如,在图4所示形成的树结构的基础上,继续在该树结构中存储数据c,此时,该树结构中已经存储了数据a和数据b,参见图6所示,该数据c的摘要值为0x8185758500000000000000000000000000000000000000000000000000000000,其中,该摘要值的每个数字字符代表4位数值,每个摘要值为256位,先对数据c摘要值进行分组,每四位为一组,确定分组值和每个分组值对应的序号,即数据c的每个分组值分别为8,1,8,5,7,5,8,5,...,0,每个分组值对应的序号分别为1,2,3,4,5,6,7,8,...,64,按序号由小到大的查找顺序,依次将序号1,2,3,4,...,64对应的分组值8,1,8,5,...,0,与该序号对应的树结构中同一层中的至少一个节点对应的位置标识进行比对,即先确定根据数据c的第一位字符8,确定出数据c应该属于根节点对应的第8个分支,此时该分支节点的位置为中间节点,则确定出该中间节点对应的层号为1,并将该层号加一,确定出当前层号为2,将树结构中第2层对应的至少一个节点的位置标识与数据c的序号2对应的分组值1进行比对,查找到数据a的序号2对应的分组值与数据c的序号2对应的分组值相等,数据a已存储在叶子节点中,则将该数据a暂时取出,将数据a位置作为中间节点,且该中间节点的位置标识为0x8100000000000000000000000000000000000000000000000000000000000000。

进一步地,并依次中间节点为父节点生成两个子节点,将该中间节点作为数据a和数据c的父节点,并使用数据a和数据c的第3个字符来确定数据a和数据c分别在其父节点的哪个分支。数据a的第3个字符为9,则属于其父节点的第9个分支,在树结构中的位置标识为0x8190000000000000000000000000000000000000000000000000000000000000;数据c的第3个字符为8,属于其父节点的第8个分支,在树结构中的位置标识为0x8180000000000000000000000000000000000000000000000000000000000000;将数据a和数据c分别存储在树结构的第三层,分别位于第二层中间节点对应的第9个分支和第8个分支。

本申请实施例当确定第一节点为中间节点时,将于中间节点对应的层号加一,确定当前层号,并确定摘要值中与当前层号相等的序号对应的分组值,并将与序号对应的分组值和树结构中至少一个节点对应的位置标识进行比对,若当前层中至少一个节点对应的位置标识存在第一位置标识,且第一位置标识对应的节点的节点类型为叶子节点时,从而确定待处理数据在树结构中的存储位置。该方法能够根据待处理数据的摘要值快速确定数据在树结构中的位置,相比于marcel树结构,大大减少了中间节点,简化了数据的寻址过程。

图7为本申请实施例提供的区块链的数据存储装置的结构示意图。如图7所示,该装置包括:

计算模块10,用于对获取的待处理数据计算摘要值;

确定模块20,用于根据所述摘要值和树结构中的节点类型确定所述待处理数据在所述树结构中的存储位置;

存储模块30,用于存储所述待处理数据至所述树结构中的所述存储位置。

可选的,所述确定模块20,包括:

第一确定单元201,用于根据预设规则对所述摘要值进行分组,确定多个分组值以及与每个所述分组值对应的序号,所述序号与所述树结构的层号一一对应;

比对单元202,用于按照所述序号由小至大的顺序,依次将与所述序号对应的分组值和树结构中至少一个节点对应的位置标识进行比对,确定所述位置标识中是否存在第一位置标识,所述至少一个节点对应的位置标识位于所述树结构中的同一层,所述第一位置标识与所述序号对应的分组值相等;

第二确定单元203,用于当存在所述第一位置标识时,确定与所述第一位置标识对应的第一节点的节点类型,并基于所述节点类型确定所述待处理数据在所述树结构中的存储位置。

可选的,所述第二确定单元203,具体用于:

判断所述第一节点是否存在子节点;

当所述第一节点不存在子节点时,确定所述节点类型为叶子节点;

当所述第一节点中存在子节点时,确定所述节点类型为中间节点。

可选的,所述第二确定单元203,具体用于:

确定所述叶子节点中是否存储有数据;

当所述叶子节点中存储有数据时,以所述叶子节点为父节点生成两个子节点;

基于两个所述子节点,确定所述待处理数据在所述树结构中的存储位置。

可选的,所述第二确定单元203,具体用于:

将与所述中间节点对应的层号加一,确定当前层号;

确定所述摘要值中与所述当前层号相等的序号对应的分组值;

将与所述序号对应的分组值和树结构中至少一个节点对应的位置标识进行比对,所述至少一个节点对应的位置标识位于树结构的当前层;

当所述当前层中至少一个节点对应的位置标识存在第一位置标识,且与所述第一位置标识对应的节点的节点类型为叶子节点时,确定所述待处理数据在所述树结构中的存储位置。

可选的,所述确定模块20,还包括:

生成单元204,用于当确定所述位置标识中不存在第一位置标识时,在与所述序号值相等的层号对应的树结构层中生成分支节点;

第三确定单元205,用于将所述分支节点的位置确定为所述待处理数据在所述树结构中的存储位置。

本实施例提供的区块链的数据存储装置,可以执行上述方法的实施例,其实现原理和技术效果类似,在此不再赘述。

下面参考图8,其示出了适于用来实现本申请实施例的的计算机系统800的结构示意图。

如图8所示,计算机系统800包括中央处理单元(cpu)801,其可以根据存储在只读存储器(rom)802中的程序或者从存储部分803加载到随机访问存储器(ram)803中的程序而执行各种适当的动作和处理。在ram803中,还存储有系统800操作所需的各种程序和数据。cpu801、rom802以及ram803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。

以下部件连接至i/o接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至i/o接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。

特别地,根据本申请公开的区块链的数据存储方法的实施例,上文参考图1描述的过程可以被实现为计算机软件程序。例如,本申请公开的主控模块的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,该计算机程序包含用于执行图1的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分805从网络上被下载和安装,和/或从可拆卸介质811被安装。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种智能停车系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括计算模块、确定模块及存储模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,计算模块还可以被描述为“用于对获取的待处理数据计算摘要值”。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中前述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,前述程序被一个或者一个以上的处理器用来执行描述于本申请的区块链的数据存储方法,具体执行:对获取的待处理数据计算摘要值;根据所述摘要值和树结构中的节点类型确定所述待处理数据在所述树结构中的存储位置;存储所述待处理数据至所述树结构中的所述存储位置。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。

综上所述,本申请实施例提供的区块链的数据存储的计算机系统或计算机可读存储介质,通过对获取的待处理数据计算摘要值,并根据摘要值和树结构中的节点类型确定待处理数据在树结构中的存储位置,存储该待处理数据至树结构中的存储位置。该技术方案能够计算待处理数据的摘要值,直接根据该摘要值和节点类型确定待处理数据在树结构中的存储位置,从而对待处理数据进行存储,与现有技术相比,大大减少了中间节点的存在,很大程度上简化了数据的寻址过程,进而使得快速确定出待处理数据的存储位置,提高了区块链中数据的存储效率。

上述仅为本申请较佳实施例及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似供共的技术特征进行互相替换而形成的技术方案。

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