CN111507720B - 基于区块链的数据快照方法、装置及计算机可读存储介质 - Google Patents

基于区块链的数据快照方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN111507720B
CN111507720B CN202010321605.6A CN202010321605A CN111507720B CN 111507720 B CN111507720 B CN 111507720B CN 202010321605 A CN202010321605 A CN 202010321605A CN 111507720 B CN111507720 B CN 111507720B
Authority
CN
China
Prior art keywords
account
transaction
snapshot
block
target block
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
CN202010321605.6A
Other languages
English (en)
Other versions
CN111507720A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010321605.6A priority Critical patent/CN111507720B/zh
Publication of CN111507720A publication Critical patent/CN111507720A/zh
Priority to PCT/CN2021/078005 priority patent/WO2021213002A1/zh
Application granted granted Critical
Publication of CN111507720B publication Critical patent/CN111507720B/zh
Priority to US17/740,925 priority patent/US11782793B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本申请公开了一种基于区块链的数据快照方法、装置及计算机可读存储介质,该方法包括:获取快照触发指令,获取快照触发指令的触发时刻;根据快照触发指令,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;快照账户状态是与交易区块中的交易数据相关的账户数据;获取目标区块的预写日志;目标区块为交易区块中具有最高区块高度的区块;预写日志为包含目标区块对应的账户数据的日志;根据预写日志对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;脏数据是基于账本中包含目标区块中的不完整的交易数据所生成的。采用本申请,可保证针对交易账户的快照处理的实时性。

Description

基于区块链的数据快照方法、装置及计算机可读存储介质
技术领域
本申请涉及数据处理的技术领域,尤其涉及一种基于区块链的数据快照方法、装置及计算机可读存储介质。
背景技术
在时刻A,对交易账户进行快照处理,即为在时刻A,对交易账户的账户状态进行备份。其中,交易账户的账户状态可以指交易账户的账户余额的状态。
区块链网络中可以存在共识节点,交易账户的账户状态是通过共识节点的账本中所提交的每个区块中的交易数据对交易账户进行执行后,所得到的账户数据。由于,在触发快照的触发时刻(假设为时刻B),很大可能共识节点正在向账本中提交某个区块,且正在提交的该个区块在该时刻B并未完全提交到账本中。因此,现有技术中,需要在触发快照之后,等待共识节点将当前正在提交的区块完全提交到账本中之后,才能对交易账户的账户状态进行快照处理,这会导致针对交易账户的快照处理有较大延时。
申请内容
本申请提供了一种基于区块链的数据快照方法、装置及计算机可读存储介质,可保证针对交易账户的快照处理的实时性。
本申请一方面提供了一种基于区块链的数据快照方法,包括:
获取快照触发指令,获取快照触发指令的触发时刻;
根据快照触发指令,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;快照账户状态是与交易区块中的交易数据相关的账户数据;
获取目标区块的预写日志;目标区块为交易区块中具有最高区块高度的区块;目标区块的预写日志为包含目标区块对应的账户数据的日志;
根据目标区块的预写日志对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;所述脏数据是基于账本中包含目标区块中的不完整的交易数据所生成的。
本申请一方面提供了一种基于区块链的数据快照装置,包括:
指令获取模块,用于获取快照触发指令,获取快照触发指令的触发时刻;
快照模块,用于根据快照触发指令,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;快照账户状态是与交易区块中的交易数据相关的账户数据;
日志获取模块,用于获取目标区块的预写日志;目标区块为交易区块中具有最高区块高度的区块;目标区块的预写日志为包含目标区块对应的账户数据的日志;
修正模块,用于根据目标区块的预写日志对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;脏数据是基于账本中包含目标区块中的不完整的交易数据所生成的。
其中,数据快照装置,还包括:
区块获取模块,用于生成目标区块,将目标区块进行共识;
日志生成模块,用于当检测到目标区块的共识通过率大于或者等于通过率阈值时,生成目标区块的预写日志;
日志存储模块,用于存储目标区块的预写日志,将目标区块添加至账本中。
其中,日志生成模块,包括:
第一日志生成单元,用于生成目标区块的重做日志;重做日志包括对交易账户进行执行与目标区块对应的交易后,交易账户的账户状态;
第二日志生成单元,用于根据重做日志,生成目标区块的预写日志。
其中,日志生成模块,包括:
第三日志生成单元,用于生成目标区块的撤销日志;撤销日志包括对交易账户进行执行与目标区块对应的交易前,交易账户的账户状态;
第四日志生成单元,用于根据撤销日志,生成目标区块的预写日志。
其中,修正模块,还用于:
根据目标区块的预写日志中的重做日志,对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;修正后的快照账户状态包括对交易账户进行执行与目标区块对应的交易后,交易账户的账户状态。
其中,修正模块,还用于:
根据目标区块的预写日志中的撤销日志,对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;修正后的快照账户状态包括对交易账户进行执行与目标区块对应的交易前,交易账户的账户状态。
其中,日志存储模块,包括:
高度获取单元,用于获取目标区块的区块高度;
关联存储单元,用于将目标区块的区块高度和目标区块的预写日志,关联存储至账本;目标区块的区块高度用于关联检索目标区块的预写日志;
区块添加单元,用于根据目标区块的区块高度将目标区块添加至账本中。
其中,关联存储单元,包括:
关联信息生成子单元,用于根据目标区块的区块高度和目标区块的预写日志,生成关联信息;
打包子单元,用于将关联信息进行打包,得到关联区块;
区块添加子单元,用于将关联区块添加至账本中。
其中,日志获取模块,包括:
遍历单元,用于根据目标区块的区块高度,遍历账本中包含目标区块的区块高度的关联区块;
关联信息获取单元,用于从关联区块中获取包含目标区块的区块高度的关联信息;
日志确定单元,用于将关联信息中的预写日志,确定为目标区块的预写日志。
其中,数据快照装置,还用于:
当交易账户的账户状态遭到非法篡改时,根据所存储的修正后的快照账户状态对遭到非法篡改后的交易账户的账户状态进行状态恢复,得到恢复后的账户状态;恢复后的账户状态与修正后的快照账户状态相同。
其中,账本中包括主数据库和快照数据库;主数据库用于存储交易区块;快照数据库中同步存储有对交易账户执行交易区块中的交易数据所属的交易后,交易账户的账户状态;
快照模块,具体用于:
根据快照触发指令,控制快照数据库暂停同步对交易账户执行触发时刻后的交易数据所属的交易后,交易账户的账户状态,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;主数据库用于在进行快照处理的期间内继续添加触发时刻后的交易数据;
则,数据快照装置具体用于:
当存储修正后的快照账户状态后,控制快照数据库继续同步对交易账户执行主数据库中触发时刻后的交易数据所属的交易后,交易账户的账户状态。
其中,快照模块,包括:
状态获取单元,用于从快照数据库中,获取触发时刻时交易账户的最终状态;
状态确定单元,用于将交易账户的最终状态,确定为交易账户的快照账户状态。
本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行如本申请中一方面中的方法。
本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述一方面中的方法。
本申请可以获取快照触发指令,获取快照触发指令的触发时刻;根据快照触发指令,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;快照账户状态是与交易区块中的交易数据相关的账户数据;获取目标区块的预写日志;目标区块为交易区块中具有最高区块高度的区块;目标区块的预写日志为包含目标区块对应的账户数据的日志;根据目标区块的预写日志对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态,存储修正后的快照账户状态;脏数据是基于账本中包含目标区块中的不完整的交易数据所生成的。由此可见,本申请提出的方法由于可以通过目标区块的预写日志,对快照时由于存在不完整的目标区块所产生的脏数据进行修正,因此,即使在触发时刻目标区块未完全添加至账本中,也可以立即对交易账户的账户状态进行快照处理,提高了获取交易账户的快照账户状态的效率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种系统架构示意图;
图2是本申请提供的一种快照处理的场景示意图;
图3是本申请提供的一种基于区块链的数据快照方法的流程示意图;
图4是本申请提供的一种获取预写日志的场景示意图;
图5是本申请提供的一种数据同步的场景示意图;
图6是本申请提供的一种恢复账户状态的场景示意图;
图7是本申请提供的一种基于区块链的数据快照装置的结构示意图;
图8是本申请提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请涉及到区块链的相关技术。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链中包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
请参见图1,是本申请提供的一种系统架构示意图。如图1所示,是本申请提供的一种系统架构示意图。该系统架构示意图包括多个节点,该多个节点均为区块链网络中的节点,该多个节点具体包括节点100、节点200、节点300以及节点400。其中,一个节点可以由一个服务器构成,也可以由多个服务器构成,构成一个节点的服务器的个数根据实际应用场景决定,对此不做限制。节点100、节点200、节点300以及节点400之间相互连接,且节点100、节点200、节点300以及节点400中可以包括一个或者多个共识节点。其中,每个共识节点都可以对交易账户的账户状态进行快照处理(即对交易账户的账户状态进行备份处理),交易账户的账户状态是在对交易账户进行执行共识节点的账本中所提交的区块中的交易数据所属的交易后,所得到的账户数据。可以理解的是,同属于一个区块链网络中的各个共识节点的账本中所提交的区块相同。每个共识节点对交易账户进行快照处理的过程相同且独立,此处以共识节点100对交易账户的账户状态进行快照处理为例进行本申请的说明。
请一并参见图2,是本申请提供的一种快照处理的场景示意图。如图2所示,共识节点100的账本中提交有区块1、区块2和区块3,每个区块中均可以包括多个交易数据。其中,在t1时刻,区块1和区块2在共识节点100的账本中提交完成,区块3在共识节点100的账本中正在提交,即只提交了部分交易数据。由于交易账户的账户状态(这里可以指交易账户的账户余额)是在执行共识节点100的账本中所提交的区块中的交易数据所属的交易后,所生成的交易账户的账户数据,且共识节点在提交区块时,当前一个区块在账本中提交完成,才会继续提交后一个区块。因此,假设此处在共识节点100将区块1提交至账本中之前,交易账户(包括交易账户a、交易账户b和交易账户c)的账户状态为账户状态100a。账户状态100a具体为:交易账户a的余额为100,交易账户b的余额为100,交易账户c的余额为100。此处,若执行区块1中的交易数据所属的交易后,对交易账户所执行的操作为操作100b(即对交易账户a的余额执行扣除10,对交易账户b的余额执行扣除20),则通过向账本中提交区块1,可以将账户状态100a变为账户状态101a。账户状态101a具体为:交易账户a的余额为90(100减去10),交易账户b的余额为80(100减去20),交易账户c的余额为100。若区块2中的交易数据对交易账户所执行的操作为操作101b(即对交易账户a的余额执行扣除50,对交易账户c的余额执行增加20),则通过向账本中提交区块1,可以将账户状态101a变为账户状态102a。账户状态102a具体为:交易账户a的余额为40(90减去50),交易账户b的余额为80,交易账户c的余额为120(100加上20)。若执行区块3中的交易数据所属的交易后,对交易账户所执行的操作为操作102b(即对交易账户c的余额执行增加30,对交易账户a的余额执行增加100),并且,在t1时刻之前在执行账本中所提交的区块3的部分交易数据所属的交易后,对交易账户所执行的操作为操作102b中的“对交易账户c的余额执行增加30”,在t1时刻之后在执行账本中所提交的区块3的部分交易数据所属的交易后,对交易账户所执行的操作为操作102b中的“对交易账户a的余额执行增加100”,则当t1时刻触发对交易账户的快照指令时,共识节点可以立即对此时的交易账户的账户状态进行快照处理,得到账户状态103a。由上可知,在t1时刻快照得到的账户状态103a为区块3对应的账户状态,但是账户状态103a并不是区块3中的交易数据均被提交完成后,交易账户的账户状态,而是区块3中的交易数据被部分提交后,交易账户的账户状态。因此,账户状态103a是不完整的。
在本申请中,共识节点100每在账本中提交一个区块,均会先生成所提交的区块的预写日志,该预写日志为将区块进行序列化之后所得到的二进制码。一个区块对应于一个预写日志,通过一个区块的预写日志可以恢复出执行该区块中的所有交易数据所属的交易后,交易账户的账户状态。共识节点100在将某个区块提交到账本中之前,均会预先存储该个区块的预写日志,因此,在t1时刻,共识节点100已经预先存储有区块1的预写日志、区块2的预写日志以及区块3的预写日志。其中,区块1的预写日志、区块2的预写日志以及区块3的预写日志也可以是存储于共识节点100的账本中的。由于账户状态103a是在t1时刻实时对交易账户的账户状态进行快照处理所得到的,因此,可以将账户状态103a称之为快照账户状态。当共识节点100在t1时刻快照得到账户状态103a之后,可以从账本中获取到预先所存储的区块3的预写日志,共识节点100可以使用区块3的预写日志对交易账户再次执行一次,即可得到在执行区块3中的完整的交易数据所属的交易后,交易账户的账户状态,即将将账户状态103a变为了账户状态104a。账户状态104a具体为:交易账户a的余额为140(40加上100),交易账户b的余额为80,交易账户c的余额为150。可以将账户状态104a称之为修正后的快照账户状态,账户状态104a即为最终需要得到的区块3所对应的交易账户的账户状态。
通过本申请所提供的方法,由于共识节点在将每个区块添加到账本中之前,都会预先存储每个区块的预写日志,因此当在某个时刻触发快照指令时,即使在该个时刻账本中正在提交的区块并没有全部提交完成,也可以立即实时地对交易账户的账户状态执行快照处理,得到快照账户状态。之后,可以通过预先所存储的正在提交的区块的预写日志,来对快照账户状态进行修正,即可得到修正后的最终的快照账户状态,保证了针对交易账户的账户状态的实时性。
请参见图3,是本申请提供的一种基于区块链的数据快照方法的流程示意图,如图3所示,该方法可以包括:
步骤S101,获取快照触发指令,获取快照触发指令的触发时刻;
具体的,本实施例中的执行主体可以是区块链网络中的任意一个共识节点。共识节点可以获取快照触发指令,该快照触发指令可以是客户端发送给共识节点的,客户端可以通过向共识节点发送快照触发指令,以请求共识节点对交易账户的账户状态进行快照处理。其中,对交易账户的账户状态进行快照处理即是对交易账户在某个时刻的账户状态进行备份。交易账户的账户状态可以指交易账户的账户余额的状态,例如交易账户的账户状态可以指在某个时刻,交易账户a的余额为1,交易账户b的余额为2等。交易账户的账户状态是在执行共识节点的账本中所提交的区块中的交易数据所属的交易后,交易账户的账户数据。例如,共识节点的账本中的某个区块中的某个交易数据为交易账户a向交易账户b转账100,则执行该个交易数据对应的交易后,交易账户的账户数据的改动就是将交易账户a的余额减少100,将交易账户b的余额增加100。共识节点可以获取到快照触发指令的触发时刻,该触发时刻即为共识节点获取到快照触发指令的那一个时间点。因此,此处是需要共识节点对触发时刻时的交易账户的账户状态进行快照处理。
步骤S102,根据快照触发指令,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;快照账户状态是与交易区块中的交易数据相关的账户数据;
具体的,共识节点可以根据快照触发指令,对在触发时刻时的账本中的交易区块(一个交易区块中可以包括多个交易数据)进行快照处理,得到快照账户状态,其中账本可以是包括一个或多个交易区块的区块链账本,每个交易区块可以包括与交易相关联的交易数据。其中,快照账户状态是与交易区块中的交易数据相关的账户数据,该账户数据为对交易账户执行交易区块对应的交易后所生成的,换句话说,该账户数据为在执行交易区块中的交易数据所属的交易后,交易账户的账户状态,该账户状态可以指交易账户的账户余额的状态。举个例子,当执行交易区块中的交易数据所属的交易后,交易账户的账户余额由5变为了10,则可以理解为交易账户的账户状态由账户余额5变为了账户余额10。
其中,共识节点的账本中可以包括主数据库和快照数据库两个数据库。主数据库用于存储交易区块,而快照数据库用于实时同步在执行主数据库中所存储的交易区块中的交易数据所属的交易后,交易账户的账户状态。例如,交易账户a初始的账户余额为0,当执行主数据库中的交易区块中的交易数据1所属的交易后,交易账户a的账户余额增加10,执行交易数据2所属的交易后,交易账户a的账户余额减少5,执行交易数据3所属的交易后,交易账户a的账户余额增加6,则快照数据库中可以存储有执行上述交易数据1、交易数据2和交易数据3之后,交易账户a的最终余额11(即0+10-5+6)。因为对于账户数据(即交易账户的账户余额)而言,后面执行的交易对交易账户的账户余额带来的改动会覆盖掉前面执行的交易对交易账户的账户余额带来的改动,因此,对交易账户的账户数据进行快照处理,就是对交易账户最新的账户状态进行备份。
当共识节点获取到快照触发指令之后,可以控制快照数据库立即暂停同步对主数据库中之后所提交的区块中的交易数据所属的交易进行执行后,交易账户的账户状态。换句话说,当获取到快照触发指令之后,快照数据库中不会再同步在执行触发时刻之后的交易数据所属的交易后,对交易账户的账户余额的改动,因此,此时,快照数据库中就保留有在触发时刻这一时刻的交易账户的账户状态。例如,在触发时刻,交易账户a的余额为10,交易账户b的余额为30等。因此,此时,共识节点就可以从快照数据库中获取到在触发时刻时,交易账户的账户状态,并将获取到的在触发时刻时的交易账户的最终账户状态作为快照账户状态。
需要进行说明的是,在对交易账户的账户状态进行快照处理时,并不影响共识节点持续地向主数据库中添加新的区块。换句话说,在共识节点获取到快照触发指令之后,只会控制快照数据库暂停同步触发时刻后的交易账户的账户状态,而在进行快照处理的期间,主数据库中可以继续添加触发时刻后的交易数据。
步骤S103,获取目标区块的预写日志;目标区块为交易区块中具有最高区块高度的区块;目标区块的预写日志为包含目标区块对应的账户数据的日志;
具体的,共识节点可以获取目标区块的预写日志。其中,共识节点添加到账本中的交易区块均为共识通过的区块,因此,目标区块也为通过区块链网络共识通过的区块。例如,目标区块的来源可以是:共识节点可以生成目标区块,可以理解的是,该目标区块也可以是由其他共识节点所生成的。共识节点可以将所生成的目标区块提交到区块链网络中,对目标区块进行共识。当共识节点检测到该目标区块经过共识(例如经过区块链网络中多个共识节点的共识),且共识通过率大于或者等于通过率阈值(可以自行设置)时,共识节点可以将该目标区块添加到账本中(例如添加到主数据库中)。举个例子,当区块链网络中包括5个共识节点,其中3个共识节点通过了对目标区块的验证,2个共识节点未通过对目标区块的验证,则针对目标区块的共识通过率就为3/5。
需要进行说明的是,在本申请中,共识节点每在主数据库中添加一个区块之前,均会先生成所添加的区块的预写日志(wal log),该预写日志包含该区块对应的账户数据,例如该区块对应的交易数据、对交易账户执行该区块对应的交易之后的账户数据等等中的一个或多个,共识节点会先存储区块的预写日志(预写日志也可以存储在账本中,例如存储在主数据库中),再将区块添加到主数据库中。并且,主数据库中每添加一个区块,也会将执行该区块中的交易数据所属的交易后,交易账户的账户状态以及该区块对应的预写日志同步到快照数据库中。具体为,主数据库中添加了某个区块的预写日志,那么快照数据库中也会实时同步到这个区块的预写日志。因此,可以理解的是,在某个时刻(例如触发时刻),快照数据库中可以同步有某个区块的完整的预写日志以及执行该个区块中的部分交易数据所属的交易后,交易账户的账户状态(在该个区块正在被添加到主数据库中,但未完全添加到主数据库中时,即只在主数据库中添加了该个区块的部分交易数据)。由于,在主数据库中添加交易区块时,是上一个交易区块添加完成,才会接着添加新的下一个交易区块,下一个区块的区块高度大于上一个区块的区块高度。因此,主数据库中只会存在区块高度最高的那个区块是不完整的(即未完全添加到主数据库中),对应的,快照数据库中也只会存在执行一个不完整的区块中的交易数据所属的交易后,交易账户的账户状态。
其中,可以将添加至主数据库中的预写日志与对应区块的区块高度进行关联存储,后续可以通过某个区块的区块高度关联检索到该个区块对应的预写日志。例如,共识节点在将目标区块添加到主数据库中之前,可以获取到目标区块若是被添加到主数据库中时的区块高度,共识节点可以将目标区块的区块高度和目标区块的预写日志关联存储在主数据库中,之后,共识节点就可以继续将目标区块也按照其应有的区块高度添加到主数据库中。因此,快照数据库中也同步关联存储有主数据库中的各个区块的区块高度与所对应的预写日志(包括目标区块的区块高度与所对应的预写日志)。其中,共识节点将各个区块的区块高度与所对应的预写日志进行关联存储的方式可以是:此处以将目标区块的区块高度与所对应的预写日志进行关联存储的过程为例进行说明,共识节点可以根据目标区块的区块高度和目标区块的预写日志,生成关联信息,该关联信息中包括目标区块的区块高度和目标区块的预写日志。共识节点可以将该关联信息进行打包,得到关联区块,该关联区块包括该关联信息。共识节点可以将关联区块添加到账本中(主数据库和快照数据库中)。
后续,共识节点在获取目标区块的预写日志时,可以根据目标区块的区块高度,遍历账本中包含目标区块的区块高度的关联区块,并从遍历到的关联区块中获取包含目标区块的区块高度的关联信息,进而,共识节点可以从获取到的关联信息中获取到目标区块的预写日志。即共识节点可以根据目标区块的区块高度获取到目标区块的预写日志。
其中,上述目标区块为在触发时刻时,账本中所存在的区块高度最高的区块。原理上,在触发时刻,主数据库中所存在的区块的最高区块高度与快照数据库中所存在的预写日志对应的最高区块高度相同,若是不相同,则目标区块是指快照数据库中的与最高区块高度相关联的预写日志所对应的区块。换句话说,快照数据库中的预写日志所关联的最高区块高度即为目标区块的区块高度。由上可知,在触发时刻时,目标区块在主数据库中可能并不是完整的,快照数据库中所存在的账户状态也可能不是通过目标区块中的所有交易数据对交易账户进行执行后的账户状态。
更多的,共识节点生成各个区块的预写日志的方式可以是:此处以生成目标区块的预写日志为例进行说明。共识节点可以生成目标区块的重做日志,该重做日志包括了对交易账户进行执行与目标区块对应的交易后,交易账户的账户状态。其中,目标区块对应的交易即为目标区块所记录的交易数据所属的交易。共识节点可以根据该重做日志生成目标区块的预写日志,目标区块的预写日志包括该重做日志。另外,共识节点还可以生成目标区块的撤销日志,该撤销日志包括了对交易账户进行执行与目标区块对应的交易前,交易账户的账户状态。共识节点可以根据该撤销日志生成目标区块的预写日志,目标区块的预写日志包括该撤销日志。可选的,目标区块的预写日志中也可以同时包括上述重做日志以及撤销日志。
请参见图4,是本申请提供的一种获取预写日志的场景示意图。如图4所示,共识节点100的账本中添加的交易区块包括区块1、区块2、区块3、区块4和区块5。共识节点100关联存储了区块1的预写日志101c与区块1的区块高度h1、区块2的预写日志102c与区块2的区块高度h2、区块3的预写日志103c与区块3的区块高度h3、区块4的预写日志104c与区块4的区块高度h4以及区块5的预写日志105c与区块5的区块高度h5。后续,共识节点可以根据目标区块的区块高度在关联存储的预写日志与对应的区块高度中,获取到目标区块的预写日志。
步骤S104,根据目标区块的预写日志对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;脏数据是基于账本中包含目标区块中的不完整的交易数据所生成的;
具体的,由于目标区块在触发时刻,很大可能并未完全添加到账本中,因此,在触发时刻所获取到的快照账户状态中就很大可能会存在脏数据。该脏数据就是由于在账本中只存在目标区块中的部分交易数据所产生的,该脏数据表明了快照账户状态并不是目标区块对应的完整的快照账户状态,即快照账户状态中也只包括执行目标区块中的部分交易数据所属的交易后交易账户的账户状态。因此,共识节点可以通过获取到的目标区块的预写日志来修正快照账户状态中的脏数据,换句话说,共识节点可以通过目标区块的预写日志,将快照账户状态修正为执行目标区块中的全部交易数据所属的交易之后交易账户的账户状态,最终得到修正后的快照账户状态,该修正后的快照账户状态就是最终需要备份的目标区块的区块高度对应的交易账户的账户状态。
可选的,当目标区块的预写日志中包括目标区块的重做日志时,共识节点可以通过目标区块的重做日志对快照账户状态中的脏数据进行修正,以得到上述修正后的快照账户状态,此时,修正后的快照账户状态即是在执行目标区块中的所有交易数据所属的交易之后交易账户的账户状态。换句话说,此时得到的修正后的快照账户状态为目标区块的区块高度对应的交易账户的账户状态。当目标区块的预写日志中包括目标区块的撤销日志时,共识节点可以通过目标区块的撤销日志对快照账户状态中的脏数据进行修正,以得到上述修正后的快照账户状态,此时,修正后的快照账户状态即是在执行目标区块中的所有交易数据所属的交易之前交易账户的账户状态。换句话说,此时得到的修正后的快照账户状态为目标区块的前一个区块的区块高度对应的交易账户的账户状态。
其中,当已经成功获取到上述修正后的快照账户状态之后(实际上,也可以是获取到快照账户状态之后),共识节点可以控制快照数据库继续同步主数据库中,在执行触发时刻之后所添加的交易数据所属的交易后,交易账户的账户状态,以及控制快照数据库继续同步主数据库中在触发时刻之后所添加的区块的预写日志。
请参见图5,是本申请提供的一种数据同步的场景示意图。如图5所示,共识节点100的账本中包括主数据库100d和快照数据库101d。主数据库100d中包括区块q1与其对应的预写日志y1、区块q2与其对应的预写日志y2、区块q3与其对应的预写日志y3、区块q4与其对应的预写日志y4以及区块q5与其对应的预写日志y5。当向主数据库100d中提交区块q1之后,快照数据库101d中同步到的交易账户的账户状态为“账户e1余额100,账户e2余额110,账户e3余额120”(即“e1=100,e2=110,e3=120”)。接着,当向主数据库100d中提交区块q2之后,快照数据库101d中同步到的交易账户的账户状态为“账户e1余额80,账户e2余90,账户e3余额120”(即“e1=80,e2=90,e3=120”)。接着,当向主数据库100d中提交区块q3之后,快照数据库101d中同步到的交易账户的账户状态为“账户e1余额50,账户e2余90,账户e3余额130”(即“e1=50,e2=90,e3=130”)。接着,当向主数据库100d中提交区块q4之后,快照数据库101d中同步到的交易账户的账户状态为“账户e1余额30,账户e2余40,账户e3余额50”(即“e1=30,e2=40,e3=50”)。接着,当向主数据库100d中提交区块q5之后,快照数据库101d中同步到的交易账户的账户状态为“账户e1余额40,账户e2余90,账户e3余额120”(即“e1=40,e2=90,e3=120”)。
此时,当共识节点将区块q5完全添加到主数据库100d中时,刚好是t1,并且共识节点100在t1时刻获取到了快照触发指令,即触发时刻就是t1时刻。那么,共识节点100可以控制快照数据库101d在t1时刻时停止向主数据库100d中同步t1时刻之后的交易账户的账户状态。并且,此时,共识节点最终获取到的备份的账户状态即为“e1=40,e2=90,e3=120”。并且,在共识节点备份到t1时刻的账户状态“e1=40,e2=90,e3=120”期间,主数据库100d中又添加了新的区块q6和区块q6的预写日志。若执行主数据库100d中所添加的区块q6中的交易数据所属的交易之后交易账户的账户状态为“e1=40,e2=100,e3=120”,那么,快照处理结束之后,共识节点100可以控制快照数据库101d继续同步,在执行主数据库100d中触发时刻t1时刻之后添加的交易数据所属的交易后的账户状态,并将快照数据库101d更新为快照数据库102d。
其中,当共识节点的账户中的交易数据被遭到篡改或者是丢失时,会导致交易账户的账户状态也被遭到恶意篡改或者丢失,此时,共识节点可以使用所备份的上述修正后的快照账户状态,对交易账户的账户状态进行状态恢复,得到恢复后的账户状态。该恢复后的账户状态与上述修正后的快照账户状态相同。
请参见图6,是本申请提供的一种恢复账户状态的场景示意图。如图6所示,当共识节点备份的交易账户的账户状态(可以是上述修正后的快照账户状态)为区块高度100对应的账户状态100f(具体为账户状态101f:账户z1余额为30,账户z2余额为40,账户z3余额为50,账户z4余额为60,账户z5余额为70),且被篡改后的交易账户的账户状态为账户状态102f(具体为:账户z1余额为0,账户z2余额为0,账户z3余额为0,账户z4余额为0,账户z5余额为0),那么,通过备份的账户状态101f对篡改后的102f进行恢复之后,即可得到恢复后的账户状态103f。如图6所示,账户状态103f与账户状态101f相同,即通过所备份的账户状态101f可以将恢复前的账户状态102f恢复为与账户状态101f相同的账户状态103f。
通过本申请所提供的方法,通过预先存储需要提交到账本的区块的预写日志,可以使得在对交易账户的账户状态进行快照处理时,可以在触发时刻实时进行,且快照处理期间,不影响共识节点继续向账本(即主数据库)中添加新的区块。
本申请可以获取快照触发指令,获取快照触发指令的触发时刻;根据快照触发指令,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;快照账户状态是与交易区块中的交易数据相关的账户数据;获取目标区块的预写日志;目标区块为交易区块中具有最高区块高度的区块;目标区块的预写日志为包含目标区块对应的账户数据的日志;根据目标区块的预写日志对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态,存储修正后的快照账户状态;脏数据是基于账本中包含目标区块中的不完整的交易数据所生成的。由此可见,本申请提出的方法由于可以通过目标区块的预写日志,对快照时由于存在不完整的目标区块所产生的脏数据进行修正,因此,即使在触发时刻目标区块未完全添加至账本中,也可以立即对交易账户的账户状态进行快照处理,提高了获取交易账户的快照账户状态的效率。
请参见图7,是本申请提供的一种基于区块链的数据快照装置的结构示意图。如图7所示,该数据快照装置1可以可以执行上述图3所描述的数据快照方法,该数据快照装置1可以包括:指令获取模块11、快照模块12、日志获取模块13和修正模块14;
指令获取模块11,用于获取快照触发指令,获取快照触发指令的触发时刻;
快照模块12,用于根据快照触发指令,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;快照账户状态是与交易区块中的交易数据相关的账户数据;
日志获取模块13,用于获取目标区块的预写日志;目标区块为交易区块中具有最高区块高度的区块;目标区块的预写日志为包含目标区块对应的账户数据的日志;
修正模块14,用于根据目标区块的预写日志对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;脏数据是基于账本中包含目标区块中的不完整的交易数据所生成的。
其中,指令获取模块11、快照模块12、日志获取模块13和修正模块14的具体功能实现方式请参见图3对应的实施例中的步骤S101-步骤S104,这里不再进行赘述。
其中,数据快照装置1,还包括:区块获取模块15、日志生成模块16和日志存储模块17;
区块获取模块15,用于生成目标区块,将目标区块进行共识;
日志生成模块16,用于当检测到目标区块的共识通过率大于或者等于通过率阈值时,生成目标区块的预写日志;
日志存储模块17,用于存储目标区块的预写日志,将目标区块添加至账本中。
其中,区块获取模块15、日志生成模块16和日志存储模块17的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,日志生成模块16,包括:第一日志生成单元161和第二日志生成单元162;
第一日志生成单元161,用于生成目标区块的重做日志;重做日志包括对交易账户进行执行与目标区块对应的交易后,交易账户的账户状态;
第二日志生成单元162,用于根据重做日志,生成目标区块的预写日志。
其中,第一日志生成单元161和第二日志生成单元162的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,日志生成模块16,包括:第三日志生成单元163和第四日志生成单元164;
第三日志生成单元163,用于生成目标区块的撤销日志;撤销日志包括对交易账户进行执行与目标区块对应的交易前,交易账户的账户状态;
第四日志生成单元164,用于根据撤销日志,生成目标区块的预写日志。
其中,第三日志生成单元163和第四日志生成单元164的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,修正模块14,还用于:
根据目标区块的预写日志中的重做日志,对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;修正后的快照账户状态包括对交易账户进行执行与目标区块对应的交易后,交易账户的账户状态。
其中,修正模块14,还用于:
根据目标区块的预写日志中的撤销日志,对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;修正后的快照账户状态包括对交易账户进行执行与目标区块对应的交易前,交易账户的账户状态。
其中,日志存储模块17,包括:高度获取单元171、关联存储单元172和区块添加单元173;
高度获取单元171,用于获取目标区块的区块高度;
关联存储单元172,用于将目标区块的区块高度和目标区块的预写日志,关联存储至账本;目标区块的区块高度用于关联检索目标区块的预写日志;
区块添加单元173,用于根据目标区块的区块高度将目标区块添加至账本中。
其中,高度获取单元171、关联存储单元172和区块添加单元173的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,关联存储单元172,包括:关联信息生成子单元1721、打包子单元1722和区块添加子单元1723;
关联信息生成子单元1721,用于根据目标区块的区块高度和目标区块的预写日志,生成关联信息;
打包子单元1722,用于将关联信息进行打包,得到关联区块;
区块添加子单元1723,用于将关联区块添加至账本中。
其中,关联信息生成子单元1721、打包子单元1722和区块添加子单元1723的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,日志获取模块13,包括:遍历单元131、关联信息获取单元132和日志确定单元133;
遍历单元131,用于根据目标区块的区块高度,遍历账本中包含目标区块的区块高度的关联区块;
关联信息获取单元132,用于从关联区块中获取包含目标区块的区块高度的关联信息;
日志确定单元133,用于将关联信息中的预写日志,确定为目标区块的预写日志。
其中,遍历单元131、关联信息获取单元132和日志确定单元133的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,数据快照装置1,还用于:
当交易账户的账户状态遭到非法篡改时,根据所存储的修正后的快照账户状态对遭到非法篡改后的交易账户的账户状态进行状态恢复,得到恢复后的账户状态;恢复后的账户状态与修正后的快照账户状态相同。
其中,账本中包括主数据库和快照数据库;主数据库用于存储交易区块;快照数据库中同步存储有对交易账户执行交易区块中的交易数据所属的交易后,交易账户的账户状态;
快照模块12,具体用于:
根据快照触发指令,控制快照数据库暂停同步对交易账户执行触发时刻后的交易数据所属的交易后,交易账户的账户状态,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;主数据库用于在进行快照处理的期间内继续添加触发时刻后的交易数据;
则,数据快照装置1具体用于:
当存储修正后的快照账户状态后,控制快照数据库继续同步对交易账户执行主数据库中触发时刻后的交易数据所属的交易后,交易账户的账户状态。
其中,快照模块12,包括:状态获取单元1211和状态确定单元122;
状态获取单元121,用于从快照数据库中,获取触发时刻时交易账户的最终状态;
状态确定单元122,用于将交易账户的最终状态,确定为交易账户的快照账户状态。
其中,状态获取单元121和状态确定单元122的具体功能实现方式请参见图3对应的实施例中的步骤S102,这里不再进行赘述。
本申请可以获取快照触发指令,获取快照触发指令的触发时刻;根据快照触发指令,对在触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;快照账户状态是与交易区块中的交易数据相关的账户数据;获取目标区块的预写日志;目标区块为交易区块中具有最高区块高度的区块;目标区块的预写日志为包含目标区块对应的账户数据的日志;根据目标区块的预写日志对快照账户状态中的脏数据进行修正,得到修正后的快照账户状态,存储修正后的快照账户状态;脏数据是基于账本中包含目标区块中的不完整的交易数据所生成的。由此可见,本申请提出的方法由于可以通过目标区块的预写日志,对快照时由于存在不完整的目标区块所产生的脏数据进行修正,因此,即使在触发时刻目标区块未完全添加至账本中,也可以立即对交易账户的账户状态进行快照处理,提高了获取交易账户的快照账户状态的效率。
请参见图8,是本申请提供的一种计算机设备的结构示意图。如图8所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图8所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图8所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3所对应实施例中对基于区块链的数据快照方法的描述。应当理解,本申请中所描述的计算机设备1000也可执行前文图7所对应实施例中对基于区块链的数据快照装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的基于区块链的数据快照装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对基于区块链的数据快照方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖范围。

Claims (15)

1.一种基于区块链的数据快照方法,其特征在于,包括:
获取快照触发指令,获取所述快照触发指令的触发时刻;
根据所述快照触发指令,对在所述触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;所述快照账户状态是与所述交易区块中的交易数据相关的账户数据;
获取目标区块的预写日志;所述目标区块为所述交易区块中具有最高区块高度的区块;所述目标区块的预写日志为包含所述目标区块对应的账户数据的日志;所述目标区块的预写日志是在将所述目标区块添加到所述账本之前生成的;
根据所述目标区块的预写日志对所述快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;所述脏数据是基于所述账本中包含所述目标区块中的不完整的交易数据所生成的。
2.根据权利要求1所述的方法,其特征在于,还包括:
生成所述目标区块,将所述目标区块进行共识;
当检测到所述目标区块的共识通过率大于或者等于通过率阈值时,生成所述目标区块的预写日志;
存储所述目标区块的预写日志,将所述目标区块添加至所述账本中。
3.根据权利要求2所述的方法,其特征在于,所述生成所述目标区块的预写日志,包括:
生成所述目标区块的重做日志;所述重做日志包括对所述交易账户进行执行与所述目标区块对应的交易后,所述交易账户的账户状态;
根据所述重做日志,生成所述目标区块的预写日志。
4.根据权利要求2所述的方法,其特征在于,所述生成所述目标区块的预写日志,包括:
生成所述目标区块的撤销日志;所述撤销日志包括对所述交易账户进行执行与所述目标区块对应的交易前,所述交易账户的账户状态;
根据所述撤销日志,生成所述目标区块的预写日志。
5.根据权利要求3所述的方法,其特征在于,所述根据所述目标区块的预写日志对所述快照账户状态中的脏数据进行修正,得到修正后的快照账户状态,包括:
根据所述目标区块的预写日志中的所述重做日志,对所述快照账户状态中的所述脏数据进行修正,得到所述修正后的快照账户状态;所述修正后的快照账户状态包括对所述交易账户进行执行与所述目标区块对应的交易后,所述交易账户的账户状态。
6.根据权利要求4所述的方法,其特征在于,所述根据所述目标区块的预写日志对所述快照账户状态中的脏数据进行修正,得到修正后的快照账户状态,包括:
根据所述目标区块的预写日志中的所述撤销日志,对所述快照账户状态中的所述脏数据进行修正,得到所述修正后的快照账户状态;所述修正后的快照账户状态包括对所述交易账户进行执行与所述目标区块对应的交易前,所述交易账户的账户状态。
7.根据权利要求2所述的方法,其特征在于,所述存储所述目标区块的预写日志,将所述目标区块添加至所述账本中,包括:
获取所述目标区块的区块高度;
将所述目标区块的区块高度和所述目标区块的预写日志,关联存储至所述账本;所述目标区块的区块高度用于关联检索所述目标区块的预写日志;
根据所述目标区块的区块高度将所述目标区块添加至所述账本中。
8.根据权利要求7所述的方法,其特征在于,所述将所述目标区块的区块高度和所述目标区块的预写日志,关联存储至所述账本,包括:
根据所述目标区块的区块高度和所述目标区块的预写日志,生成关联信息;
将所述关联信息进行打包,得到关联区块;
将所述关联区块添加至所述账本中。
9.根据权利要求8所述的方法,其特征在于,所述获取目标区块的预写日志,包括:
根据所述目标区块的区块高度,遍历所述账本中包含所述目标区块的区块高度的所述关联区块;
从所述关联区块中获取包含所述目标区块的区块高度的所述关联信息;
将所述关联信息中的预写日志,确定为所述目标区块的预写日志。
10.根据权利要求1所述的方法,其特征在于,还包括:
当所述交易账户的账户状态遭到非法篡改时,根据所存储的所述修正后的快照账户状态对遭到非法篡改后的所述交易账户的账户状态进行状态恢复,得到恢复后的账户状态;所述恢复后的账户状态与所述修正后的快照账户状态相同。
11.根据权利要求1所述的方法,其特征在于,所述账本中包括主数据库和快照数据库;所述主数据库用于存储所述交易区块;所述快照数据库中同步存储有对所述交易账户执行所述交易区块中的交易数据所属的交易后,所述交易账户的账户状态;
所述根据所述快照触发指令,对在所述触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态,包括:
根据所述快照触发指令,控制所述快照数据库暂停同步对所述交易账户执行所述触发时刻后的交易数据所属的交易后,所述交易账户的账户状态,对在所述触发时刻时的所述账本中的交易区块进行快照处理,得到所述交易账户的所述快照账户状态;所述主数据库用于在进行快照处理的期间内继续添加所述触发时刻后的交易数据;
则,还包括:
当存储所述修正后的快照账户状态后,控制所述快照数据库继续同步对所述交易账户执行所述主数据库中所述触发时刻后的交易数据所属的交易后,所述交易账户的账户状态。
12.根据权利要求11所述的方法,其特征在于,所述对在所述触发时刻时的所述账本中的交易区块进行快照处理,得到所述交易账户的所述快照账户状态,包括:
从所述快照数据库中,获取所述触发时刻时所述交易账户的最终状态;
将所述交易账户的所述最终状态,确定为所述交易账户的所述快照账户状态。
13.一种基于区块链的数据快照装置,其特征在于,包括:
指令获取模块,用于获取快照触发指令,获取所述快照触发指令的触发时刻;
快照模块,用于根据所述快照触发指令,对在所述触发时刻时的账本中的交易区块进行快照处理,得到交易账户的快照账户状态;所述快照账户状态是与所述交易区块中的交易数据相关的账户数据;
日志获取模块,用于获取目标区块的预写日志;所述目标区块为所述交易区块中具有最高区块高度的区块;所述目标区块的预写日志为包含所述目标区块对应的账户数据的日志;所述目标区块的预写日志是在将所述目标区块添加到所述账本之前生成的;
修正模块,用于根据所述目标区块的预写日志对所述快照账户状态中的脏数据进行修正,得到修正后的快照账户状态;所述脏数据是基于所述账本中包含所述目标区块中的不完整的交易数据所生成的。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-12中任一项所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-12任一项所述的方法。
CN202010321605.6A 2020-04-22 2020-04-22 基于区块链的数据快照方法、装置及计算机可读存储介质 Active CN111507720B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010321605.6A CN111507720B (zh) 2020-04-22 2020-04-22 基于区块链的数据快照方法、装置及计算机可读存储介质
PCT/CN2021/078005 WO2021213002A1 (zh) 2020-04-22 2021-02-26 基于区块链的数据快照方法、装置及计算机可读存储介质
US17/740,925 US11782793B2 (en) 2020-04-22 2022-05-10 Blockchain-based data snapshot method and apparatus, and computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010321605.6A CN111507720B (zh) 2020-04-22 2020-04-22 基于区块链的数据快照方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111507720A CN111507720A (zh) 2020-08-07
CN111507720B true CN111507720B (zh) 2022-03-11

Family

ID=71876610

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010321605.6A Active CN111507720B (zh) 2020-04-22 2020-04-22 基于区块链的数据快照方法、装置及计算机可读存储介质

Country Status (3)

Country Link
US (1) US11782793B2 (zh)
CN (1) CN111507720B (zh)
WO (1) WO2021213002A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111507720B (zh) * 2020-04-22 2022-03-11 腾讯科技(深圳)有限公司 基于区块链的数据快照方法、装置及计算机可读存储介质
CN112988469B (zh) * 2021-04-27 2022-02-18 支付宝(杭州)信息技术有限公司 联盟链中的状态备份方法、装置和电子设备
CN114780285A (zh) * 2022-02-25 2022-07-22 蚂蚁区块链科技(上海)有限公司 区块链数据恢复方法及装置、电子设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180232807A1 (en) * 2015-10-28 2018-08-16 Fractal Industries, Inc. Advanced decentralized financial decision platform
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
CN109933460A (zh) 2017-12-25 2019-06-25 新华三大数据技术有限公司 数据快照方法及装置
CN108241743B (zh) * 2018-01-04 2020-05-12 杭州复杂美科技有限公司 一种区块链快照方法
CN110400142B (zh) * 2018-06-01 2021-06-25 腾讯科技(深圳)有限公司 数据处理方法、装置及存储介质
CN109377216B (zh) * 2018-08-07 2021-03-23 创新先进技术有限公司 一种基于中心化结算与区块链存证的交易方法及系统
CN109636388B (zh) * 2018-12-07 2024-02-23 深圳市智税链科技有限公司 区块链网络中的数据处理方法、装置、介质及电子设备
CN110276613B (zh) * 2019-06-20 2020-03-27 卓尔智联(武汉)研究院有限公司 基于区块链的数据处理装置、方法及计算机可读存储介质
US11113272B2 (en) * 2019-07-31 2021-09-07 Advanced New Technologies Co., Ltd. Method and apparatus for storing blockchain state data and electronic device
CN110493325B (zh) * 2019-07-31 2020-12-29 创新先进技术有限公司 区块链状态数据同步方法及装置、电子设备
CN110390524B (zh) * 2019-07-31 2021-10-26 中国工商银行股份有限公司 区块链中作业数据处理方法、装置、电子设备及存储介质
CN111033491B (zh) * 2019-08-01 2023-06-30 创新先进技术有限公司 基于纠错编码存储共享的区块链数据
SG11202002732TA (en) * 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
CN110807064B (zh) * 2019-10-28 2022-08-26 北京优炫软件股份有限公司 Rac分布式数据库集群系统中的数据恢复装置
CN110910249B (zh) * 2019-11-22 2021-08-24 腾讯科技(深圳)有限公司 一种数据处理方法、装置、节点设备及存储介质
CN111507720B (zh) * 2020-04-22 2022-03-11 腾讯科技(深圳)有限公司 基于区块链的数据快照方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
US11782793B2 (en) 2023-10-10
US20220269568A1 (en) 2022-08-25
WO2021213002A1 (zh) 2021-10-28
CN111507720A (zh) 2020-08-07

Similar Documents

Publication Publication Date Title
CN111507720B (zh) 基于区块链的数据快照方法、装置及计算机可读存储介质
CN108805570B (zh) 数据处理方法、装置及存储介质
US10997209B2 (en) Creating replicas at user-defined points in time
US10459883B1 (en) Retention policies for unscheduled replicas in backup, snapshots, and remote replication
CN102306197B (zh) 保证跨数据源操作结果一致性的装置和方法
CN107562513B (zh) 一种基于java的智能合约生命周期的管理方法
CN107220142B (zh) 执行数据恢复操作的方法及装置
CN103885806B (zh) 机顶盒的系统软件在线升级的实现方法和装置
CN111382456A (zh) 提案消息处理方法、装置、设备以及存储介质
US20220245173A1 (en) Blockchain-based data synchronization method, apparatus, and computer-readable storage medium
CN109558454B (zh) 平行链挖矿共识方法、设备和存储介质
CN106445644A (zh) 基于改进的一阶段提交的分布式事务的处理方法和装置
JP2005025432A (ja) トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム
CN109635595B (zh) 一种基于区块链的数据防篡改方法
CN115220876A (zh) 虚拟资源创建方法、装置、程序产品、介质及电子设备
CN114637450A (zh) 业务流程的自动处理方法及系统、电子设备
CN114787780A (zh) 用于基于区块链的备份和恢复的系统和方法
CN111062060B (zh) 一种基于智能合约的投票提案生命周期管理方法
CN114398441B (zh) 数据导出方法、装置、计算机设备和存储介质
CN112540875B (zh) 一种基于xtrabackup的mysql数据库备份、恢复校验可用性的方法
EP3955127A1 (en) Automatic database schema updater
CN112181926A (zh) 一种配置更新同步方法及装置
CN112783972A (zh) 图像特征值数据的同步方法及系统
GB2405228A (en) Verifying the order of a queue of work items
CN112069067B (zh) 基于区块链的数据测试方法、装置及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40027386

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant