CN114356236A - 区块链数据存储和读取方法、区块链数据存取系统 - Google Patents

区块链数据存储和读取方法、区块链数据存取系统 Download PDF

Info

Publication number
CN114356236A
CN114356236A CN202111672146.7A CN202111672146A CN114356236A CN 114356236 A CN114356236 A CN 114356236A CN 202111672146 A CN202111672146 A CN 202111672146A CN 114356236 A CN114356236 A CN 114356236A
Authority
CN
China
Prior art keywords
data
memory
chain
data block
link
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.)
Pending
Application number
CN202111672146.7A
Other languages
English (en)
Inventor
蔡亮
邱炜伟
姚文豪
汪小益
李伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202111672146.7A priority Critical patent/CN114356236A/zh
Publication of CN114356236A publication Critical patent/CN114356236A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种区块链数据存储和读取方法、区块链数据存取系统,其中,所述区块链数据存储方法包括:获取区块链上待存储的数据块和所述数据块对应的数据摘要;在确定所述数据块满足链外存储条件的情况下,确定用于存储所述数据块的至少一个链外存储器;将所述数据块存储于所述至少一个链外存储器,并在所述区块链上关联所述数据摘要和所述至少一个链外存储器的标识信息。

Description

区块链数据存储和读取方法、区块链数据存取系统
技术领域
本申请涉及区块链技术领域,特别是涉及区块链数据存储和读取方法、区块链数据存取系统。
背景技术
区块链具有共识特性,因此,在区块链上产生数据之后,基于共识特性,需要将产生的数据同步至每个区块链节点上。随着数据量的增大,每个区块链的数据存储压力都很大,有研究表明,在区块链节点的数据存储量达到TB数量级的情况下,区块链节点的性能受到影响。而相关技术中,还没有能够很好地缓解区块链数据存储压力的方式。
发明内容
本申请实施例提供了一种区块链数据存储和读取方法、区块链数据存取系统,以至少解决相关技术中区块链中存储容量不足的问题。
第一方面,本申请实施例提供了一种区块链数据存储方法,包括:
获取区块链上待存储的数据块和所述数据块对应的数据摘要;
在确定所述数据块满足链外存储条件的情况下,确定用于存储所述数据块的至少一个链外存储器;
将所述数据块存储于所述至少一个链外存储器,并在所述区块链上关联所述数据摘要和所述至少一个链外存储器的标识信息。
本申请各个实施例提供的区块链数据存储方法,通过在区块链之外设置至少一个链外存储器,用于存储区块链上所生成的数据块,并在所述区块链上关联所述数据摘要和所述至少一个链外存储器的标识信息,这样,可以在需要根据所述数据摘要查询到对应的数据块。基于上述数据存储机制,可以大大缓解区块链的存储压力,缓解区块链中存储容量不足的问题,进一步提升区块链的使用价值。
可选的,在本申请的一个实施例中,所述链外存储条件包括:所述数据块大于第一预设阈值,和/或所述数据块的重要度小于第二预设阈值。
可选的,在本申请的一个实施例中,所述确定用于存储所述数据块的至少一个链外存储器,包括:
根据所述数据块的重要度确定用于存储所述数据块的链外存储器的数量,所述链外存储器的数量与所述数据块的重要度正相关。
可选的,在本申请的一个实施例中,所述确定用于存储所述数据块的至少一个链外存储器,包括:
获取对所述数据块的存储成本预算以及在所述区块链上已注册的各个链外存储器的存储成本;
根据所述存储成本预算和所述各个链外存储器的存储成本,从所述已注册的各个链外存储器中选取用于存储所述数据块的至少一个链外存储器,并确定分别在所述至少一个链外存储器上存储所述数据块的次数。
可选的,在本申请的一个实施例中,所述将所述数据块存储于所述至少一个链外存储器,包括:
调用至少一个预言机将所述数据块存储至所述至少一个链外存储器,其中,每个所述预言机将所述数据块存储至所述至少一个链外存储器中的至少一个。
可选的,在本申请的一个实施例中,所述在所述区块链上关联所述数据摘要和所述至少一个链外存储器的标识信息,包括:
在所述区块链所对应的智能合约上关联存储所述数据摘要和所述至少一个链外存储器的标识信息,其中,所述链外存储器的标识信息与所述链外存储器的访问接口信息相关联。
第二方面,本申请实施例提供了一种区块链数据读取方法,包括:
获取待查询的数据摘要;
在确定所述数据摘要所对应的数据块存储于至少一个链外存储器的情况下,获取所述至少一个链外存储器的标识信息;
根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块。
可选的,在本申请的一个实施例中,所述根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块,包括:
根据所述标识信息,分别确定所述至少一个链外存储器的访问接口信息;
根据所述访问接口信息,获取所述数据摘要所对应的数据块。
可选的,在本申请的一个实施例中,在所述链外存储器包括多个的情况下,所述根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块,包括:
根据所述多个链外存储器的标识信息,从所述多个链外存储器中的多个获取所述数据摘所对应的数据块;
对获取的多个所述数据块进行一致性校验;
将通过一致性校验的数据块作为所述数据摘要所对应的数据块。
可选的,在本申请的一个实施例中,所述根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块,包括:
获取所述数据摘要的读取成本预算以及所述至少一个链外存储器的读取成本;
根据所述读取成本预算和所述至少一个链外存储器的读取成本,从所述至少一个链外存储器中选取至少一个目标链外存储器,并确定分别从所述至少一个目标链外存储器上读取所述数据块的次数;
按照所述次数从所述至少一个目标链外存储器读取所述数据摘要所对应的数据块。
可选的,在本申请的一个实施例中,所述获取所述数据摘要所对应的数据块,包括:
调用至少一个预言机从所述至少一个链外存储器读取所述数据摘要所对应的数据块,其中,每个所述预言机从所述至少一个链外存储器中的至少一个读取所述数据块。第二方面,本申请实施例还提供一种区块链数据存储装置,包括:
第三方面,本申请实施例提供了一种区块链数据存取系统,所述系统包括区块链、至少一个预言机和至少一个链外存储器,其中,
所述区块链,用于利用所述区块链数据存储方法存储数据,以及利用所述区块链数据读取方法读取数据;
所述至少一个预言机桥接于所述区块链和所述至少一个链外存储器之间,用于在所述区块链和所述链外存储器之间传输数据;
所述至少一个链外存储器,用于存储所述数据块。
第四方面,本申请实施例提供了一种处理装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述区块链数据存储方法和所述区块链数据读取方法。
第五方面,一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现所述区块链数据存储方法和所述区块链数据读取方法。
第六方面,一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行所述区块链数据存储方法和所述区块链数据读取方法。
第七方面,一种芯片,包括至少一个处理器,该处理器用于运行存储器中存储的计算机程序或计算机指令,以执行所述区块链数据存储方法和所述区块链数据读取方法。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例提供的一种应用场景示意图;
图2是本申请实施例提供的区块链数据存储方法的方法流程图;
图3是本申请实施例提供的一种应用场景示意图;
图4是本申请实施例提供的区块链数据存储装置的模块结构示意图;
图5是本申请实施例提供的处理设备的模块结构示意图;
图6是本申请实施例提供的计算机程序产品的模块结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的装置、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
为了清楚地示出本申请各个实施例的技术方案,下面结合图1所示的区块链存取系统对本申请各个实施例提供的区块链数据存取方法的应用场景进行说明。
请参见图1,图1是本申请实施例提供的区块链存取系统100的模块结构示意图。如图1所示,所述区块链存取系统可以包括区块链101、预言机103和链外存储器105。所述区块链中可以包括多个区块链节点,每个区块链节点可以包括具有自主处理能力的处理节点,该处理节点例如包括服务器、云处理器、服务器集群等。所述多个区块链节点可以分布于全球范围任何位置处,并通过网络联系在一起。区块链中的每个区块链节点都被认为是相等的,一般都会同步并存储区块链中的全部数据复本。所述智能合约是设置于区块链中用于定义区块链中的事件并监控事件和触发事件的协议。例如,本申请各个实施例所提供的区块链数据存储方法和区块链数据读取方法均被利用代码的形式存储于所述智能合约中。预言机103是服务于所述区块链的中间件,其功能在于实现区块链链内和链外的数据互通。
本申请实施例中,提出利用所述链外存储器存储所述区块链所产生的数据,所述链外存储器可以包括具有数据存储能力的设备,例如包括客户端、服务器、服务器集群、云存储器等等,本申请在此不做限制。在所提出的区块链存储系统中,每个预言机都可以访问多个链外存储器。基于上述系统架构,在区块链数据存取机制上,对于数据存储,可以设置将同一个数据块同时存储于多个链外存储器中,实现数据块的多备份存储。对于数据读取,可以设置从多个链外存储器读取同一个数据,并对读取的同一个数据进行一致性校验,防止链外存储器中的数据被篡改导致读取到错误的数据,以验证数据的安全性。
下面结合附图对本申请所述的区块链数据存储方法进行详细的说明。图2是本申请提供的区块链数据存储方法的一种实施例的流程示意图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际中的区块链数据存储过程中或者方法执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
具体的,本申请提供的区块链数据存储方法的一种实施例如图2所示,所述方法可以包括:
S201:获取区块链上待存储的数据块和所述数据块对应的数据摘要。
在区块链中,所述智能合约不仅需要存储智能合约源代码、智能合约实例等数据,还需要存储智能合约实例执行所产生的交易数据等。所述交易数据主要包括针对交易资源的交易输入数据、交易输出数据,所述交易资源例如包括虚拟币、图片、视频等任何具有使用价值的数据对象。所述交易输入数据例如包括交易资源的来源信息,所述交易输出数据例如包括交易资源的去向信息,当然,所述交易数据中还可以包括区块链的版本号、交易锁定时间等信息。在智能合约中,通常基于storage变量存储所述交易数据,storage存储是一种永久存储方式。
本申请实施例中,所述数据块可以包括至少一个交易数据。在区块链中,所述数据块可以具有对应的数据摘要,所述数据摘要可以根据所述数据块的关键词生成,例如所述数据摘要可以根据交易时间或者交易事项等关键词确定。在数据结构上,可以将所述数据摘要和所述数据块构建成基于键值对(Key-Value)的对象存储结构,其中,Key值为所述数据摘要,Value值为所述数据块。为了便于数据查询,在区块链中,还可以根据Key值构建针对Value值的索引,该索引结构例如包括MPT(Merkle Patricia Tree)、前缀树、红黑树、默克尔树等树形结构,本申请在此不做限制。
S203:在确定所述数据块满足链外存储条件的情况下,确定用于存储所述数据块的至少一个链外存储器。
本申请实施例中,由于所述数据块是实时产生的数据,数据块的大小、重要程度等都不相同,基于此,可以首先衡量所述数据块是否满足链外存储条件。在本申请的一个实施例中,所述链外存储条件包括:所述数据块大于第一预设阈值,和/或所述数据块的重要度小于第二预设阈值。也就是说,可以将存储空间较大和/或重要程度较小的数据块存储于链外。在一些实施例中,所述第一预设阈值可以设置为1TB、1ZB等。所述数据块的重要度可以根据所述数据块中数据内容的重要程度确定,所述重要度可以包括重要性等级,例如可以按照一级、二级等这样的等级划分所述重要度。若所述数据块中涉及到某个预设业务项的内容较多时,可以将该数据块设置为重要等级较高的数据块,例如在涉及到大额交易数据的情况下,可以认为这样的数据块的重要等级较高。当然,所述链外存储条件不限于上述实施例,例如还可以根据存储成本等角度考虑,本申请在此不做限制。
在本申请实施例中,在确定所述数据块满足链外存储条件的情况下,可以将所述数据块存储至链外存储器中。在本申请实施例中,可以将所述数据块存储至至少一个链外存储器中。在将所述数据块存储至多个链外存储器的情况下,可以实现对所述数据块的多重备份,保证数据的存储安全性。在本申请的一个实施例中,可以根据所述数据块的重要度确定用于存储所述数据块的链外存储器的数量,所述链外存储器的数量与所述数据块的重要度正相关。也就是说,在确定所述数据块越重要的情况下,存储的所述链外存储器就越多,进一步保障数据存储的安全性。
需要说明的是,在使用所述链外存储器存储区块链所产生的数据块之前,需要在所述区块链上完成对所述链外存储器的注册,以实现区块链对所述链外存储器的信任。图3展示了在区块链注册所述链外存储器的示意图。在对所述链外存储器进行注册的过程中,可以获取所述链外存储器的访问接口信息,并在所述智能合约中存储所述链外存储器的访问接口信息。其中,所述链外存储器的访问接口例如包括应用程序接口(ApplicationProgramming Interface,API),具体包括HTTP接口等。当然,在所述智能合约中,还可以设置每个所述链外存储器的标识信息,并将所述标识信息与所述访问接口信息关联,所述标识信息用于标识所述链外存储器的唯一身份。
在实际应用中,数据的存储需要消耗计算资源和存储资源,因此,数据存储具有一定的成本,而在区块链技术的业务应用中,用户往往具有一定的成本预算。基于此,在本申请的一个实施例中,可以根据对所述数据块的存储成预算,确定用于存储所述数据块的至少一个链外存储器。具体来说,所述确定用于存储所述数据块的至少一个链外存储器,包括:
S301:获取对所述数据块的存储成本预算以及在所述区块链上已注册的各个链外存储器的存储成本;
S303:根据所述存储成本预算和所述各个链外存储器的存储成本,从所述已注册的各个链外存储器中选取用于存储所述数据块的至少一个链外存储器,并确定分别在所述至少一个链外存储器上存储所述数据块的次数。
本申请实施例中,首先可以所述数据块的存储成本预算和所述区块链上已注册的各个链外存储器的存储成本。在所述智能合约上注册所述链外存储器的过程中,可以获取到所述链外存储器的存储成本,所述存储成本可以按照所述数据块的存储次数和/或大小计算,例如,存储一次需要付出成本q,当然,每个链外存储器的存储成本可以相同,也可以不相同,本申请在此不做限制。在确定所述存储成本预算和已注册的链外存储器的存储成本之后,可以从所述已注册的各个链外存储器中选取用于存储所述数据块的至少一个链外存储器,并确定分别在所述至少一个链外存储器上存储所述数据块的次数。需要说明的是,在同一个链外存储器上,可以多次存储同一个数据块,尤其适用于通过所述预言机存储所述数据块的情况。在一个示例中,数据块1的存储成本预算为100,且要求至少将数据块1存储于两个链外存储器上,其中,链外存储器1的存储成本为30/次,链外存储器2的存储成本为60/次,链外存储器3的存储成本为80/次,链外存储器4的存储成本为100/次。基于此,可以将数据块1存储于链外存储器1和链外存储器2上,且每个链外存储器的存储次数均为1次。
本申请实施例中,根据所述存储成本预算选择链外存储器和存储次数,可以使得所述数据块的存储符合用户的预算,优化用户的存储体验。
S205:将所述数据块存储于所述至少一个链外存储器,并在所述区块链上关联所述数据摘要和所述至少一个链外存储器的标识信息。
本申请实施例中,在确定所述至少一个链外存储器之后,可以将所述数据块存储于所述至少一个链外存储器。具体来说,在确定所述至少一个链外存储器之后,可以分别获取所述至少一个链外存储器对应的标识信息,并根据所述标识信息获取所述链外存储器对应的访问接口信息。根据所述访问接口信息,可以通过所述访问接口信息将所述数据块存储于对应的链外存储器中。
本申请实施例中,如图1所示,可以调用至少一个预言机将所述数据块存储至所述至少一个链外存储器,其中,每个所述预言机将所述数据块存储至所述至少一个链外存储器中的至少一个。由于不同的预言机属于不同的主体,因此,每个预言机可以具有各自的数据传输机制,利用多个不同的预言机传输所述数据块,能够进一步保障数据存储的安全性。另外,所述预言机对接的链外存储器的数量可以根据需求设置,在此不做限制。
不仅如此,为了后续能够查询到所述数据块,还可以在所述区块链上关联所述数据摘要和所述至少一个链外存储器的标识信息。具体地,在本申请的一个实施例中,在所述区块链所对应的智能合约上关联存储所述数据摘要和所述至少一个链外存储器的标识信息,其中,所述链外存储器的标识信息与所述链外存储器的访问接口信息相关联。在一个具体的示例中,可以针对所述数据块,设置一个数据列表,所述数据列表中可以存储所述至少一个链外存储器的标识信息,本申请对于所述至少一个链外存储器的标识信息的存储方式不做限制。
本申请实施例中,将所述数据摘要和所述至少一个链外存储器的标识信息关联的方式可以包括多种。在一个实施例中,可以利用数据表的形式关联,例如所述数据表包括两栏,第一栏用于存储所述数据摘要,第二栏用于存储所述至少一个存储器的标识信息。在本申请的另一个实施例中,为了降低所述数据摘要的存储空间和查询效率,还可以利用树形数据结构存储所述数据摘要和所述至少一个存储器的标识信息,在树形结构的每个节点上存储所述数据摘要和所述至少一个存储器的标识信息,所述树形结构包括MPT(MerklePatricia Tree)、前缀树、红黑树、默克尔树等,本申请在此不做限制。
需要说明的是,由于所述链外存储器中可能存储多个数据块,为了区分不同数据块的存储位置,所述链外存储器在存储完成所述数据块之后,可以向所述区块链发送所述数据块在所述链外存储器中的存储位置,例如,所述存储位置可以包括存储首地址。这样,区块链在接收到所述存储位置之后,可以将所述存储位置和所述链外存储器的标识信息一起与所述数据摘要关联。当然,在另一个实施例中,所述链外存储器还可以在本地将所述数据块和所述数据块的存储地址关联。例如,所述区块链可以将所述数据块连带所述数据摘要发送给所述链外存储器,这样,所述链外存储器可以在本地将所述数据摘要和所述数据块的存储地址关联。
对应于上述各个实施例提出的区块链数据存储方法,本申请另一方面还提出一种区块链数据存储方法,具体地,本申请提供的区块链数据读取方法的一种实施例如图4所示,所述方法可以包括:
S401:获取待查询的数据摘要;
S403:在确定所述数据摘要所对应的数据块存储于至少一个链外存储器的情况下,获取所述至少一个链外存储器的标识信息;
S405:根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块。
本申请实施例中,在根据数据摘要确定所述数据摘要所对应的数据块的过程中,首先,可以根据所述数据摘要确定所述数据块存储于所述智能合约中,还是存储于链外存储器中。在确定所述数据块存储于至少一个链外存储器中的情况下,可以获取所述至少一个链外存储器的标识信息。在一些示例中,可以从所述数据表或者所述树形存储结构中对所述数据摘要进行检索,以获取到所述至少一个链外存储器的标识信息。
可选的,在本申请的一个实施例中,所述根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块,包括:
S501:根据所述标识信息,分别确定所述至少一个链外存储器的访问接口信息;
S503:根据所述访问接口信息,获取所述数据摘要所对应的数据块。
在上述实施例中,已经说明将所述链外存储器的标识信息和访问接口信息关联,那么,根据所述标识信息,可以确定所述至少一个链外存储器的访问接口信息,并根据所述访问接口信息,获取所述数据摘要所对应的数据块。具体关于所述标识信息和所述访问接口信息的关联方式,以及所述链外存储器中如何定位到所述数据块的方式可以参考上述实施例的说明,在此不再赘述。
在本申请的一个实施例中,在所述链外存储器包括多个的情况下,所述根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块,包括:
S601:根据所述多个链外存储器的标识信息,从所述多个链外存储器中的多个获取所述数据摘要所对应的数据块;
S603:对获取的多个所述数据块进行一致性校验;
S605:将通过一致性校验的数据块作为所述数据摘要所对应的数据块。
本申请实施例中,可以从多个链外存储器中的多个获取所述数据摘要所对应的数据块。例如,数据块1被存储至5个链外存储器中,那么,可以从其中的3个中获取数据块1。在获取到多个所述数据块后,可以对获取的多个数据块做一致性校验。只有多个所述数据块通过一致性校验的情况下,可以将所述数据块作为所述数据摘要所对应的数据块。
本申请实施例中,通过获取多个数据块,并对所述多个数据块进行一致性校验的方式获取数据摘要所对应的数据块,可以防止链外存储器中的数据被篡改后获取到不正确的数据,保证区块链数据的安全性。
在本申请的一个实施例中,所述根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块,可以包括:
S701:获取所述数据摘要的读取成本预算以及所述至少一个链外存储器的读取成本;
S703:根据所述读取成本预算和所述至少一个链外存储器的读取成本,从所述至少一个链外存储器中选取至少一个目标链外存储器,并确定分别从所述至少一个目标链外存储器上读取所述数据块的次数;
S705:按照所述次数从所述至少一个目标链外存储器读取所述数据摘要所对应的数据块。
本申请实施例中,与数据存储类似,数据读取也需要消耗一定的资源,基于此,还可以设置数据摘要的读取成本预算,根据所述读取成本预算,从所述至少一个链外存储器中选取至少一个目标链外存储器,并确定分别从所述至少一个目标链外存储器上读取所述数据块的次数。在此,可以设置从同一个目标链外存储器中多次读取所述数据块,这是由于在区块链外,在传输数据块的过程中,可能存在数据块被篡改的风险,因此,多次读取所述数据块能够进一步保障数据的安全性。
在本申请的一个实施例中,所述获取所述数据摘要所对应的数据块,可以包括:
调用至少一个预言机从所述至少一个链外存储器读取所述数据摘要所对应的数据块,其中,每个所述预言机从所述至少一个链外存储器中的至少一个读取所述数据块。
本申请实施例中,如图1所示,利用多个预言机从所述至少一个链外存储器中的至少一个读取所述数据块,在预言机数量和数据读取次数上均具有拓展的空间,进一步增强数据读取的安全性。
本申请各个实施例提供的区块链数据存储方法,通过在区块链之外设置至少一个链外存储器,用于存储区块链上所生成的数据块,并在所述区块链上关联所述数据摘要和所述至少一个链外存储器的标识信息,这样,可以在需要根据所述数据摘要查询到对应的数据块。基于上述数据存储机制,可以大大缓解区块链的存储压力,缓解区块链中存储容量不足的问题,进一步提升区块链的使用价值。
本申请的实施例还提供了一种处理设备700,处理设备700可以是物理设备或物理设备集群,也可以是虚拟化的云设备,如云计算集群中的至少一个云计算设备。为了便于理解,本申请以处理设备700为独立的物理设备对该处理设备700的结构进行示例说明。
如图5所示,处理设备700包括:处理器以及用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令时实现上述装置。处理设备700包括存储器701、处理器703、总线705和通信接口707。存储器701、处理器703和通信接口707之间通过总线705通信。总线705可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类别的总线。通信接口707用于与外部通信。
其中,处理器703可以为中央处理器(central processing unit,CPU)。存储器701可以包括易失性存储器(volatile memory),例如随机存取存储器(random accessmemory,RAM)。存储器701还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,HDD或SSD。
存储器701中存储有可执行代码,处理器703执行该可执行代码以执行前述测试场景构建方法。
本申请的实施例提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
本申请的实施例提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RandomAccess Memory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(Electrically Programmable Read-Only-Memory,EPROM或闪存)、静态随机存取存储器(Static Random-Access Memory,SRAM)、便携式压缩盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能盘(Digital Video Disc,DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
这里所描述的计算机可读程序指令或代码可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(Instruction Set Architecture,ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(Local Area Network,LAN)或广域网(WideArea Network,WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(Field-ProgrammableGate Array,FPGA)或可编程逻辑阵列(Programmable Logic Array,PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。
在一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图6示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,所述示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品800是使用信号承载介质801来提供的。所述信号承载介质801可以包括一个或多个程序指令802,其当被一个或多个处理器运行时可以提供以上针对图1描述的功能或者部分功能。此外,图6中的程序指令802也描述示例指令。
在一些示例中,信号承载介质801可以包含计算机可读介质803,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等等。在一些实施方式中,信号承载介质801可以包含计算机可记录介质804,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。在一些实施方式中,信号承载介质801可以包含通信介质805,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质801可以由无线形式的通信介质805(例如,遵守IEEE802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令802可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,诸如针对图2描述的计算设备的计算设备可以被配置为,响应于通过计算机可读介质803、计算机可记录介质804、和/或通信介质805中的一个或多个传达到计算设备的程序指令802,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
附图中的流程图和框图显示了根据本申请的多个实施例的装置、系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件(例如电路或ASIC(Application SpecificIntegrated Circuit,专用集成电路))来实现,或者可以用硬件和软件的组合,如固件等来实现。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其它变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其它单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (16)

1.一种区块链数据存储方法,其特征在于,包括:
获取区块链上待存储的数据块和所述数据块对应的数据摘要;
在确定所述数据块满足链外存储条件的情况下,确定用于存储所述数据块的至少一个链外存储器;
将所述数据块存储于所述至少一个链外存储器,并在所述区块链上关联所述数据摘要和所述至少一个链外存储器的标识信息。
2.根据权利要求1所述的区块链数据存储方法,其特征在于,所述链外存储条件包括:所述数据块大于第一预设阈值,和/或所述数据块的重要度小于第二预设阈值。
3.根据权利要求1或2所述的区块链数据存储方法,其特征在于,所述确定用于存储所述数据块的至少一个链外存储器,包括:
根据所述数据块的重要度确定用于存储所述数据块的链外存储器的数量,所述链外存储器的数量与所述数据块的重要度正相关。
4.根据权利要求1所述的区块链数据存储方法,其特征在于,所述确定用于存储所述数据块的至少一个链外存储器,包括:
获取对所述数据块的存储成本预算以及在所述区块链上已注册的各个链外存储器的存储成本;
根据所述存储成本预算和所述各个链外存储器的存储成本,从所述已注册的各个链外存储器中选取用于存储所述数据块的至少一个链外存储器,并确定分别在所述至少一个链外存储器上存储所述数据块的次数。
5.根据权利要求1所述的区块链数据存储方法,其特征在于,所述将所述数据块存储于所述至少一个链外存储器,包括:
调用至少一个预言机将所述数据块存储至所述至少一个链外存储器,其中,每个所述预言机将所述数据块存储至所述至少一个链外存储器中的至少一个。
6.根据权利要求1所述的区块链数据存储方法,其特征在于,所述在所述区块链上关联所述数据摘要和所述至少一个链外存储器的标识信息,包括:
在所述区块链所对应的智能合约上关联存储所述数据摘要和所述至少一个链外存储器的标识信息,其中,所述链外存储器的标识信息与所述链外存储器的访问接口信息相关联。
7.一种区块链数据读取方法,其特征在于,包括:
获取待查询的数据摘要;
在确定所述数据摘要所对应的数据块存储于至少一个链外存储器的情况下,获取所述至少一个链外存储器的标识信息;
根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块。
8.根据权利要求7所述的区块链数据读取方法,其特征在于,所述根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块,包括:
根据所述标识信息,分别确定所述至少一个链外存储器的访问接口信息;
根据所述访问接口信息,获取所述数据摘要所对应的数据块。
9.根据权利要求7所述的区块链数据读取方法,其特征在于,在所述链外存储器包括多个的情况下,所述根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块,包括:
根据所述多个链外存储器的标识信息,从所述多个链外存储器中的多个获取所述数据摘所对应的数据块;
对获取的多个所述数据块进行一致性校验;
将通过一致性校验的数据块作为所述数据摘要所对应的数据块。
10.根据权利要求7所述的区块链数据读取方法,其特征在于,所述根据所述至少一个链外存储器的标识信息,获取所述数据摘要所对应的数据块,包括:
获取所述数据摘要的读取成本预算以及所述至少一个链外存储器的读取成本;
根据所述读取成本预算和所述至少一个链外存储器的读取成本,从所述至少一个链外存储器中选取至少一个目标链外存储器,并确定分别从所述至少一个目标链外存储器上读取所述数据块的次数;
按照所述次数从所述至少一个目标链外存储器读取所述数据摘要所对应的数据块。
11.根据权利要求7所述的区块链数据读取方法,其特征在于,所述获取所述数据摘要所对应的数据块,包括:
调用至少一个预言机从所述至少一个链外存储器读取所述数据摘要所对应的数据块,其中,每个所述预言机从所述至少一个链外存储器中的至少一个读取所述数据块。
12.一种区块链数据存取系统,其特征在于,所述系统包括区块链、至少一个预言机和至少一个链外存储器,其中,
所述区块链,用于利用权利要求1-6所述的方法存储数据,以及利用权利要求7-11所述的方法读取数据;
所述至少一个预言机桥接于所述区块链和所述至少一个链外存储器之间,用于在所述区块链和所述链外存储器之间传输数据;
所述至少一个链外存储器,用于存储所述数据块。
13.一种处理装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1-11中任意一项所述的方法。
14.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-11中任意一项所述的方法。
15.一种计算机程序产品,其特征在于,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述权利要求1-11中任意一项所述的方法。
16.一种芯片,其特征在于,包括至少一个处理器,该处理器用于运行存储器中存储的计算机程序或计算机指令,以执行上述权利要求1-11中任意一项所述的方法。
CN202111672146.7A 2021-12-31 2021-12-31 区块链数据存储和读取方法、区块链数据存取系统 Pending CN114356236A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111672146.7A CN114356236A (zh) 2021-12-31 2021-12-31 区块链数据存储和读取方法、区块链数据存取系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111672146.7A CN114356236A (zh) 2021-12-31 2021-12-31 区块链数据存储和读取方法、区块链数据存取系统

Publications (1)

Publication Number Publication Date
CN114356236A true CN114356236A (zh) 2022-04-15

Family

ID=81105134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111672146.7A Pending CN114356236A (zh) 2021-12-31 2021-12-31 区块链数据存储和读取方法、区块链数据存取系统

Country Status (1)

Country Link
CN (1) CN114356236A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080177873A1 (en) * 2007-01-22 2008-07-24 Xerox Corporation Two-level structured overlay design for cluster management in a peer-to-peer network
CN102223404A (zh) * 2011-06-07 2011-10-19 武汉理工大学 一种基于访问成本和传输时间的副本选择方法
CN108566420A (zh) * 2018-03-29 2018-09-21 上海点融信息科技有限责任公司 用于区块链的数据处理方法、设备及计算机可读存储介质
CN108762686A (zh) * 2018-06-04 2018-11-06 平安科技(深圳)有限公司 数据一致性校验流控方法、装置、电子设备及存储介质
CN109815303A (zh) * 2018-12-29 2019-05-28 哈尔滨工业大学(深圳) 一种基于位置的移动数据存储系统
CN112637330A (zh) * 2020-12-22 2021-04-09 山东大学 区块链大文件副本选址方法、系统、设备及存储介质
CN113469716A (zh) * 2021-07-20 2021-10-01 山东省计算中心(国家超级计算济南中心) 一种基于区块链与标识解析的产品追溯方法及系统
CN113806443A (zh) * 2021-08-19 2021-12-17 西安电子科技大学 一种数据可信存储方法、系统、介质、设备及终端

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080177873A1 (en) * 2007-01-22 2008-07-24 Xerox Corporation Two-level structured overlay design for cluster management in a peer-to-peer network
CN102223404A (zh) * 2011-06-07 2011-10-19 武汉理工大学 一种基于访问成本和传输时间的副本选择方法
CN108566420A (zh) * 2018-03-29 2018-09-21 上海点融信息科技有限责任公司 用于区块链的数据处理方法、设备及计算机可读存储介质
CN108762686A (zh) * 2018-06-04 2018-11-06 平安科技(深圳)有限公司 数据一致性校验流控方法、装置、电子设备及存储介质
CN109815303A (zh) * 2018-12-29 2019-05-28 哈尔滨工业大学(深圳) 一种基于位置的移动数据存储系统
CN112637330A (zh) * 2020-12-22 2021-04-09 山东大学 区块链大文件副本选址方法、系统、设备及存储介质
CN113469716A (zh) * 2021-07-20 2021-10-01 山东省计算中心(国家超级计算济南中心) 一种基于区块链与标识解析的产品追溯方法及系统
CN113806443A (zh) * 2021-08-19 2021-12-17 西安电子科技大学 一种数据可信存储方法、系统、介质、设备及终端

Similar Documents

Publication Publication Date Title
US10560465B2 (en) Real time anomaly detection for data streams
KR102226257B1 (ko) 서비스 데이터를 블록체인 시스템에 기입하기 위한 방법 및 디바이스
TWI715999B (zh) 身份資訊的識別方法及裝置
US11044230B2 (en) Dynamically opening ports for trusted application processes hosted in containers
US9912752B1 (en) Retention-based data management in a network-based data store
US10938668B1 (en) Safe deployment using versioned hash rings
US11093148B1 (en) Accelerated volumes
US10318199B2 (en) System, method, and recording medium for reducing memory consumption for in-memory data stores
US10089024B2 (en) Memory deduplication protection for memory pages
US10701154B2 (en) Sharding over multi-link data channels
US11210003B2 (en) Method, device and computer program product for restoring data based on replacing child node identifiers with parent node identifier
US9876853B2 (en) Storlet workflow optimization leveraging clustered file system placement optimization features
BR112021008844A2 (pt) instrução de separação e fusão para um processador de propósito geral
US10303669B1 (en) Simulating hierarchical structures in key value stores
US10460120B1 (en) Policy mediated hierarchical structures in key value stores
CN110119429B (zh) 数据处理方法、装置、计算机设备和存储介质
US10031764B2 (en) Managing executable files
CN110598467A (zh) 一种内存数据块完整性检验方法
US9646157B1 (en) Systems and methods for identifying repackaged files
US10789273B1 (en) Resource identifier allocation during network partitions
US9684668B1 (en) Systems and methods for performing lookups on distributed deduplicated data systems
US11573785B2 (en) Predicting code vulnerabilities using machine learning classifier models trained on internal analysis states
CN117176398A (zh) 一种数据传输方法、系统、存储介质及设备
CN114356236A (zh) 区块链数据存储和读取方法、区块链数据存取系统
US20230367884A1 (en) Cyber attack scenario generation method and device

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