一种数据同步方法、设备以及计算机可读存储介质转让专利

申请号 : CN202110268813.9

文献号 : CN112883117B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李茂材王宗友时一防蓝虎

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请实施例公开一种数据同步方法、设备以及计算机可读存储介质,其中,方法包括:获取包括节点标识以及区块标识的数据同步请求;根据区块标识获取同步区块中的同步交易数据,获取包括读取数据或结果数据的目标数据集合;根据合约信息以及数据同步请求确定针对交易详情数据的目标同步读交易执行函数;根据交易详情数据、节点标识以及目标同步读交易执行函数确定同步数据集合;获取验证数据,将同步交易数据、验证数据以及同步数据集合返回至轻节点,以使轻节点根据验证数据以及同步数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。采用本申请,不仅可以降低轻节点的空间成本,还可以保证所同步的数据的合法性。

权利要求 :

1.一种数据同步方法,其特征在于,包括:获取轻节点发送的数据同步请求;所述数据同步请求包括所述轻节点所请求的同步区块的区块标识;

根据所述区块标识获取所述同步区块中的同步交易数据,从全量数据库中获取与所述同步交易数据相关联的目标数据集合;所述同步交易数据包括交易详情数据;所述目标数据集合包括携带读标记的第一数据集合,以及携带写标记的第二数据集合;所述读标记用于表征所述第一数据集合与所述交易详情数据对应的读取数据相同,所述写标记用于表征所述第二数据集合与所述交易详情数据对应的结果数据相同;

根据所述数据同步请求从所述目标数据集合中确定同步数据集合;

从所述同步区块中获取所述同步交易数据对应的验证数据,将所述同步交易数据、所述验证数据以及所述同步数据集合返回至所述轻节点,以使所述轻节点根据所述验证数据以及所述同步数据集合,验证所述同步交易数据以及所述交易详情数据对应的待验证结果数据的合法性。

2.根据权利要求1所述的方法,其特征在于,所述数据同步请求包括所述轻节点的节点标识;所述同步交易数据包括交易详情数据以及用于执行所述交易详情数据的智能合约的合约信息;

所述根据所述数据同步请求从所述目标数据集合中确定同步数据集合,包括:根据所述合约信息以及所述数据同步请求,确定针对所述交易详情数据的目标同步读交易执行函数;

根据所述交易详情数据、所述节点标识以及所述目标同步读交易执行函数,从所述目标数据集合中确定所述同步数据集合。

3.根据权利要求2所述的方法,其特征在于,所述根据所述合约信息以及所述数据同步请求,确定针对所述交易详情数据的目标同步读交易执行函数,包括:获取所述合约信息中的合约名称以及交易执行函数名称;其中,所述合约名称用于表征执行所述交易详情数据的所述智能合约的名称,所述交易执行函数名称用于表征所述智能合约所调用的用于执行所述交易详情数据的交易执行函数的名称;

根据所述数据同步请求获取同步读名称,根据所述交易执行函数名称以及所述同步读名称,确定同步读交易执行函数名称;

在所述同步读交易执行函数名称所对应的智能合约中确定目标同步读交易执行函数。

4.根据权利要求2所述的方法,其特征在于,所述根据所述交易详情数据、所述节点标识以及所述目标同步读交易执行函数,从所述目标数据集合中确定同步数据集合,包括:根据所述节点标识以及所述目标同步读交易执行函数,确定所述轻节点针对所述同步交易数据的同步权限;所述同步权限包括同步合法权限以及同步非法权限;

若所述轻节点针对所述同步交易数据的同步权限为所述同步非法权限,则返回数据同步失败信息至所述轻节点;

若所述轻节点针对所述同步交易数据的同步权限为所述同步合法权限,则根据所述交易详情数据、所述节点标识以及所述目标同步读交易执行函数,从所述目标数据集合中确定所述同步数据集合。

5.根据权利要求4所述的方法,其特征在于,所述根据所述交易详情数据、所述节点标识以及所述目标同步读交易执行函数,从所述目标数据集合中确定所述同步数据集合,包括:

根据所述交易详情数据、所述节点标识以及所述目标同步读交易执行函数,确定所述轻节点已储存的与所述交易详情数据相关联的已有数据集合;

从所述目标数据集合中过滤所述已有数据集合,将过滤后的目标数据集合确定为所述同步数据集合。

6.根据权利要求5所述的方法,其特征在于,所述将过滤后的目标数据集合确定为所述同步数据集合,包括:

根据所述节点标识以及所述目标同步读交易执行函数,确定所述轻节点针对所述交易详情数据的额外数据集合;所述目标数据集合不包括所述额外数据集合;

将所述额外数据集合以及所述过滤后的目标数据集合进行合并处理,得到所述同步数据集合。

7.根据权利要求1所述的方法,其特征在于,所述同步交易数据包括交易详情数据;所述结果数据基于交易执行结果生成;全量节点执行所述交易详情数据时生成所述交易执行结果;

所述从所述同步区块中获取所述同步交易数据对应的验证数据,包括:从所述同步区块中获取交易状态树以及结果状态树;所述交易状态树是基于所述交易详情数据所生成的交易默克尔树;所述结果状态树是基于所述结果数据所生成的结果默克尔树;

基于所述交易详情数据从所述交易状态树中获取交易验证数据,基于所述结果数据从所述结果状态树中获取结果验证数据;

将所述交易验证数据以及所述结果验证数据确定为验证数据。

8.根据权利要求7所述的方法,其特征在于,所述基于所述交易详情数据从所述交易状态树中获取交易验证数据,基于所述结果数据从所述结果状态树中获取结果验证数据,包括:

根据所述交易详情数据,在所述交易状态树中获取交易哈希值,根据所述结果数据,在所述结果状态树中获取结果哈希值;

将所述交易哈希值确定为所述交易验证数据,将所述结果哈希值确定为所述结果验证数据。

9.根据权利要求1所述的方法,其特征在于,还包括:获取待上链区块中的交易详情数据,调用用于执行所述交易详情数据的智能合约中的交易执行函数;

根据所述交易执行函数获取针对所述交易详情数据的历史交易数据,将所述历史交易数据确定为读取数据;

根据所述读取数据以及所述交易详情数据执行所述交易执行函数,得到交易详情数据的交易执行结果;

根据所述交易详情数据以及所述交易执行结果,对所述待上链区块进行上链处理。

10.根据权利要求9所述的方法,其特征在于,所述根据所述交易详情数据以及所述交易执行结果,对所述待上链区块进行上链处理,包括:当所述交易详情数据以及所述交易执行结果均共识通过时,根据所述交易执行结果生成所述结果数据;

根据所述交易详情数据生成交易状态树,根据所述结果数据生成结果状态树,将所述交易状态树以及所述结果状态树添加至所述待上链区块;

将添加有所述交易状态树以及所述结果状态树的待上链区块确定为所述同步区块,将所述同步区块添加至区块链;

根据所述读取数据以及所述结果数据生成所述目标数据集合,将所述目标数据集合存储于全量数据库中。

11.根据权利要求10所述的方法,其特征在于,所述根据所述读取数据以及所述结果数据生成所述目标数据集合,将所述目标数据集合存储于全量数据库中,包括:将读取数据以及结果数据分别与历史数据集合进行对比;历史数据集合包括全量数据库中已存储的历史交易详情数据对应的历史读取数据或历史结果数据;

若存在与读取数据相同的历史数据集合,且存在与结果数据相同的历史数据集合,则对与读取数据相同的历史数据集合进行读标记处理,将携带读标记的历史数据集合确定为第一数据集合,对与结果数据相同的历史数据集合进行写标记处理,将携带写标记的历史数据集合确定为第二数据集合;

将第一数据集合以及第二数据集合确定为目标数据集合,将目标数据集合与交易详情数据关联存储于全量数据库中;

若不存在与读取数据相同的历史数据集合,且不存在与结果数据相同的历史数据集合,则将读取数据以及结果数据确定为目标数据集合,将目标数据集合与交易详情数据关联存储于全量数据库中。

12.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;

所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1至11任一项所述的方法。

13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1‑11任一项所述的方法。

说明书 :

一种数据同步方法、设备以及计算机可读存储介质

[0001] 本申请为在2020年12月24日提交中国专利局、申请号为202011544909.5、申请名称为“一种数据同步方法、设备以及计算机可读存储介质”的中国专利申请的分案申请,其
全部内容通过引用结合在本申请中。

技术领域

[0002] 本申请涉及互联网技术领域,尤其涉及一种数据同步方法、设备以及计算机可读存储介质。

背景技术

[0003] 随着网络技术的快速发展以及政府和企业对数据安全的重视,区块链得到了极大的重视和应用。
[0004] 区块链包括全量节点以及轻节点,其中,全量节点拥有全量数据,参与记账共识,轻节点主要进行业务执行,不参与记账共识,而是通过身份认证的方式从共识网络中获得
区块头数据和部分授权可见的区块数据。所以全量节点需要通过点对点(Peer‑to‑Peer,
P2P)网络层广播共识完毕的新区块的区块头,以使轻节点对新区块进行数据同步。
[0005] 现有数据同步技术中,如以太坊、企业操作系统(Enterprise Operating System,EOS)等,当轻节点向全量节点请求同步区块中的数据时,全量节点是将同步区块返回至轻
节点,然后轻节点自行保留同步区块中自身需要的数据。明显地,传输同步区块存在同步数
据量大的缺陷,该缺陷会提高轻节点的空间成本。
[0006] 此外,在现有技术中,轻节点无法对获取到的数据进行自校验,若区块链网络中存在作恶行为,那么轻节点就无法确定获取到的数据的准确性,进而无法保证所同步的数据
的合法性。

发明内容

[0007] 本申请实施例提供一种数据同步方法、设备以及计算机可读存储介质,不仅可以降低轻节点的空间成本,还可以保证所同步的数据的合法性。
[0008] 本申请实施例一方面提供了一种数据同步方法,包括:
[0009] 获取轻节点发送的数据同步请求;数据同步请求包括轻节点的节点标识以及同步区块的区块标识;
[0010] 根据区块标识获取同步区块中的同步交易数据,获取与同步交易数据相关联的目标数据集合;同步交易数据包括交易详情数据以及用于执行交易详情数据的智能合约的合
约信息;目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果
数据;
[0011] 根据合约信息以及数据同步请求确定针对交易详情数据的目标同步读交易执行函数;
[0012] 根据交易详情数据、节点标识以及目标同步读交易执行函数,从目标数据集合中确定同步数据集合;
[0013] 从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及同步数据集合返回至轻节点,以使轻节点根据验证数据以及同步数据集合,验证同步交
易数据以及交易详情数据对应的待验证结果数据的合法性。
[0014] 本申请实施例一方面提供了一种数据同步方法,包括:
[0015] 发送携带区块标识的数据同步请求至全量节点,以使全量节点根据数据同步请求以及区块标识,获取同步交易数据、验证数据以及同步数据集合;其中,同步交易数据是全
量节点根据区块标识所确定的同步区块中的数据,且包括交易详情数据以及用于执行交易
详情数据的智能合约的合约信息;同步数据集合是全量节点根据交易详情数据、轻节点的
节点标识以及目标同步读交易执行函数,从目标数据集合中所确定的集合;目标同步读交
易执行函数是全量节点根据合约信息以及数据同步请求所确定的针对交易详情数据的函
数;目标数据集合是与同步交易数据相关联,且包括全量节点基于合约信息在执行交易详
情数据时所得到的读取数据或结果数据的集合;
[0016] 获取全量节点发送的同步交易数据、验证数据以及同步数据集合;
[0017] 根据验证数据以及同步数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0018] 本申请实施例一方面提供了一种数据同步装置,包括:
[0019] 第一获取模块,用于获取轻节点发送的数据同步请求;数据同步请求包括轻节点的节点标识以及同步区块的区块标识;
[0020] 第二获取模块,用于根据区块标识获取同步区块中的同步交易数据,获取与同步交易数据相关联的目标数据集合;同步交易数据包括交易详情数据以及用于执行交易详情
数据的智能合约的合约信息;目标数据集合包括基于合约信息在执行交易详情数据时所得
到的读取数据或结果数据;
[0021] 第一确定模块,用于根据合约信息以及数据同步请求确定针对交易详情数据的目标同步读交易执行函数;
[0022] 第二确定模块,用于根据交易详情数据、节点标识以及目标同步读交易执行函数,从目标数据集合中确定同步数据集合;
[0023] 第二获取模块,用于从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及同步数据集合返回至轻节点,以使轻节点根据验证数据以及同步数
据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0024] 其中,第二获取模块,包括:
[0025] 第一获取单元,用于从全量数据库中获取与同步交易数据相关联的候选数据集合;候选数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据以及结果数
据;
[0026] 容量对比单元,用于将读取数据的数据容量与结果数据的数据容量进行对比;
[0027] 第一确定单元,用于若读取数据的数据容量小于结果数据的数据容量,则将读取数据确定为目标数据集合;
[0028] 第一确定单元,还用于若读取数据的数据容量等于或大于结果数据的数据容量,则将结果数据确定为目标数据集合。
[0029] 其中,第一确定模块,包括:
[0030] 第二获取单元,用于获取合约信息中的合约名称以及交易执行函数名称;其中,合约名称用于表征执行交易详情数据的智能合约的名称,交易执行函数名称用于表征智能合
约所调用的用于执行交易详情数据的交易执行函数的名称;
[0031] 第三获取单元,用于根据数据同步请求获取同步读名称,根据交易执行函数名称以及同步读名称,确定同步读交易执行函数名称;
[0032] 第二确定单元,用于根据同步读交易执行函数名称,在智能合约中确定目标同步读交易执行函数。
[0033] 其中,第二确定模块,包括:
[0034] 第三确定单元,用于根据节点标识以及目标同步读交易执行函数,确定轻节点针对同步交易数据的同步权限;同步权限包括同步合法权限以及同步非法权限;
[0035] 返回失败单元,用于若轻节点针对同步交易数据的同步权限为同步非法权限,则返回数据同步失败信息至轻节点;
[0036] 第四确定单元,用于若轻节点针对同步交易数据的同步权限为同步合法权限,则根据交易详情数据、节点标识以及目标同步读交易执行函数,从目标数据集合中确定同步
数据集合。
[0037] 其中,第四确定单元,包括:
[0038] 第一确定子单元,用于根据交易详情数据、节点标识以及目标同步读交易执行函数,确定轻节点已储存的与交易详情数据相关联的已有数据集合;
[0039] 第二确定子单元,用于从目标数据集合中过滤已有数据集合,将过滤后的目标数据集合确定为同步数据集合。
[0040] 其中,第三获取模块,包括:
[0041] 第四获取单元,用于从同步区块中获取交易状态树以及结果状态树;交易状态树是基于交易详情数据所生成的交易默克尔树;结果状态树是基于结果数据所生成的结果默
克尔树;
[0042] 第五获取单元,用于基于交易详情数据从交易状态树中获取交易验证数据,基于结果数据从结果状态树中获取结果验证数据;
[0043] 第五确定单元,用于将交易验证数据以及结果验证数据确定为验证数据。
[0044] 其中,数据同步装置,还包括:
[0045] 第四获取模快,用于获取待上链区块中的交易详情数据,调用用于执行交易详情数据的智能合约中的交易执行函数;
[0046] 第五获取模快,用于根据交易执行函数获取针对交易详情数据的历史交易数据,将历史交易数据确定为读取数据;
[0047] 执行函数模块,用于根据读取数据以及交易详情数据执行交易执行函数,得到交易详情数据的交易执行结果;
[0048] 区块上链模块,用于根据交易详情数据以及交易执行结果,对待上链区块进行上链处理。
[0049] 其中,区块上链模块,包括:
[0050] 第一生成单元,用于当交易详情数据以及交易执行结果均共识通过时,根据交易执行结果生成结果数据;
[0051] 第二生成单元,用于根据交易详情数据生成交易状态树,根据结果数据生成结果状态树,将交易状态树以及结果状态树添加至待上链区块;
[0052] 第六确定单元,用于将添加有交易状态树以及结果状态树的待上链区块确定为同步区块,将同步区块添加至区块链;
[0053] 第三生成单元,用于根据读取数据以及结果数据生成目标数据集合,将目标数据集合存储于全量数据库中。
[0054] 本申请实施例一方面提供了一种数据同步装置,包括:
[0055] 发送请求模块,用于发送携带区块标识的数据同步请求至全量节点,以使全量节点根据数据同步请求以及区块标识,获取同步交易数据、验证数据以及同步数据集合;其
中,同步交易数据是全量节点根据区块标识所确定的同步区块中的数据,且包括交易详情
数据以及用于执行交易详情数据的智能合约的合约信息;同步数据集合是全量节点根据交
易详情数据、轻节点的节点标识以及目标同步读交易执行函数,从目标数据集合中所确定
的集合;目标同步读交易执行函数是全量节点根据合约信息以及数据同步请求所确定的针
对交易详情数据的函数;目标数据集合是与同步交易数据相关联,且包括全量节点基于合
约信息在执行交易详情数据时所得到的读取数据或结果数据的集合;
[0056] 获取数据模块,用于获取全量节点发送的同步交易数据、验证数据以及同步数据集合;
[0057] 验证数据模块,用于根据验证数据以及同步数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0058] 其中,验证数据模块,包括:
[0059] 获取信息单元,用于获取合约信息中的合约名称以及交易执行函数名称;其中,合约名称用于表征全量节点执行交易详情数据的智能合约的名称,交易执行函数名称用于表
征智能合约所调用的用于执行交易详情数据的交易执行函数的名称;
[0060] 第一确定单元,用于根据同步数据集合以及同步交易数据获取同步写名称,根据交易执行函数名称以及同步写名称,确定同步写交易执行函数名称;
[0061] 第二确定单元,用于根据同步写交易执行函数名称,在智能合约中确定目标同步写交易执行函数;
[0062] 第二确定单元,还用于根据目标同步写交易执行函数、同步数据集合以及验证数据,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0063] 其中,第二确定单元,包括:
[0064] 确定集合子单元,用于根据节点标识、交易详情数据以及目标同步写交易执行函数,确定轻节点账本中针对交易详情数据的已有数据集合;
[0065] 目标集合子单元,用于将已有数据集合与同步数据集合进行合并处理,得到目标数据集合;
[0066] 验证数据子单元,用于根据目标数据集合以及验证数据,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0067] 其中,验证数据子单元,包括:
[0068] 第一验证子单元,用于若目标数据集合为结果数据,则将结果数据确定为交易详情数据对应的待验证结果数据,根据交易详情数据、待验证结果数据以及验证数据,得到第
一待验证根哈希,根据第一待验证根哈希,验证同步交易数据以及待验证结果数据的合法
性;
[0069] 第一确定子单元,用于若目标数据集合为读取数据,则根据交易执行函数名称确定交易执行函数;
[0070] 第二确定子单元,用于将读取数据以及交易详情数据输入交易执行函数,得到交易详情数据的待验证交易执行结果,根据待验证交易执行结果生成待验证结果数据;
[0071] 第二验证子单元,用于根据交易详情数据、待验证结果数据以及验证数据,得到第二待验证根哈希,根据第二待验证根哈希,验证同步交易数据以及待验证结果数据的合法
性。
[0072] 其中,验证数据包括交易验证数据以及结果验证数据;第一待验证根哈希包括待验证交易根哈希以及待验证结果根哈希;
[0073] 第二验证子单元,具体用于根据交易详情数据以及交易验证数据,得到待验证交易根哈希,根据待验证结果数据以及结果验证数据,得到待验证结果根哈希;
[0074] 第二验证子单元,还具体用于获取针对同步区块的区块头,从区块头中获取已验证交易根哈希以及已验证结果根哈希;
[0075] 第二验证子单元,还具体用于将待验证交易根哈希与已验证交易根哈希进行对比,将待验证结果根哈希与已验证结果根哈希进行对比;
[0076] 第二验证子单元,还具体用于若待验证交易根哈希与已验证交易根哈希不相同,则确定同步交易数据为非法数据,若待验证交易根哈希与已验证交易根哈希相同,则确定
同步交易数据为合法数据;
[0077] 第二验证子单元,还具体用于若待验证结果根哈希与已验证结果根哈希不相同,则确定待验证结果数据为非法数据,若待验证结果根哈希与已验证结果根哈希相同,则确
定待验证结果数据为合法数据;
[0078] 第二验证子单元,还具体用于当同步交易数据为合法数据且待验证结果数据为合法数据时,将待验证结果数据与同步交易数据进行关联存储。
[0079] 本申请一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
[0080] 上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以使得
计算机设备执行本申请实施例中的方法。
[0081] 本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
[0082] 本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算机设
备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该
计算机设备执行本申请实施例中的方法。
[0083] 在本申请实施例中,当获取到轻节点发送的针对某个区块(即同步区块)的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步区块中的同步交易数
据,然后获取针对该同步交易数据的目标数据集合,其中,同步交易数据包括交易详情数据
以及用于执行交易详情数据的智能合约的合约信息;本申请根据合约信息以及数据同步请
求,可以确定针对交易详情数据的目标同步读交易执行函数;基于节点标识以及目标同步
读交易执行函数,可以从目标数据集合中确定同步数据集合,实现完善同步给轻节点的数
据,可以减小数据传输量,从而可以降低轻节点的空间成本;进一步地,获取验证数据,将同
步交易数据、验证数据以及同步数据集合发送给轻节点,由于同步数据集合包括基于合约
信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过同步数据
集合准确地得到交易详情数据对应的待验证结果数据,因此,通过验证数据和同步数据集
合,轻节点可以准确验证出同步交易数据以及待验证结果数据的合法性。

附图说明

[0084] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0085] 图1是本申请实施例提供的一种系统架构示意图;
[0086] 图2是本申请实施例提供的一种数据同步方法的流程示意图;
[0087] 图3是本申请实施例提供的一种数据共识的场景示意图;
[0088] 图4是本申请实施例提供的一种数据共识的场景示意图;
[0089] 图5是本申请实施例提供的一种数据同步方法的流程示意图;
[0090] 图6是本申请实施例提供的一种数据同步的场景示意图;
[0091] 图7是本申请实施例提供的一种数据同步的场景示意图;
[0092] 图8是本申请实施例提供的一种数据同步方法的流程示意图;
[0093] 图9是本申请实施例提供的一种数据自校验的场景示意图;
[0094] 图10是本申请实施例提供的一种数据同步方法的流程示意图;
[0095] 图11是本申请实施例提供的一种目标数据存储的场景示意图;
[0096] 图12是本申请实施例提供的一种数据同步装置的结构示意图;
[0097] 图13是本申请实施例提供的一种数据同步装置的结构示意图;
[0098] 图14是本申请实施例提供的一种计算机设备的结构示意图;
[0099] 图15是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0100] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于
本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
[0101] 为了便于理解,首先对部分名词进行以下简单解释:
[0102] 1、区块链:狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前获取的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需
求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安
全保护、点对点通信技术、网络协议、智能合约等。区块链的目标是实现一个分布的数据记
录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由
一个个“区块”串联组成,后继区块中记录前继区块的哈希(Hash)值,每个区块(以及区块中
的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中的节点提议添加一个
新的区块,必须经过共识机制对区块达成共识确认。
[0103] 2、哈希(hash)值:也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入
数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前继区块的
哈希值,前继区块被称为当前区块的父区块。哈希值是区块链技术中的潜力核心基础和最
重要的方面,它保留了记录和查看数据的真实性,以及区块链作为一个整体的完整性。
[0104] 3、智能合约:是一种旨在以信息化方式传播、验证或执行合同的计算机协议。在区块链系统当中,智能合约是一种区块链各节点可以理解并执行的代码,可以执行任意逻辑
并得到结果。在实际应用中,智能合约通过区块链上的交易来管理与试用。每条交易相当于
对区块链系统的一个远程过程调用(Remote Procedure Call,RPC)请求。如果说智能合约
相当于可执行程序,区块链就相当于提供运行环境的操作系统。区块链可以包含多个合约,
以合约账号(Identity,ID)、标识号或名称来区分。
[0105] 4、合约管理:可以分为部署、升级以及删除等管理操作。通过发起一笔交易(请求)的方式,来创建或修改区块链系统中指定合约(即智能合约,下文叙述的合约均指代智能合
约)的代码,从而改变合约的执行逻辑。
[0106] 5、合约执行:通过发起一笔交易的方式,用户可以调用区块链上已经部署的合约。区块链系统中的各个节点分别运行同一个合约。对于需要读取数据的合约,会访问节点自
己的账本。最终各节点会互相验证执行结果是否一致(共识),若执行结果一致各节点将必
要结果存入各自账本中,并返回结果给用户。
[0107] 6、读写集:合约在执行过程中对节点账本数据的操作记录。分为读集合与写集合,分别指智能合约在执行时,从账本读取的数据,和将要写入账本的数据。
[0108] 7、全量节点与轻节点:区块链网络包括全量节点以及轻节点,全量节点拥有全部数据,轻节点拥有部分数据,但轻节点仍需验证从全量节点所同步的数据真实可靠。应用示
例,税务总局是全量节点,省税务局是轻节点,市税局也是轻节点。最高法院是全量节点,地
方法院是轻节点。银行是全量节点,企业是轻节点等等。只要业务具有不对等关系,系统中
便需要有全量节点与轻节点用以保护数据隐私。
[0109] 8、默克尔树(Merkle Tree):通常也被称作哈希树(Hash Tree)或状态树。顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块的hash值,数据块包括文件或者文
件的集合,在本申请实施例中,数据块可以理解成区块,文件可以包括区块中的交易详情数
据或交易详情数据的交易执行结果,或者交易详情数据对应的结果数据。
[0110] 当区块链被用于政府或者商业机构的一些场景中时,并非区块链中的所有参与节点(可以包括全量节点与轻节点)都有足够的资源和必要性成为区块链的共识节点。而出于
对数据的安全性考虑,在区块链体系中涉及个人隐私或者国家安全的相关数据时,也不适
用普遍的数据对等式的区块链部署方式。因此本申请提出一种既可以保障数据的隐私性,
又可以适当公开数据的方法。
[0111] 请参见图1,图1是本申请实施例提供的一种系统架构示意图。如图1所示,该系统架构可以为区块链网络10,其中,区块链网络10可以包括见证网络10a以及共识网络10b;见
证网络10a中的节点可以称为轻节点,拥有部分数据,轻节点主要进行业务执行,不参与记
账共识,通过身份认证的方式从共识网络10b中获得区块头数据和部分授权可见的区块数
据(包括上述的同步交易数据)。共识网络10b也可以称作核心网络,共识网络10b中的节点
可以称为全量节点,全量节点拥有全量数据。见证网络10a和共识网络10b处在不同网络环
境下,通常来说,见证网络10a处于公有网络中而共识网络10b处于私有网络中,二者通过路
由边界进行交互。
[0112] 请再参见图1,见证网络10a可以包括轻节点101a、轻节点102a、轻节点103a、…、轻节点104a。可以理解的是,上述见证网络10a可以包括一个或者多个见证网络,在实际应用
时,由于应用场景的不同,可以设置一种或多种类型的见证网络,这里将不对见证网络的数
量进行限制。上述见证网络10a可以包括一个或者多个轻节点,这里将不对轻节点的数量进
行限制。
[0113] 请再参见图1,共识网络10b可以包括全量节点101b、全量节点102b、全量节点103b、…、全量节点104b。可以理解的是,上述共识网络10b可以包括一个或者多个共识网
络,在实际应用时,由于应用场景的不同,可以设置一种或多种类型的共识网络,这里将不
对共识网络的数量进行限制。上述共识网络10b可以包括一个或者多个全量节点,这里将不
对全量节点的数量进行限制。
[0114] 每个节点(包括见证网络10a中的轻节点以及共识网络10b中的全量节点)在进行正常工作时可以接收到外界发送的数据,并基于接收到的数据进行区块上链处理,也可以
向外界发送数据。为了保证各个节点之间的数据互通,每个节点之间可以存在数据连接,例
如轻节点101a与轻节点102a之间存在数据连接,轻节点101a与轻节点103a之间存在数据连
接,全量节点101b与全量节点104b之间存在数据连接。
[0115] 进一步地,见证网络10a与共识网络10b之间存在数据连接,例如轻节点101a与全量节点102b之间存在数据连接,轻节点101a与全量节点103b之间存在数据连接,全量节点
101b与轻节点104a之间存在数据连接。
[0116] 可以理解的是,节点之间可以通过上述数据连接进行数据或者区块传输。区块链网络10可以基于节点标识实现节点之间的数据连接,对于区块链网络10中的每个节点,均
具有与其对应的节点标识,而且上述每个节点均可以存储与自身有相连关系的其他节点的
节点标识,以便后续根据其他节点的节点标识,将获取到的数据或生成的区块广播至其他
节点,例如轻节点101a中可以维护一个如表1所示的节点标识列表,该节点标识列表保存着
其他节点的节点名称和节点标识。
[0117] 表1
[0118]节点名称 节点标识
轻节点102a 117.114.151.174
轻节点103a 117.116.189.145
… …
轻节点104a 119.123.789.258
全量节点101b 117.114.151.183
全量节点102b 117.116.189.125
全量节点103b 119.250.485.362
全量节点104b 119.123.789.369
[0119] 其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任意一种能够用于标识区块链网络10中节点的信息,表1中仅以IP地址为例进行说明。
[0120] 假设轻节点101a的节点标识为117.116.156.425,则轻节点101a可以通过节点标识117.114.151.183,向全量节点101b发送数据同步请求,且全量节点101b通过节点标识
117.116.156.425,可以知道该数据同步请求是轻节点101a所发送的;同理,轻节点101a可
以通过节点标识117.116.189.145,向轻节点103a发送交易数据A,且轻节点103a通过节点
标识117.116.156.425,可以知道该交易数据A是轻节点101a所发送的,其他节点之间的数
据传输亦如此,故不再一一进行赘述。
[0121] 可以理解的是,上述的数据连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接
方式,本申请在此不做限制。
[0122] 其中,图1中的轻节点101a、轻节点102a、轻节点103a、…、轻节点104a、全量节点101b、全量节点102b、全量节点103b、…、全量节点104b可以包括手机、平板电脑、笔记本电
脑、掌上电脑、智能音响、移动互联网设备(MID,mobile internet device)、POS(Point Of 
Sales,销售点)机、可穿戴设备(例如智能手表、智能手环等)等。
[0123] 可以理解的是,本申请实施例所提供的数据同步方法可以由计算机设备执行,计算机设备包括但不限于轻节点(可以为终端或服务器)或全量节点(可以为终端或服务器)。
上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分
布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中
间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服
务器。上述终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表
等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连
接,本申请在此不做限制。
[0124] 进一步地,请参见图2,图2是本申请实施例提供的一种数据同步方法的流程示意图。该数据同步方法可以由图1所述的全量节点或轻节点执行,也可以由全量节点以及轻节
点共同执行,在本申请实施例中,以该方法由全量节点执行为例进行说明。如图2所示,该数
据同步过程可以包括如下步骤。
[0125] 步骤S101,获取轻节点发送的数据同步请求;数据同步请求包括轻节点的节点标识以及同步区块的区块标识。
[0126] 具体的,获取待上链区块中的交易详情数据,调用用于执行交易详情数据的智能合约中的交易执行函数;根据交易执行函数获取针对交易详情数据的历史交易数据,将历
史交易数据确定为读取数据;根据读取数据以及交易详情数据执行交易执行函数,得到交
易详情数据的交易执行结果;根据交易详情数据以及交易执行结果,对待上链区块进行上
链处理。
[0127] 其中,对待上链区块进行上链处理的具体过程可以包括:当交易详情数据以及交易执行结果均共识通过时,根据交易执行结果生成结果数据;根据交易详情数据生成交易
状态树,根据结果数据生成结果状态树,将交易状态树以及结果状态树添加至待上链区块;
将添加有交易状态树以及结果状态树的待上链区块确定为同步区块,将同步区块添加至区
块链。
[0128] 可选的,将读取数据以及结果数据分别与历史数据集合进行对比;历史数据集合包括全量数据库中已存储的历史交易详情数据对应的历史读取数据或历史结果数据;若存
在与读取数据相同的历史数据集合,且存在与结果数据相同的历史数据集合,则对与读取
数据相同的历史数据集合进行读标记处理,将携带读标记的历史数据集合确定为第一数据
集合,对与结果数据相同的历史数据集合进行写标记处理,将携带写标记的历史数据集合
确定为第二数据集合;将第一数据集合以及第二数据集合确定为目标数据集合,将目标数
据集合与交易详情数据关联存储于全量数据库中;若不存在与读取数据相同的历史数据集
合,且不存在与结果数据相同的历史数据集合,则将读取数据以及结果数据确定为目标数
据集合,将目标数据集合与交易详情数据关联存储于全量数据库中。
[0129] 请一并参见图3,图3是本申请实施例提供的一种数据共识的场景示意图。如图3所示,全量节点30a获取待上链区块30b,其中,待上链区块30b可以是区块链网络中的其他全
量节点所生成的待共识区块,也可以是区块链网络中的轻节点所生成的待出块区块,此处
不限定待上链区块30b的由来。可以理解的是,本申请实施例仅叙述区块头中的交易根哈希
(即图3中的哈希值HY(1234))以及结果根哈希(即图3中的哈希值HG(1234)),在实际应用时,
区块头存储有版本号、时间戳和难度值等基本数据,还可以存储有其他相关数据。
[0130] 请再参见图3,全量节点30a获取待上链区块30b中的交易详情数据,即图3中的交易1、交易2、交易3、…、交易n,对交易1、交易2、交易3、…、交易n进行定序共识,当定序共识
通过时,对交易1、交易2、交易3、…、交易n进行交易执行结果共识,具体过程可以如下描述。
全量节点30a首先根据函数名称调用用于执行交易详情数据的智能合约30c中的交易执行
函数,如图3所示,执行交易1的函数为交易执行函数1,执行交易2的函数为交易执行函数2,
执行交易3的函数为交易执行函数3,…,执行交易n的函数为交易执行函数n。可以理解的
是,函数(包括函数名称1、函数名称2、函数名称3、…、函数名称n分别对应的函数),可以在
同一个智能合约下被调用,也可以在不同的智能合约下被调用,例如函数名称1对应的函数
(即交易执行函数1)与函数名称2对应的函数(即交易执行函数2)在智能合约B中被调用,函
数名称3对应的函数(即交易执行函数3)与函数名称n对应的函数(即交易执行函数n)在智
能合约V中被调用。
[0131] 全量节点30a根据交易执行函数获取针对交易详情数据的历史交易数据,将历史交易数据确定为读取数据;如图3所示,通过交易执行函数1获取交易1的历史交易数据1,通
过交易执行函数2获取交易2的历史交易数据2,通过交易执行函数3获取交易3的历史交易
数据3,…,通过交易执行函数n获取交易n的历史交易数据n。例如,交易1为甲方通过自己的
账户向乙方转账10元,交易执行函数1为转移执行函数,历史交易数据1为甲方账户上剩余
20元,针对交易1的交易执行结果1可以为20‑10=10元,即执行交易1后,甲方的账户上剩余
10元。
[0132] 上文简单以交易1为例叙述交易详情数据、历史交易数据以及交易执行结果之间的联系,故根据交易2、历史交易数据2以及交易执行函数2,可以得到交易2的交易执行结果
2,根据交易3、历史交易数据3以及交易执行函数3,可以得到交易2的交易执行结果3,…,根
据交易n、历史交易数据n以及交易执行函数n,可以得到交易n的交易执行结果n。
[0133] 请一并参见图4,图4是本申请实施例提供的一种数据共识的场景示意图。其中,图4中的全量节点40a可以等同于图3中的全量节点30a,假设图3中的n等于4,则全量节点40a
可以得到图4中的待共识数据40c。待共识数据40c可以包括相关联的交易1、交易执行结果1
以及函数名称1,相关联的交易2、交易执行结果2以及函数名称2,相关联的交易3、交易执行
结果3以及函数名称3,相关联的交易4、交易执行结果4以及函数名称4。
[0134] 请再参见图4,全量节点40a首先对交易1(等同于图4中的Y1)、交易2(等同于图4中的Y2)、交易3(等同于图4中的Y3)以及交易4(等同于图4中的Y4)分别进行哈希计算,得到交
易1的哈希值HY(1)、交易2的哈希值HY(2)、交易3的哈希值HY(3),以及交易4的哈希值HY(4);
然后对哈希值HY(1)以及哈希值HY(2)进行哈希运算,得到包括上述两个哈希值的哈希值HY
(12),对哈希值HY(3)以及哈希值HY(4)进行哈希运算,得到包括上述两个哈希值的哈希值HY
(34);最后对哈希值HY(12)以及哈希值HY(34)进行哈希运算,得到包括哈希值HY(12)以及哈
希值HY(34)的哈希值HY’(1234),该哈希值HY’(1234)为待共识数据40c的待验证交易根哈希。
[0135] 同理,全量节点40a首先对交易执行结果1(等同于图4中的G1)、交易执行结果2(等同于图4中的G2)、交易执行结果3(等同于图4中的G3)以及交易执行结果4(等同于图4中的
G4)分别进行哈希计算,得到交易执行结果1的哈希值HG(1)、交易执行结果2的哈希值HG(2)、
交易执行结果3的哈希值HG(3),以及交易执行结果4的哈希值HG(4);然后对哈希值HG(1)以
及哈希值HG(2)进行哈希运算,得到包括上述两个哈希值的哈希值HG(12),对哈希值HG(3)以
及哈希值HG(4)进行哈希运算,得到包括上述两个哈希值的哈希值HG(34);最后对哈希值HG
(12)以及哈希值HG(34)进行哈希运算,得到包括哈希值HG(12)以及哈希值HG(34)的哈希值
HG’(1234),该哈希值HG’(1234)为待共识数据40c的待验证结果根哈希。
[0136] 可以理解的是,本申请实施例是以4条交易为例进行叙述,不代表实际应用场景中的交易数量。
[0137] 全量节点40a将哈希值HY’(1234)与图3中的哈希值HY(1234)进行对比,若两者相同,可以确定待共识数据40c交易共识通过,否则交易共识失败;同理,全量节点40a将哈希
值HG’(1234)与图3中的哈希值HG(1234)进行对比,若两者相同,可以确定待共识数据40c结
果共识通过,否则结果共识失败。请再参见图3,当交易详情数据以及交易执行结果均共识
通过时,全量节点30a根据交易执行结果生成结果数据。
[0138] 可以理解的是,在本申请实施例中,以结果数据包括交易执行结果为例进行叙述,下文亦如此。在实际应用场景中,结果数据包括但不限于交易执行结果,可以根据场景设定
结果数据的范围。
[0139] 上述过程还可一并参见图5,图5是本申请实施例提供的一种数据同步方法的流程示意图,该方法可以由区块链网络中的任一节点执行。如图5所示,该数据同步方法可以包
括如下步骤。
[0140] 步骤S1、各节点RPC层获取用户请求,用户请求也称为交易。
[0141] 步骤S2、各节点间相互广播交易,并由其中某一节点将若干交易打包成一个区块,并广播给其它节点。出块节点的选择,因共识算法而异,可以包括领导者(leader)出块,轮
流出块,算力竞争出块等。
[0142] 步骤S3、各节点都收到区块之后,开始执行区块里的交易。在逻辑计算层,解析交易参数,并执行合约。执行过程中可能会需要读取存储中的数据(即读取数据),如图5中示
例的节点1从存储中读取历史交易数据。
[0143] 步骤S4、合约执行完毕后,各节点对执行结果(即上述的交易执行结果)进行互相校验。校验方法可以为将执行结果或对存储的变更组织成结果merkle树,将结果树根(即结
果根哈希)放入区块头中,最终校验各节点区块hash一致即可。
[0144] 步骤S5、共识成功后,各节点将本区块相关的数据落入存储,主要有区块头,区块包含的所有交易,合约执行结果等。
[0145] 上述步骤S1‑步骤S5的详细过程可以参见图2所对应的实施例中的步骤S101,此处就不再展开赘述。
[0146] 步骤S102,根据区块标识获取同步区块中的同步交易数据,获取与同步交易数据相关联的目标数据集合;同步交易数据包括交易详情数据以及用于执行交易详情数据的智
能合约的合约信息;目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取
数据或结果数据。
[0147] 具体的,从全量数据库中获取与同步交易数据相关联的候选数据集合;候选数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据以及结果数据;将读取数
据的数据容量与结果数据的数据容量进行对比;若读取数据的数据容量小于结果数据的数
据容量,则将读取数据确定为目标数据集合;若读取数据的数据容量等于或大于结果数据
的数据容量,则将结果数据确定为目标数据集合。
[0148] 请一并参见图6,图6是本申请实施例提供的一种数据同步的场景示意图。如图6所示,全量节点60a可以根据轻节点所发送的区块标识,在全量账本60b中确定轻节点所请求
的同步区块607b,其中区块标识可以为同步区块607b的区块高度,也可以为同步区块607b
的区块哈希,还可以为其他可以表征同步区块607b的标识。
[0149] 全量节点60a获取同步区块607b中的同步交易数据60c,同步交易数据60c可以包括图6中关联存储的交易1以及合约信息1,关联存储的交易2以及合约信息2,关联存储的交
易3以及合约信息3,…,关联存储的交易n以及合约信息n。
[0150] 请再参见图6,全量节点60a获取到同步交易数据60c后,还需要获取与同步交易数据60c对应的目标数据集合60f,以使轻节点可以根据目标数据集合60f以及交易详情数据
执行交易执行函数。全量节点60a首先获取全量数据库60d,然后获取全量数据库60d中的历
史数据集合60g,如图6所示,历史数据集合60g可以包括读取数据1&结果数据1、读取数据2&
结果数据2、读取数据3&结果数据3、读取数据4&结果数据4、读取数据5&结果数据5、…、读取
数据n&结果数据n,其中,符号“&”表示关联存储。
[0151] 由步骤S101中的描述可知,全量节点是将目标数据集合与交易详情数据关联存储于全量数据库中的,故此处,全量节点60a可以将同步交易数据60c中的交易详情数据(包括
图6中的交易1、交易2、交易3、…、交易n),与全量数据库60d中的交易详情数据进行匹配,根
据匹配结果,可以确定同步交易数据60c的候选数据集合60e。假设交易1的目标数据集合为
读取数据1&结果数据1;交易2的目标数据集合为读取数据2&结果数据2,交易3的目标数据
集合为读取数据3&结果数据3,…,交易n的目标数据集合为读取数据n&结果数据n。
[0152] 全量节点60a不需要将交易详情数据的读取数据以及结果数据均发送给轻节点,轻节点可以根据读取数据或结果数据验证全量节点60a发送的同步交易数据以及交易详情
数据对应的待验证结果数据是否合法,故全量节点60a可以对交易1的读取数据1以及结果
数据1进行数据容量对比,若结果数据1的数据容量小一些,则将结果数据1确定为交易1的
目标数据集合;同理,全量节点60a可以对交易2的读取数据2以及结果数据2进行数据容量
对比,若读取数据2的数据容量小一些,则将读取数据2确定为交易2的目标数据集合;全量
节点60a可以对交易3的读取数据3以及结果数据3进行数据容量对比,若结果数据3的数据
容量小一些,则将结果数据3确定为交易3的目标数据集合;以此类推,生成目标数据集合
60f。
[0153] 其中,全量数据库60d可视为电子化的文件柜——存储电子文件(本申请中的电子文件可以指目标数据集合与交易详情数据)的处所,全量节点60a可以对文件中的目标数据
集合与交易详情数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存
在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
[0154] 步骤S103,根据合约信息以及数据同步请求确定针对交易详情数据的目标同步读交易执行函数。
[0155] 具体的,获取合约信息中的合约名称以及交易执行函数名称;其中,合约名称用于表征执行交易详情数据的智能合约的名称,交易执行函数名称用于表征智能合约所调用的
用于执行交易详情数据的交易执行函数的名称;根据数据同步请求获取同步读名称,根据
交易执行函数名称以及同步读名称,确定同步读交易执行函数名称;根据同步读交易执行
函数名称,在智能合约中确定目标同步读交易执行函数。
[0156] 为了便于理解,步骤S103以及下文中的步骤S104将以图6中的交易1以及合约信息1为例进行叙述,确定其他交易的目标同步读交易执行函数以及其对应的同步数据集合可
以参见下文的描述,不再一一展开描述。
[0157] 请一并参见图7,图7是本申请实施例提供的一种数据同步的场景示意图。如图7所示,交易1可以包括账户1111向账户2222转账10元,其中,执行交易1的智能合约可以为转账
合约,假设转账合约的合约名称为转账;在执行交易1时,转账合约调用的交易执行函数为
转移执行函数,假设转移执行函数的函数名称(即交易执行函数名称)为转移。假设交易1的
读取数据1为账户1111剩余20元,交易1的结果数据1为账户1111剩余10元。
[0158] 全量节点60a获取轻节点发送的数据同步请求时,会根据该请求获取同步读名称,全量节点60a可以根据同步读名称以及转移执行函数,在转账合约中确定目标同步读交易
执行函数,即图7中示例的同步读转移执行函数。可以理解的是,在本申请实施例中,以转移
执行函数以及同步读转移执行函数在同一个智能合约(即图7中示例的转账合约)中被调用
示例,在实际应用时,交易执行函数以及同步读交易执行函数可以不在同一个智能合约中
被调用,具体调用情况可以根据实际场景进行设置。
[0159] 步骤S104,根据交易详情数据、节点标识以及目标同步读交易执行函数,从目标数据集合中确定同步数据集合。
[0160] 具体的,根据节点标识以及目标同步读交易执行函数,确定轻节点针对同步交易数据的同步权限;同步权限包括同步合法权限以及同步非法权限;若轻节点针对同步交易
数据的同步权限为同步非法权限,则返回数据同步失败信息至轻节点;若轻节点针对同步
交易数据的同步权限为同步合法权限,则根据交易详情数据、节点标识以及目标同步读交
易执行函数,从目标数据集合中确定同步数据集合。
[0161] 其中,从目标数据集合中确定同步数据集合的具体过程可以包括:根据交易详情数据、节点标识以及目标同步读交易执行函数,确定轻节点已储存的与交易详情数据相关
联的已有数据集合;从目标数据集合中过滤已有数据集合,将过滤后的目标数据集合确定
为同步数据集合。
[0162] 请再参见图7,假设轻节点的节点标识60h为117.114.151.174,全量节点60a可以根据目标同步读交易执行函数(即图7示例的同步读转移执行函数)调用同步读转移执行函
数,根据同步读转移执行函数以及节点标识60h,确定轻节点针对同步交易数据的同步权
限,需要理解的是,本申请实施例不对确定同步权限的方法进行限定,可以以轻节点的节点
标识确定同步权限,也可以以轻节点的节点类型确定同步权限,还可以根据其他方法,在本
申请实施例中以节点标识为例进行叙述。
[0163] 图7示例轻节点针对同步交易数据的同步权限为同步合法权限,即图7中的117.114.151.174同步交易1的权限为合法。此时,全量节点60a可以根据交易1、节点标识
60h以及同步读转账执行函数,确定轻节点已储存的与交易1相关联的已有数据集合,如图7
中示例的账户1111剩余20元;假设目标数据集合1为交易1的读取数据1,结合步骤S103可知
读取数据1为账户1111剩余20元,从目标数据集合中过滤已有数据集合,可知同步数据集合
为空集。
[0164] 明显地,通过同步读交易执行函数,全量节点60a可以确定轻节点针对交易详情数据的已有数据集合,从而可以对目标数据集合进行删减(即过滤已有数据集合),得到同步
数据集合,根据上述可知,同步数据集合的数据容量比目标数据集合的数据容量小,故可以
减小轻节点的空间成本。
[0165] 可选的,全量节点还可以根据目标同步读交易执行函数,确定轻节点需要的额外数据集合,其中,目标数据集合不包括额外数据集合,故将额外数据集合与目标数据集合进
行合并,得到返回给轻节点的同步数据集合。
[0166] 步骤S105,从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及同步数据集合返回至轻节点,以使轻节点根据验证数据以及同步数据集合,验
证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0167] 具体的,从同步区块中获取交易状态树以及结果状态树;交易状态树是基于交易详情数据所生成的交易默克尔树;结果状态树是基于结果数据所生成的结果默克尔树;基
于交易详情数据从交易状态树中获取交易验证数据,基于结果数据从结果状态树中获取结
果验证数据;将交易验证数据以及结果验证数据确定为验证数据。
[0168] 同步区块中包括状态树(如图4示例的交易状态树以及结果状态树),故全量节点可以从同步区块中获取同步交易数据的验证数据,其中,交易验证数据可以对应于交易状
态树中的交易哈希值,结果验证数据可以对应于结果状态树中的结果哈希值。请再参见图
4,下面以图4中的交易状态树、结果状态树以及交易1为例进行叙述,针对交易1,其交易验
证数据可以包括交易状态树中的哈希值HY(2)以及哈希值HY(34),其结果验证数据可以包括
结果状态树中的哈希值HG(2)以及哈希值HG(34)。
[0169] 请再参见图4,可以理解的是,返回至轻节点的验证数据可以包括针对每个交易详情数据分别对应的验证数据,例如针对交易1,其验证数据可以包括哈希值HY(2)以及哈希
值HY(34),以及,哈希值HG(2)以及哈希值HG(34),针对交易2,其验证数据可以包括哈希值HY
(1)以及哈希值HY(34),以及,哈希值HG(1)以及哈希值HG(34);也可以包括针对所有交易详
情数据的验证数据,例如针对交易1以及交易2,验证数据可以包括哈希值HY(34)以及哈希
值HG(34)。
[0170] 进一步地,全量节点将同步交易数据、验证数据以及目标数据集合返回至轻节点,以使轻节点根据验证数据以及目标数据集合验证同步交易数据以及交易详情数据对应的
待验证结果数据的合法性。其中,轻节点自校验同步交易数据交易详情数据对应的待验证
结果数据的合法性的具体过程请参见下文图8所对应的实施例。
[0171] 在本申请实施例中,当获取到轻节点发送的针对某个区块(即同步区块)的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步区块中的同步交易数
据,然后获取针对该同步交易数据的目标数据集合,其中,同步交易数据包括交易详情数据
以及用于执行交易详情数据的智能合约的合约信息;本申请根据合约信息以及数据同步请
求,可以确定针对交易详情数据的目标同步读交易执行函数;基于节点标识以及目标同步
读交易执行函数,可以从目标数据集合中确定同步数据集合,实现完善同步给轻节点的数
据,可以减小数据传输量,从而可以降低轻节点的空间成本;进一步地,获取验证数据,将同
步交易数据、验证数据以及同步数据集合发送给轻节点,由于同步数据集合包括基于合约
信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过同步数据
集合准确地得到交易详情数据对应的待验证结果数据,因此,通过验证数据和同步数据集
合,轻节点可以准确验证出同步交易数据以及待验证结果数据的合法性。此外,轻节点可以
在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算
并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合
约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。
[0172] 进一步地,请参见图8,图8是本申请实施例提供的一种数据同步方法的流程示意图。该数据同步方法可以由图1所述的全量节点或轻节点执行,也可以由全量节点以及轻节
点共同执行,在本申请实施例中,以该方法由轻节点执行为例进行说明。如图8所示,该数据
同步过程包括如下步骤:
[0173] 步骤S201,发送携带区块标识的数据同步请求至全量节点,以使全量节点根据数据同步请求以及区块标识,获取同步交易数据、验证数据以及同步数据集合;其中,同步交
易数据是全量节点根据区块标识所确定的同步区块中的数据,且包括交易详情数据以及用
于执行交易详情数据的智能合约的合约信息;同步数据集合是全量节点根据交易详情数
据、轻节点的节点标识以及目标同步读交易执行函数,从目标数据集合中所确定的集合;目
标同步读交易执行函数是全量节点根据合约信息以及数据同步请求所确定的针对交易详
情数据的函数;目标数据集合是与同步交易数据相关联,且包括全量节点基于合约信息在
执行交易详情数据时所得到的读取数据或结果数据的集合。
[0174] 步骤S201的具体过程可以参见上文图2所对应的实施例中的描述,此处不再进行赘述。
[0175] 步骤S202,获取全量节点发送的同步交易数据、验证数据以及同步数据集合。
[0176] 具体的,请一并参见图9,图9是本申请实施例提供的一种数据自校验的场景示意图。如图9所示,轻节点80b获取全量节点80a发送的同步交易数据(即图9中的交易4&合约信
息4)、验证数据(即图9中的H(3)、H(12)以及H(5678)),以及同步数据集合(即图9中的交易
执行结果4)。其中,验证数据H(3)可以包括哈希值HY(3)以及哈希值HG(3),验证数据H(12)可
以包括哈希值HY(12)以及哈希值HG(12),验证数据H(5678)可以包括哈希值HY(5678)以及哈
希值HG(5678),上述的哈希值HY(3)、哈希值HY(12)以及哈希值HY(5678)分别为交易默克尔
证明树中的交易哈希值,上述的哈希值HG(3)、哈希值HG(12)以及哈希值HG(5678)分别为结
果默克尔证明树中的结果哈希值。同理,图9的默克尔证明树80c(理解成交易默克尔证明树
以及结果默克尔证明树的结合体)中的任一哈希值H(E)均可以包括交易哈希值HY(E)以及
结果哈希值HG(E),E等于1,2,3,…,8。
[0177] 步骤S203,根据验证数据以及同步数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0178] 具体的,获取合约信息中的合约名称以及交易执行函数名称;其中,合约名称用于表征全量节点执行交易详情数据的智能合约的名称,交易执行函数名称用于表征智能合约
所调用的用于执行交易详情数据的交易执行函数的名称;根据同步数据集合以及同步交易
数据获取同步写名称,根据交易执行函数名称以及同步写名称,确定同步写交易执行函数
名称;根据同步写交易执行函数名称,在智能合约中确定目标同步写交易执行函数;根据目
标同步写交易执行函数、同步数据集合以及验证数据,验证同步交易数据以及交易详情数
据对应的待验证结果数据的合法性。
[0179] 其中,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性的具体过程可以包括:根据节点标识、交易详情数据以及目标同步写交易执行函数,确定轻节点
账本中针对交易详情数据的已有数据集合;将已有数据集合与同步数据集合进行合并处
理,得到目标数据集合。
[0180] 若目标数据集合为结果数据,则将结果数据确定为交易详情数据对应的待验证结果数据,根据交易详情数据、待验证结果数据以及验证数据,得到第一待验证根哈希,根据
第一待验证根哈希,验证同步交易数据以及待验证结果数据的合法性。若目标数据集合为
读取数据,则根据交易执行函数名称确定交易执行函数;将读取数据以及交易详情数据输
入交易执行函数,得到交易详情数据的待验证交易执行结果,根据待验证交易执行结果生
成待验证结果数据;根据交易详情数据、待验证结果数据以及验证数据,得到第二待验证根
哈希,根据第二待验证根哈希,验证同步交易数据以及待验证结果数据的合法性。
[0181] 其中,验证数据包括交易验证数据以及结果验证数据;第一待验证根哈希包括待验证交易根哈希以及待验证结果根哈希;根据交易详情数据、待验证结果数据以及验证数
据,得到第一待验证根哈希,根据第一待验证根哈希,验证同步交易数据以及待验证结果数
据的合法性的具体过程可以包括:根据交易详情数据以及交易验证数据,得到待验证交易
根哈希,根据待验证结果数据以及结果验证数据,得到待验证结果根哈希;获取针对同步区
块的区块头,从区块头中获取已验证交易根哈希以及已验证结果根哈希;将待验证交易根
哈希与已验证交易根哈希进行对比,将待验证结果根哈希与已验证结果根哈希进行对比;
若待验证交易根哈希与已验证交易根哈希不相同,则确定同步交易数据为非法数据,若待
验证交易根哈希与已验证交易根哈希相同,则确定同步交易数据为合法数据;若待验证结
果根哈希与已验证结果根哈希不相同,则确定待验证结果数据为非法数据,若待验证结果
根哈希与已验证结果根哈希相同,则确定待验证结果数据为合法数据;当同步交易数据为
合法数据且待验证结果数据为合法数据时,将待验证结果数据与同步交易数据进行关联存
储。
[0182] 其中,根据第二待验证根哈希,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性的具体过程可以包括:获取针对同步区块的区块头,从区块头中获取
已验证交易根哈希以及已验证结果根哈希;将待验证交易根哈希与已验证交易根哈希进行
对比,若待验证交易根哈希与已验证交易根哈希不相同,则确定同步交易数据为非法数据,
此时不再将待验证结果根哈希与已验证结果根哈希进行对比;若待验证交易根哈希与已验
证交易根哈希相同,则确定同步交易数据为合法数据;进一步地,将待验证结果根哈希与已
验证结果根哈希进行对比,若待验证结果根哈希与已验证结果根哈希不相同,则确定待验
证结果数据为非法数据,若待验证结果根哈希与已验证结果根哈希相同,则确定待验证结
果数据为合法数据,将待验证结果数据与同步交易数据进行关联存储。
[0183] 其中,在智能合约中确定目标同步写交易执行函数的具体过程,可以参见上文图2所对应的实施例中步骤S103针对确定目标同步读交易执行函数的详细描述,两个函数确定
过程一致,故此处不再进行赘述。
[0184] 轻节点确定目标同步写基交易执行函数后,根据节点标识、交易详情数据执行目标同步写交易执行函数,得到轻节点针对交易详情数据的已有数据集合,以上文图2所对应
的实施例中步骤S104中的交易1为例叙述,则已有数据集合为账户1111剩余20元。全量节点
返回给轻节点的目标数据集合为一个空集,对目标数据集合以及已有数据集合进行合并,
得到的目标数据集合则与已有数据集合相同,即账户1111剩余20元。
[0185] 其中,对于目标数据集合是结果数据(例如图9中的交易执行结果4),轻节点无需再执行同步交易数据中的交易详情数据,此时全量节点发送的结果数据即为交易详情数据
的待验证结果数据。轻节点可以根据结果数据、验证数据以及交易详情数据验证同步交易
数据的合法性。具体过程请再参见图9,轻节点80b可以根据交易4、哈希值HY(3)、哈希值HY
(12)、哈希值HY(5678)生成默克尔证明树80c中的交易默克尔证明树。轻节点80b首先对交
易4进行哈希运算,得到哈希值HY(4),根据哈希值HY(4)以及哈希值HY(3),可以得到哈希值
HY(34),再根据哈希值HY(34)以及哈希值HY(12),可以得到哈希值HY(1234),最后根据哈希
值HY(1234)以及验证数据中的哈希值HY(5678),可以得到哈希值HY(12345678),该哈希值HY
(12345678)即是待验证交易根哈希。
[0186] 同理,轻节点80b可以根据交易执行结果4、哈希值HG(3)、哈希值HG(12)、哈希值HG(5678)生成默克尔证明树80c中的结果默克尔证明树。轻节点80b首先对结果4(等同于交易
执行结果4)进行哈希运算,得到哈希值HG(4),根据哈希值HG(4)以及哈希值HG(3),可以得到
哈希值HG(34),再根据哈希值HG(34)以及哈希值HG(12),可以得到哈希值HG(1234),最后根
据哈希值HG(1234)以及验证数据中的哈希值HG(5678),可以得到哈希值HG(12345678),该哈
希值HG(12345678)即是待验证结果根哈希。
[0187] 请再参见图9,轻节点80b从P2P网络中获取同步区块的区块头,然后获取区块头中的已验证交易根哈希以及已验证结果根哈希,将待验证交易根哈希(即哈希值HY
(12345678))与已验证交易根哈希进行对比,若待验证交易根哈希与已验证交易根哈希不
相同,则确定同步交易数据(包括交易4)为非法数据,若待验证交易根哈希与已验证交易根
哈希相同,则确定同步交易数据为合法数据。
[0188] 将待验证结果根哈希(即哈希值HG(12345678))与已验证结果根哈希进行对比,若待验证结果根哈希与已验证结果根哈希不相同,则确定结果数据(如图9中的结果4)为非法
数据,若待验证结果根哈希与已验证结果根哈希相同,则确定结果数据为合法数据。当同步
交易数据为合法数据且结果数据为合法数据时,轻节点80b将结果数据与同步交易数据进
行关联存储。
[0189] 对于目标数据集合是读取数据,轻节点需要根据读取数据以及交易详情数据,执行与合约信息对应的交易执行函数,以生成交易详情数据的待验证交易执行结果,然后根
据待验证交易执行结果生成交易详情数据对应的待验证结果数据。由于全量节点已经执行
过交易详情数据,读取数据本身可以覆盖合约执行过程中的全部数据,所以在轻节点只有
部分数据的情况下,依然可以执行合约。得到待验证交易执行结果后,轻节点的自校验过程
与上文中根据结果数据进行自校验的过程基本一致,故此处不再赘述。
[0190] 上述可知,轻节点可以同步任意逻辑的合约数据,并且可以自校验数据的正确性。可以理解的是,在本申请实施例中,以轻节点自校验待验证结果数据以及同步交易数据为
例进行叙述,实际应用时,轻节点可以根据场景设定自校验待验证结果数据或同步交易数
据或两者,此处不限定轻节点自校验范围。
[0191] 在本申请实施例中,当获取到轻节点发送的针对某个区块(即同步区块)的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步区块中的同步交易数
据,然后获取针对该同步交易数据的目标数据集合,其中,同步交易数据包括交易详情数据
以及用于执行交易详情数据的智能合约的合约信息;本申请根据合约信息以及数据同步请
求,可以确定针对交易详情数据的目标同步读交易执行函数;基于节点标识以及目标同步
读交易执行函数,可以从目标数据集合中确定同步数据集合,实现完善同步给轻节点的数
据,可以减小数据传输量,从而可以降低轻节点的空间成本;进一步地,获取验证数据,将同
步交易数据、验证数据以及同步数据集合发送给轻节点,由于同步数据集合包括基于合约
信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过同步数据
集合准确地得到交易详情数据对应的待验证结果数据,因此,通过验证数据和同步数据集
合,轻节点可以准确验证出同步交易数据以及待验证结果数据的合法性。此外,轻节点可以
在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算
并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合
约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。
[0192] 进一步地,为了便于理解,请参见图10,图10是本申请实施例提供的一种数据同步方法的流程示意图。该数据同步方法可以由图1所述的轻节点或全量节点执行,也可以由轻
节点以及全量节点共同执行,在本申请实施例中,以该方法由轻节点以及全量节点共同执
行为例进行说明。如图10所示,该数据同步过程包括如下步骤:
[0193] 步骤1,同步区块B。
[0194] 具体的,区块B的区块头在全网络广播,轻节点接受到区块头之后,向全量节点发送数据同步请求以同步区块B中的数据。
[0195] 智能合约的执行可以分为代码+数据两部分,代码代表了逻辑业务,整个业务参与方均可见,因此同一个业务的轻节点拥有代码。要解决的核心问题便是数据的问题,主要为
以下两个问题:1、全量节点如何辨别并分发正确的数据给轻节点;2、区块链容忍作恶,那么
轻节点如何自校验以确定全量节点返回的数据未被篡改。请参见下文步骤2‑步骤8。
[0196] 步骤2、读取区块B中的交易。
[0197] 具体的,数据分为两部分,交易详情数据和上下文交易数据。交易详情数据存储在区块中,是终态数据,不可修改,全量节点可以直接返回给轻节点。上下文交易数据(等同于
上文中的目标数据集合)主要指一些暂态数据,如转账前的账户余额或转账后的账户余额,
随着区块的增加,交易的执行,每时每刻余额都在变动;故当轻节点同步区块B时,全量节点
应该可以读取或者通过计算得出区块链网络处理至区块B时的账户余额,而不是最新的账
户余额。
[0198] 本申请实施例提出一种通用的数据同步方法,该数据同步方法需要对合约进行处理,但不会改变合约本身可以实现任意逻辑的性质。全量节点将读取数据或/和结果数据存
储在全量数据库中,请一并参见图11,图11是本申请实施例提供的一种目标数据存储的场
景示意图。如图11所示,全量节点90a中的待存储数据集合90e可以包括读取数据1、读取数
据2、读取数据3、…、读取数据n,以及结果数据1、结果数据2、结果数据3、…、结果数据n。假
设读取数据1为交易1的历史交易数据,结果数据1为交易1的交易执行结果;读取数据2为交
易2的历史交易数据,结果数据2为交易2的交易执行结果;读取数据3为交易3的历史交易数
据,结果数据3为交易3的交易执行结果;…,读取数据n为交易n的历史交易数据,结果数据n
为交易n的交易执行结果。
[0199] 可行方案1:将读取数据1&结果数据1&交易1、读取数据2&结果数据2&交易2、读取数据3&结果数据3&交易3、…、读取数据n&结果数据n&交易n分别关联存储于全量数据库90b
中。
[0200] 可行方案2:对读取数据1与结果数据1进行数据容量比较,若读取数据1的数据容量小于结果数据1的数据容量,则将读取数据1&交易1关联存储于全量数据库90b中;若读取
数据1的数据容量等于或大于结果数据1的数据容量,则将结果数据1&交易1关联存储于全
量数据库90b中。其余交易的目标数据集合的生成亦如此,此处不再一一进行赘述。
[0201] 可行方案3:请再参见图11,全量节点90a将待存储数据集合90e与全量数据库90b中的历史数据集合90c进行对比,根据对比结果对待存储数据集合90e进行存储。其中,历史
数据集合90c包括历史数据集合1、历史数据集合2、历史数据集合3、…、历史数据集合N。
[0202] 如图11所示,对比结果中读取数据1等同于历史数据集合1,结果数据1等同于历史1读
数据集合2,则对历史数据集合1进行读标记处理,得到(历史数据集合1) ,其中读标记“1
读”可以表征历史数据集合1为交易1的读取数据;对历史数据集合2进行写标记处理,得到
1写
(历史数据集合2) ,其中写标记“1写”可以表征历史数据集合2为交易1的结果数据。
[0203] 由于待存储数据集合90e中的其他数据与历史数据集合不相同,则需要存储于全量数据库90b中,如图11所示,新的历史数据集合90d包括携带针对交易1的读标记的历史数
据集合1、携带针对交易1的写标记的历史数据集合2、历史数据集合3、…、历史数据集合N、
读取数据2&结果数据2、读取数据3&结果数据3、…、读取数据n&结果数据n。
[0204] 可行方案4:随机确定目标数据集合,若将读取数据确定为目标数据集合,则将读取数据与交易详情数据关联存储于全量数据库中;若将结果数据确定为目标数据集合,则
将结果数据与交易详情数据关联存储于全量数据库中。
[0205] 可以理解的是,在实际应用时,上述3种方案还可以混合,生成新的可行方案,此处不限定。
[0206] 步骤3、解析交易里调用的合约与方法。
[0207] 步骤4、执行对应合约的同步读交易执行函数。
[0208] 具体的,对于合约中的交易执行函数,需要定义两个函数,分别为同步读交易执行函数以及同步写交易执行函数。其中,同步读交易执行函数由被同步节点(如全量节点)执
行,确定同步方(如轻节点)对同步区块B中的数据的同步权限,以及生成待返回数据。
[0209] 步骤5、返回结果,包括交易与数据。
[0210] 具体的,结果可以包括同步交易数据、验证数据以及同步数据集合。
[0211] a)对于部分交易,其本身便含有数据,如存证、开票,原交易参数中已经有了票据的全部信息,不需要目标数据集合,同步读交易执行函数仅确定轻节点的同步权限,返回的
同步交易数据为空集。
[0212] b)对于读取数据或者结果数据容量较大的情况,全量节点可以根据同步读交易执行函数确定轻节点的已有数据集合,然后根据目标数据集合以及已有数据集合返回轻节点
需要的同步数据集合,再由同步节点根据同步交易数据继续运算得到真正的结果数据。
[0213] c)也可以返回完整的目标数据集合。
[0214] 上述可知,通过读取数据、结果数据以及同步读交易执行函数,用户可以根据自己业务的复杂程度做定制,节约存储。其中,同步读交易执行函数以及同步写交易执行函数均
由用户编写,实现最大的灵活性。
[0215] 步骤6、接收交易与数据,并执行对应合约的同步写交易执行函数。
[0216] 具体的,该步骤与步骤5对应,轻节点根据同步写交易执行函数确定已有数据集合,然后和全量节点返回的同步数据集合合并,得到目标数据集合。
[0217] 步骤7、验证结果与证明是否相符。
[0218] 步骤8、保存交易与执行结果。
[0219] 上述步骤7步骤8可以参见上文图2以及图8分别对应的实施例,此处不再一一进行赘述。
[0220] 在本申请实施例中,当获取到轻节点发送的针对某个区块(即同步区块)的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步区块中的同步交易数
据,然后获取针对该同步交易数据的目标数据集合,其中,同步交易数据包括交易详情数据
以及用于执行交易详情数据的智能合约的合约信息;本申请根据合约信息以及数据同步请
求,可以确定针对交易详情数据的目标同步读交易执行函数;基于节点标识以及目标同步
读交易执行函数,可以从目标数据集合中确定同步数据集合,实现完善同步给轻节点的数
据,可以减小数据传输量,从而可以降低轻节点的空间成本;进一步地,获取验证数据,将同
步交易数据、验证数据以及同步数据集合发送给轻节点,由于同步数据集合包括基于合约
信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过同步数据
集合准确地得到交易详情数据对应的待验证结果数据,因此,通过验证数据和同步数据集
合,轻节点可以准确验证出同步交易数据以及待验证结果数据的合法性。此外,轻节点可以
在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算
并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合
约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。
[0221] 进一步地,请参见图12,图12是本申请实施例提供的一种数据同步装置的结构示意图。上述数据同步装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),
例如该数据同步装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的
相应步骤。如图12所示,该数据同步装置1可以包括:第一获取模块11、第二获取模块12、第
一确定模块13、第二确定模块14以及第二获取模块15。
[0222] 第一获取模块11,用于获取轻节点发送的数据同步请求;数据同步请求包括轻节点的节点标识以及同步区块的区块标识;
[0223] 第二获取模块12,用于根据区块标识获取同步区块中的同步交易数据,获取与同步交易数据相关联的目标数据集合;同步交易数据包括交易详情数据以及用于执行交易详
情数据的智能合约的合约信息;目标数据集合包括基于合约信息在执行交易详情数据时所
得到的读取数据或结果数据;
[0224] 第一确定模块13,用于根据合约信息以及数据同步请求确定针对交易详情数据的目标同步读交易执行函数;
[0225] 第二确定模块14,用于根据交易详情数据、节点标识以及目标同步读交易执行函数,从目标数据集合中确定同步数据集合;
[0226] 第二获取模块15,用于从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及同步数据集合返回至轻节点,以使轻节点根据验证数据以及同步
数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0227] 其中,第一获取模块11、第二获取模块12、第一确定模块13、第二确定模块14以及第二获取模块15的具体功能实现方式可以参见上述图2对应实施例中的步骤S101‑步骤
S105,这里不再进行赘述。
[0228] 再请参见图12,第二获取模块12可以包括:第一获取单元121、容量对比单元122以及第一确定单元123。
[0229] 第一获取单元121,用于从全量数据库中获取与同步交易数据相关联的候选数据集合;候选数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据以及结果
数据;
[0230] 容量对比单元122,用于将读取数据的数据容量与结果数据的数据容量进行对比;
[0231] 第一确定单元123,用于若读取数据的数据容量小于结果数据的数据容量,则将读取数据确定为目标数据集合;
[0232] 第一确定单元123,还用于若读取数据的数据容量等于或大于结果数据的数据容量,则将结果数据确定为目标数据集合。
[0233] 其中,第一获取单元121、容量对比单元122以及第一确定单元123的具体功能实现方式可以参见上述图2对应实施例中的步骤S102,这里不再进行赘述。
[0234] 再请参见图12,第一确定模块13可以包括:第二获取单元131、第三获取单元132以及第二确定单元133。
[0235] 第二获取单元131,用于获取合约信息中的合约名称以及交易执行函数名称;其中,合约名称用于表征执行交易详情数据的智能合约的名称,交易执行函数名称用于表征
智能合约所调用的用于执行交易详情数据的交易执行函数的名称;
[0236] 第三获取单元132,用于根据数据同步请求获取同步读名称,根据交易执行函数名称以及同步读名称,确定同步读交易执行函数名称;
[0237] 第二确定单元133,用于根据同步读交易执行函数名称,在智能合约中确定目标同步读交易执行函数。
[0238] 其中,第二获取单元131、第三获取单元132以及第二确定单元133的具体功能实现方式可以参见上述图2对应实施例中的步骤S103,这里不再进行赘述。
[0239] 再请参见图12,第二确定模块14可以包括:第三确定单元141、返回失败单元142以及第四确定单元143。
[0240] 第三确定单元141,用于根据节点标识以及目标同步读交易执行函数,确定轻节点针对同步交易数据的同步权限;同步权限包括同步合法权限以及同步非法权限;
[0241] 返回失败单元142,用于若轻节点针对同步交易数据的同步权限为同步非法权限,则返回数据同步失败信息至轻节点;
[0242] 第四确定单元143,用于若轻节点针对同步交易数据的同步权限为同步合法权限,则根据交易详情数据、节点标识以及目标同步读交易执行函数,从目标数据集合中确定同
步数据集合。
[0243] 其中,第三确定单元141、返回失败单元142以及第四确定单元143的具体功能实现方式可以参见上述图2对应实施例中的步骤S104,这里不再进行赘述。
[0244] 再请参见图12,第四确定单元143可以包括:第一确定子单元1431以及第二确定子单元1432。
[0245] 第一确定子单元1431,用于根据交易详情数据、节点标识以及目标同步读交易执行函数,确定轻节点已储存的与交易详情数据相关联的已有数据集合;
[0246] 第二确定子单元1432,用于从目标数据集合中过滤已有数据集合,将过滤后的目标数据集合确定为同步数据集合。
[0247] 其中,第一确定子单元1431以及第二确定子单元1432的具体功能实现方式可以参见上述图2对应实施例中的步骤S104,这里不再进行赘述。
[0248] 再请参见图12,第三获取模块15可以包括:第四获取单元151、第五获取单元152以及第五确定单元153。
[0249] 第四获取单元151,用于从同步区块中获取交易状态树以及结果状态树;交易状态树是基于交易详情数据所生成的交易默克尔树;结果状态树是基于结果数据所生成的结果
默克尔树;
[0250] 第五获取单元152,用于基于交易详情数据从交易状态树中获取交易验证数据,基于结果数据从结果状态树中获取结果验证数据;
[0251] 第五确定单元153,用于将交易验证数据以及结果验证数据确定为验证数据。
[0252] 其中,第四获取单元151、第五获取单元152以及第五确定单元153的具体功能实现方式可以参见上述图2对应实施例中的步骤S105,这里不再进行赘述。
[0253] 再请参见图12,数据同步装置1还可以包括:第四获取模快16、第五获取模快17、执行函数模块18以及区块上链模块19。
[0254] 第四获取模快16,用于获取待上链区块中的交易详情数据,调用用于执行交易详情数据的智能合约中的交易执行函数;
[0255] 第五获取模快17,用于根据交易执行函数获取针对交易详情数据的历史交易数据,将历史交易数据确定为读取数据;
[0256] 执行函数模块18,用于根据读取数据以及交易详情数据执行交易执行函数,得到交易详情数据的交易执行结果;
[0257] 区块上链模块19,用于根据交易详情数据以及交易执行结果,对待上链区块进行上链处理。
[0258] 其中,第四获取模快16、第五获取模快17、执行函数模块18以及区块上链模块19的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
[0259] 再请参见图12,区块上链模块19可以包括:第一生成单元191、第二生成单元192、第六确定单元193以及第三生成单元194。
[0260] 第一生成单元191,用于当交易详情数据以及交易执行结果均共识通过时,根据交易执行结果生成结果数据;
[0261] 第二生成单元192,用于根据交易详情数据生成交易状态树,根据结果数据生成结果状态树,将交易状态树以及结果状态树添加至待上链区块;
[0262] 第六确定单元193,用于将添加有交易状态树以及结果状态树的待上链区块确定为同步区块,将同步区块添加至区块链;
[0263] 第三生成单元194,用于根据读取数据以及结果数据生成目标数据集合,将目标数据集合存储于全量数据库中。
[0264] 其中,第一生成单元191、第二生成单元192、第六确定单元193以及第三生成单元194的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
[0265] 在本申请实施例中,当获取到轻节点发送的针对某个区块(即同步区块)的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步区块中的同步交易数
据,然后获取针对该同步交易数据的目标数据集合,其中,同步交易数据包括交易详情数据
以及用于执行交易详情数据的智能合约的合约信息;本申请根据合约信息以及数据同步请
求,可以确定针对交易详情数据的目标同步读交易执行函数;基于节点标识以及目标同步
读交易执行函数,可以从目标数据集合中确定同步数据集合,实现完善同步给轻节点的数
据,可以减小数据传输量,从而可以降低轻节点的空间成本;进一步地,获取验证数据,将同
步交易数据、验证数据以及同步数据集合发送给轻节点,由于同步数据集合包括基于合约
信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过同步数据
集合准确地得到交易详情数据对应的待验证结果数据,因此,通过验证数据和同步数据集
合,轻节点可以准确验证出同步交易数据以及待验证结果数据的合法性。此外,轻节点可以
在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算
并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合
约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。
[0266] 进一步地,请参见图13,图13是本申请实施例提供的一种数据同步装置的结构示意图。上述数据同步装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),
例如该数据同步装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的
相应步骤。如图13所示,该数据同步装置2可以包括:发送请求模块21、获取数据模块22以及
验证数据模块23。
[0267] 发送请求模块21,用于发送携带区块标识的数据同步请求至全量节点,以使全量节点根据数据同步请求以及区块标识,获取同步交易数据、验证数据以及同步数据集合;其
中,同步交易数据是全量节点根据区块标识所确定的同步区块中的数据,且包括交易详情
数据以及用于执行交易详情数据的智能合约的合约信息;同步数据集合是全量节点根据交
易详情数据、轻节点的节点标识以及目标同步读交易执行函数,从目标数据集合中所确定
的集合;目标同步读交易执行函数是全量节点根据合约信息以及数据同步请求所确定的针
对交易详情数据的函数;目标数据集合是与同步交易数据相关联,且包括全量节点基于合
约信息在执行交易详情数据时所得到的读取数据或结果数据的集合;
[0268] 获取数据模块22,用于获取全量节点发送的同步交易数据、验证数据以及同步数据集合;
[0269] 验证数据模块23,用于根据验证数据以及同步数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0270] 其中,发送请求模块21、获取数据模块22以及验证数据模块23的具体功能实现方式可以参见上述图8对应实施例中的步骤S201‑步骤S203,这里不再进行赘述。
[0271] 再请参见图13,验证数据模块23可以包括:获取信息单元231、第一确定单元232以及第二确定单元233。
[0272] 获取信息单元231,用于获取合约信息中的合约名称以及交易执行函数名称;其中,合约名称用于表征全量节点执行交易详情数据的智能合约的名称,交易执行函数名称
用于表征智能合约所调用的用于执行交易详情数据的交易执行函数的名称;
[0273] 第一确定单元232,用于根据同步数据集合以及同步交易数据获取同步写名称,根据交易执行函数名称以及同步写名称,确定同步写交易执行函数名称;
[0274] 第二确定单元233,用于根据同步写交易执行函数名称,在智能合约中确定目标同步写交易执行函数;
[0275] 第二确定单元233,还用于根据目标同步写交易执行函数、同步数据集合以及验证数据,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0276] 其中,获取信息单元231、第一确定单元232以及第二确定单元233的具体功能实现方式可以参见上述图8对应实施例中的步骤S203,这里不再进行赘述。
[0277] 再请参见图13,第二确定单元233可以包括:确定集合子单元2331、目标集合子单元2332以及验证数据子单元2333。
[0278] 确定集合子单元2331,用于根据节点标识、交易详情数据以及目标同步写交易执行函数,确定轻节点账本中针对交易详情数据的已有数据集合;
[0279] 目标集合子单元2332,用于将已有数据集合与同步数据集合进行合并处理,得到目标数据集合;
[0280] 验证数据子单元2333,用于根据目标数据集合以及验证数据,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0281] 其中,确定集合子单元2331、目标集合子单元2332以及验证数据子单元2333的具体功能实现方式可以参见上述图8对应实施例中的步骤S203,这里不再进行赘述。
[0282] 再请参见图13,验证数据子单元2333可以包括:第一验证子单元23331、第一确定子单元23332、第二确定子单元23333以及第二验证子单元23334。
[0283] 第一验证子单元23331,用于若目标数据集合为结果数据,则将结果数据确定为交易详情数据对应的待验证结果数据,根据交易详情数据、待验证结果数据以及验证数据,得
到第一待验证根哈希,根据第一待验证根哈希,验证同步交易数据以及待验证结果数据的
合法性;
[0284] 第一确定子单元23332,用于若目标数据集合为读取数据,则根据交易执行函数名称确定交易执行函数;
[0285] 第二确定子单元23333,用于将读取数据以及交易详情数据输入交易执行函数,得到交易详情数据的待验证交易执行结果,根据待验证交易执行结果生成待验证结果数据;
[0286] 第二验证子单元23334,用于根据交易详情数据、待验证结果数据以及验证数据,得到第二待验证根哈希,根据第二待验证根哈希,验证同步交易数据以及待验证结果数据
的合法性。
[0287] 其中,第一验证子单元23331、第一确定子单元23332、第二确定子单元23333以及第二验证子单元23334的具体功能实现方式可以参见上述图8对应实施例中的步骤S203,这
里不再进行赘述。
[0288] 再请参见图13,验证数据包括交易验证数据以及结果验证数据;第一待验证根哈希包括待验证交易根哈希以及待验证结果根哈希;
[0289] 第二验证子单元23334,具体用于根据交易详情数据以及交易验证数据,得到待验证交易根哈希,根据待验证结果数据以及结果验证数据,得到待验证结果根哈希;
[0290] 第二验证子单元23334,还具体用于获取针对同步区块的区块头,从区块头中获取已验证交易根哈希以及已验证结果根哈希;
[0291] 第二验证子单元23334,还具体用于将待验证交易根哈希与已验证交易根哈希进行对比,将待验证结果根哈希与已验证结果根哈希进行对比;
[0292] 第二验证子单元23334,还具体用于若待验证交易根哈希与已验证交易根哈希不相同,则确定同步交易数据为非法数据,若待验证交易根哈希与已验证交易根哈希相同,则
确定同步交易数据为合法数据;
[0293] 第二验证子单元23334,还具体用于若待验证结果根哈希与已验证结果根哈希不相同,则确定待验证结果数据为非法数据,若待验证结果根哈希与已验证结果根哈希相同,
则确定待验证结果数据为合法数据;
[0294] 第二验证子单元23334,还具体用于当同步交易数据为合法数据且待验证结果数据为合法数据时,将待验证结果数据与同步交易数据进行关联存储。
[0295] 其中,第二验证子单元23334的具体功能实现方式可以参见上述图8对应实施例中的步骤S203,这里不再进行赘述。
[0296] 在本申请实施例中,当获取到轻节点发送的针对某个区块(即同步区块)的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步区块中的同步交易数
据,然后获取针对该同步交易数据的目标数据集合,其中,同步交易数据包括交易详情数据
以及用于执行交易详情数据的智能合约的合约信息;本申请根据合约信息以及数据同步请
求,可以确定针对交易详情数据的目标同步读交易执行函数;基于节点标识以及目标同步
读交易执行函数,可以从目标数据集合中确定同步数据集合,实现完善同步给轻节点的数
据,可以减小数据传输量,从而可以降低轻节点的空间成本;进一步地,获取验证数据,将同
步交易数据、验证数据以及同步数据集合发送给轻节点,由于同步数据集合包括基于合约
信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过同步数据
集合准确地得到交易详情数据对应的待验证结果数据,因此,通过验证数据和同步数据集
合,轻节点可以准确验证出同步交易数据以及待验证结果数据的合法性。此外,轻节点可以
在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算
并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合
约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。
[0297] 进一步地,请参见图14,图14是本申请实施例提供的一种计算机设备的结构示意图。如图14所示,该计算机设备1000可以为上述图2对应实施例中的全量节点,该计算机设
备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,
存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通
信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地
可以包括标准的有线接口、无线接口(如WI‑FI接口)。存储器1005可以是高速RAM存储器,也
可以是非不稳定的存储器(non‑volatile memory),例如至少一个磁盘存储器。存储器1005
可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图14所示,作为一种计
算机存储介质的存储器1005可以包括操作系统、网络通信模块、用户接口模块以及设备控
制应用程序。
[0298] 在图14所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的
设备控制应用程序,以实现:
[0299] 获取轻节点发送的数据同步请求;数据同步请求包括轻节点的节点标识以及同步区块的区块标识;
[0300] 根据区块标识获取同步区块中的同步交易数据,获取与同步交易数据相关联的目标数据集合;同步交易数据包括交易详情数据以及用于执行交易详情数据的智能合约的合
约信息;目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果
数据;
[0301] 根据合约信息以及数据同步请求确定针对交易详情数据的目标同步读交易执行函数;
[0302] 根据交易详情数据、节点标识以及目标同步读交易执行函数,从目标数据集合中确定同步数据集合;
[0303] 从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及同步数据集合返回至轻节点,以使轻节点根据验证数据以及同步数据集合,验证同步交
易数据以及交易详情数据对应的待验证结果数据的合法性。
[0304] 应当理解,本申请实施例中所描述的计算机设备1000可执行前文图2、图5、图8以及图10所对应实施例中对数据同步方法的描述,也可执行前文图12所对应实施例中对数据
同步装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘
述。
[0305] 进一步地,请参见图15,图15是本申请实施例提供的一种计算机设备的结构示意图。如图15所示,该计算机设备2000可以为上述图8对应实施例中的轻节点,上述计算机设
备2000可以包括:处理器2001,网络接口2004和存储器2005,此外,上述计算机设备2000还
可以包括:用户接口2003,和至少一个通信总线2002。其中,通信总线2002用于实现这些组
件之间的连接通信。其中,用户接口2003可以包括显示屏(Display)、键盘(Keyboard),可选
用户接口2003还可以包括标准的有线接口、无线接口。网络接口2004可选的可以包括标准
的有线接口、无线接口(如WI‑FI接口)。存储器2005可以是高速RAM存储器,也可以是非易失
性的存储器(non‑volatile memory),例如至少一个磁盘存储器。存储器2005可选的还可以
是至少一个位于远离前述处理器2001的存储装置。如图15所示,作为一种计算机可读存储
介质的存储器2005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用
程序。
[0306] 在图15所示的计算机设备2000中,网络接口2004可提供网络通讯功能;而用户接口2003主要用于为用户提供输入的接口;而处理器2001可以用于调用存储器2005中存储的
设备控制应用程序,以实现:
[0307] 发送携带区块标识的数据同步请求至全量节点,以使全量节点根据数据同步请求以及区块标识,获取同步交易数据、验证数据以及同步数据集合;其中,同步交易数据是全
量节点根据区块标识所确定的同步区块中的数据,且包括交易详情数据以及用于执行交易
详情数据的智能合约的合约信息;同步数据集合是全量节点根据交易详情数据、轻节点的
节点标识以及目标同步读交易执行函数,从目标数据集合中所确定的集合;目标同步读交
易执行函数是全量节点根据合约信息以及数据同步请求所确定的针对交易详情数据的函
数;目标数据集合是与同步交易数据相关联,且包括全量节点基于合约信息在执行交易详
情数据时所得到的读取数据或结果数据的集合;
[0308] 获取全量节点发送的同步交易数据、验证数据以及同步数据集合;
[0309] 根据验证数据以及同步数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
[0310] 应当理解,本申请实施例中所描述的计算机设备2000可执行前文图2、图5、图8以及图10所对应实施例中对数据同步方法的描述,也可执行前文图13所对应实施例中对数据
同步装置2的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘
述。
[0311] 本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图2、图5、图8以及
图10中各个步骤所提供的数据同步方法,具体可参见上述图2、图5、图8以及图10各个步骤
所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘
述。
[0312] 上述计算机可读存储介质可以是前述任一实施例提供的数据同步装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可
以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡
(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进
一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存
储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序
和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
[0313] 本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的
处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算
机设备可执行前文图2、图5、图8以及图10所对应实施例中对数据同步方法的描述,在此不
再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
[0314] 本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖
不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于
已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这
些过程、方法、装置、产品或设备固有的其他步骤单元。
[0315] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件
和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这
些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专
业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不
应认为超出本申请的范围。
[0316] 本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每
一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指
令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器
以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用
于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能
的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定
方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令
装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框
或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理
设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处
理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个
流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
[0317] 以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。