CN112287034B - 一种数据同步方法、设备以及计算机可读存储介质 - Google Patents
一种数据同步方法、设备以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112287034B CN112287034B CN202011544970.XA CN202011544970A CN112287034B CN 112287034 B CN112287034 B CN 112287034B CN 202011544970 A CN202011544970 A CN 202011544970A CN 112287034 B CN112287034 B CN 112287034B
- Authority
- CN
- China
- Prior art keywords
- data
- transaction
- result
- verified
- synchronous
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种数据同步方法、设备以及计算机可读存储介质,其中,方法包括:获取轻节点发送的数据同步请求;该请求包括区块标识;根据区块标识获取同步区块中的同步交易数据;同步交易数据包括交易详情数据以及合约信息;从全量数据库中获取与同步交易数据对应的目标数据集合;目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据;获取同步交易数据的验证数据,将同步交易数据、验证数据以及目标数据集合返回至轻节点,以使轻节点根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。采用本申请,可以对所同步的数据进行合法性验证,进而可以保证所同步的数据的合法性。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据同步方法、设备以及计算机可读存储介质。
背景技术
随着网络技术的快速发展以及,政府和企业对数据安全的重视,区块链得到了极大的重视和应用。
区块链包括全量节点以及轻节点,其中,全量节点拥有全量数据,参与记账共识,轻节点主要进行业务执行,不参与记账共识,而是通过身份认证的方式从共识网络中获得区块头数据和部分授权可见的区块数据。所以全量节点需要通过点对点(Peer-to-Peer,P2P)网络层广播共识完毕的新区块的区块头,以使轻节点对新区块进行数据同步。
现有数据同步技术中,如以太坊、企业操作系统(Enterprise Operating System,EOS)等,轻节点都无法对获取到的数据进行自校验,若区块链网络中存在作恶行为,那么轻节点就无法确定获取到的数据的准确性,进而无法保证所同步的数据的合法性。
发明内容
本申请实施例提供一种数据同步方法、设备以及计算机可读存储介质,可以对所同步得到的数据的合法性进行准确验证,以保证所同步的数据的合法性。
本申请实施例一方面提供了一种数据同步方法,包括:
获取轻节点发送的数据同步请求;数据同步请求包括轻节点所请求的同步区块的区块标识;
根据区块标识获取同步区块中的同步交易数据;同步交易数据包括交易详情数据,以及用于执行交易详情数据的智能合约的合约信息;
从全量数据库中获取与同步交易数据对应的目标数据集合;目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据;
从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及目标数据集合返回至轻节点,以使轻节点根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
本申请实施例一方面提供了一种数据同步方法,包括:
发送携带区块标识的数据同步请求至全量节点,以使全量节点根据区块标识获取同步区块中的同步交易数据,从全量数据库中获取与同步交易数据对应的目标数据集合,从同步区块中获取同步交易数据对应的验证数据;区块标识用于表征所请求的同步区块的标识;同步交易数据包括交易详情数据,以及全量节点用于执行交易详情数据的智能合约的合约信息;目标数据集合包括全量节点基于合约信息在执行交易详情数据时所得到的读取数据或结果数据;
获取全量节点发送的同步交易数据、验证数据以及目标数据集合;
根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
本申请实施例一方面提供了一种数据同步装置,包括:
第一获取模块,用于获取轻节点发送的数据同步请求;数据同步请求包括轻节点所请求的同步区块的区块标识;
第二获取模块,用于根据区块标识获取同步区块中的同步交易数据;同步交易数据包括交易详情数据,以及用于执行交易详情数据的智能合约的合约信息;
第三获取模块,用于从全量数据库中获取与同步交易数据对应的目标数据集合;目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据;
第四获取模块,用于从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及目标数据集合返回至轻节点,以使轻节点根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
其中,第三获取模块,包括:
第一获取单元,用于从全量数据库中获取与同步交易数据对应的候选数据集合;候选数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据以及结果数据;
数据对比单元,用于将读取数据的数据容量与结果数据的数据容量进行对比;
第一确定单元,用于若读取数据的数据容量小于结果数据的数据容量,则将读取数据确定为目标数据集合;
第一确定单元,还用于若读取数据的数据容量等于或大于结果数据的数据容量,则将结果数据确定为目标数据集合。
其中,验证数据包括交易验证数据以及结果验证数据;
第四获取模快,包括:
第二获取单元,用于从同步区块中获取交易状态树以及结果状态树;交易状态树是基于交易详情数据所生成的交易默克尔树;结果状态树是基于结果数据所生成的结果默克尔树;
第三获取单元,用于基于交易详情数据从交易状态树中获取交易验证数据;
第三获取单元,还用于基于结果数据从结果状态树中获取结果验证数据。
其中,数据同步请求包括轻节点的节点标识;
第四获取模快,包括:
第二确定单元,用于根据节点标识确定轻节点针对同步交易数据的同步权限;同步权限包括同步合法权限以及同步非法权限;
第一返回单元,用于若轻节点针对同步交易数据的同步权限为同步非法权限,则返回数据同步失败信息至轻节点;
第二返回单元,用于若轻节点针对同步交易数据的同步权限为同步合法权限,则将同步交易数据、验证数据以及目标数据集合返回至轻节点。
其中,数据同步装置,还包括:
第五获取模块,用于获取待上链区块中的交易详情数据,调用用于执行交易详情数据的智能合约中的交易执行函数;
第六获取模块,用于根据交易执行函数获取针对交易详情数据的历史交易数据,将历史交易数据确定为读取数据;
执行函数模块,用于根据读取数据以及交易详情数据执行交易执行函数,得到交易详情数据的交易执行结果;
区块上链模块,用于根据交易详情数据以及交易执行结果,对待上链区块进行上链处理。
其中,区块上链模块,包括:
第三确定单元,用于当交易详情数据以及交易执行结果均共识通过时,根据交易执行结果生成结果数据;
状态添加单元,用于根据交易详情数据生成交易状态树,根据结果数据生成结果状态树,将交易状态树以及结果状态树添加至待上链区块;
第四确定单元,用于将添加有交易状态树以及结果状态树的待上链区块确定为同步区块,将同步区块添加至区块链;
数据存储单元,用于根据读取数据以及结果数据生成目标数据集合,将目标数据集合存储于全量数据库中。
其中,数据存储单元,具体用于若将读取数据确定为目标数据集合,则将读取数据与交易详情数据关联存储于全量数据库中;
数据存储单元,还具体用于若将结果数据确定为目标数据集合,则将结果数据与交易详情数据关联存储于全量数据库中。
其中,数据存储单元,包括:
数据对比子单元,用于将读取数据以及结果数据分别与历史数据集合进行对比;历史数据集合包括全量数据库中已存储的历史交易详情数据对应的历史读取数据或历史结果数据;
第一确定子单元,用于若存在与读取数据相同的历史数据集合,且存在与结果数据相同的历史数据集合,则对与读取数据相同的历史数据集合进行读标记处理,将携带读标记的历史数据集合确定为第一数据集合,对与结果数据相同的历史数据集合进行写标记处理,将携带写标记的历史数据集合确定为第二数据集合;
第二确定子单元,用于将第一数据集合以及第二数据集合确定为目标数据集合,将目标数据集合与交易详情数据关联存储于全量数据库中;
第三确定子单元,用于若不存在与读取数据相同的历史数据集合,且不存在与结果数据相同的历史数据集合,则将读取数据以及结果数据确定为目标数据集合,将目标数据集合与交易详情数据关联存储于全量数据库中。
本申请实施例一方面提供了一种数据同步装置,包括:
发送请求模块,用于发送携带区块标识的数据同步请求至全量节点,以使全量节点根据区块标识获取同步区块中的同步交易数据,从全量数据库中获取与同步交易数据对应的目标数据集合,从同步区块中获取同步交易数据对应的验证数据;区块标识用于表征所请求的同步区块的标识;同步交易数据包括交易详情数据,以及全量节点用于执行交易详情数据的智能合约的合约信息;目标数据集合包括全量节点基于合约信息在执行交易详情数据时所得到的读取数据或结果数据;
获取数据模块,用于获取全量节点发送的同步交易数据、验证数据以及目标数据集合;
验证数据模块,用于根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
其中,验证数据模块,包括:
第一验证单元,用于若目标数据集合为结果数据,则将结果数据确定为交易详情数据对应的待验证结果数据,根据交易详情数据、待验证结果数据以及验证数据,得到第一待验证根哈希,根据第一待验证根哈希,验证同步交易数据以及待验证结果数据的合法性;
第一确定单元,用于若目标数据集合为读取数据,则根据合约信息中的合约名称,确定执行交易详情数据的智能合约;
第二确定单元,用于根据合约信息中的函数名称,确定智能合约所调用的用于执行交易详情数据的交易执行函数;
第二验证单元,用于根据读取数据、交易执行函数、交易详情数据以及验证数据,得到第二待验证根哈希,根据第二待验证根哈希,验证同步交易数据以及待验证结果数据的合法性。
其中,验证数据包括交易验证数据以及结果验证数据;第一待验证根哈希包括待验证交易根哈希以及待验证结果根哈希;
第一验证单元,包括:
第一生成子单元,用于根据交易详情数据以及交易验证数据,得到待验证交易根哈希;
第二生成子单元,用于根据待验证结果数据以及结果验证数据,得到待验证结果根哈希;
获取哈希子单元,用于获取针对同步区块的区块头,从区块头中获取已验证交易根哈希以及已验证结果根哈希;
确定合法子单元,用于根据待验证交易根哈希、待验证结果根哈希、已验证交易根哈希以及已验证结果根哈希,确定同步交易数据以及待验证结果数据的合法性。
其中,确定合法子单元,包括:
对比哈希子单元,用于将待验证交易根哈希与已验证交易根哈希进行对比,将待验证结果根哈希与已验证结果根哈希进行对比;
第一确定子单元,用于若待验证交易根哈希与已验证交易根哈希不相同,则确定同步交易数据为非法数据,若待验证交易根哈希与已验证交易根哈希相同,则确定同步交易数据为合法数据;
第二确定子单元,用于若待验证结果根哈希与已验证结果根哈希不相同,则确定待验证结果数据为非法数据,若待验证结果根哈希与已验证结果根哈希相同,则确定待验证结果数据为合法数据;
第二确定子单元,还用于当同步交易数据为合法数据且待验证结果数据为合法数据时,将待验证结果数据与同步交易数据进行关联存储。
其中,验证数据包括交易验证数据以及结果验证数据;
第二验证单元,包括:
第三生成子单元,用于将读取数据以及交易详情数据输入交易执行函数,得到交易详情数据的待验证交易执行结果,根据待验证交易执行结果生成待验证结果数据;
第四生成子单元,用于根据待验证结果数据以及结果验证数据,得到待验证结果根哈希;
第五生成子单元,用于根据交易详情数据以及交易验证数据,得到待验证交易根哈希;
确定哈希子单元,用于将待验证结果根哈希以及待验证交易根哈希确定为第二待验证根哈希。
本申请一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以使得计算机设备执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中的方法。
在本申请实施例中,当获取到轻节点发送的针对某个区块的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步交易数据,然后获取针对该同步交易数据的目标数据集合以及验证数据,将同步交易数据、验证数据以及目标数据集合发送给轻节点,由于目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过目标数据集合准确的得到交易详情数据的待验证结果数据,因此,通过验证数据和目标数据集合可以准确验证出同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种系统架构示意图;
图2是本申请实施例提供的一种数据同步方法的流程示意图;
图3是本申请实施例提供的一种数据共识的场景示意图;
图4是本申请实施例提供的一种数据共识的场景示意图;
图5是本申请实施例提供的一种数据同步方法的流程示意图;
图6是本申请实施例提供的一种数据同步的场景示意图;
图7是本申请实施例提供的一种数据同步方法的流程示意图;
图8是本申请实施例提供的一种数据自校验的场景示意图;
图9是本申请实施例提供的一种数据同步方法的流程示意图;
图10是本申请实施例提供的一种目标数据存储的场景示意图;
图11是本申请实施例提供的一种数据同步装置的结构示意图;
图12是本申请实施例提供的一种数据同步装置的结构示意图;
图13是本申请实施例提供的一种计算机设备的结构示意图;
图14是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解,首先对部分名词进行以下简单解释:
1、区块链:狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前获取的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。区块链的目标是实现一个分布的数据记录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成,后继区块中记录前继区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中的节点提议添加一个新的区块,必须经过共识机制对区块达成共识确认。
2、哈希值:也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前继区块的哈希值,前继区块被称为当前区块的父区块。哈希值是区块链技术中的潜力核心基础和最重要的方面,它保留了记录和查看数据的真实性,以及区块链作为一个整体的完整性。
3、智能合约:是一种旨在以信息化方式传播、验证或执行合同的计算机协议。在区块链系统当中,智能合约是一种区块链各节点可以理解并执行的代码,可以执行任意逻辑并得到结果。在实际应用中,智能合约通过区块链上的交易来管理与试用。每条交易相当于对区块链系统的一个远程过程调用(Remote Procedure Call,RPC)请求。如果说智能合约相当于可执行程序,区块链就相当于提供运行环境的操作系统。区块链可以包含多个合约,以合约账号(Identity ,ID)、标识号或名称来区分。
4、合约管理:可以分为部署、升级以及删除等管理操作。通过发起一笔交易(请求)的方式,来创建或修改区块链系统中指定合约(即智能合约,下文叙述的合约均指代智能合约)的代码,从而改变合约的执行逻辑。
5、合约执行:通过发起一笔交易的方式,用户可以调用区块链上已经部署的合约。区块链系统中的各个节点分别运行同一个合约。对于需要读取数据的合约,会访问节点自己的账本。最终各节点会互相验证执行结果是否一致(共识),若执行结果一致各节点将必要结果存入各自账本中,并返回结果给用户。
6、读写集:合约在执行过程中对节点账本数据的操作记录。分为读集合与写集合,分别指智能合约在执行时,从账本读取的数据,和将要写入账本的数据。
7、全量节点与轻节点:区块链网络包括全量节点以及轻节点,全量节点拥有全部数据,轻节点拥有部分数据,但轻节点仍需验证从全量节点所同步的数据真实可靠。应用示例,税务总局是全量节点,省税务局是轻节点,市税局也是轻节点。最高法院是全量节点,地方法院是轻节点。银行是全量节点,企业是轻节点等等。只要业务具有不对等关系,系统中便需要有全量节点与轻节点用以保护数据隐私。
8、默克尔树(Merkle Tree):通常也被称作哈希树(Hash Tree)或状态树。顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块的hash值,数据块包括文件或者文件的集合,在本申请实施例中,数据块可以理解成区块,文件是指区块中的交易详情数据或交易详情数据的交易执行结果。
当区块链被用于政府或者商业机构的一些场景中时,并非区块链中的所有参与节点(可以包括全量节点与轻节点)都有足够的资源和必要性成为区块链的共识节点。而出于对数据的安全性考虑,在区块链体系中涉及个人隐私或者国家安全的相关数据时,也不适用普遍的数据对等式的区块链部署方式。因此本申请提出一种既可以保障数据的隐私性,又可以适当公开数据的方法。
请参见图1,图1是本申请实施例提供的一种系统架构示意图。如图1所示,该系统架构可以为区块链网络10,其中,区块链网络10可以包括见证网络10a以及共识网络10b;见证网络10a中的节点可以称为轻节点,拥有部分数据,轻节点主要进行业务执行,不参与记账共识,通过身份认证的方式从共识网络10b中获得区块头数据和部分授权可见的区块数据(即上述的同步交易数据)。共识网络10b也可以称作核心网络,共识网络10b中的节点可以称为全量节点,全量节点拥有全量数据。见证网络10a和共识网络10b处在不同网络环境下,通常来说,见证网络10a处于公有网络中而共识网络10b处于私有网络中,二者通过路由边界进行交互。
请再参见图1,见证网络10a可以包括轻节点101a、轻节点102a、轻节点103a、…、轻节点104a。可以理解的是,上述见证网络10a可以包括一个或者多个见证网络,在实际应用时,由于应用场景的不同,可以设置一种或多种类型的见证网络,这里将不对见证网络的数量进行限制。上述见证网络10a可以包括一个或者多个轻节点,这里将不对轻节点的数量进行限制。
请再参见图1,共识网络10b可以包括全量节点101b、全量节点102b、全量节点103b、…、全量节点104b。可以理解的是,上述共识网络10b可以包括一个或者多个共识网络,在实际应用时,由于应用场景的不同,可以设置一种或多种类型的共识网络,这里将不对共识网络的数量进行限制。上述共识网络10b可以包括一个或者多个全量节点,这里将不对全量节点的数量进行限制。
每个节点(包括见证网络10a中的轻节点以及共识网络10b中的全量节点)在进行正常工作时可以接收到外界发送的数据,并基于接收到的数据进行区块上链处理,也可以向外界发送数据。为了保证各个节点之间的数据互通,每个节点之间可以存在数据连接,例如轻节点101a与轻节点102a之间存在数据连接,轻节点101a与轻节点103a之间存在数据连接,全量节点101b与全量节点104b之间存在数据连接。
进一步地,见证网络10a与共识网络10b之间存在数据连接,例如轻节点101a与全量节点102b之间存在数据连接,轻节点101a与全量节点103b之间存在数据连接,全量节点101b与轻节点104a之间存在数据连接。
可以理解的是,节点之间可以通过上述数据连接进行数据或者区块传输。上述的节点之间的数据连接可以基于节点标识,对于区块链网络10中的每个节点,均具有与其对应的节点标识,而且上述每个节点均可以存储与自身有相连关系的其他节点的节点标识,以便后续根据其他节点的节点标识,将获取到的数据或生成的区块广播至其他节点,例如轻节点101a中可以维护一个如表1所示的节点标识列表,该节点标识列表保存着其他节点的节点名称和节点标识。
表1
节点名称 | 节点标识 |
轻节点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 |
其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任意一种能够用于标识区块链网络10中节点的信息,表1中仅以IP地址为例进行说明。
假设轻节点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所发送的,其他节点之间的数据传输亦如此,故不再一一进行赘述。
可以理解的是,上述的数据连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接方式,本申请在此不做限制。
其中,图1中的轻节点101a、轻节点102a、轻节点103a、…、轻节点104a、全量节点101b、全量节点102b、全量节点103b、…、全量节点104b可以包括手机、平板电脑、笔记本电脑、掌上电脑、智能音响、移动互联网设备(MID,mobile internet device)、POS(Point OfSales,销售点)机、可穿戴设备(例如智能手表、智能手环等)等。
可以理解的是,本申请实施例所提供的数据同步方法可以由计算机设备执行,计算机设备包括但不限于轻节点(可以为终端或服务器)或全量节点(可以为终端或服务器)。上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。上述终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
进一步地,请参见图2,图2是本申请实施例提供的一种数据同步方法的流程示意图。该数据同步方法可以由图1所述的全量节点或轻节点执行,也可以由全量节点以及轻节点共同执行,在本申请实施例中,以该方法由全量节点执行为例进行说明。如图2所示,该数据同步过程可以包括如下步骤。
步骤S101,获取轻节点发送的数据同步请求;数据同步请求包括轻节点所请求的同步区块的区块标识。
具体的,获取待上链区块中的交易详情数据,调用用于执行交易详情数据的智能合约中的交易执行函数;根据交易执行函数获取针对交易详情数据的历史交易数据,将历史交易数据确定为读取数据;根据读取数据以及交易详情数据执行交易执行函数,得到交易详情数据的交易执行结果;根据交易详情数据以及交易执行结果,对待上链区块进行上链处理。
其中,根据交易详情数据以及交易执行结果,对待上链区块进行上链处理的具体过程可以包括:当交易详情数据以及交易执行结果均共识通过时,根据交易执行结果生成结果数据;根据交易详情数据生成交易状态树,根据结果数据生成结果状态树,将交易状态树以及结果状态树添加至待上链区块;将添加有交易状态树以及结果状态树的待上链区块确定为同步区块,将同步区块添加至区块链;根据读取数据以及结果数据生成目标数据集合,将目标数据集合存储于全量数据库中。其中,交易状态树是基于交易详情数据所生成的交易默克尔树;结果状态树是基于结果数据所生成的结果默克尔树。
其中,针对“根据读取数据以及结果数据生成目标数据集合,将目标数据集合存储于全量数据库中”的可选实施过程为:将读取数据以及结果数据分别与历史数据集合进行对比;历史数据集合包括全量数据库中已存储的历史交易详情数据对应的历史读取数据或历史结果数据;若存在与读取数据相同的历史数据集合,且存在与结果数据相同的历史数据集合,则对与读取数据相同的历史数据集合进行读标记处理,将携带读标记的历史数据集合确定为第一数据集合,对与结果数据相同的历史数据集合进行写标记处理,将携带写标记的历史数据集合确定为第二数据集合;将第一数据集合以及第二数据集合确定为目标数据集合,将目标数据集合与交易详情数据关联存储于全量数据库中;若不存在与读取数据相同的历史数据集合,且不存在与结果数据相同的历史数据集合,则将读取数据以及结果数据确定为目标数据集合,将目标数据集合与交易详情数据关联存储于全量数据库中。
请一并参见图3,图3是本申请实施例提供的一种数据共识的场景示意图。如图3所示,全量节点30a获取待上链区块30b,其中,待上链区块30b可以是区块链网络中的其他全量节点所生成的待共识区块,也可以是区块链网络中的轻节点所生成的待出块区块,此处不限定待上链区块30b的由来。可以理解的是,本申请实施例仅叙述区块头中的交易根哈希(即图3中的哈希值HY(1234))以及结果根哈希(即图3中的哈希值HG(1234)),在实际应用时,区块头存储有版本号、时间戳和难度值等基本数据,还可以存储有其他相关数据。
请再参见图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对应的函数与函数名称2对应的函数在智能合约B中被调用,函数名称3对应的函数与函数名称n对应的函数在智能合约V中被调用。
全量节点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元。
上文简单以交易1为例叙述交易详情数据、历史交易数据以及交易执行结果之间的联系,故根据交易2、历史交易数据2以及交易执行函数2,可以得到交易2的交易执行结果2,根据交易3、历史交易数据3以及交易执行函数3,可以得到交易2的交易执行结果3,…,根据交易n、历史交易数据n以及交易执行函数n,可以得到交易n的交易执行结果n。
请一并参见图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。
请再参见图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的待验证交易根哈希。
同理,全量节点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的待验证结果根哈希。
可以理解的是,本申请实施例是以4条交易为例进行叙述,不代表实际应用场景中的交易数量。
全量节点40a将哈希值HY’(1234)与图3中的哈希值HY(1234)进行对比,若两者相同,可以确定待共识数据40c交易共识通过,否则交易共识失败;同理,全量节点40a将哈希值HG’(1234)与图3中的哈希值HG(1234)进行对比,若两者相同,可以确定待共识数据40c结果共识通过,否则结果共识失败。请再参见图3,当交易详情数据以及交易执行结果均共识通过时,全量节点30a根据交易执行结果生成结果数据。
可以理解的是,在本申请实施例中,以结果数据包括交易执行结果为例进行叙述,下文亦如此。在实际应用场景中,结果数据包括但不限于交易执行结果,可以根据场景设定结果数据的范围。
上述过程还可一并参见图5,图5是本申请实施例提供的一种数据同步方法的流程示意图,该方法可以由区块链网络中的任一节点执行。如图5所示,该数据同步方法可以包括如下步骤。
步骤S1、各节点RPC层获取用户请求,用户请求也称为交易。
步骤S2、各节点间相互广播交易,并由其中某一节点将若干交易打包成一个区块,并广播给其它节点。出块节点的选择,因共识算法而异,可以包括领导者(leader)出块,轮流出块,算力竞争出块等。
步骤S3、各节点都收到区块之后,开始执行区块里的交易(也即是用户请求)。在逻辑计算层,解析交易参数,并执行合约。执行过程中可能会需要读取存储中的数据(即读取数据),如图5中示例的节点1从此次中读取历史交易数据。
步骤S4、合约执行完毕后,各节点对执行结果(即上述的交易执行结果)进行互相校验。校验方法可以为将执行结果或对存储的变更组织成结果merkle树,将结果树根(即结果根哈希)放入区块头中,最终校验各节点区块hash一致即可。
步骤S5、共识成功后,各节点将本区块相关的数据即可落入存储,主要有区块头,区块包含的所有交易,合约执行结果等。
上述步骤S1-步骤S5的详细过程可以参见图2所对应的实施例中的步骤S101,此处就不再展开赘述。
步骤S102,根据区块标识获取同步区块中的同步交易数据;同步交易数据包括交易详情数据,以及用于执行交易详情数据的智能合约的合约信息。
具体的,请一并参见图6,图6是本申请实施例提供的一种数据同步的场景示意图。如图6所示,全量节点60a可以根据轻节点所发送的区块标识,在全量账本60b中确定轻节点所请求的同步区块607b,其中区块标识可以为同步区块607b的区块高度,也可以为同步区块607b的区块哈希,还可以为其他可以表征同步区块607b的标识。
全量节点60a获取同步区块607b中的同步交易数据60c,同步交易数据60c可以包括图6中关联存储的交易1以及合约信息1,关联存储的交易2以及合约信息2,关联存储的交易3以及合约信息3,…,关联存储的交易n以及合约信息n。
步骤S103,从全量数据库中获取与同步交易数据对应的目标数据集合;目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据。
具体的,从全量数据库中获取与同步交易数据对应的候选数据集合;候选数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据以及结果数据;将读取数据的数据容量与结果数据的数据容量进行对比;若读取数据的数据容量小于结果数据的数据容量,则将读取数据确定为目标数据集合;若读取数据的数据容量等于或大于结果数据的数据容量,则将结果数据确定为目标数据集合。
请再参见图6,全量节点60a获取到同步交易数据60c后,还需要获取与同步交易数据60c对应的目标数据集合60f,以使轻节点可以根据目标数据集合60f以及交易详情数据执行交易执行函数。全量节点60a首先获取全量数据库60d,然后获取全量数据库60d中的历史数据集合60g,如图6所示,历史数据集合60g可以包括读取数据1&结果数据1、读取数据2&结果数据2、读取数据3&结果数据3、读取数据4&结果数据4、读取数据5&结果数据5、…、读取数据n&结果数据n,其中,符号“&”表示关联存储。
由步骤S101中的描述可知,全量节点是将目标数据集合与交易详情数据关联存储于全量数据库中的,故此处,全量节点60a可以将同步交易数据60c中的交易详情数据(包括图6中的交易1、交易2、交易3、…、交易n),与全量数据库60d中的交易详情数据进行匹配,根据匹配结果,可以确定同步交易数据60c的候选数据集合60e。假设交易1的目标数据集合为读取数据1&结果数据1;交易2的目标数据集合为读取数据2&结果数据2,交易3的目标数据集合为读取数据3&结果数据3,…,交易n的目标数据集合为读取数据n&结果数据n。
全量节点60a不需要将交易详情数据的读取数据以及结果数据均发送给轻节点,轻节点可以根据读取数据或结果数据验证全量节点60a发送的同步交易数据以及交易详情数据对应的待验证结果数据是否合法,故全量节点60a可以对交易1的读取数据1以及结果数据1进行数据容量对比,若结果数据1的数据容量小一些,则将结果数据1确定为交易1的目标数据集合;同理,全量节点60a可以对交易2的读取数据2以及结果数据2进行数据容量对比,若读取数据2的数据容量小一些,则将读取数据2确定为交易2的目标数据集合;全量节点60a可以对交易3的读取数据3以及结果数据3进行数据容量对比,若结果数据3的数据容量小一些,则将结果数据3确定为交易3的目标数据集合;以此类推,生成目标数据集合60f。
其中,全量数据库60d可视为电子化的文件柜——存储电子文件(本申请中的电子文件可以指目标数据集合与交易详情数据)的处所,全量节点60a可以对文件中的目标数据集合与交易详情数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
步骤S104,从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及目标数据集合返回至轻节点,以使轻节点根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
具体的,验证数据包括交易验证数据以及结果验证数据;从同步区块中获取交易状态树以及结果状态树;基于交易详情数据从交易状态树中获取交易验证数据;基于结果数据从结果状态树中获取结果验证数据。
数据同步请求包括轻节点的节点标识;根据节点标识确定轻节点针对同步交易数据的同步权限;同步权限包括同步合法权限以及同步非法权限;若轻节点针对同步交易数据的同步权限为同步非法权限,则返回数据同步失败信息至轻节点;若轻节点针对同步交易数据的同步权限为同步合法权限,则将同步交易数据、验证数据以及目标数据集合返回至轻节点。
请再参见图4,同步区块40b中包括状态树(包括图4中的交易状态树以及结果状态树),故全量节点可以从同步区块40b中获取同步交易数据(包括交易详情数据以及合约信息)的验证数据,其中,交易验证数据可以对应于交易状态树中的交易哈希值,结果验证数据可以对应于结果状态树中的结果哈希值。下面以图4中的交易1为例进行叙述,针对交易1,其交易验证数据可以包括哈希值HY(2)以及哈希值HY(34),其结果验证数据可以为哈希值HG(2)以及哈希值HG(34)。
在获取到验证数据后,全量节点确定轻节点获取同步交易数据的同步权限,需要理解的是,本申请实施例不对确定同步权限的方法进行限定,可以以轻节点的节点标识确定同步权限,也可以以轻节点的节点类型确定同步权限,还可以根据其他方法,在本申请实施例中以节点标识为例进行叙述。
可以理解的是,上文是以全量节点获取到同步交易数据、目标数据集合以及验证数据之后,再确定轻节点针对同步交易数据的同步权限;在实际应用时,也可以在全量节点获取到同步交易数据之后,就确定轻节点针对同步交易数据的同步权限,然后根据同步权限获取目标数据集合以及验证数据;或者,也可以在全量节点获取到同步交易数据以及目标数据集合之后,才确定轻节点针对同步交易数据的同步权限,然后根据同步权限获取验证数据;本申请实施例也不对确定同步交易数据的同步权限的时间进行限定,实际应用时,可以根据场景进行设定。
请再参见图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)。
进一步地,全量节点将同步交易数据、验证数据以及目标数据集合返回至轻节点,以使轻节点根据验证数据以及目标数据集合验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。其中,轻节点自校验同步交易数据交易详情数据对应的待验证结果数据的合法性的具体过程请参见下文图7所对应的实施例。
在本申请实施例中,当获取到轻节点发送的针对某个区块的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步交易数据,然后获取针对该同步交易数据的目标数据集合以及验证数据,将同步交易数据、验证数据以及目标数据集合发送给轻节点,从而轻节点可以在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。另外,由于目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过目标数据集合准确的得到交易详情数据的待验证结果数据,基于验证数据,可以让轻节点拥有自验证同步交易数据以及待验证结果数据的合法性的权限,通过该权限,轻节点可以提高同步交易数据以及待验证结果数据的合法性验证的准确率。
进一步地,请参见图7,图7是本申请实施例提供的一种数据同步方法的流程示意图。该数据同步方法可以由图1所述的全量节点或轻节点执行,也可以由全量节点以及轻节点共同执行,在本申请实施例中,以该方法由轻节点执行为例进行说明。如图7所示,该数据同步过程包括如下步骤:
步骤S201,发送携带区块标识的数据同步请求至全量节点,以使全量节点根据区块标识获取同步区块中的同步交易数据,从全量数据库中获取与同步交易数据对应的目标数据集合,从同步区块中获取同步交易数据对应的验证数据;区块标识用于表征所请求的同步区块的标识;同步交易数据包括交易详情数据,以及全量节点用于执行交易详情数据的智能合约的合约信息;目标数据集合包括全量节点基于合约信息在执行交易详情数据时所得到的读取数据或结果数据。
步骤S201的具体过程可以参见上文图2所对应的实施例中的描述,此处不再进行赘述。
步骤S202,获取全量节点发送的同步交易数据、验证数据以及目标数据集合。
具体的,请一并参见图8,图8是本申请实施例提供的一种数据自校验的场景示意图。如图8所示,轻节点80b获取全量节点80a发送的同步交易数据(即图8中的交易4&合约信息4)、验证数据(即图8中的H(3)、H(12)以及H(5678)),以及目标数据集合(即图8中的交易执行结果4,等同于上文叙述的结果数据)。其中,验证数据H(3)可以包括哈希值HY(3)以及哈希值HG(3),验证数据H(12)可以包括哈希值HY(12)以及哈希值HG(12),验证数据H(5678)可以包括哈希值HY(5678)以及哈希值HG(5678)。同理,图8的默克尔证明树80c中的任一哈希值H(E)均可以包括交易哈希值HY(E)以及结果哈希值HG(E),E等于1,2,3,…,8。
步骤S203,根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
具体的,若目标数据集合为结果数据,则将结果数据确定为交易详情数据对应的待验证结果数据,根据交易详情数据、待验证结果数据以及验证数据,得到第一待验证根哈希,根据第一待验证根哈希,验证同步交易数据以及待验证结果数据的合法性;若目标数据集合为读取数据,则根据合约信息中的合约名称,确定执行交易详情数据的智能合约;根据合约信息中的函数名称,确定智能合约所调用的用于执行交易详情数据的交易执行函数;根据读取数据、交易执行函数、交易详情数据以及验证数据,得到第二待验证根哈希,根据第二待验证根哈希,验证同步交易数据以及待验证结果数据的合法性。
其中,根据交易详情数据、待验证结果数据以及验证数据,得到第一待验证根哈希,根据第一待验证根哈希,验证同步交易数据以及待验证结果数据的合法性的具体过程可以包括:验证数据包括交易验证数据以及结果验证数据;第一待验证根哈希包括待验证交易根哈希以及待验证结果根哈希;根据交易详情数据以及交易验证数据,得到待验证交易根哈希;根据待验证结果数据以及结果验证数据,得到待验证结果根哈希;获取针对同步区块的区块头,从区块头中获取已验证交易根哈希以及已验证结果根哈希;根据待验证交易根哈希、待验证结果根哈希、已验证交易根哈希以及已验证结果根哈希,确定同步交易数据以及待验证结果数据的合法性。
其中,根据待验证交易根哈希、待验证结果根哈希、已验证交易根哈希以及已验证结果根哈希,确定同步交易数据以及待验证结果数据的合法性的具体过程可以包括:将待验证交易根哈希与已验证交易根哈希进行对比,将待验证结果根哈希与已验证结果根哈希进行对比;若待验证交易根哈希与已验证交易根哈希不相同,则确定同步交易数据为非法数据,若待验证交易根哈希与已验证交易根哈希相同,则确定同步交易数据为合法数据;若待验证结果根哈希与已验证结果根哈希不相同,则确定待验证结果数据为非法数据,若待验证结果根哈希与已验证结果根哈希相同,则确定待验证结果数据为合法数据;当同步交易数据为合法数据且待验证结果数据为合法数据时,将待验证结果数据与同步交易数据进行关联存储。
其中,根据读取数据、交易执行函数、交易详情数据以及验证数据,得到第二待验证根哈希的具体过程可以包括:验证数据包括交易验证数据以及结果验证数据;将读取数据以及交易详情数据输入交易执行函数,得到交易详情数据的待验证交易执行结果,根据待验证交易执行结果生成待验证结果数据;根据待验证结果数据以及结果验证数据,得到待验证结果根哈希;根据交易详情数据以及交易验证数据,得到待验证交易根哈希;将待验证结果根哈希以及待验证交易根哈希确定为第二待验证根哈希。
其中,根据第二待验证根哈希验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性的具体过程可以包括:获取针对同步区块的区块头,从区块头中获取已验证交易根哈希以及已验证结果根哈希;将待验证交易根哈希与已验证交易根哈希进行对比,若待验证交易根哈希与已验证交易根哈希不相同,则确定同步交易数据为非法数据,此时不再将待验证结果根哈希与已验证结果根哈希进行对比;若待验证交易根哈希与已验证交易根哈希相同,则确定同步交易数据为合法数据;进一步地,将待验证结果根哈希与已验证结果根哈希进行对比,若待验证结果根哈希与已验证结果根哈希不相同,则确定待验证结果数据为非法数据,若待验证结果根哈希与已验证结果根哈希相同,则确定待验证结果数据为合法数据,将待验证结果数据与同步交易数据进行关联存储。
对于目标数据集合是结果数据(例如图8中的交易执行结果4),轻节点无需再执行同步交易数据中的交易详情数据,此时全量节点发送的结果数据即为交易详情数据的待验证结果数据。轻节点可以根据结果数据、验证数据以及交易详情数据验证同步交易数据的合法性。具体过程请再参见图8,轻节点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)即是待验证交易根哈希。
同理,轻节点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)即是待验证结果根哈希。
请再参见图8,轻节点80b从P2P网络中获取同步区块的区块头,然后获取区块头中的已验证交易根哈希以及已验证结果根哈希,将待验证交易根哈希(即哈希值HY(12345678))与已验证交易根哈希进行对比,若待验证交易根哈希与已验证交易根哈希不相同,则确定同步交易数据(包括交易4)为非法数据,若待验证交易根哈希与已验证交易根哈希相同,则确定同步交易数据为合法数据。
将待验证结果根哈希(即哈希值HG(12345678))与已验证结果根哈希进行对比,若待验证结果根哈希与已验证结果根哈希不相同,则确定结果数据(如图8中的结果4)为非法数据,若待验证结果根哈希与已验证结果根哈希相同,则确定结果数据为合法数据。当同步交易数据为合法数据且结果数据为合法数据时,轻节点80b将结果数据与同步交易数据进行关联存储。
对于目标数据集合是读取数据,轻节点需要根据读取数据以及交易详情数据,执行与合约信息对应的交易执行函数,以生成交易详情数据的待验证交易执行结果,然后根据待验证交易执行结果生成交易详情数据对应的待验证结果数据。由于全量节点已经执行过交易详情数据,读取数据本身可以覆盖合约执行过程中的全部数据,所以在轻节点只有部分数据的情况下,依然可以执行合约。得到待验证交易执行结果后,轻节点的自校验过程与上文中根据结果数据进行自校验的过程基本一致,故此处不再赘述。
上述可知,轻节点可以同步任意逻辑的合约数据,并且可以自校验数据的正确性。可以理解的是,在本申请实施例中,以轻节点自校验待验证结果数据以及同步交易数据为例进行叙述,实际应用时,轻节点可以根据场景设定自校验待验证结果数据或同步交易数据或两者,此处不限定轻节点自校验范围。
在本申请实施例中,当获取到轻节点发送的针对某个区块的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步交易数据,然后获取针对该同步交易数据的目标数据集合以及验证数据,将同步交易数据、验证数据以及目标数据集合发送给轻节点,从而轻节点可以在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。另外,由于目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过目标数据集合准确的得到交易详情数据的待验证结果数据,基于验证数据,可以让轻节点拥有自验证同步交易数据以及待验证结果数据的合法性的权限,通过该权限,轻节点可以提高同步交易数据以及待验证结果数据的合法性验证的准确率。
进一步地,请参见图9,图9是本申请实施例提供的一种数据同步方法的流程示意图。该数据同步方法可以由图1所述的轻节点或全量节点执行,也可以由轻节点以及全量节点共同执行,在本申请实施例中,以该方法由轻节点以及全量节点共同执行为例进行说明。如图9所示,该数据同步过程包括如下步骤:
步骤1,同步区块B。
具体的,区块B的区块头在全网络广播,轻节点接受到区块头之后,向全量节点发送数据同步请求以同步区块B中的数据。
智能合约的执行可以分为代码+数据两部分,代码代表了逻辑业务,整个业务参与方均可见,因此同一个业务的轻节点拥有代码。要解决的核心问题便是数据的问题,主要为以下两个问题:1、全量节点如何辨别并分发正确的数据给轻节点;2、区块链容忍作恶,那么轻节点如何自校验以确定全量节点返回的数据未被篡改。请参见下文步骤2-步骤8。
步骤2、读取区块B中的交易。
具体的,数据分为两部分,交易详情数据和上下文交易数据。交易详情数据存储在区块中,是终态数据,不可修改,全量节点可以直接返回给轻节点。上下文交易数据(等同于上文中的目标数据集合)主要指一些暂态数据,如转账前的账户余额或转账后的账户余额,随着区块的增加,交易的执行,每时每刻余额都在变动;故当轻节点同步区块B时,全量节点应该可以读取或者通过计算得出区块链网络处理至区块B时的账户余额,而不是最新的账户余额。
本申请实施例提出一种通用的数据同步方法,该数据同步方法需要对合约进行处理,但不会改变合约本身可以实现任意逻辑的性质。全量节点将读取数据或/和结果数据存储在全量数据库中,请一并参见图10,图10是本申请实施例提供的一种目标数据存储的场景示意图。如图10所示,全量节点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的交易执行结果。
可行方案1:将读取数据1&结果数据1&交易1、读取数据2&结果数据2&交易2、读取数据3&结果数据3&交易3、…、读取数据n&结果数据n&交易n分别关联存储于全量数据库90b中。
可行方案2:对读取数据1与结果数据1进行数据容量比较,若读取数据1的数据容量小于结果数据1的数据容量,则将读取数据1&交易1关联存储于全量数据库90b中;若读取数据1的数据容量等于或大于结果数据1的数据容量,则将结果数据1&交易1关联存储于全量数据库90b中。其余交易的目标数据集合的生成亦如此,此处不再一一进行赘述。
可行方案3:请再参见图10,全量节点90a将待存储数据集合90e与全量数据库90b中的历史数据集合90c进行对比,根据对比结果对待存储数据集合90e进行存储。其中,历史数据集合90c包括历史数据集合1、历史数据集合2、历史数据集合3、…、历史数据集合N。
如图10所示,对比结果中读取数据1等同于历史数据集合1,结果数据1等同于历史数据集合2,则对历史数据集合1进行读标记处理,得到(历史数据集合1)1读,其中读标记“1读”可以表征历史数据集合1为交易1的读取数据;对历史数据集合2进行写标记处理,得到(历史数据集合2)1写,其中写标记“1写”可以表征历史数据集合2为交易1的结果数据。
由于待存储数据集合90e中的其他数据与历史数据集合不相同,则需要存储于全量数据库90b中,如图10所示,新的历史数据集合90d包括携带针对交易1的读标记的历史数据集合1、携带针对交易1的写标记的历史数据集合2、历史数据集合3、…、历史数据集合N、读取数据2&结果数据2、读取数据3&结果数据3、…、读取数据n&结果数据n。
可行方案4:随机确定目标数据集合,若将读取数据确定为目标数据集合,则将读取数据与交易详情数据关联存储于全量数据库中;若将结果数据确定为目标数据集合,则将结果数据与交易详情数据关联存储于全量数据库中。
可以理解的是,在实际应用时,上述3种方案还可以混合,生成新的可行方案,此处不限定。
步骤3、解析交易里调用的合约与方法。
步骤4、确定轻节点应得到的数据。
步骤5、返回结果,包括交易与数据。
步骤6、接收交易与数据,根据情况执行合约。
步骤7、验证结果与证明是否相符。
步骤8、保存交易与执行结果。
上述步骤3-步骤8可以参见上文图2以及图7分别对应的实施例,此处不再一一进行赘述。
在本申请实施例中,当获取到轻节点发送的针对某个区块的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步交易数据,然后获取针对该同步交易数据的目标数据集合以及验证数据,将同步交易数据、验证数据以及目标数据集合发送给轻节点,从而轻节点可以在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。另外,由于目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过目标数据集合准确的得到交易详情数据的待验证结果数据,基于验证数据,可以让轻节点拥有自验证同步交易数据以及待验证结果数据的合法性的权限,通过该权限,轻节点可以提高同步交易数据以及待验证结果数据的合法性验证的准确率。
进一步地,请参见图11,图11是本申请实施例提供的一种数据同步装置的结构示意图。上述数据同步装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据同步装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图11所示,该数据同步装置1可以包括:第一获取模块11、第二获取模块12、第三获取模块13以及第四获取模块14。
第一获取模块11,用于获取轻节点发送的数据同步请求;数据同步请求包括轻节点所请求的同步区块的区块标识;
第二获取模块12,用于根据区块标识获取同步区块中的同步交易数据;同步交易数据包括交易详情数据,以及用于执行交易详情数据的智能合约的合约信息;
第三获取模块13,用于从全量数据库中获取与同步交易数据对应的目标数据集合;目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据;
第四获取模块14,用于从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及目标数据集合返回至轻节点,以使轻节点根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
其中,第一获取模块11、第二获取模块12、第三获取模块13以及第四获取模块14的具体功能实现方式可以参见上述图2对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
再请参见图11,第三获取模块13可以包括:第一获取单元131、数据对比单元132以及第一确定单元133。
第一获取单元131,用于从全量数据库中获取与同步交易数据对应的候选数据集合;候选数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据以及结果数据;
数据对比单元132,用于将读取数据的数据容量与结果数据的数据容量进行对比;
第一确定单元133,用于若读取数据的数据容量小于结果数据的数据容量,则将读取数据确定为目标数据集合;
第一确定单元133,还用于若读取数据的数据容量等于或大于结果数据的数据容量,则将结果数据确定为目标数据集合。
其中,第一获取单元131、数据对比单元132以及第一确定单元133的具体功能实现方式可以参见上述图2对应实施例中的步骤S103,这里不再进行赘述。
再请参见图11,验证数据包括交易验证数据以及结果验证数据;
第四获取模快14可以包括:第二获取单元141以及第三获取单元142。
第二获取单元141,用于从同步区块中获取交易状态树以及结果状态树;交易状态树是基于交易详情数据所生成的交易默克尔树;结果状态树是基于结果数据所生成的结果默克尔树;
第三获取单元142,用于基于交易详情数据从交易状态树中获取交易验证数据;
第三获取单元142,还用于基于结果数据从结果状态树中获取结果验证数据。
其中,第二获取单元141以及第三获取单元142的具体功能实现方式可以参见上述图2对应实施例中的步骤S104,这里不再进行赘述。
再请参见图11,数据同步请求包括轻节点的节点标识;
第四获取模快14可以包括:第二确定单元143、第一返回单元144以及第二返回单元145。
第二确定单元143,用于根据节点标识确定轻节点针对同步交易数据的同步权限;同步权限包括同步合法权限以及同步非法权限;
第一返回单元144,用于若轻节点针对同步交易数据的同步权限为同步非法权限,则返回数据同步失败信息至轻节点;
第二返回单元145,用于若轻节点针对同步交易数据的同步权限为同步合法权限,则将同步交易数据、验证数据以及目标数据集合返回至轻节点。
其中,第二确定单元143、第一返回单元144以及第二返回单元145的具体功能实现方式可以参见上述图2对应实施例中的步骤S104,这里不再进行赘述。
再请参见图11,数据同步装置1还可以包括:第五获取模块15、第六获取模块16、执行函数模块17以及区块上链模块18。
第五获取模块15,用于获取待上链区块中的交易详情数据,调用用于执行交易详情数据的智能合约中的交易执行函数;
第六获取模块16,用于根据交易执行函数获取针对交易详情数据的历史交易数据,将历史交易数据确定为读取数据;
执行函数模块17,用于根据读取数据以及交易详情数据执行交易执行函数,得到交易详情数据的交易执行结果;
区块上链模块18,用于根据交易详情数据以及交易执行结果,对待上链区块进行上链处理。
其中,第五获取模块15、第六获取模块16、执行函数模块17以及区块上链模块18的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
再请参见图11,区块上链模块18可以包括:第三确定单元181、状态添加单元182、第四确定单元183以及数据存储单元184。
第三确定单元181,用于当交易详情数据以及交易执行结果均共识通过时,根据交易执行结果生成结果数据;
状态添加单元182,用于根据交易详情数据生成交易状态树,根据结果数据生成结果状态树,将交易状态树以及结果状态树添加至待上链区块;
第四确定单元183,用于将添加有交易状态树以及结果状态树的待上链区块确定为同步区块,将同步区块添加至区块链;
数据存储单元184,用于根据读取数据以及结果数据生成目标数据集合,将目标数据集合存储于全量数据库中。
其中,第三确定单元181、状态添加单元182、第四确定单元183以及数据存储单元184的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
再请参见图11,数据存储单元184,具体用于若将读取数据确定为目标数据集合,则将读取数据与交易详情数据关联存储于全量数据库中;
数据存储单元184,还具体用于若将结果数据确定为目标数据集合,则将结果数据与交易详情数据关联存储于全量数据库中。
其中,数据存储单元184的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
再请参见图11,数据存储单元184第一获取模块11可以包括:数据对比子单元1841、第一确定子单元1842、第二确定子单元1843以及第三确定子单元1844。
数据对比子单元1841,用于将读取数据以及结果数据分别与历史数据集合进行对比;历史数据集合包括全量数据库中已存储的历史交易详情数据对应的历史读取数据或历史结果数据;
第一确定子单元1842,用于若存在与读取数据相同的历史数据集合,且存在与结果数据相同的历史数据集合,则对与读取数据相同的历史数据集合进行读标记处理,将携带读标记的历史数据集合确定为第一数据集合,对与结果数据相同的历史数据集合进行写标记处理,将携带写标记的历史数据集合确定为第二数据集合;
第二确定子单元1843,用于将第一数据集合以及第二数据集合确定为目标数据集合,将目标数据集合与交易详情数据关联存储于全量数据库中;
第三确定子单元1844,用于若不存在与读取数据相同的历史数据集合,且不存在与结果数据相同的历史数据集合,则将读取数据以及结果数据确定为目标数据集合,将目标数据集合与交易详情数据关联存储于全量数据库中。
其中,数据对比子单元1841、第一确定子单元1842、第二确定子单元1843以及第三确定子单元1844的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
在本申请实施例中,当获取到轻节点发送的针对某个区块的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步交易数据,然后获取针对该同步交易数据的目标数据集合以及验证数据,将同步交易数据、验证数据以及目标数据集合发送给轻节点,从而轻节点可以在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。另外,由于目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过目标数据集合准确的得到交易详情数据的待验证结果数据,基于验证数据,可以让轻节点拥有自验证同步交易数据以及待验证结果数据的合法性的权限,通过该权限,轻节点可以提高同步交易数据以及待验证结果数据的合法性验证的准确率。
进一步地,请参见图12,图12是本申请实施例提供的一种数据同步装置的结构示意图。上述数据同步装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据同步装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图12所示,该数据同步装置2可以包括:发送请求模块21、获取数据模块22以及验证数据模块23。
发送请求模块21,用于发送携带区块标识的数据同步请求至全量节点,以使全量节点根据区块标识获取同步区块中的同步交易数据,从全量数据库中获取与同步交易数据对应的目标数据集合,从同步区块中获取同步交易数据对应的验证数据;区块标识用于表征所请求的同步区块的标识;同步交易数据包括交易详情数据,以及全量节点用于执行交易详情数据的智能合约的合约信息;目标数据集合包括全量节点基于合约信息在执行交易详情数据时所得到的读取数据或结果数据;
获取数据模块22,用于获取全量节点发送的同步交易数据、验证数据以及目标数据集合;
验证数据模块23,用于根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
其中,发送请求模块21、获取数据模块22以及验证数据模块23的具体功能实现方式可以参见上述图7对应实施例中的步骤S201-步骤S203,这里不再进行赘述。
再请参见图12,验证数据模块23可以包括:第一验证单元231、第一确定单元232、第二确定单元233以及第二验证单元234。
第一验证单元231,用于若目标数据集合为结果数据,则将结果数据确定为交易详情数据对应的待验证结果数据,根据交易详情数据、待验证结果数据以及验证数据,得到第一待验证根哈希,根据第一待验证根哈希,验证同步交易数据以及待验证结果数据的合法性;
第一确定单元232,用于若目标数据集合为读取数据,则根据合约信息中的合约名称,确定执行交易详情数据的智能合约;
第二确定单元233,用于根据合约信息中的函数名称,确定智能合约所调用的用于执行交易详情数据的交易执行函数;
第二验证单元234,用于根据读取数据、交易执行函数、交易详情数据以及验证数据,得到第二待验证根哈希,根据第二待验证根哈希,验证同步交易数据以及待验证结果数据的合法性。
其中,第一验证单元231、第一确定单元232、第二确定单元233以及第二验证单元234的具体功能实现方式可以参见上述图7对应实施例中的步骤S203,这里不再进行赘述。
再请参见图12,验证数据包括交易验证数据以及结果验证数据;第一待验证根哈希包括待验证交易根哈希以及待验证结果根哈希;
第一验证单元231可以包括:第一生成子单元2311、第二生成子单元2312、获取哈希子单元2313以及确定合法子单元2314。
第一生成子单元2311,用于根据交易详情数据以及交易验证数据,得到待验证交易根哈希;
第二生成子单元2312,用于根据待验证结果数据以及结果验证数据,得到待验证结果根哈希;
获取哈希子单元2313,用于获取针对同步区块的区块头,从区块头中获取已验证交易根哈希以及已验证结果根哈希;
确定合法子单元2314,用于根据待验证交易根哈希、待验证结果根哈希、已验证交易根哈希以及已验证结果根哈希,确定同步交易数据以及待验证结果数据的合法性。
其中,第一生成子单元2311、第二生成子单元2312、获取哈希子单元2313以及确定合法子单元2314的具体功能实现方式可以参见上述图7对应实施例中的步骤S203,这里不再进行赘述。
再请参见图12,确定合法子单元2314可以包括:对比哈希子单元23141、第一确定子单元23142以及第二确定子单元23143。
对比哈希子单元23141,用于将待验证交易根哈希与已验证交易根哈希进行对比,将待验证结果根哈希与已验证结果根哈希进行对比;
第一确定子单元23142,用于若待验证交易根哈希与已验证交易根哈希不相同,则确定同步交易数据为非法数据,若待验证交易根哈希与已验证交易根哈希相同,则确定同步交易数据为合法数据;
第二确定子单元23143,用于若待验证结果根哈希与已验证结果根哈希不相同,则确定待验证结果数据为非法数据,若待验证结果根哈希与已验证结果根哈希相同,则确定待验证结果数据为合法数据;
第二确定子单元23143,还用于当同步交易数据为合法数据且待验证结果数据为合法数据时,将待验证结果数据与同步交易数据进行关联存储。
其中,对比哈希子单元23141、第一确定子单元23142以及第二确定子单元23143的具体功能实现方式可以参见上述图7对应实施例中的步骤S203,这里不再进行赘述。
再请参见图12,验证数据包括交易验证数据以及结果验证数据;
第二验证单元234可以包括:第三生成子单元2341、第四生成子单元2342、第五生成子单元2343以及确定哈希子单元2344。
第三生成子单元2341,用于将读取数据以及交易详情数据输入交易执行函数,得到交易详情数据的待验证交易执行结果,根据待验证交易执行结果生成待验证结果数据;
第四生成子单元2342,用于根据待验证结果数据以及结果验证数据,得到待验证结果根哈希;
第五生成子单元2343,用于根据交易详情数据以及交易验证数据,得到待验证交易根哈希;
确定哈希子单元2344,用于将待验证结果根哈希以及待验证交易根哈希确定为第二待验证根哈希。
其中,第三生成子单元2341、第四生成子单元2342、第五生成子单元2343以及确定哈希子单元2344的具体功能实现方式可以参见上述图7对应实施例中的步骤S203,这里不再进行赘述。
在本申请实施例中,当获取到轻节点发送的针对某个区块的数据同步请求时,本申请不是将整个同步区块返回至轻节点,首先获取同步交易数据,然后获取针对该同步交易数据的目标数据集合以及验证数据,将同步交易数据、验证数据以及目标数据集合发送给轻节点,从而轻节点可以在仅拥有部分数据(不是整个同步区块)的情况下执行智能合约,对数据进行业务逻辑运算并处理复杂业务。上述过程让数据不对等的各节点(包括轻节点和全量节点)均可以执行合约,实现在数据隐私保护的同时,充分发挥智能合约的能力,进而可以确定数据的准确性。另外,由于目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据,所以轻节点可以通过目标数据集合准确的得到交易详情数据的待验证结果数据,基于验证数据,可以让轻节点拥有自验证同步交易数据以及待验证结果数据的合法性的权限,通过该权限,轻节点可以提高同步交易数据以及待验证结果数据的合法性验证的准确率。
进一步地,请参见图13,图13是本申请实施例提供的一种计算机设备的结构示意图。如图13所示,该计算机设备1000可以为上述图2对应实施例中的全量节点,该计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图13所示,作为一种计算机存储介质的存储器1005可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图13所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取轻节点发送的数据同步请求;数据同步请求包括轻节点所请求的同步区块的区块标识;
根据区块标识获取同步区块中的同步交易数据;同步交易数据包括交易详情数据,以及用于执行交易详情数据的智能合约的合约信息;
从全量数据库中获取与同步交易数据对应的目标数据集合;目标数据集合包括基于合约信息在执行交易详情数据时所得到的读取数据或结果数据;
从同步区块中获取同步交易数据对应的验证数据,将同步交易数据、验证数据以及目标数据集合返回至轻节点,以使轻节点根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图2、图5、图7以及图9所对应实施例中对数据同步方法的描述,也可执行前文图11所对应实施例中对数据同步装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
进一步地,请参见图14,图14是本申请实施例提供的一种计算机设备的结构示意图。如图14所示,该计算机设备2000可以为上述图7对应实施例中的轻节点,上述计算机设备2000可以包括:处理器2001,网络接口2004和存储器2005,此外,上述计算机设备2000还可以包括:用户接口2003,和至少一个通信总线2002。其中,通信总线2002用于实现这些组件之间的连接通信。其中,用户接口2003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口2003还可以包括标准的有线接口、无线接口。网络接口2004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器2005可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器2005可选的还可以是至少一个位于远离前述处理器2001的存储装置。如图14所示,作为一种计算机可读存储介质的存储器2005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图14所示的计算机设备2000中,网络接口2004可提供网络通讯功能;而用户接口2003主要用于为用户提供输入的接口;而处理器2001可以用于调用存储器2005中存储的设备控制应用程序,以实现:
发送携带区块标识的数据同步请求至全量节点,以使全量节点根据区块标识获取同步区块中的同步交易数据,从全量数据库中获取与同步交易数据对应的目标数据集合,从同步区块中获取同步交易数据对应的验证数据;区块标识用于表征所请求的同步区块的标识;同步交易数据包括交易详情数据,以及全量节点用于执行交易详情数据的智能合约的合约信息;目标数据集合包括全量节点基于合约信息在执行交易详情数据时所得到的读取数据或结果数据;
获取全量节点发送的同步交易数据、验证数据以及目标数据集合;
根据验证数据以及目标数据集合,验证同步交易数据以及交易详情数据对应的待验证结果数据的合法性。
应当理解,本申请实施例中所描述的计算机设备2000可执行前文图2、图5、图7以及图9所对应实施例中对数据同步方法的描述,也可执行前文图12所对应实施例中对数据同步装置2的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图2、图5、图7以及图9中各个步骤所提供的数据同步方法,具体可参见上述图2、图5、图7以及图9各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
上述计算机可读存储介质可以是前述任一实施例提供的数据同步装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital, SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可执行前文图2、图5、图7以及图9所对应实施例中对数据同步方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种数据同步方法,其特征在于,包括:
获取轻节点发送的数据同步请求;所述数据同步请求包括所述轻节点所请求的同步区块的区块标识;
根据所述区块标识获取所述同步区块中的同步交易数据;所述同步交易数据包括交易详情数据,以及用于执行所述交易详情数据的智能合约的合约信息;
从全量数据库中获取与所述同步交易数据对应的目标数据集合;所述目标数据集合包括基于所述合约信息在执行所述交易详情数据时所得到的读取数据或结果数据;
从所述同步区块中获取所述同步交易数据对应的验证数据,将所述同步交易数据、所述验证数据以及所述目标数据集合返回至所述轻节点,以使所述轻节点根据所述验证数据以及所述目标数据集合,验证所述同步交易数据以及所述交易详情数据对应的待验证结果数据的合法性。
2.根据权利要求1所述的方法,其特征在于,所述从全量数据库中获取与所述同步交易数据对应的目标数据集合,包括:
从所述全量数据库中获取与所述同步交易数据对应的候选数据集合;所述候选数据集合包括基于所述合约信息在执行所述交易详情数据时所得到的所述读取数据以及所述结果数据;
将所述读取数据的数据容量与所述结果数据的数据容量进行对比;
若所述读取数据的数据容量小于所述结果数据的数据容量,则将所述读取数据确定为所述目标数据集合;
若所述读取数据的数据容量等于或大于所述结果数据的数据容量,则将所述结果数据确定为所述目标数据集合。
3.根据权利要求1所述的方法,其特征在于,所述验证数据包括交易验证数据以及结果验证数据;
所述从所述同步区块中获取与所述同步交易数据对应的验证数据,包括:
从所述同步区块中获取交易状态树以及结果状态树;所述交易状态树是基于所述交易详情数据所生成的交易默克尔树;所述结果状态树是基于所述结果数据所生成的结果默克尔树;
基于所述交易详情数据从所述交易状态树中获取所述交易验证数据;
基于所述结果数据从所述结果状态树中获取所述结果验证数据。
4.根据权利要求1所述的方法,其特征在于,所述数据同步请求包括所述轻节点的节点标识;
所述将所述同步交易数据、所述验证数据以及所述目标数据集合返回至所述轻节点,包括:
根据所述节点标识确定所述轻节点针对所述同步交易数据的同步权限;所述同步权限包括同步合法权限以及同步非法权限;
若所述轻节点针对所述同步交易数据的同步权限为所述同步非法权限,则返回数据同步失败信息至所述轻节点;
若所述轻节点针对所述同步交易数据的同步权限为所述同步合法权限,则将所述同步交易数据、所述验证数据以及所述目标数据集合返回至所述轻节点。
5.根据权利要求1所述的方法,其特征在于,还包括:
获取待上链区块中的所述交易详情数据,调用用于执行所述交易详情数据的智能合约中的交易执行函数;
根据所述交易执行函数获取针对所述交易详情数据的历史交易数据,将所述历史交易数据确定为所述读取数据;
根据所述读取数据以及所述交易详情数据执行所述交易执行函数,得到所述交易详情数据的交易执行结果;
根据所述交易详情数据以及所述交易执行结果,对所述待上链区块进行上链处理。
6.根据权利要求5所述的方法,其特征在于,所述根据所述交易详情数据以及所述交易执行结果,对所述待上链区块进行上链处理,包括:
当所述交易详情数据以及所述交易执行结果均共识通过时,根据所述交易执行结果生成所述结果数据;
根据所述交易详情数据生成交易状态树,根据所述结果数据生成结果状态树,将所述交易状态树以及所述结果状态树添加至所述待上链区块;
将添加有所述交易状态树以及所述结果状态树的待上链区块确定为所述同步区块,将所述同步区块添加至区块链;
根据所述读取数据以及所述结果数据生成所述目标数据集合,将所述目标数据集合存储于所述全量数据库中。
7.根据权利要求6所述的方法,其特征在于,所述根据所述读取数据以及所述结果数据生成所述目标数据集合,将所述目标数据集合存储于所述全量数据库中,包括:
若将所述读取数据确定为所述目标数据集合,则将所述读取数据与所述交易详情数据关联存储于所述全量数据库中;
若将所述结果数据确定为所述目标数据集合,则将所述结果数据与所述交易详情数据关联存储于所述全量数据库中。
8.根据权利要求6所述的方法,其特征在于,所述根据所述读取数据以及所述结果数据生成所述目标数据集合,将所述目标数据集合存储于所述全量数据库中,包括:
将所述读取数据以及所述结果数据分别与历史数据集合进行对比;所述历史数据集合包括所述全量数据库中已存储的历史交易详情数据对应的历史读取数据或历史结果数据;
若存在与所述读取数据相同的历史数据集合,且存在与所述结果数据相同的历史数据集合,则对与所述读取数据相同的历史数据集合进行读标记处理,将携带读标记的历史数据集合确定为第一数据集合,对与所述结果数据相同的历史数据集合进行写标记处理,将携带写标记的历史数据集合确定为第二数据集合;
将所述第一数据集合以及所述第二数据集合确定为所述目标数据集合,将所述目标数据集合与所述交易详情数据关联存储于所述全量数据库中;
若不存在与所述读取数据相同的历史数据集合,且不存在与所述结果数据相同的历史数据集合,则将所述读取数据以及所述结果数据确定为所述目标数据集合,将所述目标数据集合与所述交易详情数据关联存储于所述全量数据库中。
9.一种数据同步方法,其特征在于,包括:
发送携带区块标识的数据同步请求至全量节点,以使所述全量节点根据所述区块标识获取同步区块中的同步交易数据,从全量数据库中获取与所述同步交易数据对应的目标数据集合,从所述同步区块中获取所述同步交易数据对应的验证数据;所述区块标识用于表征所请求的所述同步区块的标识;所述同步交易数据包括交易详情数据,以及所述全量节点用于执行所述交易详情数据的智能合约的合约信息;所述目标数据集合包括所述全量节点基于所述合约信息在执行所述交易详情数据时所得到的读取数据或结果数据;
获取全量节点发送的所述同步交易数据、所述验证数据以及所述目标数据集合;
根据所述验证数据以及所述目标数据集合,验证所述同步交易数据以及所述交易详情数据对应的待验证结果数据的合法性。
10.根据权利要求9所述的方法,其特征在于,所述根据所述验证数据以及所述目标数据集合,验证所述同步交易数据以及所述交易详情数据对应的待验证结果数据的合法性,包括:
若所述目标数据集合为所述结果数据,则将所述结果数据确定为所述交易详情数据对应的所述待验证结果数据,根据所述交易详情数据、所述待验证结果数据以及所述验证数据,得到第一待验证根哈希,根据所述第一待验证根哈希,验证所述同步交易数据以及所述待验证结果数据的合法性;
若所述目标数据集合为所述读取数据,则根据所述合约信息中的合约名称,确定执行所述交易详情数据的所述智能合约;
根据所述合约信息中的函数名称,确定所述智能合约所调用的用于执行所述交易详情数据的交易执行函数;
根据所述读取数据、所述交易执行函数、所述交易详情数据以及所述验证数据,得到第二待验证根哈希,根据所述第二待验证根哈希,验证所述同步交易数据以及所述待验证结果数据的合法性。
11.根据权利要求10所述的方法,其特征在于,所述验证数据包括交易验证数据以及结果验证数据;所述第一待验证根哈希包括待验证交易根哈希以及待验证结果根哈希;
所述根据所述交易详情数据、所述待验证结果数据以及所述验证数据,得到第一待验证根哈希,根据所述第一待验证根哈希,验证所述同步交易数据以及所述待验证结果数据的合法性,包括:
根据所述交易详情数据以及所述交易验证数据,得到所述待验证交易根哈希;
根据所述待验证结果数据以及所述结果验证数据,得到所述待验证结果根哈希;
获取针对所述同步区块的区块头,从所述区块头中获取已验证交易根哈希以及已验证结果根哈希;
根据所述待验证交易根哈希、所述待验证结果根哈希、所述已验证交易根哈希以及所述已验证结果根哈希,确定所述同步交易数据以及所述待验证结果数据的合法性。
12.根据权利要求11所述的方法,其特征在于,所述根据所述待验证交易根哈希、所述待验证结果根哈希、所述已验证交易根哈希以及所述已验证结果根哈希,确定所述同步交易数据以及所述待验证结果数据的合法性,包括:
将所述待验证交易根哈希与所述已验证交易根哈希进行对比,将所述待验证结果根哈希与所述已验证结果根哈希进行对比;
若所述待验证交易根哈希与所述已验证交易根哈希不相同,则确定所述同步交易数据为非法数据,若所述待验证交易根哈希与所述已验证交易根哈希相同,则确定所述同步交易数据为合法数据;
若所述待验证结果根哈希与所述已验证结果根哈希不相同,则确定所述待验证结果数据为非法数据,若所述待验证结果根哈希与所述已验证结果根哈希相同,则确定所述待验证结果数据为合法数据;
当所述同步交易数据为合法数据且所述待验证结果数据为合法数据时,将所述待验证结果数据与所述同步交易数据进行关联存储。
13.根据权利要求10所述的方法,其特征在于,所述验证数据包括交易验证数据以及结果验证数据;
所述根据所述读取数据、所述交易执行函数、所述交易详情数据以及所述验证数据,得到第二待验证根哈希,包括:
将所述读取数据以及所述交易详情数据输入所述交易执行函数,得到所述交易详情数据的待验证交易执行结果,根据所述待验证交易执行结果生成所述待验证结果数据;
根据所述待验证结果数据以及所述结果验证数据,得到待验证结果根哈希;
根据所述交易详情数据以及所述交易验证数据,得到待验证交易根哈希;
将所述待验证结果根哈希以及所述待验证交易根哈希确定为所述第二待验证根哈希。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1至13任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-13任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011544970.XA CN112287034B (zh) | 2020-12-24 | 2020-12-24 | 一种数据同步方法、设备以及计算机可读存储介质 |
PCT/CN2021/131168 WO2022134951A1 (zh) | 2020-12-24 | 2021-11-17 | 一种数据同步方法、装置、设备以及计算机可读存储介质 |
US18/073,520 US20230096457A1 (en) | 2020-12-24 | 2022-12-01 | Data synchronization method, apparatus, and device, and computer readable storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011544970.XA CN112287034B (zh) | 2020-12-24 | 2020-12-24 | 一种数据同步方法、设备以及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112287034A CN112287034A (zh) | 2021-01-29 |
CN112287034B true CN112287034B (zh) | 2021-04-02 |
Family
ID=74425176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011544970.XA Active CN112287034B (zh) | 2020-12-24 | 2020-12-24 | 一种数据同步方法、设备以及计算机可读存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230096457A1 (zh) |
CN (1) | CN112287034B (zh) |
WO (1) | WO2022134951A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287034B (zh) * | 2020-12-24 | 2021-04-02 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
CN113032485A (zh) * | 2021-03-16 | 2021-06-25 | 上海图灵加佳网络科技有限公司 | 区块链节点的数据存储装置与数据存储方法 |
CN113283889B (zh) * | 2021-06-04 | 2022-08-16 | 杭州复杂美科技有限公司 | 一种去中心化交易所系统、交易方法、设备及储存介质 |
CN113282353A (zh) * | 2021-06-08 | 2021-08-20 | 苏州沁游网络科技有限公司 | 一种数据验证方法、电子设备和存储介质 |
CN113556238B (zh) * | 2021-09-22 | 2022-02-15 | 深圳前海微众银行股份有限公司 | 区块验证方法 |
CN115860742B (zh) * | 2023-02-27 | 2023-06-27 | 北京溪塔科技有限公司 | 区块链中轻节点的数据同步方法、节点、存储介质及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109218079A (zh) * | 2018-08-16 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 一种区块链网络、部署方法及存储介质 |
WO2020045823A1 (ko) * | 2018-08-30 | 2020-03-05 | 에이치닥테크놀로지 주식회사 한국영업소 | 가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법 |
CN112085600A (zh) * | 2020-09-04 | 2020-12-15 | 芜湖明轩科技有限公司 | 区块链智能合约方法、电子设备、计算机可读存储介质及区块链系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3667534B1 (en) * | 2018-12-13 | 2021-09-29 | Schneider Electric Industries SAS | Time stamping of data in an offline node |
WO2020158973A1 (ko) * | 2019-01-30 | 2020-08-06 | 주식회사 아티프렌즈 | 가설 수락 프로토콜-2 방식의 블록체인 합의 시스템 및 방법 |
SG11201908978UA (en) * | 2019-03-04 | 2019-10-30 | Alibaba Group Holding Ltd | Updating blockchain world state merkle patricia trie subtree |
CN110138566A (zh) * | 2019-05-14 | 2019-08-16 | 数字钱包(北京)科技有限公司 | 验证方法、装置、电子设备及计算机可读存储介质 |
CN111159293B (zh) * | 2019-12-25 | 2023-06-20 | 杭州加密矩阵科技有限公司 | 一种基于轻节点技术的跨链信息验证方法 |
CN111209339B (zh) * | 2020-01-03 | 2021-09-14 | 腾讯科技(深圳)有限公司 | 区块同步方法、装置、计算机以及存储介质 |
CN111680049A (zh) * | 2020-05-15 | 2020-09-18 | 杭州趣链科技有限公司 | 一种基于区块链的物联网数据的处理方法及其处理装置 |
CN111769957B (zh) * | 2020-09-02 | 2020-12-15 | 百度在线网络技术(北京)有限公司 | 区块链跨链查询方法、装置、设备和存储介质 |
CN112883117B (zh) * | 2020-12-24 | 2022-03-15 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
CN112287034B (zh) * | 2020-12-24 | 2021-04-02 | 腾讯科技(深圳)有限公司 | 一种数据同步方法、设备以及计算机可读存储介质 |
-
2020
- 2020-12-24 CN CN202011544970.XA patent/CN112287034B/zh active Active
-
2021
- 2021-11-17 WO PCT/CN2021/131168 patent/WO2022134951A1/zh unknown
-
2022
- 2022-12-01 US US18/073,520 patent/US20230096457A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109218079A (zh) * | 2018-08-16 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 一种区块链网络、部署方法及存储介质 |
WO2020045823A1 (ko) * | 2018-08-30 | 2020-03-05 | 에이치닥테크놀로지 주식회사 한국영업소 | 가상기계를 이용한 스마트 컨트랙트 시스템 및 그 처리 방법 |
CN112085600A (zh) * | 2020-09-04 | 2020-12-15 | 芜湖明轩科技有限公司 | 区块链智能合约方法、电子设备、计算机可读存储介质及区块链系统 |
Non-Patent Citations (1)
Title |
---|
Blockchain for Data Science;Jiameng Liu et al;《Association for Computing Machinery》;20200331;第24-28页 * |
Also Published As
Publication number | Publication date |
---|---|
US20230096457A1 (en) | 2023-03-30 |
WO2022134951A1 (zh) | 2022-06-30 |
CN112287034A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112287034B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
US11265322B2 (en) | Data isolation in blockchain networks | |
CN111144881B (zh) | 对资产转移数据的选择性访问 | |
US20200250177A1 (en) | Systems, methods, and apparatuses for implementing an sql query and filter mechanism for blockchain stored data using distributed ledger technology (dlt) | |
US20200250295A1 (en) | Systems, methods, and apparatuses for protecting consumer data privacy using solid, blockchain and ipfs integration | |
CN112287033B (zh) | 一种数据同步方法、设备以及计算机可读存储介质 | |
TWI727594B (zh) | 塊鏈式帳本中的簽名驗證方法、系統、裝置及設備 | |
JP2020511017A (ja) | ブロックチェーンベースのデジタル証明書を実装するためのシステム及び方法 | |
CN112686671B (zh) | 基于区块链的智能合约部署方法、装置、设备以及介质 | |
US11126458B2 (en) | Method, apparatus, and electronic device for resource allocation based on blockchain | |
JP2020511018A (ja) | デジタル・マークを生成するためのシステム及び方法 | |
CN111066047A (zh) | 实现基于区块链的工作流 | |
CN111314172B (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN113259130B (zh) | 一种交易数据处理方法、装置、设备以及介质 | |
CN111339551B (zh) | 数据的验证方法及相关装置、设备 | |
CN111367923A (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN114971827A (zh) | 一种基于区块链的对账方法、装置、电子设备及存储介质 | |
JP2023530594A (ja) | 分散型データベースにおける許可されたイベント処理 | |
CN115114372A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN112069529B (zh) | 基于区块链的卷宗管理方法、装置、计算机以及存储介质 | |
WO2018219425A1 (en) | Method for validating and/or authenticating online curriculum vitae using blockchain distributed ledger technology | |
US20240163118A1 (en) | Blockchain-based data processing method, device, and readable storage medium | |
Davies | Enhanced scalability and privacy for blockchain data using Merklized transactions | |
CN117155953A (zh) | 一种数据处理方法、装置、计算机设备以及可读存储介质 | |
Joshi et al. | Secure Firmware Update Architecture for IoT Devices using Blockchain and PUF |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40038146 Country of ref document: HK |