CN107247773B - 一种基于区块链的在分布式数据库中进行交易查询的方法 - Google Patents

一种基于区块链的在分布式数据库中进行交易查询的方法 Download PDF

Info

Publication number
CN107247773B
CN107247773B CN201710422493.1A CN201710422493A CN107247773B CN 107247773 B CN107247773 B CN 107247773B CN 201710422493 A CN201710422493 A CN 201710422493A CN 107247773 B CN107247773 B CN 107247773B
Authority
CN
China
Prior art keywords
block
transaction
inquiry
data base
distributed data
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.)
Active
Application number
CN201710422493.1A
Other languages
English (en)
Other versions
CN107247773A (zh
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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201710422493.1A priority Critical patent/CN107247773B/zh
Publication of CN107247773A publication Critical patent/CN107247773A/zh
Application granted granted Critical
Publication of CN107247773B publication Critical patent/CN107247773B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries

Abstract

本发明提供了一种基于区块链的在分布式数据库中进行交易查询的方法,包括如下步骤:步骤S101,设计Bloom过滤器,根据设计好的Bloom过滤器找出包含指定交易ID的候选区块;步骤S102,对候选区块进行遍历筛选,找出包含交易ID的目标交易所在的具体区块,然后构造验证消息VerifyMessage;步骤S103,通过解析VerifyMessage,对区块所在交易路径进行完整性验证;步骤S104,根据验证结果,返回对应信息,实现基于区块链的分布式数据库中任意交易的查询。采用本发明的方法,实现基于区块链的分布式数据库中任意交易的查询,提高区块链数据的利用率。

Description

一种基于区块链的在分布式数据库中进行交易查询的方法
技术领域
本发明涉及一种区块链技术领域,特别是涉及一种基于区块链的在分布式数据库中进行交易查询的方法。
背景技术
从数据的角度来看,区块链本质是一种分布式数据库,这里的“分布式”是指区块链技术利用链式存储结构不仅解决了分布式数据存储问题,也解决了存储时的分布式一致性问题。区块链技术利用分布式记账簿保证数据可靠传输和访问,利用可自动执行的智能合约来编程和操作数据。
区块链技术中涉及多项与交易查询有关的技术,如布隆过滤器(Bloom过滤器),是一个允许用户描述特定的关键词组合而不必精确表述的基于概率的过滤方法,Bloom过滤器实际上是一个很长的二进制向量和一系列随机映射函数,可以用于检索一个元素是否在一个集合中,Bloom过滤器的优点是空间效率和查询时间都远远超过了一般算法,缺点是有一定的误识别率和删除困难以及误差。另外,如Merkle树,是一种哈希二叉树,它是一种用作快速归纳和校验大规模数据完整性的数据结构。区块链中的每个区块都包含了当前区块的所有交易,用Merkle树表示,这种二叉树包含加密哈希值,在比特币网络中,Merkle树被用来归纳一个区块中的所有交易,同时生成整个交易集合的数字指纹,生成一棵完整的Merkle树需要递归地对哈希节点对进行哈希,并将新生成的哈希节点插入到Merkle树中,直到只剩一个哈希节点,该节点就是Merkle树的根,Merkle Tree大多用来进行比对以及验证处理,如比特币钱包服务就用Merkle Tree的机制来做“百分百准备金证明”,在处理比对或验证的应用场景中时,特别是在分布式环境下进行比对或验证时,Merkle Tree会大大减少数据的传输量以及计算的复杂度。
然而,目前基于区块链技术的比特币项目中没有一种这样的交易查询方式,即针对任意指定的交易,查询到交易的有效性及其所属区块,目前的情况下,如果只有一个交易ID,区块链的历史账本中的大量数据又得不到有效利用的情况下,想要判断这个交易是否有效是十分困难的。
发明内容
有鉴于此,本发明设计了一种基于区块链的在分布式数据库中进行交易查询的方法,包括如下步骤:
步骤S101,设计Bloom过滤器,根据设计好的Bloom过滤器找出包含指定交易ID的候选区块;
步骤S102,对候选区块进行遍历筛选,找出包含交易ID的目标交易所在的具体区块,然后构造验证消息VerifyMessage;
步骤S103,通过解析VerifyMessage,对区块所在交易路径进行完整性验证;
第四步S104,根据验证结果,返回对应信息,实现基于区块链的分布式数据库中任意交易的查询。
优选的,所述步骤S101中设计Bloom过滤器的具体方法为:对于每个区块内的所有交易ID,通过K个哈希函数进行哈希运算,然后将运算结果映射在一个大小为M的位数组内,每个交易ID经过哈希函数使Bloom过滤器里的位数组中的若干位由0置1,同一个区块中,经过区块中所有交易的输入,使得Bloom的位数组所有对应的位为1从而完成所述区块的Bloom过滤器设计。
优选的,所述位数组的大小M的最优值和所述哈希函数个数K的最优值是根据每个区块内的交易的数量N和允许误差的P计算得到的,其中,
优选的,所述哈希函数为如下的哈希函数:BKDRHash,SDBMHash,DJBHash,RSHash,JSHash,PJWHash,ELFHash,BKDRHash,SDBMHash,DEKHash。
优选的,所述步骤S101中根据设计好的Bloom过滤器找出包含指定交易ID的候选区块的具体方法为:将所述指定交易ID作为对应区块的Bloom过滤器的输入,查看所述位数组中的对应位是否都为1,如果对应的位都为1则该区块可能包含指定交易,所述区块成为所述候选区块;否则,如果对应的所有位并不都为1,那么所述指定交易一定不在所述区块中。
优选的,针对一个所述特定交易ID,通过已经设计好的所述Bloom过滤器会筛选出一个或多个所述候选区块。
优选的,所述步骤S102包括如下步骤:
(2-1)在目标区块中,首先根据区块中的所有交易及其相应顺序构造Merkle树;
(2-2)根据要查询的指定交易,构建Merkle树中,找出对应祖先节点,即找出从Merkle树根到交易节点的目标路径;
(2-3)由树根节点到叶子节点进行广度优先遍历,如果包含指定交易ID到树根的路径的目标路径位于当前节点的左子树,标志位数组添加标志位0,哈希值数组添加当前节点的右孩子的值,否则,如果目标路径位于当前节点的右子树,标志位数组添加标志位1,哈希值数组添加当前节点的左孩子的值;
(2-4)将构造好的标志位数组和哈希值数组连同区块头、交易数量、标志位数量和哈希值数量封装成VerifyMessage验证消息。
优选的,所述步骤S102找出交易所在的区块后,对Merkle树进行完整性的验证。
优选的,所述步骤S103中对所述解析VerifyMessage包括如下步骤:
(3-1)根据VerifyMessage中交易数量字段构建出一个空的Merkle树,同时初始化一个空栈,用于存储和计算哈希值;
(3-2)利用标志位数组和哈希值数组,对Merkle树进行广度优先遍历,重新计算Merkle树的树根;
(3-3)通过对比计算后的值和VerifyMessage中区块头的Merkle树根进行比较,如果相同,则能确保指定交易在该区块中;
(3-4)对VerifyMessage中区块头进行验证,保证其是位于区块链中的最长链中。
优选的,所述步骤S104,如果没有找到区块并且所述验证没有成功,则返回错误信息,若找出一个区块并且所述验证成功,则返回区块高度。
采用本发明的方法,实现基于区块链的分布式数据库中任意交易的查询,提高区块链数据的利用率。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:
图1为根据本发明一个实施例的基于区块链的分布式数据库中进行交易查询的方法流程示意图。
图2为根据本发明一个实施例的Bloom过滤器设计流程示意图。
图3为根据本发明一个实施例的VerifyMessage完整构造过程示意图,在整个验证消息的构造过程中,需要主要找到目标交易的路径,完成标志位数组和哈希数组的正确构造。
图4为根据本发明一个实施例的解析验证消息的过程示意图,在整个解析验证消息的过程中,通过标志位数组和哈希数组,通过广度优先遍历的方式,重新构造Merkle树根,最终用得到的哈希值与区块头中的Merkle树根进行比较。
具体实施方式
为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此的描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。
图1展示了本发明一个实施例的基于区块链的分布式数据库中进行交易查询的方法流程示意图,包括如下步骤:步骤S101,对于每个交易与区块的关系,需要先设计一个Bloom过滤器,在这个Bloom过滤器中,针对每个区块内,需要把所有的交易ID通过常用的哈希函数进行哈希运算,然后将结果映射在一个大小为M的位数组内。由于Bloom过滤器存在一定的错误率,所以可能针对一个特定的交易ID,通过已经设计好的Bloom过滤器会过滤出若干个区块;步骤S102,根据步骤S101得到的候选区块,需要对候选区块进行进一步的搜索检验,来确定包含目标交易ID的区块,若此时在候选区块中都找不到目标交易,就返回相应的错误信息。若找到了对应的区块,需要构造VerifyMessage,通过VerifyMessage用户可以完整的验证交易的有效性及所属区块;步骤S103,当客户端收到VerifyMessage之后,针对标志位数组和哈希值数组的变化,需要对其进行特定地解析来验证交易的有效性;步骤S104,根据指定的交易ID返回对应的结果(如果找到区块存在指定的交易,并且验证成功,返回区块高度;否则,如果存在一种甚至多种不满足要求的情况,需要返回相应错误信息)。
图2展示了本发明一个实施例的Bloom过滤器设计流程示意图,基本原理在于通过针对每个交易与区块的关系来遍历区块链交易和区块数据的方式设计对应的Bloom过滤器,具体方法为:对于每个区块内的所有交易ID,通过K个最优哈希函数进行哈希运算,然后将运算结果映射在一个大小为M的位数组内,每个交易ID经过哈希函数使Bloom过滤器里的位数组中的若干位由0置1,同一个区块中,经过区块中所有交易的输入,使得Bloom的位数组所有对应的位为1从而完成所述区块的Bloom过滤器设计。针对本实施例,Bloom过滤器设计的完整过程为:首先,遍历所有区块,对每个区块设计自己的Bloom过滤器,对于特定的区块X,假设当前区块中的交易数量为N个,因为Bloom过滤器是存在一定误差的,所以这里允许设计的Bloom过滤器的误差最大为P;在错误率不大于P的情况下,Bloom过滤器的为数组大小M最优的情况需要满足:
哈希函数个数选取的最优数目为:
这里的哈希函数可以选取如下的哈希函数:BKDRHash,SDBMHash,DJBHash,RSHash,JSHash,PJWHash,ELFHash,BKDRHash,SDBMHash,DEKHash。区块X中的所有交易ID都会经过所有哈希函数。
初始情况下,Bloom过滤器的位数组都初始化为0;图2中TXIDi通过哈希函数H1后得到对应位数组的值为M1,那么就在这个位数组中的第M1位处置1;交易TXIDi经过所有哈希函数之后,就会在位数组对应的几个位置都置1;对当前区块X的所有交易都执行同样的操作;当Bloom过滤器的位数组中某位已经被置1后,后续的操作不会对该位有任何影响,这样就完成了对区块X的Bloom过滤器的设计。对于其他所有区块都需要执行同样的操作,设计出自己的Bloom过滤器。
验证指定交易ID是否存在与某个区块中方法:对于每个区块已经根据图2设计出自己的Bloom过滤器,将指定交易ID依次对每个Bloom过滤器进行验证;对于区块X,当指定交易ID通过区块X的Bloom过滤器时,所有对应位数组位均为1,就假定指定交易ID是存在与区块X的;对于区块Y,当指定交易ID通过区块Y的Bloom过滤器时,位数组中对应位的值不都为1,就可以相信指定交易ID是不存在区块Y中的。由于Bloom过滤器是存在允许误差P的,所以对于指定交易,可能就会存在若干个候选区块;这时仅需简单的遍历就可找出指定ID所在的具体区块;当然也会存在指定交易ID不属于任何区块的可能。
对指定交易的验证过程中传输VerifyMessage的结构,VerifyMessage结构中总共有6个字段,分别是1)区块头,区块中的区块头的所有信息,区块头中的Merkle树根可以验证哈希结果是否一致,同时区块头本身也需要验证区块的有效性;2)交易数量,该区块中所有交易的数量;3)哈希值数量,下一字段“哈希值”的数量;4)哈希值数组,在该区块Merkle树中,包含针对指定交易的目标路径,用于存储交易验证的必要的哈希值;5)标志位数量,下一字段“标志位”的数量;6)标志位数组,在构造VerifyMessage的过程中,根据指定交易在Merkle树中具体目标路径,广度优先遍历过程中会产生的对应标识位。通过标志位和哈希值的配合能够验证交易在区块中的有效性,标志位由0和1组成,其中0表示当前节点的左孩子在目标路径中,1表示当前节点的右孩子在目标路径中。
图3为根据本发明一个实施例的VerifyMessage完整构造过程示意图,在整个验证消息的构造过程中,需要主要找到目标交易的路径,完成标志位数组和哈希数组的正确构造。具体步骤如下:
图3-a,在目标区块中,首先根据区块中的所有交易及其相应顺序构造Merkle树。
图3-b,根据要查询的指定交易,在图3-a中构建的Merkle树中,找出对应祖先节点,即找出从Merkle树根到交易节点的目标路径,图3-b中可以看到根节点的左孩子H13在目标路径上,将0标志位添加到标识位数组中。
图3-c,从Merkle树根开始,依次向其左右两个孩子进行下一步骤的操作。
图3-d,由于根节点的右孩子不再目标路径上,但是在验证过程中是必须指定的,所以将根节点的右孩子的值H14添加到哈希数组中。
图3-e,沿着目标路径继续向下,即移到根节点的左孩子,继续遍历当前节点两个子孩子,右孩子节点H10在目标路径上,所以将标志位1添加到标志位数组中。
图3-f,将非目标路径上节点的值H9添加到哈希数组中。
图3-g,沿着目标路径继续向下,即移到当前节点的右孩子。
继续遍历当前节点两个子孩子,右孩子节点H4在目标路径上,所以将标志位1添加到标志位数组中。
图3-h,将非目标路径上节点的的值H3添加到哈希数组中。
图3-j,沿着目标路径继续向下,即移到当前节点的右孩子。
此时已经遍历到目标交易节点,需要将标志1添加到标志位数组中,同时将目标节点哈希值添加到哈希数组中。
最后将构造好的标志位数组和哈希值数组连同区块头、交易数量、标志位数量和哈希值数量封装成VerifyMessage验证消息。
图4为根据本发明一个实施例的解析验证消息的过程示意图,根据接收到的VerifyMessage,需要对其进行解析验证,在整个解析验证消息的过程中,通过标志位数组和哈希数组,通过广度优先遍历的方式,重新构造Merkle树根,最终用得到的哈希值与区块头中的Merkle树根进行比较,具体步骤如下:
图4-a,首先根据VerifyMessage中交易数量字段构造空的Merkle树来模拟交易的验证过程,同时初始化一个空的栈,用于存储和计算哈希值。
图4-b,标志位数组中第一个标志位为0,说明目标路径中在左子树,所以更具广度优先遍历算法,先将哈希数组中的第一个哈希值H1放入树根的右节点。同时向栈中添加第一个哈希值H1,并添加一个Nil对象来,用于表示目标路径上的左节点需要计算,然后继续移向左孩子继续下面的操作。
图4-c,此时标识位为1,说明目标路径在当前节点的右子树,所以将哈希值H2添加到当前节点的左孩子处,同时将栈中的Nil对象弹出,并将哈希值H2压栈,由于没有遍历到叶子节点,所以还需要将Nil对象压栈,沿右孩子继续向下计算。
图4-d,此时标识位为1,说明目标路径在当前节点的右子树,所以将哈希值H3添加到当前节点的左孩子处,同时将栈中的Nil对象弹出,并将哈希值H2压栈,由于没有遍历到叶子节点,所以还需要将Nil对象压栈,沿右孩子继续向下计算。
图4-e,此时到达叶子节点,即指定交易的节点,当前的标识位为1,所以交易节点位于右子树,然后直接将H4放入该节点。将Nil对象从栈中弹出,然后将目标交易节点的哈希值H4压入栈中。
图4-f,此时已经将所有哈希值压入栈中,然后从后向前遍历标志位数组,当前标志位为1,所以将栈中的两个哈希值弹栈,因为标志位为1,所以在计算哈希值时,第一个弹栈的是右孩子的哈希值,第二个是左孩子的哈希值,计算H5=Hash(H3,H4),计算完哈希值之后将结果H5压栈。
图4-g,当前标志位为1,所以将栈中的两个哈希值弹栈,因为标志位为1,所以在计算哈希值时,第一个弹栈的是右孩子的哈希值,第二个是左孩子的哈希值,计算完哈希值之后将结果H6压栈。
图4-h,此时标志位为0,所以在进行哈希计算时,第一个弹栈的为左孩子,第二个弹栈的为右孩子,计算H7=Hash(H6,H1),经过哈希计算之后得到最终的Merkle树根H7。
通过H7和VerifyMessage的区块头中的Merkle树根的哈希值进行比较,验证交易的有效性。如果两者相同,则证明该交易存在与这个区块中并且是有效的,否则交易无效,返回对应的错误信息。
以下情况会导致交易的验证失败:
1、如果Hashes数组中存在没有完全利用的哈希值或者哈希值数量不够,则解析失败;
2、如果标志位数组中存在没有完全利用的标志位或者标识位数量不够,则解析失败;
3、如果最后的哈希值和区块头中的Merkle树根的哈希值不一致,则解析失败;
4、如果VerifyMessage中的区块头经过哈希算法之后,不在区块链中最长的那条链,则解析失败。
在实施例实施过程中存在如下一些情况:由于Bloom过滤器存在一定的错误率,所以可能针对一个特定的交易ID,通过已经设计好的Bloom过滤器会筛选出若干个区块。通过Bloom过滤器的筛选已经把交易所在的区块范围缩小到极少数的若干个区块,下一步,就分别对每个区块中的交易数据进行遍历,找出交易实际所在的区块,然而,针对某个特定交易,即使找出了几个候选区块,由于Bloom过滤器存在误差,也有可能致使这个交易不存在于任何区块中,即指定的交易无效。
虽然本发明已经参考特定的说明性实施例进行了描述,但是不会受到这些实施例的限定而仅仅受到附加权利要求的限定。本领域技术人员应当理解可以在不偏离本发明的保护范围和精神的情况下对本发明的实施例能够进行改动和修改。

Claims (8)

1.一种基于区块链的在分布式数据库中进行交易查询的方法,其特征在于包括如下步骤:
步骤S101,设计Bloom过滤器,根据设计好的Bloom过滤器找出包含指定交易ID的候选区块;
步骤S102,对候选区块进行遍历筛选,找出包含交易ID的目标交易所在的具体区块,然后构造验证消息VerifyMessage;
步骤S103,通过解析VerifyMessage,对区块所在交易路径进行完整性验证;
步骤S104,根据验证结果,返回对应信息,实现基于区块链的分布式数据库中任意交易的查询;
其中所述步骤S102包括如下步骤:
(2-1)在目标区块中,首先根据区块中的所有交易及其相应顺序构造Merkle树;
(2-2)根据要查询的指定交易,构建Merkle树中,找出对应祖先节点,即找出从Merkle树根到交易节点的目标路径;
(2-3)由树根节点到叶子节点进行广度优先遍历,如果包含指定交易ID到树根的路径的目标路径位于当前节点的左子树,标志位数组添加标志位0,哈希值数组添加当前节点的右孩子的值,否则,如果目标路径位于当前节点的右子树,标志位数组添加标志位1,哈希值数组添加当前节点的左孩子的值;
(2-4)将构造好的标志位数组和哈希值数组连同区块头、交易数量、标志位数量和哈希值数量封装成VerifyMessage验证消息。
2.根据权利要求1所述的一种基于区块链的在分布式数据库中进行交易查询的方法,其特征在于:所述步骤S101中设计Bloom过滤器的具体方法为:对于每个区块内的所有交易ID,通过K个哈希函数进行哈希运算,然后将运算结果映射在一个大小为M的位数组内,每个交易ID经过哈希函数使Bloom过滤器里的位数组中的若干位由0置1,同一个区块中,经过区块中所有交易的输入,使得Bloom的位数组所有对应的位为1从而完成所述区块的Bloom过滤器设计。
3.根据权利要求2所述的一种基于区块链的在分布式数据库中进行交易查询的方法,其特征在于:所述哈希函数采用如下的哈希函数:BKDRHash,SDBMHash,DJBHash,RSHash,JSHash,PJWHash,ELFHash,BKDRHash,SDBMHash,DEKHash。
4.根据权利要求1所述的一种基于区块链的在分布式数据库中进行交易查询的方法,其特征在于:所述步骤S101中根据设计好的Bloom过滤器找出包含指定交易ID的候选区块的具体方法为:将所述指定交易ID作为对应区块的Bloom过滤器的输入,查看所述位数组中的对应位是否都为1,如果对应的位都为1则该区块可能包含指定交易,所述区块成为所述候选区块;否则,如果对应的所有位并不都为1,那么所述指定交易一定不在所述区块中。
5.根据权利要求1所述的一种基于区块链的在分布式数据库中进行交易查询的方法,其特征在于:针对一个特定交易ID,通过已经设计好的Bloom过滤器会筛选出一个或多个候选区块。
6.根据权利要求1所述的一种基于区块链的在分布式数据库中进行交易查询的方法,其特征在于:所述步骤S102找出交易所在的区块后,对Merkle树进行完整性的验证。
7.根据权利要求1所述的一种基于区块链的在分布式数据库中进行交易查询的方法,其特征在于所述步骤S103中对所述解析VerifyMessage包括如下步骤:
(3-1)根据VerifyMessage中交易数量字段构建出一个空的Merkle树,同时初始化一个空栈,用于存储和计算哈希值;
(3-2)利用标志位数组和哈希值数组,对Merkle树进行广度优先遍历,重新计算Merkle树的树根;
(3-3)通过对比计算后的值和VerifyMessage中区块头的Merkle树根进行比较,如果相同,则能确保指定交易在该区块中;
(3-4)对VerifyMessage中区块头进行验证,保证其是位于区块链中的最长链中。
8.根据权利要求1所述的一种基于区块链的在分布式数据库中进行交易查询的方法,其特征在于所述步骤S104,如果没有找到区块并且所述验证没有成功,则返回错误信息,若找出一个区块并且所述验证成功,则返回区块高度。
CN201710422493.1A 2017-06-07 2017-06-07 一种基于区块链的在分布式数据库中进行交易查询的方法 Active CN107247773B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710422493.1A CN107247773B (zh) 2017-06-07 2017-06-07 一种基于区块链的在分布式数据库中进行交易查询的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710422493.1A CN107247773B (zh) 2017-06-07 2017-06-07 一种基于区块链的在分布式数据库中进行交易查询的方法

Publications (2)

Publication Number Publication Date
CN107247773A CN107247773A (zh) 2017-10-13
CN107247773B true CN107247773B (zh) 2018-05-15

Family

ID=60017877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710422493.1A Active CN107247773B (zh) 2017-06-07 2017-06-07 一种基于区块链的在分布式数据库中进行交易查询的方法

Country Status (1)

Country Link
CN (1) CN107247773B (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108304475B (zh) * 2017-12-28 2020-11-10 比特大陆科技有限公司 数据查询方法、装置及电子设备
CN108197226A (zh) * 2017-12-29 2018-06-22 山大地纬软件股份有限公司 Mptc账户状态树以及mptc区块链快速检索方法
CN108230109A (zh) * 2018-01-02 2018-06-29 罗梅琴 一种基于区块链技术的共享系统及方法
CN108288156B (zh) * 2018-01-04 2020-08-14 杭州复杂美科技有限公司 一种区块链交易的存储及排队方法
CN108282474B (zh) * 2018-01-18 2020-04-17 山东大学 基于区块链的数字资产交易一致性的维护方法
JP2019145925A (ja) * 2018-02-16 2019-08-29 株式会社bitFlyer ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
CN108389129B (zh) 2018-02-27 2020-12-04 创新先进技术有限公司 基于区块链的交易执行方法及装置、电子设备
CN108829691B (zh) * 2018-04-08 2020-07-28 浙江商业职业技术学院 一种农村电子商务数据存储方法
CN108629040A (zh) * 2018-05-11 2018-10-09 北京奇虎科技有限公司 数据持有证明方法、装置及系统
CN109325039A (zh) * 2018-06-07 2019-02-12 海南新软软件有限公司 一种区块链浏览器及区块链信息浏览方法
CN108595720B (zh) * 2018-07-12 2020-05-19 中国科学院深圳先进技术研究院 一种区块链时空数据查询方法、系统及电子设备
CN109189782A (zh) * 2018-08-02 2019-01-11 哈尔滨工程大学 一种区块链商品交易查询中的索引方法
CN109087101B (zh) * 2018-08-07 2021-09-07 北京三快在线科技有限公司 交易校验方法、装置、存储介质及电子设备
CN109583896A (zh) * 2018-11-30 2019-04-05 元灵通智能科技(深圳)有限公司 交易验证方法、区块链节点及存储介质
CN109684408A (zh) * 2018-12-07 2019-04-26 深圳市智税链科技有限公司 区块链系统的数据管理方法、装置、介质及电子设备
CN110049087B (zh) * 2018-12-28 2020-05-05 阿里巴巴集团控股有限公司 一种联盟链的可信度验证方法、系统、装置及设备
CN110457917B (zh) 2019-01-09 2022-12-09 腾讯科技(深圳)有限公司 滤除区块链数据中的非法内容的方法及相关装置
CN110046509B (zh) * 2019-01-31 2020-08-04 阿里巴巴集团控股有限公司 一种对写入块链的交易进行隐匿的方法及装置
CN111640012A (zh) * 2019-03-01 2020-09-08 中国银联股份有限公司 一种区块链交易追溯的方法及装置
US10917231B2 (en) 2019-04-04 2021-02-09 Advanced New Technologies Co., Ltd. Data storage method, apparatus, system and device
US11055277B2 (en) 2019-04-04 2021-07-06 Advanced New Technologies Co., Ltd. Integrity verification method, apparatus, and system and device for data in a blockchain-type ledger
CN112487492B (zh) * 2019-04-04 2023-11-17 创新先进技术有限公司 数据验证方法、系统及设备
CN110162540B (zh) * 2019-04-17 2023-06-06 平安科技(深圳)有限公司 区块链账本数据的查询方法、电子装置及存储介质
CN110175840B (zh) * 2019-04-19 2021-08-03 华中科技大学 联盟链中实现轻钱包机制的方法、客户端、联盟链及系统
CN111768202A (zh) * 2019-04-24 2020-10-13 北京京东尚科信息技术有限公司 一种支付验证方法、支付验证节点、全量节点及存储介质
CN110503558B (zh) * 2019-08-29 2023-10-03 深圳前海微众银行股份有限公司 一种基于区块链系统的处理方法及装置
CN110704438B (zh) * 2019-09-26 2023-10-03 深圳前海微众银行股份有限公司 一种区块链中布隆过滤器的生成方法及装置
CN111461711B (zh) * 2020-03-12 2021-12-14 上海宓猿信息技术有限公司 一种区块链交易的追踪系统
CN111611215B (zh) * 2020-04-07 2023-07-11 布比(北京)网络技术有限公司 一种基于区块链的网贷风险数据共享方法及系统
CN111667264B (zh) * 2020-05-08 2023-04-14 深圳启元信息服务有限公司 区块数据的传输方法、装置、电子设备及非易失性计算机存储介质
CN111694809B (zh) * 2020-06-11 2021-05-04 杭州云链趣链数字科技有限公司 基于区块链的文件过滤方法、装置和计算机设备
CN112015734B (zh) * 2020-08-06 2021-05-07 华东师范大学 一种面向区块链的紧凑Merkle多值证明并行生成及验证方法
CN113239078B (zh) * 2021-05-17 2022-09-20 国网河南省电力公司信息通信公司 一种基于联盟链的数据快速查询方法
CN113612761B (zh) * 2021-07-30 2022-03-22 立信(重庆)数据科技股份有限公司 一种基于区块链的调研数据上链方法及系统
CN114756603B (zh) * 2022-05-23 2023-04-07 天津大学 一种轻量级区块链高效可验证查询方法
CN115082068B (zh) * 2022-07-27 2022-11-25 北京大学 支持聚合的最小默克尔证明生成及区块链交易验证方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10340038B2 (en) * 2014-05-13 2019-07-02 Nant Holdings Ip, Llc Healthcare transaction validation via blockchain, systems and methods
US20170300877A1 (en) * 2014-09-23 2017-10-19 Spondoolies Tech Ltd. System and method for providing shared hash engines architecture for a bitcoin block chain
CN106503981A (zh) * 2016-10-19 2017-03-15 江苏通付盾科技有限公司 简单支付验证节点交易查询方法及系统
CN106682907A (zh) * 2016-12-10 2017-05-17 江苏恒为信息科技有限公司 区块链数据对比及共识方法

Also Published As

Publication number Publication date
CN107247773A (zh) 2017-10-13

Similar Documents

Publication Publication Date Title
CN107247773B (zh) 一种基于区块链的在分布式数据库中进行交易查询的方法
US11651036B2 (en) Integrated index blocks and searching in blockchain systems
Colton Automated theory formation in pure mathematics
Apt Principles of constraint programming
CN109345388A (zh) 区块链智能合约验证方法、装置及存储介质
CN108228728B (zh) 一种参数化的论文网络节点表示学习方法
CN110235162B (zh) 区块链系统数据处理方法和区块的生成方法
Gaspers et al. Feedback vertex sets in tournaments
Bialopetravičius et al. Deriving star cluster parameters with convolutional neural networks-II. Extinction and cluster-background classification
CN104102694B (zh) 树形节点排序方法和树形节点排序装置
CN101399738A (zh) 提供下载推荐服务的方法、结构化对等网络和其中的节点
CN103559318B (zh) 对异质信息网络包含的对象进行排序的方法
Marckert et al. A new combinatorial representation of the additive coalescent
CN113988638A (zh) 一种通用关联关系强度测算方法、装置、电子设备和介质
CN110992194A (zh) 一种基于含属性的多进程采样图表示学习模型的用户参考指数算法
CN106294456A (zh) 机器学习的方法和设备
CN106960064B (zh) 一种基于自学习的几何辅助线添加方法
CN117235285B (zh) 融合知识图谱数据的方法及装置
CN115793992B (zh) 数据存储方法、装置、电子设备及可读存储介质
CN112015734B (zh) 一种面向区块链的紧凑Merkle多值证明并行生成及验证方法
CN117151433B (zh) 一种基于云的智能制造服务供需匹配评估方法和装置
Böttcher et al. The tripartite Ramsey number for trees
Axelsen et al. Degree landscapes in scale-free networks
CN113641736B (zh) 展示会话阻塞源头的方法及装置
Al-Baghdadi Computing top-k closeness centrality in unweighted undirected graphs revisited

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
GR01 Patent grant
GR01 Patent grant