一种区块链中交易间重复数据删除方法、装置、系统

文档序号:1952603 发布日期:2021-12-10 浏览:9次 >En<

阅读说明:本技术 一种区块链中交易间重复数据删除方法、装置、系统 (Method, device and system for deleting repeated data among transactions in block chain ) 是由 万胜刚 刘晋通 马靖博 尚方平 何绪斌 谢长生 于 2021-08-20 设计创作,主要内容包括:本发明公开了一种区块链中交易间重复数据删除方法、装置、系统,属于计算机存储技术领域。方法包括:筛选出交易中访问频率最高的前M个地址,并分别使用M个第一短字节别名替换M个地址;筛选出交易中访问频率最高的前N个智能合约,分别使用P个第二短字节别名替换多次调用N个智能合约中同一智能合约的函数输入中的重复片段;对交易中转移的货币量,使用第三短字节别名替换转移的货币量的基底;并维护相应的映射表。如此,本发明创新地利用区块链中与交易相关的数据具有的局部性,使用短字节别名替换长字节字段,能够降低区块中每个交易的大小,进而减少整体区块链所需要的存储空间。(The invention discloses a method, a device and a system for deleting repeated data in transactions in a block chain, and belongs to the technical field of computer storage. The method comprises the following steps: screening the first M addresses with the highest access frequency in the transaction, and respectively replacing the M addresses with the alias of M first short bytes; screening the first N intelligent contracts with the highest access frequency in the transaction, and replacing repeated segments in function input for calling the same intelligent contract in the N intelligent contracts for multiple times by using P second short byte aliases respectively; replacing a base of the transferred monetary amount with a third short-byte alias for the monetary amount transferred in the transaction; and maintains a corresponding mapping table. Therefore, the invention innovatively utilizes the locality of the data related to the transaction in the block chain and replaces the long byte field with the alias of the short byte, so that the size of each transaction in the block can be reduced, and the storage space required by the whole block chain is further reduced.)

一种区块链中交易间重复数据删除方法、装置、系统

技术领域

本发明属于计算机存储技术领域,更具体地,涉及一种区块链中交易间重复数据删除方法、装置、系统。

背景技术

区块链在过去的十年中被部署为加密货币的核心基础架构,展现出了巨大的保持数据一致性和完整性的能力,然而由于其可扩展性差(如:低交易处理能力和高持久性存储需求),到目前为止,区块链很少被使用在加密货币的范围之外。区块链的交易处理能力与区块大小以及区块产生时间间隔密切相关,但是贸然增大区块大小或者减少区块生成时间间隔会带来同步风险。

区块链中的交易可以分为两种类型:转账交易和智能合约调用交易(在这里交易不仅指转账等货币交易,而是指能够通过智能合约实现的所有的业务逻辑,类似于数据库技术中的“事务”概念)。尽管不同区块链中的交易可能采用不同的数据结构,但主要包括两类数据:为了保障交易安全性的安全性数据(如:签名)和与交易相关的数据(如:账户地址、智能合约的函数输入等),其中后者占主导地位。根据已有的研究统计,在以太坊中有三分之二的数据为与交易相关的数据。

通过减少交易的规模使得在固定大小的区块内能够进行更多交易是缓解区块链可扩展性问题的有效方法。但是,现有相关解决方案仅集中于减少交易中用于验证交易的安全性数据的存储规模,优化结果并不理想。

发明内容

针对现有技术的以上缺陷,本发明提供了一种区块链中交易间重复数据删除方法、装置、系统,其目的在于通过对多个交易需要存储的相关数据中相似的部分进行重复数据删除,提高区块链的交易处理能力,降低持久化存储开销,从而缓解区块链的可扩展性问题。

为实现上述目的,第一方面,本发明提供了一种区块链中交易间重复数据删除方法,包括:

筛选出交易中访问频率最高的前M个地址;分别使用M个第一短字节别名替换所述M个地址,并存储所述M个地址与M个第一短字节别名之间的映射关系;

筛选出交易中访问频率最高的前N个智能合约;分别使用P个第二短字节别名替换多次调用所述N个智能合约中同一智能合约的函数输入中的重复片段;对所述N个智能合约中每一智能合约单独存储映射表,并在每一所述映射表中记录替换片段与对应第二短字节别名的映射关系以及未被替换片段的长度;

对交易中转移的货币量,使用第三短字节别名替换所述转移的货币量的基底;存储所述第三短字节别名与基底之间的映射关系以及对应的偏移量;其中,所述偏移量为所述转移的货币量与所述基底的差值。

进一步地,所述M个第一短字节别名具有不同的长度。

进一步地,将所述M个第一短字节别名中长度越短的别名分配给交易中访问频率越高的地址。

进一步,所述存储所述M个地址与M个第一短字节别名之间的映射关系,包括:存储两个分别以地址和别名为键的映射表,以使将地址替换成别名后便于将别名恢复成地址。

进一步地,当所述重复片段出现的次数超过预设阈值时,才进行别名替换。

进一步地,每隔时间间隔T重新分配别名。

第二方面,本发明提供了一种区块链中交易间重复数据删除装置,包括:第一转换模块,用于筛选出交易中访问频率最高的前M个地址;分别使用M个第一短字节别名替换所述M个地址,并存储所述M个地址与M个第一短字节别名之间的映射关系;第二转换模块,用于筛选出交易中访问频率最高的前N个智能合约;分别使用P个第二短字节别名替换多次调用所述N个智能合约中同一智能合约的函数输入中的重复片段;对所述N个智能合约中每一智能合约单独存储映射表,并在每一所述映射表中记录替换片段与对应第二短字节别名的映射关系以及未被替换片段的长度;第三转换模块,用于对交易中转移的货币量,使用第三短字节别名替换所述转移的货币量的基底;存储所述第三短字节别名与基底之间的映射关系以及对应的偏移量;其中,所述偏移量为所述转移的货币量与所述基底的差值。

第三方面,本发明提供了一种区块链系统,包括第二方面提供的区块链中交易间重复数据删除装置。

总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:

(1)本发明区别于现有相关技术仅集中于减少交易中用于验证交易的安全性数据的存储规模来缓解区块链可扩展性问题,创新地利用区块链中与交易相关的数据具有的局部性,使用短字节别名替换长字节字段,分别设计了针对地址、智能合约以及货币量的交易间重复数据删除方法;同时,别名的映射表带来的额外存储开销不需要在P2P网络中传播,不影响链上性能,占用的本地存储空间很小可以忽略不计。如此,本发明能够降低区块中每个交易的大小,进而减少整体区块链所需要的存储空间。

(2)本发明将长度越短的别名分配给交易中访问频率越高的地址,从而更大程度地利用较短的别名,获得更大的存储优化效果。

(3)本发明每隔一定的时间间隔后重新分配别名,而不是实时更新,避免了高同步成本且更容易实现。

(4)在每个区块大小一定的情况下,本发明提供的区块链中交易间重复数据删除方法,可以令同样大小的一个区块包含更多的交易,从而提高区块链系统的吞吐量。

附图说明

图1为本发明实施例提供的区块链中交易间重复数据删除方法的流程图之一;

图2为本发明实施例提供的区块链中交易间重复数据删除方法的流程图之二;

图3为本发明实施例提供的区块链中交易间重复数据删除装置的框图;

图4为本发明实施例提供的区块链系统的框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

在本发明中,本发明及附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

首先需要说明的是,本发明通过对世界上最大、最具代表性的区块链系统以太坊的工作负载进行综合分析,发现了两类普遍存在却被高度忽视的内容局部性:①经济局部性(大多数交易发生在少数的帐户地址之间);②参数局部性(调用同一智能合约的交易大多数的参数都具有相同的部分,甚至完全相同)。更重要的是,这些具有很强的局部性的字段规模通常比较大,比如:为了避免冲突,一个账户地址在以太坊的长度是20字节,关于智能合约的参数甚至可以是上千字节。基于此,提出了区块链中交易间重复数据删除方法。

参阅图1,结合图2,本发明提供了一种区块链中交易间重复数据删除方法,包括:

筛选出交易中访问频率最高的前M个地址;分别使用M个第一短字节别名替换所述M个地址,并存储所述M个地址与M个第一短字节别名之间的映射关系。

具体的,先筛选出交易中访问频率(在交易中出现的次数,无论是发送者还是接收者)最高的前M个地址,如访问频率最高的前100个地址。再使用1~4个字节的别名(因为4个字节足以代表以太坊中的所有地址),来替换原始交易中的地址(源地址和目的地址);本实施例中,使用变长的别名来替换原始交易中的地址,别名具有四种长度,每个别名的长度通过其前2个比特位来指示;优选地,将较短的别名分配给出现更加频繁的地址,从而更大程度地利用较短的别名,获得更大的存储优化效果。

进一步地,在维护别名和地址的映射表时,维护两个分别以地址和别名为键的映射表,即一个前向映射表和一个反向映射表,用于将地址替换成别名后能够方便地将别名恢复成原形式。并且,由于别名和地址映射是一一对应的,使用数据结构BiMap能够高效地达成上述目标。

如图2所示,在一个具体的实例中,对需要进行转换的交易的地址0xc89773ac与别名0x01进行映射,并用单字节的别名0x01替换原交易中的地址部分,从而减少地址字段的存储规模。目标地址也使用同样的方法被映射成两字节的别名0x2bf5,在恢复时只需要查询映射表即可轻易地进行恢复。

筛选出交易中访问频率最高的前N个智能合约;分别使用P个第二短字节别名替换多次调用所述N个智能合约中同一智能合约的函数输入中的重复片段;对所述N个智能合约中每一智能合约单独存储映射表,并在每一所述映射表中记录替换片段与对应第二短字节别名的映射关系以及未被替换片段的长度。

具体的,先筛选出交易中访问频率(在交易中出现的次数,无论是发送者还是接收者)最高的前N个智能合约,如访问频率最高的前50个智能合约。再用第二短字节别名来替换智能合约的函数输入中的重复片段。由于智能合约中的函数数量以及每个函数的参数数量是有限的,2个字节长度已经能够满足智能合约中具有较强局部性的函数输入片段的数量,优选地,第二短字节别名长度为2个字节。

进一步地,使用第二短字节别名替换智能合约的函数输入中冗长的字节片段,以减少交易的数据存储规模。由于不同的智能合约具有完全不同的逻辑、参数和内部地址,因此不同智能合约的函数输入之间并没有发现很强的局部性。相反,同一智能合约的多次调用的函数输入则表现出了很强局部性。因此为每个智能合约单独地维护映射表,而不是维护一个总体的映射表,从而能够有效地减少智能合约交易的存储开销。

进一步地,本发明只有在智能合约的函数输入中某个长字节片段(前缀或者中缀),在最近的多次调用中,出现次数超过一定阈值的时候(如:5次),才会为其分配别名,即只针对具有局部性的片段进行替换。

进一步地,映射表的键是智能合约中各个函数的标识符,即函数输入中一定长度的前缀(函数输入的前几个字节是函数标识符,唯一标识该函数输入要调用的函数)。具有相同前缀的函数输入往往有一个或多个局部性很强的中缀,即在同一个函数的多次调用中,函数输入的参数往往有相同的部分。映射表不只记录前缀对应的中缀(即每个函数对应的高频参数),同时记录下在多个中缀间的未替换片段的长度,即掩码,便于恢复原始函数输入。

如图2所示,在一个具体的实例中,建立智能合约的别名与函数输入片段之间的映射表,对需要进行转换的函数输入0x1801fbe5c52ca5df进行映射。该函数输入的映射由一个前缀和两个中缀组成,其中0x1801fbe5为前缀,唯一表示该智能合约中当前被调用的函数,是该智能合约函数的标识符;两个中缀分别为0xc5和0xa5,表示该功能两个参数中被多次调用广泛使用的片段。使用公有输入字段来记录中缀以及其在函数输入中的位置,并使用字符’0’替换函数输入中的其他部分,便于后续对函数输入进行恢复。映射后的别名0x0000以及未被替换的片段共同组成别名交易的函数输入部分,即实参别名。

对交易中转移的货币量,使用第三短字节别名替换所述转移的货币量的基底;存储所述第三短字节别名与基底之间的映射关系以及对应的偏移量;其中,所述偏移量为所述转移的货币量与所述基底的差值。

具体的,交易中转移的货币量也具有很强的局部性,随着交易数量的增多,交易中转移的货币量往往会出现几个热点值,称之为基底(类似于货币的面额概念)。本发明将交易中转移的货币量分为基底和偏移量,基底表示交易活动中经常使用的币值,偏移量是实际交易值与基底的差值。本发明使用第三短字节别名来替换长字节基底,从而减少数据的存储开销。

优选地,第三短字节别名采用1个字节长度,因为1个字节长度已经足够表示基底的数量。

如图2所示,在一个具体的实例中,转移的货币量0x0de021被分为两部分:基底和偏移量,在此实施例中基底为0x0de000,而偏移量为0x21,在别名交易中同时记录下基底被映射成的单字节别名0x05以及偏移量,最终可以通过二者恢复出实际转移的货币量。

此外,如果交易类型是转账交易,则交易中的主要数据为账户地址,因为转账交易通常不包含函数输入或者是很少字节的函数输入。如果交易类型是智能合约调用交易,则交易中的主要数据为智能合约的函数输入,智能合约的函数输入能够达到上百或者上千字节的规模,与函数输入相比账户地址占用的字节规模很小。

进一步地,区块链中节点在验证区块之前,通过本地的映射表将交易中的别名进行恢复,依然可以使用原有的验证信息对区块进行验证。需要注意的是,区块链中大部分节点具有相同的已共识的区块链视图,因此通过相同方法构造的映射表是一致的。

进一步地,本发明使用优化的BLS签名对区块的正确性进行很快的验证,验证时间不影响区块链的可伸缩性。

图3为本发明实施例提供的一种区块链中交易间重复数据删除装置的框图。参阅图3,该区块链中交易间重复数据删除装置300包括计算第一转换模块310、第二转换模块320、第三转换模块330。

第一转换模块310例如执行操作S1,用于筛选出交易中访问频率最高的前M个地址;分别使用M个第一短字节别名替换所述M个地址,并存储所述M个地址与M个第一短字节别名之间的映射关系;

第二转换模块320例如执行操作S2,用于筛选出交易中访问频率最高的前N个智能合约;分别使用P个第二短字节别名替换多次调用所述N个智能合约中同一智能合约的函数输入中的重复片段;对所述N个智能合约中每一智能合约单独存储映射表,并在每一所述映射表中记录替换片段与对应第二短字节别名的映射关系以及未被替换片段的长度;

第三转换模块330例如执行操作S3,用于对交易中转移的货币量,使用第三短字节别名替换所述转移的货币量的基底;存储所述第三短字节别名与基底之间的映射关系以及对应的偏移量;其中,所述偏移量为所述转移的货币量与所述基底的差值。

区块链中交易间重复数据删除装置300用于执行上述图1所示实施例中的区块链中交易间重复数据删除方法。本实施例未尽之细节,请参阅前述图1所示实施例中的区块链中交易间重复数据删除方法,此处不再赘述。

图4为本发明实施例提供的区块链系统的框图,该区块链系统的主体结构与其他区块链相同,创新之处在于新增了两个数据结构和一个模块。两个数据结构分别用来存储别名交易和别名区块的信息,新增的转换模块用于实现原始交易与别名交易之间的转换。

别名区块包括区块头、区块体和元数据三个部分,其中区块体部分主要由别名交易组成。实际上,别名区块和原始区块之间的唯一区别只是区块体由别名交易组成。

区块链系统的总体执行流程为:

①获得出块权的矿工从交易池中挑选交易,将选出的交易打包成区块,并计算出BLS签名;

②计算出BLS签名后,出块者通过转换模块将区块中的原始交易替换成相应的存储规模更小的别名交易;

③出块者将别名交易和原区块头(包括验证信息)组成的别名区块广播到区块链系统中进行共识;

④区块链中的验证节点得到别名区块并通过转换模块将其中的别名交易恢复成原始区块;

⑤验证节点对恢复得到的区块进行有效性验证,如果区块通过了大多数节点的验证,则将别名区块记录到区块链中。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于垃圾回收的全流程管理方法、系统和可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!