发布信息

区块链数据查询方法和装置与流程 专利技术说明

作者:admin      2023-06-29 09:34:08     395



计算;推算;计数设备的制造及其应用技术1.本公开涉及区块链技术领域,特别涉及一种区块链数据查询方法和装置。背景技术:2.当前,越来越多的业务使用联盟链解决中心化以及数据篡改的问题。相关技术中,业务系统去区块链上检索区块内打包的交易信息,以及智能合约抛出的相关事件。3.随着时间的推移,上链的数据越来越多,业务系统频繁地查询区块链会对整个区块链网络造成压力。并且,由于每个业务系统都需要构建自己的查询服务,这造成了大量的冗余工作。技术实现要素:4.针对上述技术问题,本公开提出了一种解决方案,使得各个业务以及去中心化应用(dapp)能够通过索引网络高效、安全地查询区块链上的数据,无需构建自己的查询服务,降低区块链系统的查询压力。5.根据本公开的第一方面,提供了一种区块链数据查询方法,由索引网络中的索引节点执行,包括:响应于查询方的区块链数据查询请求,从索引数据库中获取对应的索引数据,所述索引数据是根据区块链中的区块数据生成的;对所述索引数据进行多方签名;在对所述多方的签名验证通过以后,基于所述多方的签名得到合成签名;将携带所述合成签名的索引数据发送至所述查询方。6.在一些实施例中,对所述索引数据进行多方签名包括:在参与多方签名的每一个索引节点中,根据随机数生成第一签名参数,并对所述第一签名参数进行广播;根据生成的所述第一签名参数和接收到的来自其他方的第一签名参数,生成加密参数;根据所述索引节点的私钥和所述加密参数,对待签名的索引进行加密处理,以得到第二签名参数;根据所述第一签名参数和所述第二签名参数,得到所述索引节点对所述索引的签名。7.在一些实施例中,根据所述索引节点的私钥和所述加密参数,对待签名的索引进行加密处理,以得到第二签名参数包括:根据多项式函数对所述索引节点的私钥进行处理得到第一中间结果;根据所述多项式函数对待签名的索引进行处理得到第二中间结果;根据所述加密参数和所述随机数,得到第三中间结果;根据所述第一中间结果、第二中间结果和第三中间结果,得到第二签名参数。8.在一些实施例中,采用如下公式计算第二签名参数:[0009][0010]其中,si为参与多方签名的第i个索引节点生成的第二签名参数,f(xi)为基于多项式函数对参与多方签名的第i个索引节点的私钥xi进行处理得到的第一中间结果,m’为基于多项式函数对索引进行处理得到的第二中间结果,xj为参与多方签名的第j个索引节点的私钥,t为参与多方签名的索引节点总数,∏为求乘积运算符,ki为随机数,q为安全素数,ki×r mod q为第三中间结果。[0011]在一些实施例中,采用如下公式生成第一签名参数:[0012][0013]其中,ri为第一签名参数,g为有限域上的q阶生成元,mod为取模运算符,p为安全素数,ki为随机数。[0014]在一些实施例中,采用如下公式生成加密参数:[0015][0016]其中,r为加密参数,ri为第一签名参数,mod为取模运算符,p为安全素数。[0017]在一些实施例中,所述索引节点为具有认证中心颁发的指定数字证书的节点。[0018]在一些实施例中,所述索引节点为边缘节点。[0019]在一些实施例中,从索引数据库中获取对应的索引数据包括:将所述区块链数据查询请求对应的查询语句,转换成索引数据库对应的查询语句;根据转换后的查询语句查询索引数据库,以得到对应的索引数据。[0020]根据本公开的第二方面,提供了一种区块链数据查询装置,设置于索引网络中的索引节点,包括:获取模块,被配置为响应于查询方的区块链数据查询请求,从索引数据库中获取对应的索引数据,所述索引数据是根据区块链中的区块数据生成的;签名模块,被配置为对所述索引数据进行多方签名;合成模块,被配置为在对所述多方的签名验证通过以后,基于所述多方的签名得到合成签名;发送模块,被配置为将携带所述合成签名的索引数据发送至所述查询方。[0021]在一些实施例中,所述签名模块被配置为:在参与多方签名的每一个索引节点中,根据随机数生成第一签名参数,并对所述第一签名参数进行广播;根据生成的所述第一签名参数和接收到的来自其他方的第一签名参数,生成加密参数;根据所述索引节点的私钥和所述加密参数,对待签名的索引进行加密处理,以得到第二签名参数;根据所述第一签名参数和所述第二签名参数,得到所述索引节点对所述索引的签名。[0022]在一些实施例中,所述获取模块被配置为:将所述区块链数据查询请求对应的查询语句,转换成索引数据库对应的查询语句;根据转换后的查询语句查询索引数据库,以得到对应的索引数据。[0023]根据本公开的第三方面,提供了一种区块链数据查询装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令,执行上述任一实施例所述的区块链数据查询方法。[0024]根据本公开的第四方面,提供了一种计算机可存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上述任一实施例所述的区块链数据查询方法。[0025]在上述实施例中,使得各个业务以及去中心化应用(dapp)能够通过索引网络高效、安全地查询区块链上的数据,无需构建自己的查询服务,降低区块链系统的查询压力。附图说明[0026]构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。[0027]参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:[0028]图1是示出根据本公开一些实施例的区块链数据查询方法的流程图;[0029]图2是示出根据本公开一些实施例的对索引数据进行多方签名的方法的流程图;[0030]图3是示出根据本公开另一些实施例的区块链数据查询方法的流程图;[0031]图4是示出根据本公开一些实施例的索引网络的架构示意图;[0032]图5是示出根据本公开一些实施例的区块链数据查询装置的框图;[0033]图6是示出根据本公开另一些实施例的区块链数据查询装置的框图;[0034]图7是示出根据本公开再一些实施例的区块链数据查询装置的框图;[0035]图8是示出用于实现本公开一些实施例的计算机系统的框图。具体实施方式[0036]现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。[0037]同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。[0038]以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。[0039]对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。[0040]在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。[0041]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。[0042]图1是示出根据本公开一些实施例的区块链数据查询方法的流程图。如图1所示,本公开实施例的区块链数据查询方法由索引网络中的索引节点执行,包括:[0043]步骤s110:响应于查询方的区块链数据查询请求,从索引数据库中获取对应的索引数据。[0044]在步骤s110中,索引节点在接收到查询方的区块链数据查询请求后,根据该区块链数据查询请求从索引数据库中获取对应的索引数据。[0045]其中,索引数据是索引网络中的索引节点根据区块链中的区块数据生成的。索引网络为包括多个索引节点的去中心化架构,可与多种区块链网络进行对接,比如联盟链、公链等等。[0046]在一些实施例中,索引节点根据数据结构描述文件从区块链中获取区块数据,并根据区块数据生成索引数据。其中,数据结构描述文件定义了感兴趣的智能合约、监听的事件和如何将事件数据映射到索引节点中存储起来的方式。在数据结构描述文件被部署到区块链网络中的智能合约之后,索引节点同步区块链中的区块数据,找到与数据结构描述文件相关的数据,在监听到数据结构描述文件定义的指定事件后,运行预先定义的映射处理函数,构建或者更新相关的索引数据。[0047]在一些实施例中,根据数据结构描述文件的不同,创建了不同的索引数据库。在这些实施例中,在接收到查询方的区块链数据查询请求之后,先根据区块链数据查询请求确定待查询数据所在的索引数据库,再在相应地索引数据库中进行查询即可,从而无需查询所有的索引数据库,进一步提高区块链数据的查询效率。[0048]步骤s120:对索引数据进行多方签名。[0049]为了提高查询出的索引数据的真实性、安全性,在从索引数据库中查询出索引数据之后,需要通过多个索引节点对索引数据进行多方签名。[0050]在一些实施例中,由n个索引节点分别、独自地对索引数据进行签名,并将独自签名后的索引数据发送至签名合成者。签名合成者在接收到n份签名后的索引数据后,对多方的签名进行验证。其中,n为大于1的整数。[0051]在另一些实施例中,由n个索引节点先后对索引数据进行签名,并由最后一个签名者将携带n个签名的索引数据发送至签名合成者。签名合成者再接收到携带n个签名的索引数据后,对多方的签名进行验证。其中,n为大于1的整数。[0052]步骤s130:在对多方的签名验证通过以后,基于多方的签名得到合成签名。[0053]在一些实施例中,签名合成方在判断出多方签名中的有效签名数量大于或等于预设阈值时,确认多方签名验证通过;在判断出多方签名中的有效签名数量小于预设阈值时,确认多方签名验证未通过。其中,预设阈值可根据实际需求进行灵活设置。比如,当签名方数量n为8时,预设阈值设为6、7或者8。在对多方的签名验证通过后,根据多方的签名得到合成签名。[0054]步骤s140:将携带合成签名的索引数据发送至查询方。[0055]在本公开实施例中,通过以上步骤能够使得各个业务以及去中心化应用(dapp)通过索引网络高效、安全地查询区块链上的数据,无需构建自己的查询服务,降低区块链系统的查询压力。[0056]图2是示出根据本公开一些实施例的对索引数据进行多方签名的方法的流程图。如图2所示,本公开实施例的对索引数据进行多方签名的方法包括:[0057]步骤s121:在参与多方签名的每一个索引节点中,根据随机数生成第一签名参数,并对第一签名参数进行广播。[0058]在一些实施例中,设参与多方签名的索引节点为p1,p2,…,pt,p、q为安全大素数,g为有限域上的q阶生成元。对于参与多方签名的任一个索引节点pi来说,从区间[1,q-1]中选择一个随机数ki,根据随机数ki生成第一签名参数。[0059]示例性地,可采用如下公式生成第一签名参数:[0060][0061]其中,ri为第一签名参数,g为有限域上的q阶生成元,mod为取模运算符,p为安全素数,ki为随机数。[0062]步骤s122:根据生成的第一签名参数和接收到的来自其他方的第一签名参数,生成加密参数。[0063]在一些实施例中,对于参与多方签名的任一个索引节点pi来说,采用如下公式生成加密参数:[0064][0065]其中,r为加密参数,ri为第一签名参数,mod为取模运算符,p为安全素数,∏为求乘积运算符,t为参与多方签名的索引节点数量。[0066]步骤s123:根据索引节点的私钥和加密参数,对待签名的索引进行加密处理,以得到第二签名参数。[0067]在一些实施例中,步骤s123包括:根据多项式函数对索引节点的私钥进行处理得到第一中间结果;根据多项式函数对待签名的索引数据进行处理得到第二中间结果;根据加密参数和随机数,得到第三中间结果;根据第一中间结果、第二中间结果和第三中间结果,得到第二签名参数。[0068]在一些实施例中,采用的多项式函数如下式所示:[0069]f(x)=ct-1xt-1+…+c1x+comod pq[0070]在这些实施例中,采用多项式函数f(x)对参与多方签名的任一个索引节点pi的私钥xi进行处理得到第一中间结果f(xi);[0071]采用多项式函数f(x)对待签名的索引数据m进行处理得到第二中间结果m’;[0072]将加密参数和随机数代入如下公式,得到第三中间结果:[0073]ki×r mod q[0074]接下来,将第一中间结果、第二中间结果、第三中间结果代入如下公式,计算得到参与多方签名的第i个索引节点生成的第二签名参数:[0075][0076]其中,si为参与多方签名的第i个索引节点生成的第二签名参数,f(xi)为基于多项式函数对参与多方签名的第i个索引节点的私钥xi进行处理得到的第一中间结果,m’为基于多项式函数对索引进行处理得到的第二中间结果,xj为参与多方签名的第j个索引节点的私钥,t为参与多方签名的索引节点总数,∏为求乘积运算符,ki为随机数,q为安全素数,ki×r mod q为第三中间结果。[0077]步骤s124:根据第一签名参数和第二签名参数,得到索引节点对索引数据的签名。[0078]在一些实施例中,将第一签名参数和第二签名参数构成的集合(ri,si)作为参与多方签名的第i个索引节点对索引数据的签名。[0079]对于参与多方签名的每一个索引节点,可分别按照步骤s121至步骤s124生成对索引数据的签名,并将自己生成的签名(可称为部分签名)发送给签名合成者。[0080]在本公开实施例中,通过按照以上步骤进行多方签名,能够提高多方签名的安全性,降低查询出的索引数据被篡改的可能性,保证查询出的索引数据的真实性。[0081]在一些实施例中,签名合成者在得到多个签名方按照步骤s121至步骤s124生成的部分签名后,可根据如下等式是否成立验证部分签名是否为有效签名:[0082][0083]其中,yi为参与多方签名的第i个索引节点的公钥,yj,i为根据参与多方签名的第i个索引节点的公钥和第j个索引节点的公钥确定的参数,且j≠i,xi为参与多方签名的第i个索引节点的私钥,xk为参与多方签名的第k个索引节点的私钥,r为加密参数,ri为第一签名参数,si为参与多方签名的第i个索引节点生成的第二签名参数,mod为取模运算符,p为安全素数,∏为求乘积运算符,t为参与多方签名的索引节点数量,m为待签名的索引数据。[0084]若上述等式成立,则部分签名为有效签名;若上述等式不成立,则部分签名为无效签名。[0085]图3是示出根据本公开另一些实施例的区块链数据查询方法的流程图。如图3所示,本公开实施例的区块链数据查询方法包括:[0086]步骤s100:从区块链中获取区块数据,根据区块数据生成索引数据。[0087]索引网络为包括多个索引节点的去中心化架构,可与多种区块链网络进行对接,比如联盟链、公链等等。[0088]在一些实施例中,索引节点根据数据结构描述文件从区块链中获取区块数据,并根据区块数据生成索引数据。其中,数据结构描述文件定义了感兴趣的智能合约、监听的事件和如何将事件数据映射到索引节点中存储起来的方式。在数据结构描述文件被部署到区块链网络中的智能合约之后,索引节点同步区块链中的区块数据,找到与数据结构描述文件相关的数据,在监听到数据结构描述文件定义的指定事件后,运行预先定义的映射处理函数,构建或者更新相关的索引数据。[0089]在一些实施例中,索引节点为具有认证中心(ca)颁发的指定数字证书的节点。具体实施时,在接收到节点的加入索引网络的请求时,可判断该节点是否具有ca颁发的指定数字证书;若该节点具有ca颁发的指定数字证书,则允许该节点加入索引网络;若该节点不具有ca颁发的指定数字证书,则不允许该节点加入索引网络。通过允许具有ca颁发的指定数字证书的节点加入索引网络,而禁止不具有ca颁发的指定数字证书的节点加入索引网络,实现了对节点加入索引网络的权限控制,有助于提高索引网络索引数据的安全性。[0090]在一些实施例中,索引节点为边缘节点。通过令边缘节点作为索引节点,能够将区块链数据索引、查询功能下沉到更靠近用户侧,实现高带宽、低时延的业务服务。[0091]在一些实施例中,在步骤s100之前,还包括:开发者将数据结构描述文件部署到区块链节点注册表智能合约中,以告诉索引节点需要索引哪些区块数据、如何索引这些区块数据,供使用者使用。对于业务用户来说,他们只需要付费查询去中心化的索引网络,即可高效、安全地获得想要的区块链数据。[0092]s111:接收查询方的区块链数据查询请求。[0093]在一些实施例中,查询方使用graphql(是一种针对图状数据进行查询特别有优势的查询语言)来检索区块链网络上已经被索引的数据。具体实施时,查询方(比如去中心化应用或者业务系统)向索引节点发送区块链数据查询请求。[0094]步骤s112:将区块链数据查询请求对应的查询语句,转换成索引数据库对应的查询语句。[0095]在一些实施例中,索引节点在接收到区块链数据查询请求后,将区块链数据查询请求对应的图状数据查询语句转换成索引数据库对应的查询语句。例如,假设索引数据库为关系型数据库,则将区块链数据查询请求对应的图状数据查询语句转换成结构化查询语句(sql)。[0096]步骤s113:根据转换后的查询语句查询索引数据库,以得到对应的索引数据。[0097]在一些实施例中,根据数据结构描述文件的不同,创建了不同的索引数据库。在这些实施例中,在接收到查询方的区块链数据查询请求之后,先根据区块链数据查询请求确定待查询数据所在的索引数据库,再在相应地索引数据库中进行查询即可,从而无需查询所有的索引数据库,进一步提高区块链数据查询效率。[0098]步骤s120:对索引数据进行多方签名。[0099]为了提高查询出的索引数据的真实性,防止索引数据被恶意篡改,在从索引数据中查询出索引数据之后,需要通过多个索引节点对索引数据进行多方签名。[0100]在一些实施例中,由n个索引节点分别、独自地对索引数据进行签名,并将独自签名后的索引数据发送至签名合成者。签名合成者在接收到n份签名后的索引数据后,对多方的签名进行验证。其中,n为大于1的整数。[0101]在另一些实施例中,由n个索引节点先后对索引数据进行签名,并由最后一个签名者将携带n个签名的索引数据发送至签名合成者。签名合成者再接收到携带n个签名的索引数据后,对多方的签名进行验证。其中,n为大于1的整数。[0102]步骤s130:在对多方的签名验证通过以后,基于多方的签名得到合成签名。[0103]在一些实施例中,签名合成方在判断出多方签名中的有效签名数量大于或等于预设阈值时,确认多方签名验证通过;在判断出多方签名中的有效签名数量小于预设阈值时,确认多方签名验证未通过。其中,预设阈值可根据实际需求进行灵活设置。比如,当签名方数量n为8时,预设阈值设为6、7或者8。在对多方的签名验证通过后,根据多方的签名得到合成签名。[0104]步骤s140:将携带合成签名的索引数据发送至查询方。[0105]在本公开实施例中,去中心化的索引网络通过步骤s100整理、归纳区块链数据,便于后续用户高效查询区块链数据;通过步骤s110至s140,实现了从索引数据库中高效、安全地查询出所需的区块链数据。[0106]在本公开实施例中,通过去中心化的索引网络对区块链数据进行索引,使得各个业务以及去中心化应用都可以通过该索引网络高效地查询区块链上的数据;在从索引数据库中查询出索引数据之后,通过对索引数据进行多方签名、验证、生成合成签名,保证了索引网络中的索引数据的真实性和安全性,降低索引数据被篡改的可能性;通过将索引查询下沉到边缘节点,能够实现高带宽、低时延的索引查询服务,提高索引网络的索引查询性能。[0107]图4是示出根据本公开一些实施例的索引网络的架构示意图。如图4所示,去中心化索引网络与区块链网络对接,比如去中心化索引网络与区块链网络1、区块链网络2对接,用于索引区块链网络上的数据。区块链用户可通过查询去中心化索引网络,而无需查询区块链网络1和区块链网络2,高效获取区块链数据。[0108]去中心化索引网络基于去中心化的区块链数据索引协议构建,比如,可基于the graph(一种去中心化的区块链数据索引协议)构建。在区块链数据索引协议中,涉及包括索引者、业务方、监督者、用户在内的多种角色。其中,索引者运行索引网络节点,对接多种区块链网络,提供数据索引、查询服务,根据业务方提供的子图文件(一种数据结构描述文件)从区块链上检索出数据供用户使用,同时提供节点的运行情况供用户选择。进一步,索引节点可以部署到边缘,从而将查询索引能力下沉到边缘节点。业务方定义哪些数据给用户索引。监督者对索引者提供的数据进行监督,可以设有经济处罚。用户向索引节点查询区块链上的数据,可以向索引节点付费使用。[0109]图5是示出根据本公开一些实施例的区块链数据查询装置的框图。如图5所示,区块链数据查询装置分布式地设置于索引网络的索引节点中,包括:获取模块510、签名模块520、合成模块530、发送模块540。[0110]获取模块510,被配置为响应于查询方的区块链数据查询请求,从索引数据库中获取对应的索引数据。[0111]索引节点中的获取模块510在接收到查询方的区块链数据查询请求后,根据该区块链数据查询请求从索引数据库中获取对应的索引数据。[0112]其中,索引数据是索引网络中的索引节点根据区块链中的区块数据生成的。索引网络为包括多个索引节点的去中心化架构,可与多种区块链网络进行对接,比如联盟链、公链等等。[0113]在一些实施例中,根据数据结构描述文件的不同,创建了不同的索引数据库。在这些实施例中,在接收到查询方的区块链数据查询请求之后,获取模块510先根据区块链数据查询请求确定待查询数据所在的索引数据库,再在相应地索引数据库中进行查询即可,从而无需查询所有的索引数据库,进一步提高区块链数据的查询效率。[0114]在一些实施例中,索引节点为具有认证中心(ca)颁发的指定数字证书的节点。具体实施时,在接收到节点的加入索引网络的请求时,可判断该节点是否具有ca颁发的指定数字证书;若该节点具有ca颁发的指定数字证书,则允许该节点加入索引网络;若该节点不具有ca颁发的指定数字证书,则不允许该节点加入索引网络。通过允许具有ca颁发的指定数字证书的节点加入索引网络,而禁止不具有ca颁发的指定数字证书的节点加入索引网络,实现了对节点加入索引网络的权限控制,有助于提高索引网络索引数据的安全性。[0115]在一些实施例中,索引节点为边缘节点。通过令边缘节点作为索引节点,能够将区块链数据索引、查询功能下沉到更靠近用户侧,实现高带宽、低时延的业务服务。[0116]签名模块520,被配置为对索引数据进行多方签名。[0117]为了提高索引数据的安全性,在查询出索引数据之后,需要通过分布在多个索引节点中的签名模块520对索引数据进行多方签名。[0118]在一些实施例中,由n个索引节点中的签名模块520分别、独自地对索引数据进行签名,并将独自签名后的索引数据发送至签名合成者。签名合成者在接收到n份签名后的索引数据后,对多方的签名进行验证。其中,n为大于1的整数。[0119]在另一些实施例中,由n个索引节点中的签名模块520先后对索引数据进行签名,并由最后一个签名者将携带n个签名的索引数据发送至签名合成者。签名合成者再接收到携带n个签名的索引数据后,对多方的签名进行验证。其中,n为大于1的整数。[0120]合成模块530,被配置为在对多方的签名验证通过以后,基于多方的签名得到合成签名。[0121]在一些实施例中,设置在签名合成方中的合成模块530在判断出多方签名中的有效签名数量大于或等于预设阈值时,确认多方签名验证通过;在判断出多方签名中的有效签名数量小于预设阈值时,确认多方签名验证未通过。其中,预设阈值可根据实际需求进行灵活设置。比如,当签名方数量n为8时,预设阈值设为6、7或者8。在对多方的签名验证通过后,根据多方的签名得到合成签名。[0122]发送模块540,被配置为将携带合成签名的索引数据发送至查询方。[0123]在本公开实施例中,通过以上装置能够使得各个业务以及去中心化应用(dapp)通过索引网络高效、安全地查询区块链上的数据,无需构建自己的查询服务,降低区块链系统的查询压力。[0124]图6是示出根据本公开另一些实施例的区块链数据查询装置的框图。如图6所示,本公开实施例的区块链数据查询装置分布式地设置于索引网络的索引节点中,包括:生成模块501、获取模块510、签名模块520、合成模块530、发送模块540。[0125]生成模块501,被配置为从区块链中获取区块数据,根据区块数据生成索引数据。[0126]在一些实施例中,生成模块510根据数据结构描述文件从区块链中获取区块数据,并根据区块数据生成索引数据。其中,数据结构描述文件定义了感兴趣的智能合约、监听的事件和如何将事件数据映射到索引节点中存储起来的方式。在数据结构描述文件被部署到区块链网络中的智能合约之后,索引节点同步区块链中的区块数据,找到与数据结构描述文件相关的数据,在监听到数据结构描述文件定义的指定事件后,运行预先定义的映射处理函数,构建或者更新相关的索引数据。[0127]获取模块510,响应于查询方的区块链数据查询请求,从索引数据库中获取对应的索引数据。[0128]在一些实施例中,获取模块510接收查询方的区块链数据查询请求,将区块链数据查询请求对应的查询语句,转换成索引数据库对应的查询语句;根据转换后的查询语句查询索引数据库,以得到对应的索引数据。[0129]在一些实施例中,查询方使用graphql(是一种针对图状数据进行查询特别有优势的查询语言)来检索区块链网络上已经被索引的数据。索引节点在接收到区块链数据查询请求后,将区块链数据查询请求对应的图状数据查询语句转换成索引数据库对应的查询语句。例如,假设索引数据库为关系型数据库,则将区块链数据查询请求对应的图状数据查询语句转换成结构化查询语句(sql)。然后,根据转换后的查询语句查询索引数据库,以得到与区块链数据查询请求对应的索引数据。[0130]签名模块520,被配置为被配置为对索引数据进行多方签名。[0131]为了提高查询出的索引数据的真实性、安全性,在生成索引数据之后,需要通过分布在多个索引节点中的签名模块520对索引数据进行多方签名。[0132]在一些实施例中,签名模块520对索引数据进行多方签名包括:在参与多方签名的每一个索引节点中,根据随机数生成第一签名参数,并对所述第一签名参数进行广播;根据生成的所述第一签名参数和接收到的来自其他方的第一签名参数,生成加密参数;根据所述索引节点的私钥和所述加密参数,对待签名的索引进行加密处理,以得到第二签名参数;根据所述第一签名参数和所述第二签名参数,得到所述索引节点对所述索引的签名。[0133]合成模块530,被配置为在对多方的签名验证通过以后,基于多方的签名得到合成签名。[0134]在一些实施例中,合成模块530在判断出多方签名中的有效签名数量大于或等于预设阈值时,确认多方签名验证通过;在判断出多方签名中的有效签名数量小于预设阈值时,确认多方签名验证未通过。其中,预设阈值可根据实际需求进行灵活设置。比如,当签名方数量n为8时,预设阈值设为6、7或者8。在对多方的签名验证通过后,根据多方的签名得到合成签名。[0135]发送模块540,被配置为将携带合成签名的索引数据发送至查询方。[0136]在本公开实施例中,通过去中心化的索引网络对区块链数据进行索引,使得各个业务以及去中心化应用都可以通过该索引网络高效地查询区块链上地数据;在接收到区块链数据查询请求后,通过对从索引数据库中查询出的索引数据进行多方签名、验证、生成合成签名,保证了索引网络中的索引数据的真实性和安全性,降低索引数据被篡改的可能性;通过将索引查询下沉到边缘节点,能够实现高带宽、低时延的索引查询服务,提高索引网络的索引查询性能。[0137]图7是示出根据本公开另一些实施例的区块链数据查询装置的框图。[0138]如图7所示,区块链数据查询装置700包括存储器710;以及耦接至该存储器710的处理器720。存储器710用于存储执行区块链数据查询方法对应实施例的指令。处理器720被配置为基于存储在存储器710中的指令,执行本公开中任意一些实施例中的区块链数据查询方法。[0139]图8是示出用于实现本公开一些实施例的计算机系统的框图。[0140]如图8所示,计算机系统800可以通用计算设备的形式表现。计算机系统800包括存储器810、处理器820和连接不同系统组件的总线830。[0141]存储器810例如可以包括系统存储器、非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(boot loader)以及其他程序等。系统存储器可以包括易失性存储介质,例如随机存取存储器(ram)和/或高速缓存存储器。非易失性存储介质例如存储有执行区块链数据查询方法中的至少一种的对应实施例的指令。非易失性存储介质包括但不限于磁盘存储器、光学存储器、闪存等。[0142]处理器820可以用通用处理器、数字信号处理器(dsp)、应用专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑设备、分立门或晶体管等分立硬件组件方式来实现。相应地,诸如获取模块和签名模块的每个模块,可以通过中央处理器(cpu)运行存储器中执行相应步骤的指令来实现,也可以通过执行相应步骤的专用电路来实现。[0143]总线830可以使用多种总线结构中的任意总线结构。例如,总线结构包括但不限于工业标准体系结构(isa)总线、微通道体系结构(mca)总线、外围组件互连(pci)总线。[0144]计算机系统800还可以包括输入输出接口840、网络接口850、存储接口860等。这些接口840、850、860以及存储器810和处理器820之间可以通过总线830连接。输入输出接口840可以为显示器、鼠标、键盘等输入输出设备提供连接接口。网络接口850为各种联网设备提供连接接口。存储接口860为软盘、u盘、sd卡等外部存储设备提供连接接口。[0145]这里,参照根据本公开实施例的方法、装置和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个框以及各框的组合,都可以由计算机可读程序指令实现。[0146]这些计算机可读程序指令可提供到通用计算机、专用计算机或其他可编程装置的处理器,以产生一个机器,使得通过处理器执行指令产生实现在流程图和/或框图中一个或多个框中指定的功能的装置。[0147]这些计算机可读程序指令也可存储在计算机可读存储器中,这些指令使得计算机以特定方式工作,从而产生一个制造品,包括实现在流程图和/或框图中一个或多个框中指定的功能的指令。[0148]本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。[0149]通过上述实施例中的区块链数据查询方法和装置,能够高效生成区块链数据的索引数据,进而使得各个业务以及去中心化应用(dapp)可以通过该索引网络高效、安全地查询区块链上的数据,无需构建自己的查询服务,降低区块链系统的查询压力。[0150]至此,已经详细描述了根据本公开的区块链数据查询方法和装置。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部