主页 > 小米不能安imtoken > 账本索引跳表的构造方法及使用该方法的区块链账本处理方法技术

账本索引跳表的构造方法及使用该方法的区块链账本处理方法技术

小米不能安imtoken 2024-01-17 05:10:44

本发明专利技术提供了一种构建账本索引跳表的方法,包括以下步骤:(1)构建账本索引跳表数组:账本索引跳表内容由区块的哈希值,按照区块链的高度升序排列;(2)构造账本索引跳表集:每个区块中的账本索引跳表集由0个或多个账本索引组成跳表数组,每个数组最大存储28=256个元素,由区块高度决定,应该包括所有小于当前区块高度的跳表数组。本发明专利技术在区块链账本的区块,并构造一个新的区块链账本数据结构,提高区块链账本查询、验证、加载的效率,提高账本处理的并行性,减少等待时间,提高节点资源利用率。提高节点资源利用率。提高节点资源利用率。

下载所有详细的技术数据

【技术实现步骤总结】

账本索引跳表的构造方法及使用它的区块链账本处理方法

[0001]专利技术涉及区块链

,具体涉及一种账本索引跳表的构建方法及使用该方法的区块链账本处理方法。

技术介绍

[0002] 区块链账本中的区块由区块的哈希值按照发生的时间顺序串联而成,是链上交易记录和状态变化的日志记录。区块的数据结构包括当前区块的高度、当前区块的时间戳、上一个区块的高度、上一个区块的时间戳、上一个区块的哈希值、交易记录集、集合状态变化的数量和当前块的哈希值。通常,块用正整数编号,称为块高度。创世块的高度默认为1,后续块的高度以1为步长递增。根据块数据结构中除当前块hash外的数据元素,通过指定的hash算法得到块hash值价值。前一个区块链的哈希值会记录在后一个区块中,形成单向链结构。

[0003] 根据区块哈希值在区块链账本中搜索区块时,其时间复杂度为O(n),其中n为区块链账本的当前高度。随着区块链运行时间的增加,区块链的高度也在不断累积,根据区块链的哈希值寻找区块的时间复杂度也逐渐增加。

[0004] 传统区块数据结构由以下元素组成:{版本号、上一个区块高度、上一个区块时间戳、上一个区块哈希值、当前区块链交易设置默认Kerr根、当前区块链账户状态设置Merkle根, 当前区块链高度, 当前区块链时间戳, 当前区块链哈希}.

[0005] 区块链的哈希值H = Hash({版本号、上一个区块高度、上一个区块时间戳、上一个区块哈希值、当前区块链交易集默克尔根、当前区块链账户状态集默克尔根、账本索引跳过表集,当前区块链高度,当前区块链时间戳})。

[0006]一般来说,使用传统区块链数据结构存储账本的区块链存在以下问题:查询效率低:查询过程必须从最新的区块开始,每次都从第1步开始。前向递归,块高越大,查询需要经过的块越多,浪费的时间越多。因此,随着块高度的增加,查询效率逐渐线性下降。查询时间复杂度为 O(n)。

[0007]b.验证效率低:在验证账本的有效性时,从最新的区块向前移动,根据当前区块链中包含的前一个区块的哈希值来验证前一个区块。区块的有效性只能在线性队列中一一处理。处理完当前账本后,就可以处理下一个账本了。因此,查账效率低。

[0008]c.账本不支持并行处理:由于每个账本只包含前一个账本的hash值,因此对账本的加载、验证、查询等处理不能并行处理,浪费了节点的资源,增加了账本的处理时间。

技术实现思路

[0009] 本专利技术要解决的技术问题是提供一种构建账本索引跳表的方法及使用该方法的区块链账本处理方法,以提高查询、验证和加载的效率区块链账本,提高账本处理的并行性,减少等待时间,提高节点资源利用率。

[0010]为了解决上述技术问题,本专利技术实施例提供了一种账本索引跳转表的构建方法,包括

以下步骤:(1)构造账本索引跳表数组:账本索引跳表数组的内容由区块的哈希值组成,按照区块高度升序排列区块链;(1-1)一级账本索引跳过表步长范围为2

0 = 1;一级账本索引跳转表数组由256个连续区块的区块哈希值组成,距离当前区块高度为1,如[H2,H3,

,H257];当数字小于256时,按实际数字填写,然后添加一个空白值,如[H1,H2,H3,

,H254,0,0]; (1-2)二级账本索引跳转表步长范围为28=256;二级账本索引跳转表数组设置从块高0开始,块高为由256个连续区块的区块哈希值组成,区块高度为256;因为不存在H0,所以第一个完成二级账本索引跳转表的数组元素为255,如[H256, H512,

,H65280],剩余完整第二账索引跳转表中数组元素个数为256;小于256时,按实际数填写,然后加上空值,如[H256,H512,

,H2048,0,0,

]; (1-3)第三层账本索引跳转表步长范围为2

16 = 65536;三级账本索引跳转表数组由从65280的块高和256的块高步长开始的256个连续块的块哈希值组成,如[H65280,H130816,H196352,

,H16776960];完整的二级账本索引跳转表的数组元素个数为256,如果小于256,则按实际数量填写,然后添加一个空值,如[H65280, H130816, H 196352,

,0,0,

]; (1-4)

……

,以此类推; (2)构造账本索引跳表集:每个block中的账本索引跳表集由0个或多个账本索引跳表数组组成,每个数组最多可以存储2个

8 = 256 个元素,由块高度决定,并且应该包含所有小于当前块高度的跳过列表数组。算法如下: (2-1)当区块高度等于1时,为世界的创建区块不包含任何账本索引跳表数组,账本索引集为空; (2-2)当区块高度大于1时,区块链由一个一级账本索引跳转表和0个或多个二级、N级账本索引跳转表组成。

[0011]本专利技术还提供了一种区块链账本处理方法,包括以下步骤: 步骤一、建立区块链账本的数据结构,包括上述构建方法构建的账本索引跳转表格集合;添加账本索引跳转表后区块链账本的数据结构包括:版本号、上一个区块高度、上一个区块时间戳、上一个区块哈希值、当前区块链交易设置默认Kerr根、当前区块链账户状态设置Merkle根、账本索引跳表集合、当前区块链高度、当前区块链时间戳和当前区块链哈希值; step 二、 计算区块链哈希值 区块链哈希值 H

= Hash({版本号, 前一个区块高度, 前一个区块时间戳, 前一个区块哈希值, 当前区块链交易集默克尔根, 当前区块链账户状态集默认Kergen, 账本索引跳表集, 当前区块链高度, 当前区块链时间戳}); step 三、 区块链账本的并行处理,账本加载,验证,查询过程从当前最新区块中找到区块高度对应的区块中设置的账本索引跳转表。根据集合中数组包含的区块哈希值的个数,通过多线程账本处理函数,对每个哈希值对应的区块及其前一个区块进行处理。展开并行处理。

[0012]其中,步骤3中区块链账本查询的时间复杂度为O(log(n))。

[0013] 上述专利技术的技术方案的有益效果是:本专利技术在区块链账本的区块中构建索引跳转表,构建新的区块链账本数据结构,改进区块链账本数据结构。区块链账本的查询、验证和加载效率提高了账本处理的并行度,减少了等待时间,提高了节点资源的利用率。

图纸说明

[0014] 图。附图说明图1是专利技术中账本索引跳表的结构示意图;如图。图2是专利技术中账本索引跳表数据的构建方法示意图。

具体实现方法

[0015] 为使本专利技术所要解决的技术问题、技术方案和优点更加清楚,下面结合附图和具体实施例进行详细说明。

[0016]一种账本索引跳表的构造方法区块链哈希值查询,包括以下步骤: (1)账本索引跳表数组的构造:账本索引跳表数组的内容由哈希值组成区块的,根据区块链的高度升序排列;(1-1)第一层账本索引跳表的步长为2

0 = 1;一级账本索引跳转表数组由从当前区块高度前面开始步长为1的256个连续区块的区块哈希值组成,如[

【技术保护点】

【技术特点总结】

1.一种构建账本索引跳表的方法,其特征在于包括以下步骤:(1)构建账本索引跳表数组:账本索引跳表数组的内容由Hash值组成决定,按区块链高度升序排列;(1-1)第一层账本索引跳转表步长为2

0 = 1;一级账本索引跳转表数组由256个连续区块的区块哈希值组成,距离当前区块高度为1,如[H2,H3,

,H257];当数字小于256时,按实际数字填写,然后添加一个空白值,如[H1,H2,H3,

,H254,0,0]; (1-2)二级账本索引跳转表步长范围为28=256;二级账本索引跳转表数组设置从块高0开始,块高为由256个连续区块的区块哈希值组成,区块高度为256;因为不存在H0,所以第一个完成二级账本索引跳转表的数组元素为255,如[H256, H512,

,H65280],剩余完整第二账索引跳转表中数组元素个数为256;小于256时,按实际数填写,然后加上空值,如[H256,H512,

,H2048,0,0,

]; (1-3)第三层账本索引跳转表步长范围为2

16 = 65536;三级账本索引跳转表数组由从65280的块高和256的块高步长开始的256个连续块的块哈希值组成,如[H65280,H130816,H196352,

,H16776960];完整的二级账本索引跳转表的数组元素个数为256,如果小于256,则按实际数量填写,然后添加一个空值,如[H65280, H130816, H 196352,

【专利技术属性】

技术研发人员:徐文博、崔建军、刘立正、陈青、

申请人(专利权):上海特酷信息技术有限公司区块链哈希值查询

类型:发明

国家省份:

下载所有详细的技术数据我是该专利的所有者