CN112087530A - 一种将数据上传至区块链系统的方法、装置、设备及介质 - Google Patents
一种将数据上传至区块链系统的方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112087530A CN112087530A CN202011205809.XA CN202011205809A CN112087530A CN 112087530 A CN112087530 A CN 112087530A CN 202011205809 A CN202011205809 A CN 202011205809A CN 112087530 A CN112087530 A CN 112087530A
- Authority
- CN
- China
- Prior art keywords
- data
- queue
- hash value
- value corresponding
- block chain
- 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.)
- Granted
Links
Images
Classifications
-
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例公开了一种将数据上传至区块链系统的方法、装置、设备及介质,方案包括:业务服务器获取待上链的多个数据;确定各个数据在多个数据构成的数据队列中的队列标识,根据队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;将数据队列中的首个数据对应的第一队列哈希值,以及数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;将该数据队列发送至缓存服务器;缓存服务器将自身缓存的数据队列,发送至区块链节点;区块链节点获取到数据队列后,根据第一队列哈希值以及第二队列哈希值,对数据队列中的数据进行校验;若校验通过,则将数据队列中的数据存储至区块链系统。
Description
技术领域
本申请涉及数据存储技术领域,尤其涉及一种将数据上传至区块链系统的方法装置、设备及介质。
背景技术
随着计算机技术的发展,越来越多的用户采用网络进行数据存储,可有效节省用户的存储空间,且便于管理及查找。近些年来,区块链系统作为一种去中心化的数据库,由于其具有不可篡改性、可追溯性等特点,越来越多的用户将数据上传至区块链系统中进行保存。但由于区块链系统是基于节点的共识机制完成数据存储的,用户在将数据上传至区块链系统时,需要的时间较长。
因此,如何提高用户将数据上传至区块链系统的效率是目前亟待解决的问题。
发明内容
本说明书实施例提供一种将数据上传至区块链系统的方法、装置、设备及介质,以提高用户将数据上传至区块链系统的效率,提高用户体验性。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种将数据上传至区块链系统的方法,包括:
业务服务器获取待上链的多个数据;
所述业务服务器确定各个数据在所述多个数据构成的数据队列中的队列标识;
所述业务服务器根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
所述业务服务器将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
所述业务服务器将所述数据队列发送至缓存服务器;
所述缓存服务器将自身缓存的所述数据队列,发送至所述区块链节点;
所述区块链节点获取到所述数据队列后,根据所述第一队列哈希值以及所述第二队列哈希值,对所述数据队列中的数据进行校验;
若校验通过,则将所述数据队列中的数据存储至区块链系统。
本说明书实施例提供的一种数据上传方法,所述方法应用于业务服务器,所述方法包括:
获取待上链的多个数据;
确定各个数据在所述多个数据构成的数据队列中的队列标识;
根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
将所述数据队列发送至缓存服务器。
本说明书实施例提供的一种将数据存储至区块链系统的方法,所述方法应用于区块链节点,所述方法包括:
获取业务服务器发送的第一队列哈希值以及第二队列哈希值;所述第一队列哈希值是第一数据队列中的首个数据对应的队列哈希值,所述第二队列哈希值是所述第一数据队列中最后一个数据对应的队列哈希值;所述第一队列哈希值与所述第二队列哈希值是所述业务服务器根据待上链的多个数据构成的所述第一数据队列进行计算得到的;
获取缓存服务器发送的第二数据队列;
根据第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验;
若校验通过,则将所述第二数据队列中的数据存储至区块链系统。
本说明书实施例提供的一种将数据上传至区块链的系统,包括:业务服务器、缓存服务器和区块链节点;
所述业务服务器,用于获取待上链的多个数据;确定各个数据在所述多个数据构成的数据队列中的队列标识;根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;将所述数据队列发送至缓存服务器;
所述缓存服务器,用于将自身缓存的所述数据队列,发送至所述区块链节点;
所述区块链节点,用于获取到所述数据队列后,根据所述第一队列哈希值以及所述第二队列哈希值,对所述数据队列中的数据进行校验;若校验通过,则将所述数据队列中的数据存储至区块链系统。
本说明书实施例提供的一种数据上传装置,所述装置包括:
数据获取模块,用于获取待上链的多个数据;
队列标识确定模块,用于确定各个数据在所述多个数据构成的数据队列中的队列标识;
哈希值生成模块,用于根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
第一数据发送模块,用于将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
第二数据发送模块,用于将所述数据队列发送至缓存服务器。
本说明书实施例提供的一种将数据上传至区块链系统的装置,所述装置包括:
哈希值获取模块,用于获取业务服务器发送的第一队列哈希值以及第二队列哈希值;所述第一队列哈希值是第一数据队列中的首个数据对应的队列哈希值,所述第二队列哈希值是所述数据队列中最后一个数据对应的队列哈希值;所述第一队列哈希值与所述第二队列哈希值是所述业务服务器根据待上链的多个数据构成的所述第一数据队列进行计算得到的;
数据队列获取模块,用于获取缓存服务器发送的第二数据队列;
队列校验模块,用于根据第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验;
队列数据存储模块,用于若校验通过,则将所述第二数据队列中的数据存储至区块链系统。
本说明书实施例提供的一种业务服务器,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取待上链的多个数据;
确定各个数据在所述多个数据构成的数据队列中的队列标识;
根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
将所述数据队列发送至缓存服务器。
本说明书实施例提供的一种区块链节点,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取业务服务器发送的第一队列哈希值以及第二队列哈希值;所述第一队列哈希值是第一数据队列中的首个数据对应的队列哈希值,所述第二队列哈希值是所述第一数据队列中最后一个数据对应的队列哈希值;所述第一队列哈希值与所述第二队列哈希值是所述业务服务器根据待上链的多个数据构成的所述第一数据队列进行计算得到的;
获取缓存服务器发送的第二数据队列;
根据第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验;
若校验通过,则将所述第二数据队列中的数据存储至区块链系统。
本说明书实施例提供的一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现一种将数据上传至区块链系统的方法。
本说明书一个实施例实现了能够达到以下有益效果:
本说明书实施例中业务服务器可将数据队列的第一个和最后一个数据对应的哈希值上传至区块链系统,而由缓存服务器将数据队列上传至区块链系统,降低了业务服务器与区块链之间传输的数据量,可提高业务服务器上传数据的效率,可提高用户体验性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例中一种将数据上传至区块链系统的方法的场景示意图;
图2为本说明书实施例提供的一种将数据上传至区块链系统的方法的流程示意图;
图3为本说明书实施例中提供的双向队列的结构示意图;
图4为本说明书实施例提供的一种数据上传方法的流程示意图;
图5为本说明书实施例提供的一种将数据存储至区块链系统的方法的流程示意图;
图6为本说明书实施例提供的一种将数据上传至区块链的系统的结构示意图;
图7为本说明书实施例提供的一种数据上传装置的结构示意图;
图8为本说明书实施例提供的一种将数据存储至区块链系统的装置的结构示意图;
图9为本说明书实施例提供的一种将数据上传至区块链系统的设备的结构示意图。
具体实施方式
为使本说明书一个或多个实施例的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书一个或多个实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书一个或多个实施例保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
现有技术中,用户在利用区块链系统存储数据时,通常通过区块链中的节点,将数据上传至节点,该节点广播给其他节点,利用共识机制完成数据的存储。同样由于在区块链系统中存储数据时,需要每个节点都认证通过后才能将数据存储在区块链系统中,当存储大量数据时,也是需要每个节点对每条数据进行验证,从而也会影响数据的存储效率,用户需要等待的时间就会较长。
为了解决现有技术中的缺陷,本方案给出了以下实施例:
图1为本说明书实施例中一种将数据上传至区块链系统的方法的场景示意图。如图1所示,该场景中主要包括业务服务器1、缓存服务器2以及区块链系统3。
实际应用中,业务服务器1可以获取到用户输入的待存储数据,该待存储数据可以是用于存证的数据,例如,公检法等机构可以将证据存储到区块链系统中用于存证,工作人员可以通过数据存储端口,将数据提交给业务服务器,通过业务服务器将数据上传至区块链系统。现有技术中,通常是业务服务器将数据直接上传至区块链系统,用户需要等待数据上传的时间较长,当区块链系统为多个业务服务器存储大量数据时,用户等待的时间尤为明显,数据上链效率较低。
如图1所示,本说明书实施例中业务服务器1可以将获取到待上链数据先发送给缓存服务器2,缓存服务器2将该数据缓存于自身的缓存存储空间后,再与区块链系统3中的区块链节点进行交互,从而将业务服务器1发送至缓存服务器2的数据上传至区块链系统3。
由于缓存服务器2在缓存数据时不需要多个节点多次对数据进行验证,缓存服务器2缓存数据的速度较快,业务服务器1发送的数据可以被及时的存储,数据存储效率高,缓存服务器2再将数据发送给区块链系统3,将数据最终存储于区块链系统3中,就用户方面而言,减少了用户在上传数据的等待时间,提高了用户对数据进行存证的效率,可提高用户体验性。
并且,为了保证上传至区块链系统3中数据的真实性、是没有被篡改的,本说明书实施例中业务服务器1还可以将由待上链数据组成的队列的首个数据和最后一个数据对应的哈希值发送给区块链节点,利用该哈希值对缓存服务器发送的数据进行校验,只有校验通过的数据才能被存储至区块链系统,进而保证了上传至区块链系统3中数据的真实性。
接下来,将针对说明书实施例提供的一种将数据上传至区块链系统的方法结合附图进行具体说明:
图2为本说明书实施例提供的一种将数据上传至区块链系统的方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载于应用服务器的程序或应用客户端。
如图2所示,该流程可以包括以下步骤:
步骤202:业务服务器获取待上链的多个数据。
本说明书实施例中数据可以是用于存证的数据,例如,公检法等部门获得的证据等;业务服务器可以是提供存证业务的服务器,例如,提供存证服务的应用程序的服务器,用户可以通过该应用程序将数据先上传至业务服务器,再由业务服务器将这些数据上链。
步骤204:所述业务服务器确定各个数据在所述多个数据构成的数据队列中的队列标识。
业务服务器可以将获取的待上链数据排列为一个或者多个数据队列,为区分不同数据在队列中的位置可以为每个数据设定队列标识,同一队列中队列标识与数据一一对应。
步骤206:所述业务服务器根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值。
本说明书实施例中可以通过哈希运算得到每个数据对应的哈希值,其中为便于后续对数据的查询,可以根据数据的队列标识和数据的值生成数据对应的哈希值,由于该哈希值与数据的队列标识有关,因此在本说明书中又称为队列哈希值。
步骤208:所述业务服务器将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点。
实际应用中哈希值的数据量很小,本说明书实施例中业务服务器可以将数据队列中首个数据和最后一个数据对应的哈希值发送至区块链节点,而无需发送全部数据,业务服务器与区块链节点中间的数据传输的数量较少,传输效率高。
并且,本说明书实施例中每个数据对应的哈希值,与该数据在队列中的上一个数据的哈希值有关,这样可以使最后一个数据的哈希值具有对整个队列的数据进行校验的功能,详细内容将在后续进行说明。
步骤210:所述业务服务器将所述数据队列发送至缓存服务器。
步骤212:所述缓存服务器将自身缓存的所述数据队列,发送至所述区块链节点。
本说明书实施例中业务服务器可以将数据队列发送至缓存服务器,缓存服务器再将自身缓存的数据队列发送至区块链节点,利用缓存服务器将待上链数据发送给区块链节点,可减缓业务服务器的压力,提高业务服务器的处理效率。
步骤214:所述区块链节点获取到所述数据队列后,根据所述第一队列哈希值以及所述第二队列哈希值,对所述数据队列中的数据进行校验。
步骤216:若校验通过,则将所述数据队列中的数据存储至区块链系统。
本说明书实施例中获取数据队列的区块链节点可以根据获取的哈希值对数据进行校验,将校验通过的数据存储至区块链系统,可避免在缓存服务器中被篡改的数据存储至区块链系统,保证区块链系统中存证数据的真实性。
应当理解,本说明书一个或多个实施例所述的方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。
图2中的方法,本说明书实施例中业务服务器可将数据队列的第一个和最后一个数据对应的哈希值上传至区块链系统,而由缓存服务器将数据队列上传至区块链系统,降低了业务服务器与区块链之间传输的数据量,可提高业务服务器上传数据的效率,可提高用户体验性。
基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
可选的,本说明书实施例中所述多个数据可以以键值对的形式存在。
键值对是一种数据存在形式,具体可以表示为“key-value(键-值)”形式,本说明书实施例中key(键)可以表示为数据在队列中的标识,例如,可以为在队列中的顺序,也可以是数据对应的哈希值;value(值)可以是待上链数据本身;又如,key也可以是用户id,value是用户的某些配置数据。实际应用中可利用键值对中数据队列标识(键)与数据(值)的对应关系对数据进行管理,也便于后续对数据的查询。
可以理解的是,在实际应用中键值对的具体表示形式可以根据实际需求进行设定,这里对具体形式不作限定。
本说明书实施例中当数据以键值对的形式存在时,步骤204中确定各个数据在所述多个数据构成的数据队列中的队列标识,具体可以包括:
确定各个数据在所述键值对中的键。
本说明书实施例中步骤206中根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值,具体可以包括:
根据所述队列标识,确定各个数据在所述队列中的顺序;
基于所述顺序,对于所述数据队列中的首个数据,对所述首个数据进行队列哈希运算,得到所述首个数据对应的队列哈希值;
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
假设数据队列中包含10个数据,按照从1到10的顺序排列,第一个数据为A1,进行哈希运算得到对应的队列哈希值B1,第二个数据为A2,进行哈希运算得到队列哈希值B2,其中,B2=hash(B1+ A2),以此类推,第十个数据为A10对应的队列哈希值B10= hash(B9+A10)。
本说明书实施例中可以按照数据在数据队列中的顺序进行哈希运算,在对数据队列中的非首个数据进行哈希运算时可以将前一个数据的哈希值与该数据结合得到该数据的哈希值,使得到的哈希值具有一定的连贯性,从而使最后一个数据的哈希值具有对整个队列的数据进行校验的功能。
由于当前数据的哈希值是根据当前数据以及前一个数据的队列哈希值得到的,若当前数据被篡改了,得到的当前数据的哈希值发生变换,进而后一个数据的哈希值也会变换,进而数据队列中最后一个数据的哈希值也会发生变换,从而可以根据最后一个数据的哈希值判断该数据队列中的数据是否存在被篡改的数据。
本说明书实施例中步骤214中,根据所述第一队列哈希值以及所述第二队列哈希值,对所述数据队列中的数据进行校验,具体可以包括:
所述区块链节点对获取到的数据队列中的首个数据进行哈希运算,得到第三队列哈希值;
基于数据在所述数据队列中的顺序,以及各个数据的值,计算所述数据队列中最后一个数据对应的第四队列哈希值;
判断是否所述第三队列哈希值与所述第一队列哈希值相同,且所述第四队列哈希值与所述第二队列哈希值相同,得到判断结果;
若所述判断结果为是,则确定校验通过。
本说明书实施例中区块链节点可以根据从缓存服务器中获取到的数据队列中的数据,计算首个数据以及最后一个数据对应的哈希值,将计算得到的首尾数据的哈希值与接收到的业务服务器发送的第一队列哈希值和第二队列哈希值进行比较来确定缓存服务器发送的数据是否正确。
其中,基于数据在所述数据队列中的顺序,以及各个数据的值,计算所述数据队列中最后一个数据对应的第四队列哈希值,具体可以包括:
按照数据在所述数据队列中的顺序,依次计算各个数据对应的队列哈希值,进而计算所述数据队列中最后一个数据对应的第四队列哈希值。
其中,依次计算各个数据对应的队列哈希值,具体可以包括:
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
实际应用中,当第三队列哈希值与第一队列哈希值不一致时,可以确定缓存服务器发送给区块链节点的数据队列的首个数据发生了篡改;当数据队列的非首个数据发生篡改时,由于在计算数据的队列哈希值时,可以将前一个数据的队列哈希值用于计算当前数据的队列哈希值,也就会导致第四队列哈希值与第二队列哈希值不一致,因此,本说明书实施例中可以通过计算首尾数据的哈希值确定数据队列是否被篡改,无需对数据队列中全部数据进行验证,也可提高数据验证的效率。
在实际应用中,由于第三队列哈希值与第一队列哈希值不一致就可以确定缓存服务器发送给区块链节点的数据队列的首个数据发生了篡改,即可以确定区块链节点接收到的数据队列是存在问题的,之后可以不再计算数据队列中其他数据以及最后一个数据对应的哈希值,可减少区块链节点的计算量。
存储过程中可以触发共识机制,由其他区块链节点再次根据队列哈希值进行校验
为保证接收到的缓存服务器的数据的可信性,本说明书实施例中在存储数据的过程中可以触发区块链的共识机制,由其他区块链节点再次根据队列哈希值进行校验,其中,步骤216中将所述数据队列中的数据存储至区块链系统,具体可以包括:
所述区块链节点基于共识机制,将所述数据队列中的数据发送至另外的区块链节点;
由所述另外的区块链节点根据所述第一队列哈希值以及所述第二队列哈希值对所述数据队列中的数据进行校验。
为了便于理解,对区块链相关知识进行简单介绍:
区块链网络(Block Chain Network),是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。区块链网络是由多个节点组成的,每个节点向区块链网络广播信息或者区块时,所有节点都能接收到,并对接收到的区块进行验证。在对该区块验证通过的节点数在整个区块链网络总节点数中的占比大于预设阈值时,则确定为区块链网络对该区块验证通过,所有节点接收该区块并存储在本地的节点空间中。
其中,共识机制主要是指,由于区块链系统中没有一个中心,因此需要有一个预设的规则来指导各方节点在数据处理上达成一致,所有的数据交互都要按照严格的规则和共识进行。
分布式存储主要是指,区块链是一种点对点网络上的分布账本,每个参与的节点都将独立完整地存储写入区块数据信息。分布式存储区别于传统中心化存储的优势主要体现在两个方面:一、每个节点上备份数据信息,避免了由于单点故障导致的数据丢失。二、每个节点上的数据都独立存储,可以有效规避他人恶意篡改历史数据。
实际应用中,可以通过智能合约将数据存储至区块链系统。其中,智能合约允许在没有第三方的情况下进行可信交易,只要一方达成了协议预先设定的目标,合约将会自动执行交易。这些交易可追踪且不可逆转。智能合约具有透明可信、自动执行、强制履约的优点。
本说明书实施例中还可以采用智能合约对数据进行校验,接收到缓存服务器发送的数据的区块链节点,可以将接收到数据队列中的数据广播至另外的区块链节点,该另外的区块链节点也可以接收到第一队列哈希值以及第二队列哈希值,进而该另外的区块链节点可以根据第一队列哈希值以及第二队列哈希值对数据队列中的数据进行校验。
考虑到实际应用中可能存在数据缺失的情况,本说明书实施例中的数据队列可以为双向队列。
其中,双向队列可以理解为可以在两端进行插入和/或删除等操作的队列。本说明书实施例中可以将与数据相邻的前后两数据的数据标识插入到数据的队列中,数据队列中的数据可以包含前一个和/或后一个数据的标识,从而当区块链节点接收到数据队列中的任意一个数据时,都可以根据该数据中包含的前后数据的标识,确定与该数据相邻的数据,进而依次从缓存服务器中获得完整的数据队列,使区块链节点可以从数据队列中的任一数据开始获取队列数据,即使最初获取的不是数据队列的第一个数据,也可以获得完成的数据队列。
图3为本说明书实施例中提供的双向队列的结构示意图,如图3所示,该双向队列中可以包含待上链的数据301,该数据对应的队列哈希值302,以及前一个数据的数据标识303和后一个数据的数据标识304。实际应用中,区块链节点接收到待上链数据301后,可以根据双向队列中的前一个数据的数据标识303确定数据队列中位于数据301之前的一个数据,进而可以获取数据301之前的所有数据,并且,还可以根据双向队列中的后一个数据的数据标识304确定数据队列中位于数据301之后的一个数据,进而可以获取数据301之后的所有数据,最终可以获得整个数据队列中的数据。
如果数据队列是单向队列,则如果传输过程中,第一个数据丢失,区块链节点无法知道数据队列中第一个数据的队列标识,也就无法主动要求缓存服务器再次发送第一个数据,进而也就不能获取整个数据队列。本说明书实施例中数据队列采用双向队列,可提高区块链节点获取数据队列的成功率。
例如,数据队列中包含5个数据,业务服务器中以数据标识-数据值的对应形式存储有该数据队列,且每个数据中还记载有前一个和/或一个数据的数据标识,如第1个数据中包含第2个数据的数据标识,第2个数据中包含第1个以及第3个数据的数据标识,以此类推。假设区块链节点先获得了第3个数据,而第3个数据中包含了第2个数据和第4个数据的数据标识,进而可以根据第3个数据确定第2个数据和第4个数据,最终可以依次从缓存服务器中获得完整的5个数据的队列数据。
基于同样的思路,本说明书实施例还提供了一种应用于业务服务器的数据上传方法,该方法的执行主体可以是提供业务服务的业务服务器。图4为本说明书实施例提供的一种数据上传方法的流程示意图,如图4所示,该方法包括:
步骤402:获取待上链的多个数据;
步骤404:确定各个数据在所述多个数据构成的数据队列中的队列标识;
步骤406:根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
步骤408:将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
步骤410:将所述数据队列发送至缓存服务器。
本说明书实施例中业务服务器可以将数据队列的第一个和最后一个数据对应的哈希值上传至区块链系统,而将数据队列发送至缓存服务器,以便缓存服务器将数据队列上传至区块链系统,可降低业务服务器与区块链系统之间传输的数据量,提高业务服务器的上链效率,可提高用户体验性。
可选的,所述多个数据以键值对的形式存在。
本实施例步骤404中确定各个数据在所述多个数据构成的数据队列中的队列标识,具体可以包括:
确定各个数据在所述键值对中的键。
本实施例步骤406中根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值,具体可以包括:
根据所述队列标识,确定各个数据在所述队列中的顺序;
基于所述顺序,对于所述数据队列中的首个数据,对所述首个数据进行队列哈希运算,得到所述首个数据对应的队列哈希值;
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
本说明书实施例中数据队列还可以为双向队列,使区块链节点可以最初接收到数据队列中的任一数据,也可以根据该数据对应的前后数据标识,依次从缓存服务器中获取到完整的队列。
基于同样的思路,本说明书实施例还提供了一种应用于区块链节点的将数据存储至区块链系统的方法,图5为本说明书实施例提供的一种将数据存储至区块链系统的方法的流程示意图,如图5所示,该方法可以包括:
步骤502:获取业务服务器发送的第一队列哈希值以及第二队列哈希值;所述第一队列哈希值是第一数据队列中的首个数据对应的队列哈希值,所述第二队列哈希值是所述第一数据队列中最后一个数据对应的队列哈希值;所述第一队列哈希值与所述第二队列哈希值是所述业务服务器根据待上链的多个数据构成的所述第一数据队列进行计算得到的;
步骤504:获取缓存服务器发送的第二数据队列;
实际应用中,由于缓存服务器通常是中心式存储器,其存在被攻击的可能性较高,存储在缓存服务器中的数据存在被篡改的可能,这里将业务服务器发送给缓存服务器的数据队列称为第一数据队列,将区块链系统从缓存服务器中获取的数据队列称为第二数据队列,以便后续对数据队列校验的描述,当缓存服务器中存储的数据没有被篡改时,第一数据队列与第二数据队列一致。
步骤506:根据第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验。
实际应用中可以通过智能合约对数据进行校验。
步骤508:若校验通过,则将所述第二数据队列中的数据存储至区块链系统。
当校验通过时,可表示缓存服务器中存储的数据队列是安全的,可以将其上传至区块链系统,可保证区块链系统中数据的可信性。
本说明书实施例中,区块链系统的区块链节点可以从缓存服务器获取待上链的数据队列,并根据业务服务器发送的数据队列的第一个和最后一个数据对应的队列哈希值对数据队列进行验证,可提高业务服务器对数据的处理效率,同时可确保缓存服务器发送给区块链节点的数据的可信性。
本实施例步骤506中根据所述第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验,具体可以包括:
对所述第二数据队列中的首个数据进行哈希运算,得到第三队列哈希值;
基于数据在所述第二数据队列中的顺序,以及各个数据的值,计算所述第二数据队列中最后一个数据对应的第四队列哈希值;
判断是否所述第三队列哈希值与所述第一队列哈希值相同,且所述第四队列哈希值与所述第二队列哈希值相同,得到判断结果;
若所述判断结果为是,则确定校验通过。
其中,上述基于数据在所述第二数据队列中的顺序,以及各个数据的值,计算所述第二数据队列中最后一个数据对应的第四队列哈希值,具体可以包括:
按照数据在所述第二数据队列中的顺序,依次计算各个数据对应的队列哈希值,进而计算所述第二数据队列中最后一个数据对应的第四队列哈希值。
其中,上述依次计算各个数据对应的队列哈希值,具体可以包括:
对于所述第二数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述第二数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
本实施例步骤508中将所述第二数据队列中的数据存储至区块链系统,具体可以包括:
基于共识机制,将所述第二数据队列中的数据发送至另外的区块链节点;
由所述另外的区块链节点根据所述第一队列哈希值以及所述第二队列哈希值对所述第二数据队列中的数据进行校验。
本说明书实施例中第一数据队列与所述第二数据队列均可以为双向队列。
基于同样的思路,本说明书实施例还提供了上述图2方法对应的将数据上传至区块链的系统。图6为本说明书实施例提供的一种将数据上传至区块链的系统的结构示意图。如图6所示,该系统可以包括:业务服务器602、缓存服务器604和区块链节点606;
其中,所述业务服务器602,用于获取待上链的多个数据;确定各个数据在所述多个数据构成的数据队列中的队列标识;根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;将所述数据队列发送至缓存服务器;
所述缓存服务器604,用于将自身缓存的所述数据队列,发送至所述区块链节点;
所述区块链节点606,用于获取到所述数据队列后,根据所述第一队列哈希值以及所述第二队列哈希值,对所述数据队列中的数据进行校验;若校验通过,则将所述数据队列中的数据存储至区块链系统。
可选的,所述多个数据可以以键值对的形式存在。
可选的,所述根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值,具体可以包括:
根据所述队列标识,确定各个数据在所述队列中的顺序;
基于所述顺序,对于所述数据队列中的首个数据,对所述首个数据进行队列哈希运算,得到所述首个数据对应的队列哈希值;
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
基于同样的思路,本说明书实施例还提供了上述图4方法对应的装置。图7为本说明书实施例提供的一种数据上传装置的结构示意图。如图7所示,该装置可以包括:
数据获取模块702,用于获取待上链的多个数据;
队列标识确定模块704,用于确定各个数据在所述多个数据构成的数据队列中的队列标识;
哈希值生成模块706,用于根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
第一数据发送模块708,用于将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
第二数据发送模块710,用于将所述数据队列发送至缓存服务器。
可选的,所述哈希值生成模块706,具体可以用于:
根据所述队列标识,确定各个数据在所述队列中的顺序;
基于所述顺序,对于所述数据队列中的首个数据,对所述首个数据进行队列哈希运算,得到所述首个数据对应的队列哈希值;
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
基于同样的思路,本说明书实施例还提供了上述图5方法对应的装置。图8为本说明书实施例提供的一种将数据存储至区块链系统的装置的结构示意图。如图8所示,该装置可以包括:
哈希值获取模块802,用于获取业务服务器发送的第一队列哈希值以及第二队列哈希值;所述第一队列哈希值是第一数据队列中的首个数据对应的队列哈希值,所述第二队列哈希值是所述第一数据队列中最后一个数据对应的队列哈希值;所述第一队列哈希值与所述第二队列哈希值是所述业务服务器根据待上链的多个数据构成的所述第一数据队列进行计算得到的;
数据队列获取模块804,用于获取缓存服务器发送的第二数据队列;
队列校验模块806,用于根据第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验;
队列数据存储模块808,用于若校验通过,则将所述第二数据队列中的数据存储至区块链系统。
可选的,所述队列校验模块806,具体可以用于:
对所述第二数据队列中的首个数据进行哈希运算,得到第三队列哈希值;
基于数据在所述第二数据队列中的顺序,以及各个数据的值,计算所述第二数据队列中最后一个数据对应的第四队列哈希值;
判断是否所述第三队列哈希值与所述第一队列哈希值相同,且所述第四队列哈希值与所述第二队列哈希值相同,得到判断结果;
若所述判断结果为是,则确定校验通过。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图9为本说明书实施例提供的一种将数据上传至区块链系统的设备的结构示意图,该设备可以是上述将数据上传方法中涉及的业务服务器、缓存服务器或区块链节点。
如图9所示,该设备900可以包括:
至少一个处理器910;以及,
与所述至少一个处理器通信连接的存储器930;其中,
所述存储器930存储有可被所述至少一个处理器910执行的指令920,当该设备为业务服务器时,所述指令被所述至少一个处理器910执行,以使所述至少一个处理器910能够:
获取待上链的多个数据;
确定各个数据在所述多个数据构成的数据队列中的队列标识;
根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
将所述数据队列发送至缓存服务器。
同理,当图9所示的设备为区块链节点时:
所述指令被所述至少一个处理器910执行,以使所述至少一个处理器910能够:
获取业务服务器发送的第一队列哈希值以及第二队列哈希值;所述第一队列哈希值是第一数据队列中的首个数据对应的队列哈希值,所述第二队列哈希值是所述第一数据队列中最后一个数据对应的队列哈希值;所述第一队列哈希值与所述第二队列哈希值是所述业务服务器根据待上链的多个数据构成的所述第一数据队列进行计算得到的;
获取缓存服务器发送的第二数据队列;
根据第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验;
若校验通过,则将所述第二数据队列中的数据存储至区块链系统。
基于同样的思路,本说明书实施例还提供了上述方法对应的计算机可读介质。计算机可读介质上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现上述方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于图8所示的设备而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字符系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字符助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字符多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (30)
1.一种将数据上传至区块链系统的方法,包括:
业务服务器获取待上链的多个数据;
所述业务服务器确定各个数据在所述多个数据构成的数据队列中的队列标识;
所述业务服务器根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
所述业务服务器将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
所述业务服务器将所述数据队列发送至缓存服务器;
所述缓存服务器将自身缓存的所述数据队列,发送至所述区块链节点;
所述区块链节点获取到所述数据队列后,根据所述第一队列哈希值以及所述第二队列哈希值,对所述数据队列中的数据进行校验;
若校验通过,则将所述数据队列中的数据存储至区块链系统。
2.根据权利要求1所述的方法,所述多个数据以键值对的形式存在。
3.根据权利要求2所述的方法,所述确定各个数据在所述多个数据构成的数据队列中的队列标识,具体包括:
确定各个数据在所述键值对中的键。
4.根据权利要求1所述的方法,所述根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值,具体包括:
根据所述队列标识,确定各个数据在所述队列中的顺序;
基于所述顺序,对于所述数据队列中的首个数据,对所述首个数据进行队列哈希运算,得到所述首个数据对应的队列哈希值;
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
5.根据权利要求1所述的方法,所述根据所述第一队列哈希值以及所述第二队列哈希值,对所述数据队列中的数据进行校验,具体包括:
所述区块链节点对获取到的数据队列中的首个数据进行哈希运算,得到第三队列哈希值;
基于数据在所述数据队列中的顺序,以及各个数据的值,计算所述数据队列中最后一个数据对应的第四队列哈希值;
判断是否所述第三队列哈希值与所述第一队列哈希值相同,且所述第四队列哈希值与所述第二队列哈希值相同,得到判断结果;
若所述判断结果为是,则确定校验通过。
6.根据权利要求5所述的方法,所述基于数据在所述数据队列中的顺序,以及各个数据的值,计算所述数据队列中最后一个数据对应的第四队列哈希值,具体包括:
按照数据在所述数据队列中的顺序,依次计算各个数据对应的队列哈希值,进而计算所述数据队列中最后一个数据对应的第四队列哈希值。
7.根据权利要求6所述的方法,所述依次计算各个数据对应的队列哈希值,具体包括:
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
8.根据权利要求1所述的方法,所述将所述数据队列中的数据存储至区块链系统,具体包括:
所述区块链节点基于共识机制,将所述数据队列中的数据发送至另外的区块链节点;
由所述另外的区块链节点根据所述第一队列哈希值以及所述第二队列哈希值对所述数据队列中的数据进行校验。
9.根据权利要求1所述的方法,所述数据队列为双向队列。
10.一种数据上传方法,所述方法应用于业务服务器,所述方法包括:
获取待上链的多个数据;
确定各个数据在所述多个数据构成的数据队列中的队列标识;
根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
将所述数据队列发送至缓存服务器。
11.根据权利要求10所述的方法,所述多个数据以键值对的形式存在。
12.根据权利要求11所述的方法,所述确定各个数据在所述多个数据构成的数据队列中的队列标识,具体包括:
确定各个数据在所述键值对中的键。
13.根据权利要求10所述的方法,所述根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值,具体包括:
根据所述队列标识,确定各个数据在所述队列中的顺序;
基于所述顺序,对于所述数据队列中的首个数据,对所述首个数据进行队列哈希运算,得到所述首个数据对应的队列哈希值;
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
14.根据权利要求10所述的方法,所述数据队列为双向队列。
15.一种将数据存储至区块链系统的方法,所述方法应用于区块链节点,所述方法包括:
获取业务服务器发送的第一队列哈希值以及第二队列哈希值;所述第一队列哈希值是第一数据队列中的首个数据对应的队列哈希值,所述第二队列哈希值是所述第一数据队列中最后一个数据对应的队列哈希值;所述第一队列哈希值与所述第二队列哈希值是所述业务服务器根据待上链的多个数据构成的所述第一数据队列进行计算得到的;
获取缓存服务器发送的第二数据队列;
根据第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验;
若校验通过,则将所述第二数据队列中的数据存储至区块链系统。
16.根据权利要求15所述的方法,所述根据所述第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验,具体包括:
对所述第二数据队列中的首个数据进行哈希运算,得到第三队列哈希值;
基于数据在所述第二数据队列中的顺序,以及各个数据的值,计算所述第二数据队列中最后一个数据对应的第四队列哈希值;
判断是否所述第三队列哈希值与所述第一队列哈希值相同,且所述第四队列哈希值与所述第二队列哈希值相同,得到判断结果;
若所述判断结果为是,则确定校验通过。
17.根据权利要求16所述的方法,所述基于数据在所述第二数据队列中的顺序,以及各个数据的值,计算所述第二数据队列中最后一个数据对应的第四队列哈希值,具体包括:
按照数据在所述第二数据队列中的顺序,依次计算各个数据对应的队列哈希值,进而计算所述第二数据队列中最后一个数据对应的第四队列哈希值。
18.根据权利要求17所述的方法,所述依次计算各个数据对应的队列哈希值,具体包括:
对于所述第二数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述第二数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
19.根据权利要求15所述的方法,所述将所述第二数据队列中的数据存储至区块链系统,具体包括:
基于共识机制,将所述第二数据队列中的数据发送至另外的区块链节点;
由所述另外的区块链节点根据所述第一队列哈希值以及所述第二队列哈希值对所述第二数据队列中的数据进行校验。
20.根据权利要求15所述的方法,所述第一数据队列与所述第二数据队列均为双向队列。
21.一种将数据上传至区块链的系统,包括:业务服务器、缓存服务器和区块链节点;
所述业务服务器,用于获取待上链的多个数据;确定各个数据在所述多个数据构成的数据队列中的队列标识;根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;将所述数据队列发送至缓存服务器;
所述缓存服务器,用于将自身缓存的所述数据队列,发送至所述区块链节点;
所述区块链节点,用于获取到所述数据队列后,根据所述第一队列哈希值以及所述第二队列哈希值,对所述数据队列中的数据进行校验;若校验通过,则将所述数据队列中的数据存储至区块链系统。
22.根据权利要求21所述的系统,所述多个数据以键值对的形式存在。
23.根据权利要求21所述的系统,所述根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值,具体包括:
根据所述队列标识,确定各个数据在所述队列中的顺序;
基于所述顺序,对于所述数据队列中的首个数据,对所述首个数据进行队列哈希运算,得到所述首个数据对应的队列哈希值;
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
24.一种数据上传装置,所述装置包括:
数据获取模块,用于获取待上链的多个数据;
队列标识确定模块,用于确定各个数据在所述多个数据构成的数据队列中的队列标识;
哈希值生成模块,用于根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
第一数据发送模块,用于将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
第二数据发送模块,用于将所述数据队列发送至缓存服务器。
25.根据权利要求24所述的装置,所述哈希值生成模块,具体用于:
根据所述队列标识,确定各个数据在所述队列中的顺序;
基于所述顺序,对于所述数据队列中的首个数据,对所述首个数据进行队列哈希运算,得到所述首个数据对应的队列哈希值;
对于所述数据队列中除所述首个数据的任意一个数据,基于所述任意一个数据的值,以及所述数据队列中所述任意一个数据的前一个数据的队列哈希值进行求和,对求和结果进行哈希运算,得到所述任意一个数据的队列哈希值。
26.一种将数据存储至区块链系统的装置,所述装置包括:
哈希值获取模块,用于获取业务服务器发送的第一队列哈希值以及第二队列哈希值;所述第一队列哈希值是第一数据队列中的首个数据对应的队列哈希值,所述第二队列哈希值是所述第一数据队列中最后一个数据对应的队列哈希值;所述第一队列哈希值与所述第二队列哈希值是所述业务服务器根据待上链的多个数据构成的所述第一数据队列进行计算得到的;
数据队列获取模块,用于获取缓存服务器发送的第二数据队列;
队列校验模块,用于根据第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验;
队列数据存储模块,用于若校验通过,则将所述第二数据队列中的数据存储至区块链系统。
27.根据权利要求26所述的装置,所述队列校验模块,具体用于:
对所述第二数据队列中的首个数据进行哈希运算,得到第三队列哈希值;
基于数据在所述第二数据队列中的顺序,以及各个数据的值,计算所述第二数据队列中最后一个数据对应的第四队列哈希值;
判断是否所述第三队列哈希值与所述第一队列哈希值相同,且所述第四队列哈希值与所述第二队列哈希值相同,得到判断结果;
若所述判断结果为是,则确定校验通过。
28.一种业务服务器,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取待上链的多个数据;
确定各个数据在所述多个数据构成的数据队列中的队列标识;
根据所述队列标识,以及各个数据的值,生成各个数据对应的队列哈希值;
将所述数据队列中的首个数据对应的第一队列哈希值,以及所述数据队列中最后一个数据对应的第二队列哈希值,发送至区块链节点;
将所述数据队列发送至缓存服务器。
29.一种区块链节点,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取业务服务器发送的第一队列哈希值以及第二队列哈希值;所述第一队列哈希值是第一数据队列中的首个数据对应的队列哈希值,所述第二队列哈希值是所述第一数据队列中最后一个数据对应的队列哈希值;所述第一队列哈希值与所述第二队列哈希值是所述业务服务器根据待上链的多个数据构成的所述第一数据队列进行计算得到的;
获取缓存服务器发送的第二数据队列;
根据第一队列哈希值以及所述第二队列哈希值,对所述第二数据队列中的数据进行校验;
若校验通过,则将所述第二数据队列中的数据存储至区块链系统。
30.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现权利要求1至20中任一项所述的将数据上传至区块链系统的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011205809.XA CN112087530B (zh) | 2020-11-02 | 2020-11-02 | 一种将数据上传至区块链系统的方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011205809.XA CN112087530B (zh) | 2020-11-02 | 2020-11-02 | 一种将数据上传至区块链系统的方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112087530A true CN112087530A (zh) | 2020-12-15 |
CN112087530B CN112087530B (zh) | 2022-06-03 |
Family
ID=73731079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011205809.XA Active CN112087530B (zh) | 2020-11-02 | 2020-11-02 | 一种将数据上传至区块链系统的方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112087530B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112989398A (zh) * | 2021-05-18 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 区块链网络的数据处理方法、装置、计算机设备和介质 |
CN113434520A (zh) * | 2021-08-27 | 2021-09-24 | 国家电网有限公司 | 基于区块链的数据存储和查询方法、装置、设备和介质 |
CN113992600A (zh) * | 2020-12-23 | 2022-01-28 | 技象科技(浙江)有限公司 | 基于缓存队列的多速率模式数据发送控制方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110598446A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的测试方法、装置、存储介质和计算机设备 |
CN110633323A (zh) * | 2019-09-16 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 业务数据存储方法、装置、存储介质和计算机设备 |
CN110879903A (zh) * | 2019-11-20 | 2020-03-13 | 北京海益同展信息科技有限公司 | 证据存储方法、证据验证方法及装置、设备和介质 |
CN111125786A (zh) * | 2019-12-26 | 2020-05-08 | 中国银行股份有限公司 | 基于区块链的债券配售数据存储方法、装置及系统 |
CN111382463A (zh) * | 2020-04-02 | 2020-07-07 | 中国工商银行股份有限公司 | 基于流数据的区块链系统及方法 |
WO2020169124A2 (en) * | 2020-06-08 | 2020-08-27 | Alipay Labs (singapore) Pte. Ltd. | Distributed storage of custom clearance data |
CN111629051A (zh) * | 2020-05-26 | 2020-09-04 | 北京邮电大学 | 一种用于工业互联网标识解析系统的性能优化方法及装置 |
CN111639140A (zh) * | 2020-06-08 | 2020-09-08 | 杭州复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
-
2020
- 2020-11-02 CN CN202011205809.XA patent/CN112087530B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110598446A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的测试方法、装置、存储介质和计算机设备 |
CN110633323A (zh) * | 2019-09-16 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 业务数据存储方法、装置、存储介质和计算机设备 |
CN110879903A (zh) * | 2019-11-20 | 2020-03-13 | 北京海益同展信息科技有限公司 | 证据存储方法、证据验证方法及装置、设备和介质 |
CN111125786A (zh) * | 2019-12-26 | 2020-05-08 | 中国银行股份有限公司 | 基于区块链的债券配售数据存储方法、装置及系统 |
CN111382463A (zh) * | 2020-04-02 | 2020-07-07 | 中国工商银行股份有限公司 | 基于流数据的区块链系统及方法 |
CN111629051A (zh) * | 2020-05-26 | 2020-09-04 | 北京邮电大学 | 一种用于工业互联网标识解析系统的性能优化方法及装置 |
WO2020169124A2 (en) * | 2020-06-08 | 2020-08-27 | Alipay Labs (singapore) Pte. Ltd. | Distributed storage of custom clearance data |
CN111639140A (zh) * | 2020-06-08 | 2020-09-08 | 杭州复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992600A (zh) * | 2020-12-23 | 2022-01-28 | 技象科技(浙江)有限公司 | 基于缓存队列的多速率模式数据发送控制方法及装置 |
CN112989398A (zh) * | 2021-05-18 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 区块链网络的数据处理方法、装置、计算机设备和介质 |
CN113434520A (zh) * | 2021-08-27 | 2021-09-24 | 国家电网有限公司 | 基于区块链的数据存储和查询方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112087530B (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107040585B (zh) | 一种业务校验的方法及装置 | |
CN112087530B (zh) | 一种将数据上传至区块链系统的方法、装置、设备及介质 | |
CN107395665B (zh) | 一种区块链业务受理及业务共识方法及装置 | |
CN110825420B (zh) | 分布式集群的配置参数更新方法、装置、设备及存储介质 | |
US10985919B2 (en) | Performing map iterations in a blockchain-based system | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN111967849A (zh) | 一种任务处理流程编排方法、装置及电子设备 | |
US11188560B2 (en) | Synchronizing object in local object storage node | |
CN109614262B (zh) | 业务校验方法、装置及计算机可读存储介质 | |
US20230074102A1 (en) | Method and apparatus for processing data based on block chain, device and readable storage medium | |
JP2019523952A (ja) | ストリーミングデータ分散処理方法及び装置 | |
CN112214519B (zh) | 一种数据查询方法、装置、设备及可读介质 | |
CN111444192B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
WO2020098819A2 (en) | Performing map iterations in a blockchain-based system | |
CN111400170A (zh) | 一种数据权限测试方法及装置 | |
CN110442601B (zh) | 一种Openstack镜像数据并行加速的方法和装置 | |
CN114281893A (zh) | 一种区块链交易的处理方法、装置及设备 | |
CN115730935A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN115129728A (zh) | 一种文件校验的方法及装置 | |
US10853892B2 (en) | Social networking relationships processing method, system, and storage medium | |
CN108710658B (zh) | 一种数据记录的存储方法及装置 | |
CN116955355A (zh) | 一种区块数据处理方法、装置及电子设备 | |
CN111460436B (zh) | 一种基于区块链的非结构化数据操作方法和系统 | |
CN113673844A (zh) | 一种信息反馈方法、装置及设备 | |
CN111949738A (zh) | 基于区块链的数据存储去重方法、终端设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40043010 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |