构建用于区块链的倒排索引结构的方法和计算机系统技术方案

技术编号:19023392 阅读:17 留言:0更新日期:2018-09-26 19:03
本公开提供了一种构建用于区块链的倒排索引结构的方法和实现该方法的计算机系统。该倒排索引结构包括一个或多个倒排列表,每个倒排列表包括作为该倒排列表的索引的数量项和与该数量项相对应的一个或多个倒排索引项。该方法包括:将与该区块链中的交易和/或账户有关的每个数量分别配置作为一个倒排列表的数量项;以及配置该倒排列表的该一个或多个倒排索引项以指示该区块链中、包含与该数量相关联的交易和/或账户的一个或多个区块。

【技术实现步骤摘要】
构建用于区块链的倒排索引结构的方法和计算机系统
本公开涉及互联网技术,更具体地,涉及一种用于构建用于区块链的倒排索引结构以加速选择查询的方法和实现该方法的计算机系统。
技术介绍
区块链(Blockchain)是比特币的一个重要概念,其本质上是一个去中心化的数据库,用于存储交易的分布式共享账本。区块链由区块构成,每个区块包含一组交易的信息。每当网络中有交易产生时,网络中有强大运算能力的节点(即矿工(Miner))就开始竞争解一个哈希谜题,竞争成功的节点获得产生新的区块的权利以构造出新的区块来记录最新的交易。新的区块按照时间顺序线性地被补充到原有的区块链末端,这个账本就会不停的增长和延长。区块链的这种分布式特性使得能够在非信任网络中进行信任交易,并且没有任何一个单方能够自己修改交易历史。因此,区块链提供了交易历史的可追溯性。当前,越来越多的地区和组织在研究将区块链用于自己的应用,如金融、健康等。为了检查网络中是否存在某种类型的交易或者找到某种余额的账户,需要扫描区块链中的所有区块,这种查询被称为选择查询。随着区块链中存储的交易越来越多,选择查询将不可避免地变得越来越慢。为了加快选择查询,已经提出了利用关系数据库来存储交易并且通过关系数据库的索引来进行选择查询的方案。
技术实现思路
然而,在利用关系数据库进行选择查询的方案中,交易数据需要被复制,并且数据库中的交易数据可能被攻击。针对以上问题中的至少一个,本公开提出了一种构建倒排索引结构来加快选择查询的方法和实现该方法的计算机系统。根据本公开的一个方面,提供了一种构建用于区块链的倒排索引结构的方法。该倒排索引结构包括一个或多个倒排列表,每个倒排列表包括作为该倒排列表的索引的数量项和与该数量项相对应的一个或多个倒排索引项。该方法包括:将与该区块链中的交易和/或账户有关的每个数量分别配置作为一个倒排列表的数量项;以及配置该倒排列表的该一个或多个倒排索引项以指示该区块链中、包含与该数量相关联的交易和/或账户的一个或多个区块。根据本公开的另一个方面,提供了一种构建用于区块链的倒排索引结构的计算机系统。该倒排索引结构包括一个或多个倒排列表,每个倒排列表包括作为该倒排列表的索引的数量项和与该数量项相对应的一个或多个倒排索引项。该计算机系统包括:存储器,其中存储有计算机程序代码;以及处理器,其被配置为运行该存储器中存储的计算机程序,以将与该区块链中的交易和/或账户有关的每个数量分别配置作为一个倒排列表的数量项;以及配置该倒排列表的该一个或多个倒排索引项以指示该区块链中、包含与该数量相关联的交易和/或账户的一个或多个区块。利用本公开的方案,通过使用倒排列表中的倒排索引项来直接指示区块链中包含感兴趣的交易和账户的区块,能够加快选择查询,同时不需要存储复制的数据。附图说明通过参考下列附图所给出的本公开的具体实施方式的描述,将更好地理解本公开,并且本公开的其他目的、细节、特点和优点将变得更加显而易见,其中:图1示出了一种区块链结构的示意图;图2示出了根据本公开的用于区块链的倒排索引结构的示意图;图3示出了构建图2所示的倒排索引结构的方法的流程图;以及图4示出了用于构建图2所示的倒排索引结构的计算机系统的方框图。具体实施方式下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了一种区块链10的结构示意图。如图1中所示,区块链10由一个或多个区块1001、1002、1003……100N(统称为区块100)构成。区块100主要包括区块头110和该区块所包含的交易列表120。通常,区块头110的大小为80字节,包括版本号(4字节)字段、区块链中的上一区块的哈希值(32字节)字段、Merkel根哈希值(hashMerkelRoot,32字节)字段、时间戳(4字节)字段、该区块的哈希谜题的难度值(4字节)字段和随机数Nonce(4字节)字段。交易列表120包括多个交易Tx。以下,将结合图2至图4对根据本公开的用于加速选择查询的倒排索引方案进行描述。图2示出了根据本公开的用于区块链的倒排索引结构20的示意图,图3示出了构建图2所示的倒排索引结构的方法30的流程图,图4示出了用于构建图2所示的倒排索引结构的计算机系统40的方框图。方法30例如可以由根据本公开所述的计算机或计算机系统40来实现。如图2中所示,根据本公开的倒排索引结构20包括一个或多个倒排列表2001、2002、……200N(统称为倒排列表200),每个倒排列表200包括作为该倒排列表的索引的数量项210和与数量项210相对应的一个或多个倒排索引项220。构建该倒排索引结构20的方法30包括步骤31,其中计算机系统40将与区块链10中的交易和/或账户有关的每个数量分别配置作为一个倒排列表200的数量项210。在步骤32,计算机系统40配置倒排列表200的一个或多个倒排索引项以指示区块链10中、包含与该数量相关联的交易和/或账户的一个或多个区块。在一种用于寻找网络中以某个数量(如图2中所示的A1、A2……AN)进行的交易的选择查询中,数量项210与区块链10中的交易有关,因此这样构造的倒排索引结构20也可以称为针对交易的倒排索引结构。在这种情况下,一个倒排列表200(如2001)中的每个数量项210例如可以是以相应的数量(如图2中所示的A1)为关键码(key)的哈希函数值。并且,在这种针对交易的倒排索引结构中,与数量项210相关联的一个或多个倒排索引项220用于指示包含以该数量(A1)进行的交易的区块在区块链10中的位置。在另一种用于寻找网络中余额为某个数量(如图2中所示的A1、A2……AN)的账户的选择查询中,数量项210与区块链10中的账户有关,因此这样构造的倒排索引结构20也可以称为针对账户的倒排索引结构。在这种情况下,一个倒排列表200(如2001)中的每个数量项210可以是以相应的数量(如图2中所示的A1)为关键码(key)的哈希函数值。并且,在这种针对账户的倒排索引结构中,与数量项210相关联的一个或多个倒排索引项220用于指示包含余额为该数量(A1)的账户的区块在区块链10中的位置。在又一种实现中,倒排索引结构20可以既针对账户又针对交易。在这种实现中,可以认为倒排索引结构20包含两个独立的子结构,一个子结构是如上所述的针对交易的倒排索引结构,另一个子结构是如上所述的针对账户的倒排索引结构。在一些实现中,在倒排索引结构20中,各个倒排列表2001、2002、……200N可以按照与数量项210相对应的数量(如图2中所示的A1、A2……AN)升序或降序排列。倒排索引项220应该能够指示相应的区块在区块链10中的位置,为此,倒排索引项220例如可以包括区块头110中的上一区块的哈希值字段以指示该区块。或者,倒排索引项220也可以包括为了选择查询或任何其他目的而为每个区块赋予的唯一标识符,只要该标识符能够指示该区块在区块链10中的位置。在一些实现中,在每个倒排列表200中,一个或多个倒排索引项220可以按本文档来自技高网...

【技术保护点】
1.一种构建用于区块链的倒排索引结构的方法,所述倒排索引结构包括一个或多个倒排列表,每个倒排列表包括作为该倒排列表的索引的数量项和与所述数量项相对应的一个或多个倒排索引项,所述方法包括:将与所述区块链中的交易和/或账户有关的每个数量分别配置作为一个倒排列表的数量项;以及配置所述倒排列表的所述一个或多个倒排索引项以指示所述区块链中、包含与所述数量相关联的交易和/或账户的一个或多个区块。

【技术特征摘要】
1.一种构建用于区块链的倒排索引结构的方法,所述倒排索引结构包括一个或多个倒排列表,每个倒排列表包括作为该倒排列表的索引的数量项和与所述数量项相对应的一个或多个倒排索引项,所述方法包括:将与所述区块链中的交易和/或账户有关的每个数量分别配置作为一个倒排列表的数量项;以及配置所述倒排列表的所述一个或多个倒排索引项以指示所述区块链中、包含与所述数量相关联的交易和/或账户的一个或多个区块。2.如权利要求1所述的方法,其中所述数量用于指示交易数量,并且所述一个或多个倒排索引项用于指示包含以所述数量进行的交易的区块在所述区块链中的位置。3.如权利要求1所述的方法,其中所述数量用于指示账户余额,并且所述一个或多个倒排索引项用于指示包含余额为所述数量的账户的区块在所述区块链中的位置。4.如权利要求2或3所述的方法,其中所述数量项是以所述数量为关键码的哈希函数值。5.如权利要求1所述的方法,其中所述一个或多个倒排列表按照与所述数量项相对应的数量升序或降序排列。6.如权利要求1所述的方法,其中在每个倒排列表中,所述一个或多个倒排索引项按照所述一个或多个区块在所述区块链中的位置升序或降序排列。7.如权利要求1所述的方法,还包括:当所述区块链中产生新的区块时,确定与所述新的区块中的交易和/或账户相关联的一个或多个数量;将所述一个或多个数量分类为第一部分和第二部分,其中所述第一部分中的数量包含在所述一个或多个倒排列表中,所述第二部分中的数量未包含在所述一个或多个倒排列表中;仅向与所述第一部分中的数量相对应的倒排列表添加指示所述新的区块的倒排索引项,或者从所述倒排索引结构中移除涉及所述第一部分中的数量的账户所对应的所有倒排索引项并且向与所述第一部分中的数量相对应的倒排列表添加指示所述新的区块的倒排索引项;以及为所述第二部分中的每个数量构建一个新的倒排列表,所述新的倒排列表包括与该数量相对应的数量项和指示所述新的区块的倒排索引项。8.如权利要求1所述的方法,还包括:在所述倒排索引结构中执行选择查询之后,将所述选择查询的结果存储在高速缓存中。9.一种构建用于区块链的倒排索引结构的计算机系统,所述倒排索引结构包括一个或多个倒排列表,每个倒排列表包括作为该倒排列表的索引的数量项和...

【专利技术属性】
技术研发人员:曹锋吕浩进
申请(专利权)人:深圳瀚德创客金融投资有限公司上海万链信息技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1