CN113971002A - 基于区块链的数据存储方法、装置、设备及可读存储介质 - Google Patents
基于区块链的数据存储方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN113971002A CN113971002A CN202111129624.XA CN202111129624A CN113971002A CN 113971002 A CN113971002 A CN 113971002A CN 202111129624 A CN202111129624 A CN 202111129624A CN 113971002 A CN113971002 A CN 113971002A
- Authority
- CN
- China
- Prior art keywords
- snapshot
- state tree
- state
- time point
- account
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000013500 data storage Methods 0.000 title claims abstract description 43
- 230000004931 aggregating effect Effects 0.000 claims abstract description 14
- 238000004590 computer program Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000004904 shortening Methods 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于区块链的数据存储方法、装置、设备及可读存储介质,涉及互联网技术领域,通过调用快照合约的方式实现快速且准确的存储状态树中的交易数据信息。所述方法包括:调用快照合约,对区块链网络进行快照扫描,确定区块链网络截止在目标时间点时在本周期内产生的多个区块;获取多个区块对应的多个状态树,读取多个状态树中每个状态树的账户节点,将多个状态树中每个状态树的账户节点聚合,得到区块链账户节点;为区块链账户节点设置快照索引,基于所快照索引,在快照空间中生成状态树快照,状态树快照存储有多个状态树且多个状态树的账户节点中存储有截止到目标时间点时在本周期内产生的货币交易信息。
Description
技术领域
本申请涉及互联网技术领域,特别是涉及一种基于区块链的数据存储方法、装置、设备及可读存储介质。
背景技术
随着互联网技术的不断发展,区块链技术的不断进步,存储在区块链中的数据量的迅速增长,因此,针对区块链的数据备份、保存也变的愈加重要。
相关技术中,基于区块链进行数据存储时,在保证不中断主机业务的前提下,需要复制某个时刻的全部应用数据,生成当前时刻下的应用数据副本,将生成的数据副本放入特定文件中存储。其中,特定文件中的数据副本通常采用树形结构存储在数据库,也即将数据库中的数据依照树形结构进行备份存储。
在实现本申请的过程中,申请人发现相关技术至少存在以下问题:
由于区块链是无限延展的,因此,随着时间的推移,基于区块链创建的树形结构越来越多,数据备份存储的难度逐渐加大,存储时间变长,导致数据存储速度慢,存储效率过低。
发明内容
有鉴于此,本申请提供了一种基于区块链的数据存储方法、装置、设备及可读存储介质,主要目的在于解决目前随着时间的推移,基于区块链创建的树形结构越来越多,数据备份存储的难度逐渐加大,存储时间变长,导致数据存储速度慢,存储效率过低的问题。
依据本申请第一方面,提供了一种基于区块链的数据存储方法,该方法包括:
调用快照合约,对所述区块链网络进行快照扫描,确定所述区块链网络截止在目标时间点时在本周期内产生的多个区块,所述目标时间点为开始调用所述快照合约的时间点;
获取所述多个区块对应的多个状态树,读取所述多个状态树中每个状态树的账户节点,将所述多个状态树中每个状态树的账户节点聚合,得到区块链账户节点;
为所述区块链账户节点设置快照索引,基于所述快照索引,在快照空间中生成状态树快照,所述状态树快照存储有所述多个状态树且所述多个状态树的账户节点中存储有截止在所述目标时间点时在所述本周期内产生的货币交易信息。
可选地,所述获取所述多个区块对应的所述多个状态树,读取所述多个状态树中每个状态树的账户节点,包括:
对于所述多个区块中每个区块,获取所述区块对应的状态树;
读取所述状态树的扩展节点、分支节点和叶子节点,将所述扩展节点、所述分支节点和所述叶子节点作为所述状态树的账户节点;
分别读取所述每个区块的状态树的扩展节点、分支节点和叶子节点,获取所述多个状态树中每个状态树的账户节点。
可选地,所述为所述区块链账户节点设置快照索引,基于所述快照索引,在快照空间中生成状态树快照,包括:
基于所述快照合约,确定所述区块链账户节点在所述状态树快照的写入地址,将所述区块链账户节点与所述写入地址进行组合,得到所述快照索引;
按照所述快照索引的指示,在所述区块链账户节点中确定截止在所述目标时间点时在所述本周期内产生的货币交易信息,将所述货币交易信息在所述多个状态树中进行标记;
将标记后的所述多个状态树存储到所述写入地址在所述快照空间中指示的存储位置,生成所述状态树快照。
可选地,所述为所述区块链账户节点设置快照索引,基于所述快照索引,在快照空间中生成状态树快照之后,所述方法还包括:
确定所述区块链网络在所述目标时间点产生的最后一个区块,在所述状态树快照中确定所述最后一个区块对应的目标状态树;
将所述目标状态树中的账户节点进行标记,识别标记后的所述目标状态树中的账户节点,读取所述账户节点中存储的哈希指针;
在所述哈希指针指示的地址中获取未发生改变的历史货币交易信息,将所述历史货币交易信息与所述账户节点中存储的新货币交易信息聚合,得到初始账户资产;
计算所述初始账户资产与预设单位资产之间的比值,将所述比值作为投票数额,所述预设单位资产为一单位票数的资产价值。
可选地,所述方法还包括:
当检测到数据回滚请求时,识别所述数据回滚请求,确定回滚时间点,所述回滚时间点用于指示上一周期的状态树快照的生成时间点;
在所述快照空间中查询在所述回滚时间点之前产生的最后一个状态树快照,将所述最后一个状态树快照作为指定状态树快照;
读取所述指定状态树快照,在所述指定状态树快照中获取指定货币交易信息,将当前时间点的货币交易信息修改为所述指定货币交易信息,完成数据回滚。
可选地,所述方法还包括:
确定将所述状态树快照存储至所述快照空间的时间点作为历史快照时间点,持续统计当前时间点与所述历史快照时间点之间的时间间隔;
当所述时间间隔达到预设时间间隔时,调用所述快照合约,重新确定所述区块链截止在当前时间点时在当前周期内产生的多个区块,并基于重新确定的多个区块生成新的状态树快照,将所述新的状态树快照存储至所述快照空间。
可选地,所述方法还包括:
当检测到重新调用所述快照合约生成所述新的状态树快照时,提取所述快照空间中的状态树快照作为历史状态树快照;
将所述历史状态树快照存储至历史快照空间,所述历史快照空间存储有历史调用所述快照合约后产生的所述历史状态树快照。
依据本申请第二方面,提供了一种基于区块链的数据存储装置,该装置包括:
第一确定模块,用于调用快照合约,对所述区块链网络进行快照扫描,确定所述区块链网络截止在目标时间点时在本周期内产生的多个区块,所述目标时间点为开始调用所述快照合约的时间点;
获取模块,用于获取所述多个区块对应的多个状态树,读取所述多个状态树中每个状态树的账户节点,将所述多个状态树中每个状态树的账户节点聚合,得到区块链账户节点;
第一存储模块,用于为所述区块链账户节点设置快照索引,基于所述快照索引,在快照空间中生成状态树快照,所述状态树快照存储有所述多个状态树且所述多个状态树的账户节点中存储有截止在所述目标时间点时在所述本周期内产生的货币交易信息。
可选地,所述获取模块,用于对于所述多个区块中每个区块,获取所述区块对应的状态树;读取所述状态树的扩展节点、分支节点和叶子节点,将所述扩展节点、所述分支节点和所述叶子节点作为所述状态树的账户节点;分别读取所述每个区块的状态树的扩展节点、分支节点和叶子节点,获取所述多个状态树中每个状态树的账户节点。
可选地,所述第一存储模块,用于基于所述快照合约,确定所述区块链账户节点在所述状态树快照的写入地址,将所述区块链账户节点与所述写入地址进行组合,得到所述快照索引;按照所述快照索引的指示,在所述区块链账户节点中确定截止在所述目标时间点时在所述本周期内产生的货币交易信息,将所述货币交易信息在所述多个状态树中进行标记;将标记后的所述多个状态树存储到所述写入地址在所述快照空间中指示的存储位置,生成所述状态树快照。
可选地,所述装置还包括:
第二确定模块,用于确定所述区块链网络在所述目标时间点产生的最后一个区块,在所述状态树快照中确定所述最后一个区块对应的目标状态树;
标记模块,用于将所述目标状态树中的账户节点进行标记,识别标记后的所述目标状态树中的账户节点,读取所述账户节点中存储的哈希指针;
聚合模块,用于在所述哈希指针指示的地址中获取未发生改变的历史货币交易信息,将所述历史货币交易信息与所述账户节点中存储的新货币交易信息聚合,得到初始账户资产;
计算模块,用于计算所述初始账户资产与预设单位资产之间的比值,将所述比值作为投票数额,所述预设单位资产为一单位票数的资产价值。
可选地,所述装置还包括:
识别模块,用于当检测到数据回滚请求时,识别所述数据回滚请求,确定回滚时间点,所述回滚时间点用于指示上一周期的状态树快照的生成时间点;
查询模块,用于在所述快照空间中查询在所述回滚时间点之前产生的最后一个状态树快照,将所述最后一个状态树快照作为指定状态树快照;
修改模块,用于读取所述指定状态树快照,在所述指定状态树快照中获取指定货币交易信息,将当前时间点的货币交易信息修改为所述指定货币交易信息,完成数据回滚。
可选地,所述装置还包括:
统计模块,用于确定将所述状态树快照存储至所述快照空间的时间点作为历史快照时间点,持续统计当前时间点与所述历史快照时间点之间的时间间隔;
所述获取模块,还用于当所述时间间隔达到预设时间间隔时,调用所述快照合约,重新确定所述区块链截止在当前时间点时在当前周期内产生的多个区块,并基于重新确定的多个区块生成新的状态树快照,将所述新的状态树快照存储至所述快照空间。
可选地,所述装置还包括:
提取模块,用于当检测到重新调用所述快照合约生成所述新的状态树快照时,提取所述快照空间中的状态树快照作为历史状态树快照;
第二存储模块,用于将所述历史状态树快照存储至历史快照空间,所述历史快照空间存储有历史调用所述快照合约后产生的所述历史状态树快照。
依据本申请第三方面,提供了一种设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述方法的步骤。
依据本申请第四方面,提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述方法的步骤。
借由上述技术方案,本申请提供的一种基于区块链的数据存储方法、装置、设备及可读存储介质,本申请通过调用快照合约,对区块链网络进行快照扫描,确定区块链网络在截止到开始调用快照合约的目标时间点时在本周期内产生的多个区块。随后,获取多个区块对应的多个状态树,读取多个状态树中每个状态树的账户节点,将多个状态树中每个状态树的账户节点聚合,得到区块链账户节点。接下来,为区块链账户节点设置快照索引,基于快照索引,在快照空间中生成存储有多个状态树且多个状态树的账户节点中存储有截止到目标时间点时在本周期内产生的货币交易信息的状态树快照。通过调用快照合约对区块链中的多个状态树进行数据备份,依据账户节点的快照索引信息,将状态树中的账户节点中存储的货币交易信息对应存储在快照空间中,生成状态树快照,无需在存储空间中存储大量的状态树,直接利用快照快速且准确的存储状态树中的数据信息,减轻数据备份存储的难度,缩减数据存储时间,提高数据存储的速度和效率。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本申请实施例提供的一种基于区块链的数据存储方法流程示意图;
图2示出了本申请实施例提供的一种基于区块链的数据存储方法流程示意图;
图3A示出了本申请实施例提供的一种基于区块链的数据存储装置的结构示意图;
图3B示出了本申请实施例提供的一种基于区块链的数据存储装置的结构示意图;
图3C示出了本申请实施例提供的一种基于区块链的数据存储装置的结构示意图;
图3D示出了本申请实施例提供的一种基于区块链的数据存储装置的结构示意图;
图3E示出了本申请实施例提供的一种基于区块链的数据存储装置的结构示意图;
图4示出了本申请实施例提供的一种计算机设备的装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
本申请实施例提供了一种基于区块链的数据存储方法,如图1所示,该方法包括:
101、调用快照合约,对区块链网络进行快照扫描,确定区块链网络截止在目标时间点时在本周期内产生的多个区块,目标时间点为开始调用快照合约的时间点。
102、获取多个区块对应的多个状态树,读取多个状态树中每个状态树的账户节点,将多个状态树中每个状态树的账户节点聚合,得到区块链账户节点。
103、为区块链账户节点设置快照索引,基于快照索引,在快照空间中生成状态树快照,状态树快照存储有多个状态树且多个状态树的账户节点中存储有截止到目标时间点时在本周期内产生的货币交易信息。
本申请实施例提供的方法,通过调用快照合约,对区块链网络进行快照扫描,确定区块链网络在截止到开始调用快照合约的目标时间点时在本周期内产生的多个区块。随后,获取多个区块对应的多个状态树,读取多个状态树中每个状态树的账户节点,将多个状态树中每个状态树的账户节点聚合,得到区块链账户节点。接下来,为区块链账户节点设置快照索引,基于快照索引,在快照空间中生成存储有多个状态树且多个状态树的账户节点中存储有截止到目标时间点时在本周期内产生的货币交易信息的状态树快照。通过调用快照合约对区块链中的多个状态树进行数据备份,依据账户节点的快照索引信息,将状态树中的账户节点中存储的货币交易信息对应存储在快照空间中,生成状态树快照,无需在存储空间中存储大量的状态树,直接利用快照快速且准确的存储状态树中的数据信息,减轻数据备份存储的难度,缩减数据存储时间,提高数据存储的速度和效率。
本申请实施例提供了一种基于区块链的数据存储方法,如图2所示,该方法包括:
201、调用快照合约,对区块链网络进行快照扫描,确定区块链网络截止在目标时间点时在本周期内产生的多个区块。
随着互联网技术的不断发展,区块链技术的不断进步,存储在区块链中的数据量的迅速增长,因此,针对区块链的数据备份、保存也变的愈加重要。目前,基于区块链进行数据存储时,在保证不中断主机业务的前提下,需要复制某个时刻的全部应用数据,生成当前时刻下的应用数据副本,将生成的数据副本放入特定文件中存储。其中,特定文件中的数据副本通常采用树形结构存储在数据库,也即将数据库中的数据依照树形结构进行备份存储。但是,申请人认识到,由于区块链是无限延展的,因此,随着时间的推移,基于区块链创建的树形结构越来越多,数据备份存储的难度逐渐加大,存储时间变长,导致数据存储速度慢,存储效率过低。
因此,本申请提出一种基于区块链的数据存储方法,通过调用快照合约,对区块链网络进行快照扫描,确定区块链网络在截止到开始调用快照合约的目标时间点时在本周期内产生的多个区块。随后,获取多个区块对应的多个状态树,读取多个状态树中每个状态树的账户节点,将多个状态树中每个状态树的账户节点聚合,得到区块链账户节点。接下来,为区块链账户节点设置快照索引,基于快照索引,在快照空间中生成存储有多个状态树且多个状态树的账户节点中存储有截止到目标时间点时在本周期内产生的货币交易信息的状态树快照。通过调用快照合约对区块链中的多个状态树进行数据备份,依据账户节点的快照索引信息,将状态树中的账户节点中存储的货币交易信息对应存储在快照空间中,生成状态树快照,无需在存储空间中存储大量的状态树,直接利用快照快速且准确的存储状态树中的数据信息,减轻数据备份存储的难度,缩减数据存储时间,提高数据存储的速度和效率。
其中,本申请应用于网络货币交易的区块链网络中,通过调用快照合约,对区块链中的状态树进行快照备份,其中状态树为MPT(Merkle Patricia Tree,默克尔帕特里夏树),能够存储任意长度的key-value键值对数据,提供一种快速计算所维护数据集哈希标识的机制,实现快速状态回滚,进行轻节点的扩展,完成简单支付验证。快照技术通过记录某一时刻的状态实现更快速的存储数据,因此,本申请采用快照技术对MPT状态树进行快照数据备份存储。
具体地,调用快照合约,在检测到快照合约被调用时,确定当前的时间点,将当前时间点作为目标时间点,随后,对区块链网络进行快照扫描,确定区块链网络截止在目标时间点时在本周期内产生的多个区块,其中,区块链网络用于执行网络货币交易。通过快照的方式,将获取到的截止到目标时间点时在本周期内产生的多个区块进行数据存储,当存储设备发生应用故障或者文件损坏时可以进行快速的数据恢复,将数据恢复某个可用的时间点的状态,具体地,可用时间点可以是历史调用快照合约生成状态树快照的历史时间点。
202、获取多个区块对应的多个状态树,读取多个状态树中每个状态树的账户节点,将多个状态树中每个状态树的账户节点聚合,得到区块链账户节点。
在本申请实施例中,在区块链网络中每隔一段时间就会新产生一个区块,在新的区块中发生交易,每个区块有且仅有一个状态树,读取状态树中的账户节点,获取当前区块在截止到目标时间点时在本周期内产生的货币交易信息。
其中,对于多个区块中每个区块,获取区块对应的状态树,随后,由于MPT树包含三种节点,Extension Node扩展节点,保存路径压缩压缩数据,即shared nibbles中保存的16进制数据,Branch Node分支节点,无法压缩,Leaf Node:叶子节点,保存账户状态数据,因此,读取状态树的扩展节点、分支节点和叶子节点就相当于获取到了整个状态树的数据结果和数据信息,将扩展节点、分支节点和叶子节点作为状态树的账户节点。分别读取每个区块的状态树的扩展节点、分支节点和叶子节点,获取多个状态树中每个状态树的账户节点,最后,将多个状态树中每个状态树的账户节点聚合,得到区块链账户节点。
通过识别状态树的账户节点获取状态树的数据结构和当前区块的货币交易信息,再将多个状态树的账户节点聚合,得到区块链账户节点,就意味着,已经获取到整个区块链在截止到目标时间点时在本周期内所发生的全部货币交易信息。
203、为区块链账户节点设置快照索引,基于快照索引,在快照空间中生成状态树快照。
在本申请实施例中,调用快照合约会对当前区块链进行快照,快照获得的账户节点会依据预设的快照索引写入快照空间对应的索引地址中,生成目标时间点的状态树快照。利用快照的方式对状态树中的货币交易数据进行存储,能够更加快速的存储状态树中的数据信息,提高状态树数据备份存储的效率。
具体地,基于快照合约,确定区块链账户节点在状态树快照的写入地址,将区块链账户节点与写入地址进行组合,得到快照索引,随后,按照快照索引的指示,在区块链账户节点中确定截止到目标时间点时在本周期内产生的货币交易信息,其中,货币交易信息可以是账户余额、交易次数等,本申请对货币交易信息的内容不进行具体限定,将货币交易信息在所述多个状态树中进行标记,最后,将标记后的多个状态树存储到写入地址在快照空间中指示的存储位置,生成状态树快照。
在具体实施过程中,由于本申请应用于执行网络货币交易的区块链网络中,状态树快照中的最后一个区块的状态树中账户节点存储的货币交易信息可以代表下一个周期的初始交易状态。因此,生成状态树快照之后,需要确定区块链网络在截止到目标时间点时在本周期内产生的最后一个区块,在状态树快照中确定最后一个区块对应的目标状态树,将目标状态树中的账户节点进行标记。在实际应用过程中,新区块产生后,交易发生在新区块,新区块的状态树也会随之发生改变,也就是说账户节点中存储的账户余额、交易次数变化,状态树在发生变化的部分构建新节点存储新货币交易信息,未发生变化的部分采用哈希指针的方式与之前的状态树共享历史交易信息。所以在对目标状态树的账户节点标记之后,需要识别标记后的目标状态树中的账户节点,读取账户节点中存储的哈希指针,在哈希指针指示的地址中获取未发生改变的历史货币交易信息,将历史货币交易信息与账户节点中存储的新货币交易信息聚合,得到初始账户资产。最后,计算初始账户资产与预设单位资产之间的比值,对所述比值取整得到整数值,将整数值作为投票数额,具体地,预设单位资产为一单位票数的资产价值,可以采用默认的数值,也可以是相关工作人员根据具体交易情况进行设置,本申请对预设单位资产的大小和设置方式不进行具体限定。
其中,由于区块链网络会不断产生新区块,生成新的货币交易信息,因此,每隔一段时间就需要调用快照合约,对区块链网络进行快照备份,具体地,可以设置一个时间间隔,如7天、15天等,本申请对预设时间间隔的时间长短不进行具体限定。确定将所述状态树快照存储至所述快照空间的时间点作为历史快照时间点,持续统计当前时间点与历史快照时间点之间的时间间隔,当时间间隔达到预设时间间隔时,调用所述快照合约,重新确定所述区块链截止在当前时间点时在当前周期内产生的多个区块,并基于重新确定的多个区块生成新的状态树快照,将新的状态树快照存储至快照空间。其中,当检测到重新调用快照合约生成新的状态树快照时,提取快照空间中的状态树快照作为历史状态树快照,将历史状态树快照存储至历史快照空间,其中历史快照空间存储有历史调用快照合约后产生的历史状态树快照,以便后续需要数据回滚时可以在历史快照空间中读取到相应的历史状态树快照。
在其他应用场景下,存在区块链网络中的货币交易发生错误或者是货币交易数据发生损毁的情况,此时,区块链网络会发出数据回滚请求,请求将数据信息恢复到某一历史时刻,通过查询历史快照空间,调取历史时刻生成的历史状态树快照,将当前的交易数据信息改写为历史状态树快照中账户节点中存储的历史交易数据信息,就可以实现数据回滚,将货币交易信息恢复至某一历史时刻。具体地,当检测到数据回滚请求时,识别数据回滚请求,确定指示上一周期的状态树快照的生成时间点作为回滚时间点,在快照空间中查询在回滚时间点之前产生的最后一个状态树快照,将最后一个状态树快照作为指定状态树快照,读取指定状态树快照,在指定状态树快照中获取指定货币交易信息,将当前时间点的货币交易信息修改为指定货币交易信息,完成数据回滚。
本申请实施例提供的方法,通过调用快照合约,对区块链网络进行快照扫描,确定区块链网络在截止到开始调用快照合约的目标时间点时在本周期内产生的多个区块。随后,获取多个区块对应的多个状态树,读取多个状态树中每个状态树的账户节点,将多个状态树中每个状态树的账户节点聚合,得到区块链账户节点。接下来,为区块链账户节点设置快照索引,基于快照索引,在快照空间中生成存储有多个状态树且多个状态树的账户节点中存储有截止到目标时间点时在本周期内产生的货币交易信息的状态树快照。通过调用快照合约对区块链中的多个状态树进行数据备份,依据账户节点的快照索引信息,将状态树中的账户节点中存储的货币交易信息对应存储在快照空间中,生成状态树快照,无需在存储空间中存储大量的状态树,直接利用快照快速且准确的存储状态树中的数据信息,减轻数据备份存储的难度,缩减数据存储时间,提高数据存储的速度和效率。
进一步地,作为图1所述方法的具体实现,本申请实施例提供了一种基于区块链的数据存储装置,如图3A所示,所述装置包括:第一确定模块301、获取模块302、第一存储模块303。
该第一确定模块301,用于调用快照合约,对所述区块链网络进行快照扫描,确定所述区块链网络截止在目标时间点时在本周期内产生的多个区块,所述目标时间点为开始调用所述快照合约的时间点;
该获取模块302,用于获取所述多个区块对应的多个状态树,读取所述多个状态树中每个状态树的账户节点,将所述多个状态树中每个状态树的账户节点聚合,得到区块链账户节点;
该第一存储模块303,用于为所述区块链账户节点设置快照索引,基于所述快照索引,在快照空间中生成状态树快照,所述状态树快照存储有所述多个状态树且所述多个状态树的账户节点中存储有截止到所述目标时间点时在本周期内产生的货币交易信息。
在具体的应用场景中,该获取模块302,用于对于所述多个区块中每个区块,获取所述区块对应的状态树;读取所述状态树的扩展节点、分支节点和叶子节点,将所述扩展节点、所述分支节点和所述叶子节点作为所述状态树的账户节点;分别读取所述每个区块的状态树的扩展节点、分支节点和叶子节点,获取所述多个状态树中每个状态树的账户节点。
在具体的应用场景中,该第一存储模块303,用于基于所述快照合约,确定所述区块链账户节点在所述状态树快照的写入地址,将所述区块链账户节点与所述写入地址进行组合,得到所述快照索引;按照所述快照索引的指示,在所述区块链账户节点中确定截止到所述目标时间点时在本周期内产生的货币交易信息,将所述货币交易信息在所述多个状态树中进行标记;将标记后的所述多个状态树存储到所述写入地址在所述快照空间中指示的存储位置,生成所述状态树快照。
在具体的应用场景中,如图3B所示,所述装置还包括:第二确定模块304、标记模块305、聚合模块306、计算模块307。
该第二确定模块304,用于确定所述区块链网络在所述目标时间点产生的最后一个区块,在所述状态树快照中确定所述最后一个区块对应的目标状态树;
该标记模块305,用于将所述目标状态树中的账户节点进行标记,识别标记后的所述目标状态树中的账户节点,读取所述账户节点中存储的哈希指针;
该聚合模块306,用于在所述哈希指针指示的地址中获取未发生改变的历史货币交易信息,将所述历史货币交易信息与所述账户节点中存储的新货币交易信息聚合,得到初始账户资产;
该计算模块307,用于计算所述初始账户资产与预设单位资产之间的比值,将所述比值作为投票数额,所述预设单位资产为一单位票数的资产价值。
在具体的应用场景中,如图3C所示,所述装置还包括:识别模块308、查询模块309、修改模块310。
该识别模块308,用于当检测到数据回滚请求时,识别所述数据回滚请求,确定回滚时间点,所述回滚时间点用于指示上一周期的状态树快照的生成时间点;
该查询模块309,用于在所述快照空间中查询在所述回滚时间点之前产生的最后一个状态树快照,将所述最后一个状态树快照作为指定状态树快照;
该修改模块310,用于读取所述指定状态树快照,在所述指定状态树快照中获取指定货币交易信息,将当前时间点的货币交易信息修改为所述指定货币交易信息,完成数据回滚。
在具体的应用场景中,如图3D所示,所述装置还包括:统计模块311。
该统计模块311,用于确定将所述状态树快照存储至所述快照空间的时间点作为历史快照时间点,持续统计当前时间点与所述历史快照时间点之间的时间间隔;
该获取模块302,还用于当所述时间间隔达到预设时间间隔时,调用所述快照合约,重新确定所述区块链截止在当前时间点时在当前周期内产生的多个区块,并基于重新确定的多个区块生成新的状态树快照,将所述新的状态树快照存储至所述快照空间。
在具体的应用场景中,如图3E所示,所述装置还包括:提取模块312、第二存储模块313。
该提取模块312,用于当检测到重新调用所述快照合约生成所述新的状态树快照时,提取所述快照空间中的状态树快照作为历史状态树快照;
该第二存储模块313,用于将所述历史状态树快照存储至历史快照空间,所述历史快照空间存储有历史调用所述快照合约后产生的所述历史状态树快照。
本申请实施例提供的装置,通过调用快照合约,对区块链网络进行快照扫描,确定区块链网络在截止到开始调用快照合约的目标时间点时在本周期内产生的多个区块。随后,获取多个区块对应的多个状态树,读取多个状态树中每个状态树的账户节点,将多个状态树中每个状态树的账户节点聚合,得到区块链账户节点。接下来,为区块链账户节点设置快照索引,基于快照索引,在快照空间中生成存储有多个状态树且多个状态树的账户节点中存储有截止到目标时间点时在本周期内产生的货币交易信息的状态树快照。通过调用快照合约对区块链中的多个状态树进行数据备份,依据账户节点的快照索引信息,将状态树中的账户节点中存储的货币交易信息对应存储在快照空间中,生成状态树快照,无需在存储空间中存储大量的状态树,直接利用快照快速且准确的存储状态树中的数据信息,减轻数据备份存储的难度,缩减数据存储时间,提高数据存储的速度和效率。
需要说明的是,本申请实施例提供的一种基于区块链的数据存储装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
在示例性实施例中,参见图4,还提供了一种设备,该设备包括总线、处理器、存储器和通信接口,还可以包括输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的基于区块链的数据存储方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的基于区块链的数据存储方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (10)
1.一种基于区块链的数据存储方法,其特征在于,所述方法应用于区块链网络,所述区块链网络用于执行网络货币交易,包括:
调用快照合约,对所述区块链网络进行快照扫描,确定所述区块链网络截止在目标时间点时在本周期内产生的多个区块,所述目标时间点为开始调用所述快照合约的时间点;
获取所述多个区块对应的多个状态树,读取所述多个状态树中每个状态树的账户节点,将所述多个状态树中每个状态树的账户节点聚合,得到区块链账户节点;
为所述区块链账户节点设置快照索引,基于所述快照索引,在快照空间中生成状态树快照,所述状态树快照存储有所述多个状态树且所述多个状态树的账户节点中存储有截止在所述目标时间点时在所述本周期内产生的货币交易信息。
2.根据权利要求1所述的方法,其特征在于,所述获取所述多个区块对应的所述多个状态树,读取所述多个状态树中每个状态树的账户节点,包括:
对于所述多个区块中每个区块,获取所述区块对应的状态树;
读取所述状态树的扩展节点、分支节点和叶子节点,将所述扩展节点、所述分支节点和所述叶子节点作为所述状态树的账户节点;
分别读取所述每个区块的状态树的扩展节点、分支节点和叶子节点,获取所述多个状态树中每个状态树的账户节点。
3.根据权利要求1所述的方法,其特征在于,所述为所述区块链账户节点设置快照索引,基于所述快照索引,在快照空间中生成状态树快照,包括:
基于所述快照合约,确定所述区块链账户节点在所述状态树快照的写入地址,将所述区块链账户节点与所述写入地址进行组合,得到所述快照索引;
按照所述快照索引的指示,在所述区块链账户节点中确定截止在所述目标时间点时在所述本周期内产生的货币交易信息,将所述货币交易信息在所述多个状态树中进行标记;
将标记后的所述多个状态树存储到所述写入地址在所述快照空间中指示的存储位置,生成所述状态树快照。
4.根据权利要求1所述的方法,其特征在于,所述为所述区块链账户节点设置快照索引,基于所述快照索引,在快照空间中生成状态树快照之后,所述方法还包括:
确定所述区块链网络在所述目标时间点产生的最后一个区块,在所述状态树快照中确定所述最后一个区块对应的目标状态树;
将所述目标状态树中的账户节点进行标记,识别标记后的所述目标状态树中的账户节点,读取所述账户节点中存储的哈希指针;
在所述哈希指针指示的地址中获取未发生改变的历史货币交易信息,将所述历史货币交易信息与所述账户节点中存储的新货币交易信息聚合,得到初始账户资产;
计算所述初始账户资产与预设单位资产之间的比值,对所述比值进行取整,得到第一整数值,将所述第一整数值作为投票数额,所述预设单位资产为一单位票数的资产价值。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到数据回滚请求时,识别所述数据回滚请求,确定回滚时间点,所述回滚时间点用于指示上一周期的状态树快照的生成时间点;
在所述快照空间中查询在所述回滚时间点之前产生的最后一个状态树快照,将所述最后一个状态树快照作为指定状态树快照;
读取所述指定状态树快照,在所述指定状态树快照中获取指定货币交易信息,将当前时间点的货币交易信息修改为所述指定货币交易信息,完成数据回滚。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定将所述状态树快照存储至所述快照空间的时间点作为历史快照时间点,持续统计当前时间点与所述历史快照时间点之间的时间间隔;
当所述时间间隔达到预设时间间隔时,调用所述快照合约,重新确定所述区块链截止在当前时间点时在当前周期内产生的多个区块,并基于重新确定的多个区块生成新的状态树快照,将所述新的状态树快照存储至所述快照空间。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当检测到重新调用所述快照合约生成所述新的状态树快照时,提取所述快照空间中的状态树快照作为历史状态树快照;
将所述历史状态树快照存储至历史快照空间,所述历史快照空间存储有历史调用所述快照合约后产生的所述历史状态树快照。
8.一种基于区块链的数据存储装置,其特征在于,所述装置应用于区块链网络,所述区块链网络用于执行网络货币交易,包括:
第一确定模块,用于调用快照合约,对所述区块链网络进行快照扫描,确定所述区块链网络截止在目标时间点时在本周期内产生的多个区块,所述目标时间点为开始调用所述快照合约的时间点;
获取模块,用于获取所述多个区块对应的多个状态树,读取所述多个状态树中每个状态树的账户节点,将所述多个状态树中每个状态树的账户节点聚合,得到区块链账户节点;
第一存储模块,用于为所述区块链账户节点设置快照索引,基于所述快照索引,在快照空间中生成状态树快照,所述状态树快照存储有所述多个状态树且所述多个状态树的账户节点中存储有截止在所述目标时间点时在所述本周期内产生的货币交易信息。
9.一种设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111129624.XA CN113971002A (zh) | 2021-09-26 | 2021-09-26 | 基于区块链的数据存储方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111129624.XA CN113971002A (zh) | 2021-09-26 | 2021-09-26 | 基于区块链的数据存储方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113971002A true CN113971002A (zh) | 2022-01-25 |
Family
ID=79586826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111129624.XA Pending CN113971002A (zh) | 2021-09-26 | 2021-09-26 | 基于区块链的数据存储方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113971002A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110493325A (zh) * | 2019-07-31 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 区块链状态数据同步方法及装置、电子设备 |
CN111316256A (zh) * | 2019-11-29 | 2020-06-19 | 支付宝(杭州)信息技术有限公司 | 拍摄区块链数据的快照 |
CN111630507A (zh) * | 2020-04-20 | 2020-09-04 | 支付宝(杭州)信息技术有限公司 | 账户模型下的分布式区块链数据存储 |
US11030187B1 (en) * | 2016-05-18 | 2021-06-08 | Salesforce.Com, Inc. | Distributed database systems and structures |
CN113360456A (zh) * | 2021-08-11 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 数据归档方法、装置、设备以及存储介质 |
-
2021
- 2021-09-26 CN CN202111129624.XA patent/CN113971002A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11030187B1 (en) * | 2016-05-18 | 2021-06-08 | Salesforce.Com, Inc. | Distributed database systems and structures |
CN110493325A (zh) * | 2019-07-31 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 区块链状态数据同步方法及装置、电子设备 |
CN111316256A (zh) * | 2019-11-29 | 2020-06-19 | 支付宝(杭州)信息技术有限公司 | 拍摄区块链数据的快照 |
CN111630507A (zh) * | 2020-04-20 | 2020-09-04 | 支付宝(杭州)信息技术有限公司 | 账户模型下的分布式区块链数据存储 |
CN113360456A (zh) * | 2021-08-11 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 数据归档方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109359222B (zh) | 数据存储方法及系统、设备和存储介质 | |
JP6884128B2 (ja) | データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム | |
CN110543446B (zh) | 一种基于快照的区块链直接归档方法 | |
CN105573859A (zh) | 一种数据库的数据恢复方法和设备 | |
CN113722150B (zh) | 云硬盘数据压缩备份及恢复方法、装置、设备及存储介质 | |
JP2021518021A (ja) | データ処理方法、装置及びコンピュータ読み取り可能な記憶媒体 | |
CN112632163B (zh) | 大数据报表导出方法及相关设备 | |
CN108009223B (zh) | 一种交易数据的一致性检测方法及装置 | |
CN114936188A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110753080A (zh) | 区块传输方法、装置、设备及可读存储介质 | |
CN113761059A (zh) | 数据处理方法及装置 | |
CN113971002A (zh) | 基于区块链的数据存储方法、装置、设备及可读存储介质 | |
CN111522827A (zh) | 一种数据更新方法、装置和电子设备 | |
CN111404737A (zh) | 一种容灾处理方法以及相关装置 | |
US20220129446A1 (en) | Distributed Ledger Management Method, Distributed Ledger System, And Node | |
CN115578180A (zh) | 银行网点的现金资源的管理方法及装置 | |
CN110597669B (zh) | 银行历史数据参数化备份恢复方法和装置 | |
US11115189B2 (en) | Verifying a blockchain-type ledger | |
CN111399774B (zh) | 分布式存储系统下基于快照的数据处理方法和装置 | |
CN112860376A (zh) | 一种快照链的制作方法、装置、电子设备及存储介质 | |
CN114138786A (zh) | 一种联机交易消息去重方法、装置、介质、产品和设备 | |
CN114217741A (zh) | 存储装置的存储方法及存储装置 | |
CN111399759B (zh) | 读数据、写数据的方法、以及对象文件系统 | |
CN112612648B (zh) | 一种SQL Server数据库恢复方法、终端设备及存储介质 | |
CN110688071A (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 |