[发明专利]一种按时间排序的存储结构与快速查询的方法有效

专利信息
申请号: 201911425122.4 申请日: 2019-12-31
公开(公告)号: CN111209591B 公开(公告)日: 2022-03-29
发明(设计)人: 程宏兵;赵鹏;刘加玲;杨斌飞;方伟 申请(专利权)人: 浙江工业大学
主分类号: G06F21/62 分类号: G06F21/62;G06F21/64
代理公司: 杭州之江专利事务所(普通合伙) 33216 代理人: 林蜀
地址: 310014 浙江省杭*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 按时 排序 存储 结构 快速 查询 方法
【权利要求书】:

1.一种按时间排序的存储结构与快速查询的方法,其特征在于包括以下步骤:

步骤一,根据输入数据进行merkle tree数据列表的建立

步骤1.1,收到发送过来的数据信息,对数据信息中的隐私数据进行解密,解密后通过椭圆曲线算法ecdsa对隐私数据进行验证;

步骤1.2,验证成功后,把验证者的签名写入数据验证者(Verifier)信息栏,再使用随机数生成算法把随机数写入到随机数Nonce;

步骤1.3,对这一条完整的数据用不可逆的单向散列算法SHA256进行加密,得到这这条数据的哈希值,再把这条数据信息以[key(HashData),value]的形式存入levelDB数据库,再按照顺序存入到交易池中;

步骤1.4,收到下一条信息数据,重复步骤1.1到步骤1.3,

步骤1.5,打包开始后之后,根据发送数据的时间的Merkle tree生成算法生成子节点哈希值信息,再把这条数据信息根据[key(HashData),value]的数据新式存入levelDB数据库中;

步骤1.6,在没有结束之前一直重复第1.1步到第1.5步;在规定的打包时间结束后,使用了Merkle tree生成算法得到了唯一的Merkle tree的根的哈希值RootHash,把这个哈希值记录到当前准备打包的区块的Merkle root这个属性的数据栏中,并完成区块链的区块数据输入和生成;

nonce:是一组随机数字,为了增加修改区块的难度;

Merkle root:存放这个区块的Merkle根的hash值;

步骤2,在merkel tree存储结构生成的区块链中快速查询数据的信息

步骤2.1,根据区块链上每一个区块上的发送交易时间区间[EarliestTime,LatestTime],这个区块的交易的TransmitTime的最小值为“EarliestTime”、交易的TransmitTime的最大值为“LatestTime”,确定查询的交易所在之区块;

步骤2.2,选择一个区块,已知这个区块中有SumT条交易,需要查询的交易发送的时间,即这条交易的TransmitTime为QTime,计算出选择查询编号ChooseNo:

ChooseNo=[(QTime-EarliestTime)/(LatestTime-EarliestTime)*SumT]

步骤2.3,查询第ChooseNo条交易信息,如果查询的这条数据的信息是需要的这条信息,输出这条具体的信息数据,如果不是需要的信息:

情况1:

如果

ChooseNo_Time<QTime<LatestTime

ChooseNo_Time是第ChooseNo条交易信息的发送数据的时间,先计算SumTY=SumT-ChooseNo:

ChooseNo=[(QTime-ChooseNo_Time)/(LatestTime-ChooseNo_Time)*SumTY]+ChooseNo再进入步骤3;

情况2:

如果

EarliestTime<QTime<ChooseNo_Time

先计SumTY=ChooseNo,ChooseNo_Time是第ChooseNo条交易信息的发送数据的时间:

ChooseNo=[(QTime-EarliestTime)/(ChooseNo_Time-EarliestTime)*SumTY]

再回到进入步骤3;

步骤3,按照发送数据的时间的Merkle tree生成算法;

步骤3.1,从交易池中取出一条判断这一条需要进入Merkle tree的数据的发送的时间是否迟于前一条已经进入Merkle tree的数据的发送的时间,如果迟于之前发送的时间,进行后面的步骤;如果早于之前的时间,跳过这条信息,返回步骤1,从交易池中抽取交易并检验,直到满足条件为止;

步骤3.2,对Merkle tree的结构进行操作;

情况1:

如果是第一条数据,创建初始跟节点及一个叶子节点,并把交易写入这个节点中;记录最早一条交易的传入的时间信息;

之后设置子节点左边的值Sonsleft的节点值即SonsLeft={Hash,PathValue},PathValue为叶子节点的路径,Hash为这个这个叶子节点的Hash值,更新跟节点PathValue等待下一条信息传入;

情况2:

如果数据编号number是偶数,创建一个叶子节点并把交易写入这个节点中;

设置子节点右边的值SonRight,即SonRight={Hash,PathValue},更新这个节点的上层所有相关的节点,等待下一条信息传入;

情况3:

如果传入的数据编号number是奇数,先建立一个叶子节点,并把交易写入这个节点中;再根据建树原则由叶子节点向根节点创建子节点;更新这个节点的上层所有相关的节点,等待下一条信息传入;

其中建树原则如下:

如果这个数据编号number是满足

n-1<log2number<n (1)

n为不比number大的最大2n的一个整数

继续满足条件

number-2n==1 (2)

原来根中Root=false,再更新PathValue,之后创建一个新的根,根中的属性为这4个值,左边的子节点SonLeft,右边的子节点SonRight,是否是跟节点Root,存储的Key的PathValue,新的根节点的SonLeft=旧的PathValue;

接下来补充的子节点数量为n;

这个奇点后的下m个奇点补充的子节点数量为n-m;

如果出现一个奇点不满足公式1后重新计算得到达到条件的n,重启原则;

步骤3.3,当Merkle tree的生成要结束时,即达到一定的数量或者在一定的时间内,记录最后一条进入Merkle tree的交易传入时间;全部节点更新完成后,把EarliestTime和LatestTime值输入到区块链中;

步骤1.6中Merkle root:存放这个区块的Merkle根的hash值,这个hash值也就是可以在levelDB中检索Merkle tree的起始key。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工业大学,未经浙江工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201911425122.4/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top