会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 赌博 / 交易记录 / 一种基于区块链的交易数据删除方法及装置

一种基于区块链的交易数据删除方法及装置

阅读:1088发布:2020-08-01

IPRDB可以提供一种基于区块链的交易数据删除方法及装置专利检索,专利查询,专利分析的服务。并且本发明公开了一种基于区块链的交易数据删除方法及装置,适用于区块链节点,区块链节点包括多个交易数据库和记录文件;记录文件用于记录区块对本地存储空间的操作信息;交易数据库用于存储区块的交易数据;该方法包括:区块链节点将区块的交易数据存储于第一交易数据库;其中,区块之前的N个区块的交易数据存储于第二交易数据库;区块链节点在确定远端数据库根据记录文件已同步第二交易数据库中的交易数据后,删除第二交易数据库;第一交易数据库和第二交易数据库为多个交易数据库中的任意两个。该技术方案用以在不影响区块链节点的正常业务运行前提下,实现区块数据的删除。,下面是一种基于区块链的交易数据删除方法及装置专利的具体信息内容。

1.一种基于区块链的交易数据删除方法,其特征在于,适用于区块链节点,所述区块链节点包括多个交易数据库和记录文件;所述记录文件用于记录区块对本地存储空间的操作信息;所述交易数据库用于存储区块的交易数据;

所述方法包括:

所述区块链节点将区块的交易数据存储于第一交易数据库;其中,所述区块之前的N个区块的交易数据存储于第二交易数据库;N为正整数;

所述区块链节点在确定远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据后,删除所述第二交易数据库;所述第一交易数据库和所述第二交易数据库为所述多个交易数据库中的任意两个。

2.如权利要求1所述的方法,其特征在于,所述区块链节点将区块的交易数据存储于第一交易数据库之前,还包括:所述区块链节点将多个交易数据打包成所述区块;

所述区块链节点将所述区块对所述本地存储空间的操作信息存储至所述区块对应的记录文件中;每个区块对应一个记录文件。

3.如权利要求1所述的方法,其特征在于,所述区块链节点还包括状态数据库,所述方法还包括:所述区块链节点将所述区块中各交易数据对应的状态数据写入所述状态数据库;所述状态数据库用于存储最近的状态信息。

4.如权利要求1至3任一项所述的方法,其特征在于,所述多个交易数据库为两个;

所述区块链节点在所述删除所述第二交易数据库之后,还包括:所述区块链节点接收区块查询请求;所述区块查询请求用于指示查询第一块高对应区块上的交易数据;

所述区块链节点若确定所述第一块高大于第二块高,则从所述第一交易数据库中获取所述第一块高对应的区块的交易数据;所述第二块高是所述第二交易数据库存储的交易数据所在区块的最高块高;

所述区块链节点若确定所述第一块高不大于所述第二块高,则从所述远端数据库中获取所述第一块高对应的区块的交易数据。

5.如权利要求1所述的方法,其特征在于,所述区块链节点确定远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据,包括:所述区块链节点接收所述远端数据库发送的第三块高;所述第三块高是所述远端数据库经所述记录文件同步的最新交易数据所在的区块的块高;

所述区块链节点若确定所述第三块高大于所述第二交易数据库中存储的交易数据所在区块的最高块高,则确定所述远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据。

6.一种基于区块链的交易数据删除装置,其特征在于,适用于区块链节点,所述区块链节点包括多个交易数据库和记录文件;所述记录文件用于记录区块对本地存储空间的操作信息;所述交易数据库用于存储区块的交易数据;

所述装置包括:

存储单元,用于将区块的交易数据存储于第一交易数据库;其中,所述区块之前的N个区块的交易数据存储于第二交易数据库;N为正整数;

处理单元,用于在确定远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据后,删除所述第二交易数据库;所述第一交易数据库和所述第二交易数据库为所述多个交易数据库中的任意两个。

7.如权利要求6所述的装置,其特征在于,所述存储单元还用于:将区块的交易数据存储于第一交易数据库之前,将多个交易数据打包成所述区块;

将所述区块对所述本地存储空间的操作信息存储至所述区块对应的记录文件中;每个区块对应一个记录文件。

8.如权利要求6所述的装置,其特征在于,所述区块链节点还包括状态数据库;

所述存储单元还用于:

将所述区块中各交易数据对应的状态数据写入所述状态数据库;所述状态数据库用于存储最近的状态信息。

9.如权利要求6至8任一项所述的装置,其特征在于,所述多个交易数据库为两个;

所述处理单元还用于:

在所述删除所述第二交易数据库之后,接收区块查询请求;所述区块查询请求用于指示查询第一块高对应区块上的交易数据;

若确定所述第一块高大于第二块高,则从所述第一交易数据库中获取所述第一块高对应的区块的交易数据;所述第二块高是所述第二交易数据库存储的交易数据所在区块的最高块高;

若确定所述第一块高不大于所述第二块高,则从所述远端数据库中获取所述第一块高对应的区块的交易数据。

10.如权利要求6所述的装置,其特征在于,所述处理单元具体用于:接收所述远端数据库发送的第三块高;所述第三块高是所述远端数据库经所述记录文件同步的最新交易数据所在的区块的块高;

若确定所述第三块高大于所述第二交易数据库中存储的交易数据所在区块的最高块高,则确定所述远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据。

11.一种计算设备,其特征在于,包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至5任一项所述的方法。

12.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至5任一项所述的方法。

说明书全文

一种基于区块链的交易数据删除方法及装置

技术领域

[0001] 本发明实施例涉及金融科技(Fintech)领域,尤其涉及一种基于区块链(BlockChain)的交易数据删除方法及装置。

背景技术

[0002] 随着计算机技术的发展,越来越多的技术(例如:区块链、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,区块链技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对区块链技术提出的更高的要求。
[0003] 区块链默认将数据存储在节点本地硬盘,但本地存储方式受硬件存储能力限制,存储容量有限,无法满足不断膨胀的存储需求,同时存在存储成本较高、数据访问响应速度较慢的问题。现有技术将节点本地硬盘中区块数据进行删除,但删除过程中需要暂停区块链节点的数据业务,区块链节点对外不可用,影响正常业务运行。

发明内容

[0004] 本发明实施例提供一种基于区块链的交易数据删除方法及装置,用以在不影响区块链节点的正常业务运行前提下,实现区块数据的删除。
[0005] 本发明实施例提供的一种基于区块链的交易数据删除方法,适用于区块链节点,所述区块链节点包括多个交易数据库和记录文件;所述记录文件用于记录区块对本地存储空间的操作信息;所述交易数据库用于存储区块的交易数据;
[0006] 所述方法包括:
[0007] 所述区块链节点将区块的交易数据存储于第一交易数据库;其中,所述区块之前的N个区块的交易数据存储于第二交易数据库;N为正整数;
[0008] 所述区块链节点在确定远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据后,删除所述第二交易数据库;所述第一交易数据库和所述第二交易数据库为所述多个交易数据库中的任意两个。
[0009] 上述技术方案中,区块链节点将生成区块中的交易数据存储至第一交易数据库中(相当于区块数据上链),并可以将第二交易数据库删除(相当于区块数据删除),也就是说,将区块数据上链和区块数据删除解耦合,删除第二交易数据库不会影响区块存储至第一交易数据库,即在区块数据进行删除时,不会影响区块链的正常业务运行。进一步的,远端数据库根据记录文件将交易数据库中的数据同步至本地,远端数据库不直接访问交易数据库,而是访问记录文件进而完成交易数据的同步,也即远端数据库的数据同步同样不会影响区块数据上链,保障区块链的正常业务运行。
[0010] 可选的,所述区块链节点将区块的交易数据存储于第一交易数据库之前,还包括:
[0011] 所述区块链节点将多个交易数据打包成所述区块;
[0012] 所述区块链节点将所述区块对所述本地存储空间的操作信息存储至所述区块对应的记录文件中;每个区块对应一个记录文件。
[0013] 上述技术方案中,在将区块存储至第一交易数据库之前,会先将交易数据存储至记录文件中,从而保障交易数据的完整性,保障区块中交易数据全部存储至第一交易数据库中(上链)。
[0014] 可选的,所述区块链节点还包括状态数据库,所述方法还包括:
[0015] 所述区块链节点将所述区块中各交易数据对应的状态数据写入所述状态数据库;所述状态数据库用于存储最近的状态信息。
[0016] 上述技术方案中,状态数据一直存储在状态数据库中,状态数据属于区块链上的全量数据,不会被删除,区块链节点在接收到状态查询请求时,可以直接在状态数据库中查询。
[0017] 可选的,所述多个交易数据库为两个;
[0018] 所述区块链节点在所述删除所述第二交易数据库之后,还包括:
[0019] 所述区块链节点接收区块查询请求;所述区块查询请求用于指示查询第一块高对应区块上的交易数据;
[0020] 所述区块链节点若确定所述第一块高大于第二块高,则从所述第一交易数据库中获取所述第一块高对应的区块的交易数据;所述第二块高是所述第二交易数据库存储的交易数据所在区块的最高块高;
[0021] 所述区块链节点若确定所述第一块高不大于所述第二块高,则从所述远端数据库中获取所述第一块高对应的区块的交易数据。
[0022] 上述技术方案中,设置上述路由规则,在接收到区块查询请求后,可以根据上述路由规则,从第一交易数据库或远端数据库中确定待查询的交易数据,从而在将历史交易数据删除后,仍可以从远端数据库中查询到该待查询的交易数据。
[0023] 可选的,所述区块链节点确定远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据,包括:
[0024] 所述区块链节点接收所述远端数据库发送的第三块高;所述第三块高是所述远端数据库经所述记录文件同步的最新交易数据所在的区块的块高;
[0025] 所述区块链节点若确定所述第三块高大于所述第二交易数据库中存储的交易数据所在区块的最高块高,则确定所述远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据。
[0026] 上述技术方案中,区块链节点根据第三块高,可以确定第二交易数据库中的交易数据是否已经被远端数据库同步,进而确定是否将第二交易数据库删除。
[0027] 相应的,本发明实施例还提供了一种基于区块链的交易数据删除装置,适用于区块链节点,所述区块链节点包括多个交易数据库和记录文件;所述记录文件用于记录区块对本地存储空间的操作信息;所述交易数据库用于存储区块的交易数据;
[0028] 所述装置包括:
[0029] 存储单元,用于将区块的交易数据存储于第一交易数据库;其中,所述区块之前的N个区块的交易数据存储于第二交易数据库;N为正整数;
[0030] 处理单元,用于在确定远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据后,删除所述第二交易数据库;所述第一交易数据库和所述第二交易数据库为所述多个交易数据库中的任意两个。
[0031] 可选的,所述存储单元还用于:
[0032] 将区块的交易数据存储于第一交易数据库之前,将多个交易数据打包成所述区块;
[0033] 将所述区块对所述本地存储空间的操作信息存储至所述区块对应的记录文件中;每个区块对应一个记录文件。
[0034] 可选的,所述区块链节点还包括状态数据库;
[0035] 所述存储单元还用于:
[0036] 将所述区块中各交易数据对应的状态数据写入所述状态数据库;所述状态数据库用于存储最近的状态信息。
[0037] 可选的,所述多个交易数据库为两个;
[0038] 所述处理单元还用于:
[0039] 在所述删除所述第二交易数据库之后,接收区块查询请求;所述区块查询请求用于指示查询第一块高对应区块上的交易数据;
[0040] 若确定所述第一块高大于第二块高,则从所述第一交易数据库中获取所述第一块高对应的区块的交易数据;所述第二块高是所述第二交易数据库存储的交易数据所在区块的最高块高;
[0041] 若确定所述第一块高不大于所述第二块高,则从所述远端数据库中获取所述第一块高对应的区块的交易数据。
[0042] 可选的,所述处理单元具体用于:
[0043] 接收所述远端数据库发送的第三块高;所述第三块高是所述远端数据库经所述记录文件同步的最新交易数据所在的区块的块高;
[0044] 若确定所述第三块高大于所述第二交易数据库中存储的交易数据所在区块的最高块高,则确定所述远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据。
[0045] 相应的,本发明实施例还提供了一种计算设备,包括:
[0046] 存储器,用于存储程序指令;
[0047] 处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述基于区块链的交易数据删除方法。
[0048] 相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述基于区块链的交易数据删除方法。

附图说明

[0049] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0050] 图1为本发明实施例提供的一种系统架构的示意图;
[0051] 图2为本发明实施例提供的另一种系统架构的示意图;
[0052] 图3为本发明实施例提供的第一种交易数据删除方法的流程示意图;
[0053] 图4为本发明实施例提供的第二种交易数据删除方法的流程示意图;
[0054] 图5为本发明实施例提供的一种交易数据查询方法的流程示意图;
[0055] 图6为本发明实施例提供的一种状态数据查询方法的流程示意图;
[0056] 图7为本发明实施例提供的一种交易数据删除装置的结构示意图。

具体实施方式

[0057] 为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0058] 为更好的解释本发明,先对本发明实施例所涉及的专业术语进行解释说明。
[0059] 1、区块数据的分类
[0060] 区块链记录的数据大体可以分为交易数据和状态数据。状态数据包括以历史区块高度为标识的历史状态数据及当前区块高度下的最新状态数据,而交易数据(包括交易回执数据)记录了所有交易,每个交易在特定的区块中。交易数据将作用于状态数据,因此可将区块链理解为基于交易的状态机,链上每一个区块的交易集在执行后都会在原有状态数据的基础上产生新的状态数据。基于状态机的特性,区块链可从特定区块高度的历史状态数据开始,重新执行该区块高度后区块的交易集,得出当前区块高度下的最新状态数据。
[0061] 2、交易数据和状态数据在不同应用场景下的特点
[0062] 对于交易数据,根据不同的应用场景,区块链可选择存储所有区块的交易数据,还是存储最新(或近期)区块的交易数据。状态数据以存储最新状态数据为主,以存储历史数据为辅。
[0063] 对于转账类业务,账户个数(状态数据)基本不变,账户之间的转账交易(交易数据)不断增长,业务需高频提供最近一段时间(如半年)内交易数据的查询及账户当前余额的查询,但对账户所有交易数据及账户历史余额的查询操作较低频。此种场景,可以对历史的交易数据进行删除,保留最新的交易数据,而状态数据记录所有的最新账户状态。
[0064] 对于证据上链类业务,证据上链操作(交易数据)与证据数据(状态数据)同步增长,业务的时效性要求查询操作集中于近期发生的交易数据及状态数据,对早期交易数据和状态数据的查询较少。此种场景,也可对历史的交易数据进行删除,保留最新的交易数据,而对于状态数据则保留所有的数据。
[0065] 综述,业务场景倾向于存储最新的交易数据(表明交易数据可以删除),状态数据均存储最新状态(但部分业务场景需考虑访问历史状态)。
[0066] 3、交易数据和状态数据的存储位置
[0067] 本发明实施例中考虑两类数据存储位置——本地硬盘存储及远端数据库存储。本地硬盘存储聚焦联机交易性能,远端数据库存储聚焦容量扩展。以下将从存储的数据内容、数据时效性及数据完整性三方面对这两类存储位置进行说明。
[0068] 本地硬盘存储中,可采用高效的KV数据库引擎,如LevelDB、RocksDB,本发明实施例以RocksDB为例进行说明。
[0069] 数据内容:存储的区块数据可以包括状态数据和交易数据,分别使用两个数据库进行存储,具体的,状态数据存储至状态数据库(State DB)中,交易数据存储至交易数据库(Block DB)中。
[0070] 数据时效性:状态数据库中,存储当前区块高度下的状态数据,不存储历史状态数据;交易数据库中,仅存储一定区块高度范围内(不是所有区块)的交易数据。
[0071] 数据完整性:状态数据库中存储的是所有(指全量)状态数据,不会对状态数据进行删除,交易数据库实例只存储最近区块的交易数据,会对数据进行删除。
[0072] 远端数据库中,可采用可无限平行扩容的关系数据库,本发明实施例以MySQL为例进行说明。
[0073] 数据内容:存储的区块数据包括状态数据和交易数据,但两类数据使用同一数据库(同一个SQL数据库)进行存储。
[0074] 数据时效:存储的状态数据包含历史状态数据,支持基于区块高度的历史状态数据查询。存储区块链上所有区块的交易数据。
[0075] 数据完整说明:所存储的状态数据和交易数据均为全量数据。
[0076] 远端数据库存储的数据与本地硬盘存储的数据是存在一定程度的重合。
[0077] 4、KV型数据库与关系型数据库的数据关联
[0078] 本发明实施例中本地硬盘存储采用KV型数据库(非关系型数据库),远端数据库存储采用关系型数据库。在将本地硬盘中区块数据存储至远端数据库时,需要将KV型数据库格式的数据转换成关系型数据库格式的数据。示例性的,RocksDB所记录的key由“表名称(TABLE_NAME)”+“主列值(PRI_COLUMN_VALUE)”组成,其中,“表名称(TABLE_NAME)”转换为MySQL中表名,“主列值(PRI_COLUMN_VALUE)”转换为MySQL中表的主key的列值,RocksDB记录的value为该主key值对应表中特定行的其余各列的“列名列值”对。由此而知,RocksDB记录的某些数据的key中具有相同“表名称(TABLE_NAME)”前缀,则表示这些数据属于同一个表。
[0079] 图1示例性的示出了本发明实施例提供基于区块链的交易数据删除方法所适用的系统架构,该系统架构可以包括区块链节点和远端数据库;
[0080] 区块链节点本地包括交易数据库、状态数据库;
[0081] 交易数据库用于存储区块的交易数据,交易数据库可以分为当前交易数据库(CurBlockDB)和待删除交易数据库(OldBlockDB)。(1)当前交易数据库可读可写,在区块链节点生成区块后,区块链节点会将生成的区块提交至当前交易数据库,区块链节点可以在当前交易数据库中查询交易数据;(2)待删除交易数据库只读不写,区块链节点在将待删除交易数据库中的交易数据全部备份至远程数据库之后可以将该待删除交易数据库删除,区块链节点可以在删除该待删除交易数据库之前从该待删除交易数据库中查询交易数据。
[0082] 区块链节点可以在接收到用户指令后,将当前交易数据库确定为待删除交易数据库,同时新建一个新的交易数据库作为当前交易数据库。该用户指令可以理解成用户触发的指示删除区块链上当前交易数据库的指令,也可以理解该用户指令是用于指示将当前交易数据库切换为待删除交易数据库的切换操作指令。
[0083] 状态数据库用于存储执行各交易数据所确定的状态数据,可读可写。
[0084] 远端数据库用于对区块链节点本地硬盘存储数据的全量备份,只读不写。
[0085] 如图2中,可以在区块链节点本地设置记录文件(也可以叫做数据日志(DataLog)),该记录文件用于记录区块对本地存储空间的操作信息。可选的,每个区块对应一个记录文件,每个记录文件可以根据区块高度进行标识,记录文件的内容可以是Key-Value键值对列表形式,用于表示本区块内区块数据的修改内容。
[0086] 基于上述描述,图3示例性的示出了本发明实施例提供的一种基于区块链的交易数据删除方法的流程,该流程可以由基于区块链的交易数据删除装置执行,该装置可以位于区块链节点中,可以是该区块链节点。
[0087] 如图3所示,该流程具体包括:
[0088] 步骤301,区块链节点将区块的交易数据存储于第一交易数据库。
[0089] 区块链节点中包括多个交易数据库,其中,第一交易数据库和第二交易数据库为多个交易数据库中的任意两个,区块链节点将当前区块的交易数据存储于第一交易数据库中,将当前区块之前的N个区块的交易数据存储于第二交易数据库中,N为正整数。举例来说,区块链节点包括三个交易数据库,区块链节点将区块a(块高为301)存储至第一交易数据库中,区块链节点将区块a之前的100个区块(如块高为0至块高为99的区块)存储至第二交易数据库中。
[0090] 一种实现方式中,区块链节点存在两个交易数据库,分别是第一交易数据库和第二交易数据库,在区块链节点接收到用户指令后,将第二交易数据库确定为待删除交易数据库,同时将第一交易数据库确定为当前数据库,理解为,第一交易数据库用于存储用户指令之后区块链节点打包成区块的交易数据,第二交易数据库用于存储用户指令之前区块链节点打包成区块的交易数据。
[0091] 另一种实现方式中,区块链节点存在当前交易数据库,在区块链节点接收到用户指令后,将当前交易数据库确定为待删除交易数据库,并创建新的当前交易数据库,区块链节点会将新生成区块中的交易数据存储至该新建的当前交易数据库中。此处,待删除交易数据库相当于第二交易数据库,创建的新的当前交易数据库相当于第一交易数据库。
[0092] 由上述实现方式可知,第一交易数据库可以是区块链节点预设先创建的,也可以是区块链节点在将第二交易数据库确定为待删除交易数据库后创建的,本发明实施例中不限制。
[0093] 在区块链节点将区块的交易数据存储于第一交易数据库之前,区块链节点将多个交易数据打包成区块,并将区块对本地存储空间的操作信息存储至区块对应的记录文件中,其中,每个区块对应一个记录文件,且记录文件可以用区块高度进行标识。远端数据库可以定周期获取各区块的记录文件并重放操作信息,将重放结果存储于本地。
[0094] 一种实现方式中,区块链节点在将多个交易数据打包至区块后,先会将区块对本地存储空间的操作信息存储至区块对应的记录文件中,再将该区块中交易数据存储至当前交易数据库中。另一种实现方式中,还可以将区块中交易数据存储至当前交易数据库之后,再将区块对本地存储空间的操作信息存储至区块对应的记录文件中。相比于后者,前者可以保障区块中交易数据全部存储至交易数据库中(上链),分析理由如下:
[0095] 本发明实施例中,由于将区块中交易数据存储至交易数据库的过程用时较长,为了提高区块链节点中提交区块的函数的工作效率,所以该提交区块的函数会先将区块中交易数据存储至节点内存中,从而完成提交工作,即此时提交区块的函数可以继续执行其它工作,无需等待区块中交易数据被存储至交易数据库后才算完成提交工作。而将区块中交易数据提交至节点内存中,存在的问题是,若区块链节点异常关闭,则节点内存中存储的交易数据则会丢失,不能完成正常上链,所以,需要在将区块中交易数据提交至节点内存之前,先将区块中交易数据对本地存储空间的操作信息存储至区块对应的记录文件中,从而在节点内存中区块的交易数据异常丢失情况下,节点内存可以从记录文件中获取操作信息用于进一步将区块的交易数据存储至交易数据库中。
[0096] 此外,区块链节点中还包括状态数据库,状态数据库用于存储最近的状态信息;区块链节点将区块中交易数据存储至第一交易数据库的同时,还会将各交易数据对应的状态数据写入状态数据库。也就是说,记录文件中包括区块对本地的存储空间的操作信息,相当于记录文件中包括交易数据和状态数据对本地的存储空间的操作信息,区块链节点在将区块中交易数据存储至第一交易数据库和状态数据存储至状态数据库之前,将交易数据和状态数据对本地存储空间的操作信息存储至区块对应的记录文件中。
[0097] 步骤302,区块链节点在确定远端数据库根据记录文件已同步第二交易数据库中的交易数据后,删除第二交易数据库。
[0098] 本发明实施例中,远端数据库可以定时查询并拉取区块链节点本地硬盘新生成的记录文件,基于每个区块的记录文件重放键值对修改内容,重放结果记录在本地数据库。远端数据库可以将记录在本地数据库中的最新交易数据所在区块的块高返回至区块链节点,区块链节点根据该块高,可以知道当前已经被远端数据库同步的交易数据有哪些,从而可将已经被同步的交易数据删除。
[0099] 一种实现方式中,区块链节点接收远端数据库发送的第三块高,其中,该第三块高理解为远端数据库经记录文件同步的最新交易数据所在的区块的块高,如果区块链节点确定第三块高大于第二交易数据库中最新交易数据所在区块的块高,则确定远端数据库根据记录文件已经将第二交易数据库中的交易数据同步至本地,区块链节点也就可以将该第二交易数据库删除。
[0100] 本发明实施例中,记录文件中数据可以是非关系型数据库格式,远端数据库可以是关系型数据库格式,远端数据库在根据记录文件同步第二交易数据库中的交易数据至本地时,可以将非关系型数据库格式的数据转换成关系型数据库格式的数据,通过该方式,远端数据库中存储的数据,方便后续的查询和统计。
[0101] 示例性的,记录文件中的数据是Key-Value格式数据,远端数据库从记录文件中获取到Key-Value格式的数据后,将该Key-Value格式的数据转换为Key-Version-Value格式的数据,其中,Key-Version-Value表示一个Key在不同区块高度Version下的Value。以状态数据同步为例,如账户Alice在区块高度为2时对应的账户值是300元,则Key-Value键值对表示为key[AccInfo_Alice]={{"height":2,"value":300}。
[0102] 状态数据包括键值对组成的键值对列表举例如下:
[0103] key[AccInfo_Alice]={{"height":2,"value":300},{"height":5,"value":0},{"height":10,"value":100}};
[0104] key[AccInfo_Bob]={{"height":2,"value":200},{"height":5,"value":500},{"height":10,"value":400}};
[0105] 记录文件中的键值对为一一对应的Key和Value,其中,Key指示具体的账户标识和对应在关系数据库中的表名,Value由多个数据组成,如上述键值对中,key[AccInfo_Alice]对应表名为AccInfo(Account Information,账户信息),账户标识为Alice,Value由三个数组组成,每个数组表示账户Alice在具体块高下的账户值。
[0106] 将上述记录文件中的键值对列表转换成关系数据库中表格格式,可以是根据Key确定表名称和主列值,具体的,将上述Key中的AccInfo作为表名称,将账户标识作为主列值,且将对应的Value中的三个数组对应存储至该表格中,具体如表1。
[0107] 表1
[0108] TABLE_NAME:AccInfo
[0109]
[0110]
[0111] 需要说明的是,还可以是区块链节点将记录文件中的非关系型数据库格式转换成远端数据库中的关系型数据库格式,随后远端数据库可以从记录文件中获取已经进行格式转换后的数据。区块链节点执行格式转换的实现方式可以和上述远端数据库执行方式类似,在此不再赘述。此外,本发明实施例同时可以实现将关系型数据库格式转换成非关系型数据库格式。
[0112] 此外,区块链节点还可以接收区块查询请求,其中,区块查询请求用于指示查询第一块高对应区块上的交易数据。若区块链节点中只包括第一交易数据库和第二交易数据库,则区块链节点可以根据第一块高、第二块高确定查询请求对应的查询数据库,其中,该第二块高是第二交易数据库存储的交易数据所在区块的最高块高。
[0113] 一种实现方式中,区块链节点可以在删除第二交易数据库之后,接收区块查询请求,若第一块高大于第二块高,则区块链节点可以从第一交易数据库中获取第一块高对应的区块的交易数据;若第一块高不大于第二块高,则区块链节点可以从远端数据库中获取第一块高对应的区块的交易数据。
[0114] 另一种实现方式中,区块链节点可以接收区块查询请求,若第一块高大于第二块高,则区块链节点可以从第一交易数据库中获取第一块高对应的区块的交易数据;若第一块高不大于第二块高,则需要判断该第二数据库是否已被删除,若是,则从远端数据库中获取第一块高对应的区块的交易数据,否则,从第二数据库中获取第一块高对应的区块的交易数据。
[0115] 举例来说,第二交易数据库存储的交易数据所在区块的最高块高为100,第一交易数据库中存储的交易数据所在区块的最高块高为150,当区块链节点接收到一条区块查询请求时,该区块查询请求中指示查询区块高度为120的区块上的数据,则可以确定该数据是在第一交易数据库中,区块链节点可以根据块高120从第一交易数据库中查询;当区块链节点接收到另一条区块查询请求时,该区块查询请求中指示查询区块高度为90的区块上的数据,则可以确定该数据是在第二交易数据库中,区块链节点先判断该第二交易数据库是否已经被删除,若是,则可以根据块高90从远端数据库中查询,否则,可以根据块高90从第二交易数据库中查询。
[0116] 需要说明的是,本例子中,不仅存在待查询交易数据在第二交易数据库中,还可能存在待查询交易数据在第二交易数据库之前的第三交易数据库中,比如,在第一时间点,当前交易数据库是第三交易数据库,在第二时间点,当前交易数据库是第二交易数据库,在第三时间点,当前交易数据库是第一交易数据库,也就是说,当前交易数据库是一直更新的,可能存在接收到一条区块查询请求,所指示的待查询交易数据是在第三交易数据库中,则可以确定该第三交易数据库已经被删除,可以从远端数据库中查询该交易数据。具体实现中,可以是记录当前时刻的第二交易数据库中的区块高度的区间,结合上述例子,第二交易数据库中的区块高度为50至100,则可以确定高度90对应的待查询交易数据可能在第二交易数据库中,确定高度为120对应的待查询交易数据在第一交易数据库中,确定高度为50对应的待查询交易数据在远端数据库中。
[0117] 此外,区块链节点可以确定远端数据库根据记录文件已同步第二交易数据库中的交易数据后,并在满足以下条件时删除第二交易数据库:如在确定为第二交易数据库在区块链节点中存在的持续时长达到预设时长后,或者接收到用户的删除指令等。
[0118] 本发明实施例中,设置上述路由规则,在接收到区块查询请求后,可以根据上述路由规则,从第一交易数据库或第二交易数据库或远端数据库中确定待查询的交易数据,从而在将历史交易数据删除后,仍可以从远端数据库中查询到该待查询的交易数据。
[0119] 此外,区块链节点还可以接收状态查询请求,可以根据状态查询请求,从状态数据库的各状态数据中确定状态数据。具体的,可以根据状态查询请求中的账户标识确定账户标识对应的状态数据。
[0120] 为了更好的解释本发明实施例,下面将在具体的实施场景下描述该基于区块链的删除区块数据、查询状态数据和查询区块数据的三个流程。
[0121] 如图4所示,删除区块数据流程由客户端、区块链节点和远端数据库交互完成。需要说明的是,下述步骤401至步骤403的切换操作和步骤404和步骤405的远端数据库同步操作是不分先后顺序的,切换操作是在接收到用户下发的切换操作指令后执行的,同步操作是远端数据库定周期执行的。
[0122] 步骤401,客户端发送切换操作指令;
[0123] 步骤402,区块链节点在接收到该切换操作指令后,将当前交易数据库确定为待删除交易数据库,新建新的交易数据库作为当前交易数据库,同时记录该切换操作时的区块链的区块高度;
[0124] 步骤403,区块链节点发送切换结果至客户端;
[0125] 步骤404,远端数据库经记录文件将交易数据库中的交易数据写入本地;
[0126] 步骤405,远端数据库发送写入成功通知至区块链节点。
[0127] 其中,写入成功通知中包括远端数据库当前已写入本地的区块链上的交易数据的区块高度。
[0128] 如图5所示,查询状态数据流程由客户端、区块链节点交互完成。
[0129] 步骤501,客户端发送状态查询请求;
[0130] 步骤502,区块链节点根据状态查询请求查询状态数据库;
[0131] 步骤503,区块链节点发送状态查询结果。
[0132] 如图6所示,查询区块数据流程由客户端、区块链节点和远端数据库交互完成。
[0133] 步骤601,客户端发送区块查询请求;
[0134] 步骤602,区块链节点根据区块查询请求,确定查询的数据库对象;
[0135] 步骤603,区块链节点查询本地数据库(当前交易数据库和待删除交易数据库)或远端数据库;
[0136] 步骤604,区块链节点发送区块查询结果。
[0137] 上述实施例中,区块链节点将生成区块中的交易数据存储至第一交易数据库中(相当于区块数据上链),并可以将第二交易数据库删除(相当于区块数据删除),也就是说,将区块数据上链和区块数据删除解耦合,删除第二交易数据库不会影响区块存储至第一交易数据库,即在区块数据进行删除时,不会影响区块链的正常业务运行。进一步的,远端数据库根据记录文件将交易数据库中的数据同步至本地,远端数据库不直接访问交易数据库,而是访问记录文件进而完成交易数据的同步,也即远端数据库的数据同步同样不会影响区块数据上链,保障区块链的正常业务运行。
[0138] 此外,本发明实施例中,区块链节点可以在接收到用户的切换指令后,将当前交易数据库确定为待删除交易数据库,用户可以对当前交易数据库中的交易数据存储大小进行控制,进一步控制数据的访问响应速度。本发明实施例还可以扩展远端数据库的容量,将全量历史交易数据存储至远端数据库中,实现历史交易数据的完整性。
[0139] 基于同一发明构思,图7示例性的示出了本发明实施例提供的一种基于区块链的交易数据删除装置的结构,该装置适用于区块链节点,所述区块链节点包括多个交易数据库和记录文件;所述记录文件用于记录区块对本地存储空间的操作信息;所述交易数据库用于存储区块的交易数据;
[0140] 所述装置包括:
[0141] 存储单元701,用于将区块的交易数据存储于第一交易数据库;其中,所述区块之前的N个区块的交易数据存储于第二交易数据库;N为正整数;
[0142] 处理单元702,用于在确定远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据后,删除所述第二交易数据库;所述第一交易数据库和所述第二交易数据库为所述多个交易数据库中的任意两个。
[0143] 可选的,所述存储单元701还用于:
[0144] 将区块的交易数据存储于第一交易数据库之前,将多个交易数据打包成所述区块;
[0145] 将所述区块对所述本地存储空间的操作信息存储至所述区块对应的记录文件中;每个区块对应一个记录文件。
[0146] 可选的,所述区块链节点还包括状态数据库;
[0147] 所述存储单元701还用于:
[0148] 将所述区块中各交易数据对应的状态数据写入所述状态数据库;所述状态数据库用于存储最近的状态信息。
[0149] 可选的,所述多个交易数据库为两个;
[0150] 所述处理单元702还用于:
[0151] 在所述删除所述第二交易数据库之后,接收区块查询请求;所述区块查询请求用于指示查询第一块高对应区块上的交易数据;
[0152] 若确定所述第一块高大于第二块高,则从所述第一交易数据库中获取所述第一块高对应的区块的交易数据;所述第二块高是所述第二交易数据库存储的交易数据所在区块的最高块高;
[0153] 若确定所述第一块高不大于所述第二块高,则从所述远端数据库中获取所述第一块高对应的区块的交易数据。
[0154] 可选的,所述处理单元702具体用于:
[0155] 接收所述远端数据库发送的第三块高;所述第三块高是所述远端数据库经所述记录文件同步的最新交易数据所在的区块的块高;
[0156] 若确定所述第三块高大于所述第二交易数据库中存储的交易数据所在区块的最高块高,则确定所述远端数据库根据所述记录文件已同步所述第二交易数据库中的交易数据。
[0157] 基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
[0158] 存储器,用于存储程序指令;
[0159] 处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述基于区块链的交易数据删除方法。
[0160] 基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述基于区块链的交易数据删除方法。
[0161] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0162] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0163] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0164] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0165] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用