一种基于区块链的交易数据库构建方法、系统及电子设备与流程

文档序号:25213540发布日期:2021-05-28 14:10阅读:66来源:国知局
一种基于区块链的交易数据库构建方法、系统及电子设备与流程

本发明涉及区块链的交易数据库构建领域,尤其涉及一种基于区块链的交易数据库构建方法、系统及电子设备。



背景技术:

区块链上层应用的查询性能取决于其底层数据库的性能。当前区块链的底层数据库普遍采用写入快、读取慢的结构设计。在比特币区块链上,已有超过60万的区块;而在以太坊区块链上,已有超过1100万的区块。对这些区块中的交易数据的实时查询、监测成为政府、企业等的重要需求。然而,海量交易数据的查询、溯源依赖的高效的索引技术,无法被现有的系统与分析工具满足,现有的区块链交易数据库的结构海量溯源效率低。当需要遍历整个区块链交易数据获取交易前后关联时,由于没有全局索引交易,磁盘索引的效率低下,导致溯源查询效率较低。



技术实现要素:

本发明提供了一种基于区块链的交易数据库构建方法、系统及电子设备,旨在解决现有的区块链交易数据库溯源查询效率低的问题。

根据本申请实施例,提供了一种基于区块链的交易数据库构建方法,包括以下步骤:步骤s1:提取交易数据的哈希值,生成对应的索引,将交易数据写入第一级缓存中;步骤s2:当第一级缓存写入达到上限时,将原有的第一级缓存内的交易数据写入至第二级缓存;及步骤s3:当第二级缓存写入达到上限时,将原有的第二级缓存内的交易数据写入至磁盘。

优选地,上述步骤s1具体包括:步骤s11:获取交易数据的哈希值和交易内容,将对应的哈希值和交易内容进行无损压缩,并获取哈希值的二进制形式的前k位;步骤s12:基于所述前k位,到前缀哈希表中尝试获取,判断值是否存在,若是,则进入步骤s13,若否,则进入步骤s14;步骤s13:将交易内容和哈希值的键值对插入完整哈希表;步骤s14:将交易内容和哈希值的前k位的键值对插入前缀哈希表;及步骤s15:更新完整哈希表和前缀哈希表后,生成交易数据的索引,并写入第一级缓存中。

优选地,上述步骤s11具体包括:步骤s111:获取交易数据的哈希值和交易内容,将对应的哈希值和交易内容进行十六进制变换,获取哈希值和交易内容的十六进制数;步骤s112:将十六进制数形式的哈希值和交易内容转换为二进制数;及步骤s113:获取哈希值的二进制形式的前k位。

优选地,所述第一级缓存和所述第二级缓存均为基于内存型的缓存结构。

优选地,所述第一级缓存、第二级缓存及磁盘依次顺序进行数据写入和查询步骤。

本发明还提供一种基于区块链的交易数据库构建系统,包括:第一级缓存单元,用于提取交易数据的哈希值,生成对应的索引,将交易数据写入第一级缓存中;第二级缓存单元,用于当第一级缓存写入达到上限时,将原有的第一级缓存内的交易数据写入至第二级缓存;及磁盘写入单元,用于当第二级缓存写入达到上限时,将原有的第二级缓存内的交易数据写入至磁盘。

优选地,所述第一级缓存单元还包括:无损压缩单元,用于获取交易数据的哈希值和交易内容,将对应的哈希值和交易内容进行无损压缩,并获取哈希值的二进制形式的前k位;哈希验证单元,用于基于所述前k位,到前缀哈希表中尝试获取,判断值是否存在;完整哈希插入单元,用于当前k位存在于前缀哈希表中时,将交易内容和哈希值的键值对插入完整哈希表;前缀哈希插入单元,用于当前k位不存在于前缀哈希表中时,将交易内容和哈希值的前k位的键值对插入前缀哈希表;及索引单元,用于更新完整哈希表和前缀哈希表后,生成交易数据的索引,并写入第一级缓存中。

优选地,所述无损压缩单元还包括:第一转换单元,用于获取交易数据的哈希值和交易内容,将对应的哈希值和交易内容进行十六进制变换,获取哈希值和交易内容的十六进制数;第二转换单元,用于将十六进制数形式的哈希值和交易内容转换为二进制数;及字符获取单元,用于获取哈希值的二进制形式的前k位。

本发明还提供一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被设置为运行时执行上述任一项中所述基于区块链的交易数据库构建方法;所述处理器被设置为通过所述计算机程序执行上述任一项中所述基于区块链的交易数据库构建方法。

本发明提供的一种基于区块链的交易数据库构建方法、系统及电子设备具有以下有益效果:

1、在比特币的区块链中,每一笔交易分为输入与输出脚本,当验证交易时,需要对后一笔交易的输入脚本与前一笔交易的输出脚本进行联合执行。因此,在对交易进行溯源查询分析时,需要查询后一笔交易的前置交易,才能够得到完整的交易执行数据,从而进行进一步的分析。而在本实施例中,由于区块链交易、账户的溯源查询中,新产生的账户、交易id往往比旧产生的id更有可能被查询到,故根据该种规则,本发明的实施例方法提供了上述的三个优先级的存储顺序,通过以上三级缓存技术,在硬件资源有限的情况下,能有效提升缓存的命中率及查询的实时性,为实时监测所需的溯源查询提供高效的查询手段,利用了区块链交易的读写特征,在硬件资源有限的情况下,能有效提升缓存的命中率及查询的实时性,查询效率更高。

2、本发明中阐述的基于交易内容无损压缩的内存型数据库对交易进行了无损压缩,包括内容和哈希值文本,实际内存利用率高,相同交易数量下相比已有技术的内存占用小。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明第一实施例提供的一种基于区块链的交易数据库构建方法的流程图。

图2是本发明第一实施例提供的一种基于区块链的交易数据库构建方法中步骤s1的流程图。

图3是本发明第一实施例提供的一种基于区块链的交易数据库构建方法中步骤s11的流程图。

图4是本发明第二实施例提供的一种基于区块链的交易数据库构建系统的模块图。

图5是本发明第二实施例提供的一种基于区块链的交易数据库构建系统中第一级缓存单元的模块图。

图6是本发明第二实施例提供的一种基于区块链的交易数据库构建系统中无损压缩单元的模块图。

图7是本发明第三实施例提供的一种电子设备的模块图。

标号说明:

1、第一级缓存单元;2、第二级缓存单元;3、磁盘写入单元;

11、无损压缩单元;12、哈希验证单元;13、完整哈希插入单元;14、前缀哈希插入单元;15、索引单元;111、第一转换单元;112、第二转换单元;113、字符获取单元;

10、存储器;20、处理器。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的″一″、″一个″及″该″意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语″和/或″是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1,本发明公开了一种基于区块链的交易数据库构建方法,包括以下步骤:

步骤s1:提取交易数据的哈希值,生成对应的索引,将交易数据写入第一级缓存中。

步骤s2:当第一级缓存写入达到上限时,将原有的第一级缓存内的交易数据写入至第二级缓存。及

步骤s3:当第二级缓存写入达到上限时,将原有的第二级缓存内的交易数据写入至磁盘。

可以理解,在步骤s1中,根据每一个交易数据提取指定的哈希值,并生成对应的索引,使得后续的查询中可基于哈希值和索引进行查询。

可以理解,在步骤s2中,第一级缓存的写入优先级大于第二级缓存,而第一级缓存的写入量达到其自身上限时,将第一级缓存内当前的存储数据转移至第二级缓存中,以便于将第一级缓存清空后继续将新的交易数据写入。

可以理解,在步骤s3中,基于第二个优先级的第二级缓存的写入量达到最大值后,将第二级缓存内的数据转移至第三优先级的磁盘内,作为归档永久保存。

可选地,作为一种实施例,步骤s1和步骤s2中也可以增加1个、2个或者多个相同的缓存空间,以形成多级缓存结构,多个缓存结构基于顺序优先级排序。

可以理解,所述第一级缓存和所述第二级缓存为内存型数据缓存结构,在存储数据时,按照第一级缓存、第二级缓存和磁盘的依次顺序进行写入和查询步骤。

可以理解,本发明实施例提供的基于区块链的交易数据库,其在比特币的区块链中,每一笔交易分为输入与输出脚本,当验证交易时,需要对后一笔交易的输入脚本与前一笔交易的输出脚本进行联合执行。因此,在对交易进行溯源查询分析时,需要查询后一笔交易的前置交易,才能够得到完整的交易执行数据,从而进行进一步的分析。而在本实施例中,由于区块链交易、账户的溯源查询中,新产生的账户、交易id往往比旧产生的id更有可能被查询到,故根据该种规则,本发明的实施例方法提供了上述的三个优先级的存储顺序,通过以上三级缓存技术,在硬件资源有限的情况下,能有效提升缓存的命中率及查询的实时性,为实时监测所需的溯源查询提供高效的查询手段。同时,利用了区块链交易的读写特征,在硬件资源有限的情况下,能有效提升缓存的命中率及查询的实时性,查询效率更高,其特别适用于现有的具有较小内存的小型分析机器中,也可以基于本方面的实施例方法实现较高效率的数据查询操作。

可以理解,第一级缓存和第二级缓存中的写入量大小可根据机器的内存大小和区块链交易数据实际内容的平均长度调试决定。

可以理解,在本发明提供的方法实施例中,用户在数据库中查询时,也基于多级缓存的优先级进入到对应的缓存区域内进行查询搜索,而在本实施例中,用户则首先进入第一级缓存查询,若无则进入到第二级缓存中查询,以此类推。

请参阅图2,上述步骤s1具体包括:

步骤s11:获取交易数据的哈希值和交易内容,将对应的哈希值和交易内容进行无损压缩,并获取哈希值的二进制形式的前k位;

步骤s12:基于所述前k位,到前缀哈希表中尝试获取,判断值是否存在,若是,则进入步骤s13,若否,则进入步骤s14;

步骤s13:将交易内容和哈希值的键值对插入完整哈希表;

步骤s14:将交易内容和哈希值的前k位的键值对插入前缀哈希表;及

步骤s15:更新完整哈希表和前缀哈希表后,生成交易数据的索引,并写入第一级缓存中。

可以理解,在步骤s11中,将哈希值进行二进制转换,获取哈希值的二进制形式的前k位,便于在后续查询过程中只需要查询哈希值字符串中的前面k个数字,所述前k位的数量可以根据需要进行调整,位数越少查询越快,而查询准确度交底,反之也适用。

可以理解,在步骤s12中,基于哈希值的二进制形式的前k位,在区块链的前缀哈希表中进行寻找,查看是否已经在哈希表中存在相应内容。

步骤s12中,得到的值到前缀哈希表中进行尝试获取,判断值是否存在,如以下公式所示:

prefixexists=(txhash_binkinprefixhashmap)

如果prefixexists为真,则进行步骤s13。

如果prefixexists为假,则进行步骤s14,也即将交易按照<txhash_bink,txcontent_bin>的键值对插入该哈希表,写入完成。

可以理解,在步骤s13中,当可查询到对应的前缀哈希值时,可以将完整的哈希值写入到完整哈希表中,而在步骤s14中,若在前缀哈希表中无法查询到,则说明当前交易数据不存在,需要建立新的存档,故将当前哈希值的前k位的键值对插入前缀哈希表。

在步骤13中,将交易按照<txhash_bin,txcontent>的键值对插入该哈希表,写入完成。

可以理解,在步骤s15中,经过步骤s13和步骤s14的插入哈希表操作后,形成前缀哈希表和完整哈希表,对每一个交易数据形成对应的索引后,进行第一级缓存的写入操作。

可以理解,所述前缀哈希表为一个内存中的映射,key为交易哈希值的前k位,value为交易内容,完整哈希表同样为一个内存中的映射,二者均为存储在内存中的交易集合。

可以理解,步骤s11~s12仅为该实施例的一种实施方式,其实施方式并不限定于步骤s11~s12。

请参阅图3,上述步骤s11具体包括:

步骤s111:获取交易数据的哈希值和交易内容,将对应的哈希值和交易内容进行十六进制变换,获取哈希值和交易内容的十六进制数;

步骤s112:将十六进制数形式的哈希值和交易内容转换为二进制数;及步骤s113:获取哈希值的二进制形式的前k位。

可以理解,在步骤s111中,原始交易数据中哈希值与交易内容均为十六进制的字符串,其自带了很多不必要的编码长度,首先可将十六进制的字符串转换为十六进制数。

可以理解,在步骤s112中,继续将十六进制数的哈希值和交易内容转换为对应的二进制数,以便于获得哈希值的二进制形式。

可以理解,步骤s111和步骤s112可基于如下公式进行:

txhash_bin=hex2bin(str2hex(txhash))txcontent_bin

=hex2bin(str2hex(txcontent))

其中,str2hex()为负责将字符串转换为十六进制的转换函数,hex2bin()是负责将十六进制转换为二进制的转换函数。

可以理解,在步骤s113中,按照以下公式获取交易哈希值的二进制形式的前k位:

txhash_bink=txhash_bin[0:k]

以上公式中获取到的txhash_bink称为该交易的k前缀哈希。

可以理解,通过将交易数据的哈希值和交易内容进行十六进制数的转换,再进行二进制数的转换,既可以实现对哈希值和交易内容的无损变换,也避免了现有的区块链数据处理中直接将十六进制字符串直接转换为二进制数带来的冗余,浪费操作占用较大内存空间的问题,节省了内存占用。

可以理解,在上述步骤s1和步骤s2中的所述第一级缓存和第二级缓存具有相同结构,也即第一级缓存基于上述步骤s11~步骤s15、s111~s113的数据库构建方式和第二级缓存的数据库构建方式相同。

可以理解,本发明方法实施例中构建的交易数据库,在用户进入区块链的其中一个缓存区域(例如第一级缓存)进行交易数据的查询时,可首先将需要查询交易的哈希值同样进行上述的十六进制和二进制变换后,首先到完整哈希表中查询,若查询到对应的值,则返回对应的交易数据,若无法查询到,则进入到前缀哈希表中再次读取查询,若有责返回,若无,则提示无此交易数据。

可以理解,步骤s111~s113仅为该实施例的一种实施方式,其实施方式并不限定于步骤s111~s113。

请参阅图4,本发明第二实施例提高一种基于区块链的交易数据库构建系统,其采用上述第一实施例提供的基于区块链的交易数据库构建方法,其包括:

第一级缓存单元1,用于提取交易数据的哈希值,生成对应的索引,将交易数据写入第一级缓存中;

第二级缓存单元2,用于当第一级缓存写入达到上限时,将原有的第一级缓存内的交易数据写入至第二级缓存;及

磁盘写入单元3,用于当第二级缓存写入达到上限时,将原有的第二级缓存内的交易数据写入至磁盘。

请参阅图5,上述所述第一级缓存单元1还包括:

无损压缩单元11,用于获取交易数据的哈希值和交易内容,将对应的哈希值和交易内容进行无损压缩,并获取哈希值的二进制形式的前k位;

哈希验证单元12,用于基于所述前k位,到前缀哈希表中尝试获取,判断值是否存在;

完整哈希插入单元13,用于当前k位存在于前缀哈希表中时,将交易内容和哈希值的键值对插入完整哈希表;

前缀哈希插入单元14,用于当前k位不存在于前缀哈希表中时,将交易内容和哈希值的前k位的键值对插入前缀哈希表;及

索引单元15,用于更新完整哈希表和前缀哈希表后,生成交易数据的索引,并写入第一级缓存中。

请参阅图6,所述无损压缩单元11还包括:

第一转换单元111,用于获取交易数据的哈希值和交易内容,将对应的哈希值和交易内容进行十六进制变换,获取哈希值和交易内容的十六进制数;

第二转换单元112,用于将十六进制数形式的哈希值和交易内容转换为二进制数;及

字符获取单元113,用于获取哈希值的二进制形式的前k位。

请参阅图7,本发明第三实施例提供一种电子设备,所述电子设备包括存储器10和处理器20,所述存储器10中存储有运算机程序,所述运算机程序被设置为运行时执行上述任一项基于区块链的交易数据库构建方法实施例中的步骤。所述处理器20被设置为通过所述运算机程序执行上述任一项基于区块链的交易数据库构建方法实施例中的步骤。

可选地,在本实施例中,上述电子设备可以位于运算机网络的多个网络设备中的至少一个网络设备。

本发明提供的一种基于区块链的交易数据库构建方法、系统及电子设备具有以下有益效果:

1、在比特币的区块链中,每一笔交易分为输入与输出脚本,当验证交易时,需要对后一笔交易的输入脚本与前一笔交易的输出脚本进行联合执行。因此,在对交易进行溯源查询分析时,需要查询后一笔交易的前置交易,才能够得到完整的交易执行数据,从而进行进一步的分析。而在本实施例中,由于区块链交易、账户的溯源查询中,新产生的账户、交易id往往比旧产生的id更有可能被查询到,故根据该种规则,本发明的实施例方法提供了上述的三个优先级的存储顺序,通过以上三级缓存技术,在硬件资源有限的情况下,能有效提升缓存的命中率及查询的实时性,为实时监测所需的溯源查询提供高效的查询手段,利用了区块链交易的读写特征,在硬件资源有限的情况下,能有效提升缓存的命中率及查询的实时性,查询效率更高。

2、本发明中阐述的基于交易内容无损压缩的内存型数据库对交易进行了无损压缩,包括内容和哈希值文本,实际内存利用率高,相同交易数量下相比已有技术的内存占用小。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1