CN113242044B - 一种减少内存占用的区块链数据存储压缩方法 - Google Patents

一种减少内存占用的区块链数据存储压缩方法 Download PDF

Info

Publication number
CN113242044B
CN113242044B CN202110616660.2A CN202110616660A CN113242044B CN 113242044 B CN113242044 B CN 113242044B CN 202110616660 A CN202110616660 A CN 202110616660A CN 113242044 B CN113242044 B CN 113242044B
Authority
CN
China
Prior art keywords
block chain
transaction
data
input parameters
compression
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
CN202110616660.2A
Other languages
English (en)
Other versions
CN113242044A (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.)
Hubei Yangzhong Jushi Information Technology Co ltd
Original Assignee
Hubei Yangzhong Jushi Information Technology Co ltd
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 Hubei Yangzhong Jushi Information Technology Co ltd filed Critical Hubei Yangzhong Jushi Information Technology Co ltd
Priority to CN202110616660.2A priority Critical patent/CN113242044B/zh
Publication of CN113242044A publication Critical patent/CN113242044A/zh
Application granted granted Critical
Publication of CN113242044B publication Critical patent/CN113242044B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Theoretical Computer Science (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Development Economics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于区块链技术领域,尤其为一种减少内存占用的区块链数据存储压缩方法,该方法在区块链的上链接口封装压缩策略,在提交各交易上链时,根据压缩策略对交易中的输入参数进行压缩,当区块链中的智能合约对交易验证时,对输入参数进行解压缩成智能合约能够识别的数据,由于输入参数占比较大,易于优化,且对现有系统的影响较小,并通过在后续智能合约验证阶段进行解压缩,不影响系统的正常运行,这样,降低了交易数据中输入参数的数据量,从而降低区块中交易的数据量,最终达到降低区块链系统存储数据量的目的,且不影响区块链的运行。

Description

一种减少内存占用的区块链数据存储压缩方法
技术领域
本发明属于区块链技术领域,具体涉及一种减少内存占用的区块链数据存储压缩方法。
背景技术
区块链网络中的数据存储有别于传统数据库的数据存储,在传统的数据库中,数据可以删除、更新,删除就是减少数据,更新就是指更新现有数据,无新增数据,比如mysql、MongoDB、sqlerver、oracle等数据库都可以执行删除、更新操作。然而,在区块链网络中,数据是不能删除的,即数据不会减少,更新数据的方式是在原来基础上增加一条新数据,原来的数据作为历史版本依然存在,这也是区块链能够溯源的根本。
由于区块链网络中的数据不会减少,因此,随着时间的流逝,区块链网络中的数据量将会越来越庞大,在上链频率较高,数据量较大的区块链网络中,很容易达到硬件存储的上限。
对区块链网络的数据结构进行分析可知,区块中包含区块高度、区块hash、前一区块hash、交易,其中每个区块中可包含多个交易,在交易的数据结构中,包含了交易所属的通道、智能合约、版本号、输入参数、交易过程、输出参数、交易发送方、背书放签名等信息。目前,根据区块链网络的数据结构,业内人士一直在努力通过相关方法减小区块链网络中的数据量,比如,公开号为CN111695885A的中国专利文献记载了一种基于减小交易输入的数字凭证区块链压缩方法,通过采用索引指针替换交易输入中的哈希指针,压缩了交易大小;公开号为CN112511629A的中国专利文献记载了一种MPT结构的账户树的数据压缩方法及系统,其通过充分利用账户树的中间节点,使得中间节点上也存储有账户,避免了资源的浪费,减小了账户树的存储空间;公开号为CN110147202A的中国专利文献记载了一种减少区块链智能合约代码存储体积的方法,通过对智能合约代码进行压缩存储,减小了智能合约代码存储体积,减少整个区块链网络的存储负载。
现有技术中的这些方法虽然一定程度缩小了区块链网络的数据大小,但申请人在研究中发现,区块链数据依然有进一步缩小的空间,而区块链数据显然占据内侧越小越好。
发明内容
本发明旨在提供一种减少内存占用的区块链数据存储压缩方法,解决现有技术中区块链数据量庞大,不利于区块链网络运行的技术问题。
为解决上述技术问题,本发明采用以下技术方案:
提供一种减少内存占用的区块链数据存储压缩方法,包括以下步骤:
(1)在区块链的上链接口封装压缩策略;
(2)在提交各交易上链时,根据所述压缩策略对交易中的输入参数进行压缩;
(3)区块链中的智能合约对交易验证时,根据所述压缩策略对交易中的输入参数进行解压缩成智能合约能够识别的数据;
(4)智能合约识别交易成功后,将包含有压缩后的输入参数的交易进行上链,区块链中将多个这种对输入参数进行压缩处理的交易封装成区块,该区块出块后存储在区块链中等待共识;
(5)共识成功后的区块成为区块链的最新区块。
优选的,在所述步骤(1)中,所述压缩策略采用gzip、flate、bzip2、lzw或zlib的压缩方式。
优选的,在所述步骤(2)中,在提交交易上链时,在所述交易的数据中增加用于标识是否压缩的IsCompress字段,增加标志使用的压缩方法的compressType字段,以及增加类型为bytes的RequestBytes字段,然后把交易中的输入参数进行二进制转换,再使用所述压缩策略进行压缩,把压缩后的数据对字段RequestBytes进行赋值,之后把交易中的输入参数置空处理。
与现有技术相比,本发明的有益效果是:本发明减少内存占用的区块链数据存储压缩方法对区块链中的底层数据进行压缩,具体为对占比较大的用户自定义的输入参数部分进行了压缩,由于输入参数占比较大,易于优化,且对现有系统的影响较小,并通过在后续智能合约验证阶段进行解压缩,不影响系统的正常运行,这样,降低了交易数据中输入参数的数据量,从而降低区块中交易的数据量,最终达到降低区块链系统存储数据量的目的,且不影响区块链的运行。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明减少内存占用的区块链数据存储压缩方法一实施例的流程图。
图2为本发明减少内存占用的区块链数据存储压缩方法一实施例中对交易数据进行处理的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种减少内存占用的区块链数据存储压缩方法,请参阅图1和图2。
如图1所示,该减少内存占用的区块链数据存储压缩方法包括以下步骤:
步骤S100:在区块链的上链接口封装压缩策略,所述压缩策略包含压缩和解压缩两个操作方法。在本步骤中,每一个交易的输入参数到区块链后,用于区块链中的智能合约进行验证,等到该交易触发交易条件后会交易成功,在此过程中,由于输入参数是各方用户自定义部分,属于数据量可控的数据结构,压缩后,对整个区块链的安全性没有实质影响,因此,在本步骤中,首先设定压缩策略,用于交易上链时,对交易中的输入参数进行压缩,以缩小交易整体占据的内存。在本步骤中,压缩策略可采用gzip、flate、bzip2、lzw或zlib的压缩方式,gzip、flate、bzip2、lzw或zlib为几种常见的压缩方式,任一种均可用于数据压缩。
步骤S200:在提交各交易上链时,根据所述压缩策略对交易中的输入参数进行压缩。在本步骤中,通过对输入参数进行压缩,能够较大程度缩小该交易占据的内存。并且在本步骤中,在提交交易数据上链时,在交易的数据中增加用于标识是否压缩的IsCompress字段,增加标志使用的压缩方法的compressType字段,从而后续能够通过IsCompress字段判断该交易数据中的输入参数是否被压缩,并通过compressType字段获知对输入参数的压缩方法;另外,还增加类型为bytes的RequestBytes字段,该RequestBytes字段用于后续存放压缩后的输入参数。这里的IsCompress字段compressType字段代表新增的一段内存数据,RequestBytes字段代表一段内存空间。然后把交易中的输入参数进行二进制转换,再使用预先设定的压缩策略进行压缩,把压缩后的数据对字段RequestBytes进行赋值,也就是把压缩后的输入参数储存在RequestBytes字段,之后把交易中的输入参数置空处理,这里的置空就是把原输入参数删除,用被压缩的输入参数进行替代。
步骤S300:区块链中的智能合约对交易验证时,根据所述压缩策略对交易中的输入参数进行解压缩成智能合约能够识别的数据。在本步骤中,由于之前步骤中已经在交易数据中增加了识别所使用的压缩方法的compressType字段,因此,可采用相应的压缩方法对该交易数据中被压缩的输入参数进行解压缩,解压缩的目的是为了能够对输入参数进行识别,通过智能合约对输入参数进行验证,验证成功的交易会被记录在当前区块中。
步骤S400:智能合约识别交易成功后,将包含有压缩后的输入参数的交易进行上链,区块链中将多个这种对输入参数进行压缩处理的交易封装成区块,该区块出块后存储在区块链中等待共识。在本步骤中,由于一个区块中包含有多个成功的交易数据,而通过之前步骤对每个交易数据中的输入参数进行压缩,因此能够大幅缩小一个区块所占据的内存。
步骤S500:共识成功后的区块成为区块链的最新区块。最新产生的区块在区块链上进行共识,在区块链上被达成一致后,该区块共识成功,共识成功的区块能够作为该区块链当前最高高度的区块,由于该区块在产生过程中,区块中各交易数据中的输入参数被压缩,使得该区块所占据的内存较小,因此,能够缩小整个区块链所占据的内存。而随着区块链中新区块的不断产生,能够大幅缩小整个区块链所占据的内存。
为了便于理解本实施例减少内存占用的区块链数据存储压缩方法的运行过程,结合图2作进一步说明,图2简明的表明了本实施例减少内存占用的区块链数据存储压缩方法对交易数据的处理流程:首先是交易数据批量上链请求,由于在某段时间内,会存在多个交易同时请求进入区块链中,因此会有批量的交易数据上链;接下来为执行压缩策略,也就是通过预先设计的压缩策略对各交易中的输入参数进行压缩;接下来为提交上链,也就是对输入参数压缩后的交易提交区块链进行验证;接下来为智能合约接收,也就是区块链中的智能合约接收到上链的交易数据;接下来为压缩策略,该压缩策略为对之前压缩后的输入参数进行解压缩,从而使得智能合约能够识别;接下来为数据上链,也就是经过智能合约验证后的交易数据进入一个区块中;接下来为上链成功,这里上链成功是指包含某段时间内多个成功交易数据的区块被共识成功;接下来依次交易出块和数据存储,也就是共识成功的区块作为最新的区块存储在区块链中。
下面结合具体实例对本实施例减少内存占用的区块链数据存储压缩方法进行说明:
交易数据上链时,对区块数据结构数据量占比进行分析,交易占比区块数据量的99%以上,其中输入参数占比达到45%以上,交易过程占比在54%以上。比如某区块的高度为55906号区块,其中包含有1个交易数据,该区块中交易数据为8.6MB,其中的输入参数的大小为3.8MB,占比44%,交易过程数据大小为4.7MB,占比55%,其他数据结构占比均在0.1%一下。把输入参数3.8MB的数据使用压缩方案进行压缩,能够压缩到1.5MB-2.3MB,压缩的幅度与压缩策略相关,最大能减少2.3MB,总数据量减少26.7%,即能够节省26.7%的存储空间,最少能够减少1.5MB,总数据量减少17.4%,最少能够节省17.4%的存储空间。这对于拥有2-4TB的硬件资源,将是巨大的资源优势,在2TB的磁盘将节省达到360GB-700GB的存储空间,对于4TB的磁盘,将节省720GB-1400GB的存储空间。
可见,本实施例减少内存占用的区块链数据存储压缩方法对占比较大的用户自定义的输入参数部分进行了压缩,而之所以对输入参数进行压缩,是由于输入参数占比较大,易于优化,且对现有系统的影响较小,并通过在后续智能合约验证阶段进行解压缩,不影响系统的正常运行,这样,降低了输入参数的数据量,从而降低区块中交易的数据量,最终达到降低区块链系统存储数据量的目的。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (2)

1.一种减少内存占用的区块链数据存储压缩方法,其特征在于,包括以下步骤:
(1)在区块链的上链接口封装压缩策略;
(2)在提交各交易上链时,根据所述压缩策略对交易中的输入参数进行压缩;
(3)区块链中的智能合约对交易验证时,根据所述压缩策略对交易中的输入参数进行解压缩成智能合约能够识别的数据;
(4)智能合约识别交易成功后,将包含有压缩后的输入参数的交易进行上链,区块链中将多个这种对输入参数进行压缩处理的交易封装成区块,该区块出块后存储在区块链中等待共识;
(5)共识成功后的区块成为区块链的最新区块;
在所述步骤(2)中,在提交交易上链时,在所述交易的数据中增加用于标识是否压缩的IsCompress字段,增加标志使用的压缩方法的compressType字段,以及增加类型为bytes的RequestBytes字段,然后把交易中的输入参数进行二进制转换,再使用所述压缩策略进行压缩,把压缩后的数据对字段RequestBytes进行赋值,之后把交易中的输入参数置空处理。
2.根据权利要求1所述的减少内存占用的区块链数据存储压缩方法,其特征在于,在所述步骤(1)中,所述压缩策略采用gzip、flate、bzip2、lzw或zlib的压缩方式。
CN202110616660.2A 2021-06-02 2021-06-02 一种减少内存占用的区块链数据存储压缩方法 Active CN113242044B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110616660.2A CN113242044B (zh) 2021-06-02 2021-06-02 一种减少内存占用的区块链数据存储压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110616660.2A CN113242044B (zh) 2021-06-02 2021-06-02 一种减少内存占用的区块链数据存储压缩方法

Publications (2)

Publication Number Publication Date
CN113242044A CN113242044A (zh) 2021-08-10
CN113242044B true CN113242044B (zh) 2022-10-14

Family

ID=77136406

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110616660.2A Active CN113242044B (zh) 2021-06-02 2021-06-02 一种减少内存占用的区块链数据存储压缩方法

Country Status (1)

Country Link
CN (1) CN113242044B (zh)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106603698A (zh) * 2016-12-28 2017-04-26 北京果仁宝科技有限公司 基于dpos的区块链共识方法和节点
CN107094155B (zh) * 2017-06-14 2020-03-10 广东工业大学 一种基于联盟区块链的数据安全存储方法及装置
CN109345386B (zh) * 2018-08-31 2020-04-14 阿里巴巴集团控股有限公司 基于区块链的交易共识处理方法及装置、电子设备
WO2020086654A1 (en) * 2018-10-23 2020-04-30 American Express Travel Related Services Co., Inc. Multi-merchant loyalty point partnership
CN112750037A (zh) * 2019-04-30 2021-05-04 创新先进技术有限公司 基于区块链的数据压缩、查询方法及装置和电子设备
US10764062B2 (en) * 2019-06-03 2020-09-01 Alibaba Group Holding Limited Blockchain ledger compression
CN110288477A (zh) * 2019-06-26 2019-09-27 深圳市元征科技股份有限公司 一种区块链交易数据处理方法及相关设备
CN110555770B (zh) * 2019-08-21 2022-04-01 杭州趣链科技有限公司 一种基于增量哈希的区块链世界状态校验和恢复方法
CN111262876B (zh) * 2020-01-22 2022-05-27 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备以及存储介质

Also Published As

Publication number Publication date
CN113242044A (zh) 2021-08-10

Similar Documents

Publication Publication Date Title
CN103020205B (zh) 一种分布式文件系统上基于硬件加速卡的压缩解压缩方法
CN110196836B (zh) 一种数据存储方法及装置
US8300966B2 (en) Image signal encoding method and decoding method, information source encoding method and decoding method, apparatuses therefor, programs therefor, and storage media which store the programs to process gaussian integer signal
US20130167133A1 (en) Method, terminal and system for upgrading software version
CN110518917B (zh) 基于Huffman编码的LZW数据压缩方法及系统
CN110535869B (zh) 一种基于压缩算法的数据传输方法、终端设备及存储介质
CN105204781A (zh) 压缩方法、装置和设备
CN114415965B (zh) 一种数据迁移方法、装置、设备及存储介质
KR102559290B1 (ko) 하이브리드 클라우드 기반의 실시간 데이터 아카이빙 방법 및 시스템
CN110442580B (zh) 一种区块链状态数据存储方法、设备和存储介质
CN110008192A (zh) 一种数据文件压缩方法、装置、设备及可读存储介质
CN116915259B (zh) 基于物联网的仓配数据优化储存方法及系统
US8515882B2 (en) Efficient storage of individuals for optimization simulation
CN116934487B (zh) 一种金融清算数据优化存储方法及系统
CN112463784A (zh) 数据去重方法、装置、设备及计算机可读存储介质
CN113242044B (zh) 一种减少内存占用的区块链数据存储压缩方法
CN113254450A (zh) 一种基于区块链的增量mpt树账户状态存储方法及系统
CN108880559B (zh) 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备
US11606103B2 (en) Data compression method, data compression device, data decompression method, and data decompression device
CN108053034B (zh) 模型参数处理方法、装置、电子设备及存储介质
CN109360605A (zh) 基因组测序数据归档方法、服务器及计算机可读存储介质
CN116303297A (zh) 文件压缩处理方法、装置、设备及介质
CN112559462A (zh) 一种数据压缩方法、装置、计算机设备和存储介质
CN114844781B (zh) Rack架构下面向编码MapReduce的Shuffle性能优化方法及系统
CN107783990B (zh) 一种数据压缩方法及终端

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