CN115914245A - 一种基于区块链的数据存储的方法及装置 - Google Patents
一种基于区块链的数据存储的方法及装置 Download PDFInfo
- Publication number
- CN115914245A CN115914245A CN202211406274.1A CN202211406274A CN115914245A CN 115914245 A CN115914245 A CN 115914245A CN 202211406274 A CN202211406274 A CN 202211406274A CN 115914245 A CN115914245 A CN 115914245A
- Authority
- CN
- China
- Prior art keywords
- data
- chain
- information
- block
- index information
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种基于区块链的数据存储的方法及装置。该方法首先将第一数据存储在链下的数据库中形成链下数据,第一数据包括计算数据。然后将第二数据和链下数据的索引信息,加密后存储至链上区块链的区块。其中索引信息用于在所述数据库中匹配到对应的链下数据,第二数据包括用户信息和用于数据计算的模型的训练参数信息。在本申请中还公开了一种基于区块链的数据存储的装置。在本申请实施例中,实现了对区块链的数据存储进行优化,减少资源的浪费。
Description
技术领域
本申请涉及区块链技术领域,特别涉及一种基于区块链的数据存储的方法及装置。
背景技术
区块链是一种利用密码学方法、计算机网络和分布式存储等技术综合实现的复合型技术。区块链提供了一种分布式的数据共享模式,具有去中心化、不可篡改、全程留痕、集体维护、公开透明等特点。基于区块链的这些特性,用户可以将数据存储在区块链上,以通过区块链实现对数据的共享。在现有技术中数据量较大的信息在区块链的链上区块进行存储时,会造成内存的过度占用,尤其当区块进行同步时信息会在各个节点中进行同步,会导致资源的浪费。
发明内容
有鉴于此,本申请实施例提供了一种基于区块链的数据存储的方法、装置及存储介质,旨在对区块链的数据存储进行优化,减少资源的浪费。
第一方面,本申请实施例提供了一种基于区块链的数据存储的方法,所述方法包括:
将第一数据存储在链下的数据库中形成链下数据,所述第一数据包括用于计算的数据;
将第二数据和所述链下数据的索引信息,加密后存储至链上区块链的区块,所述索引信息用于在所述数据库中匹配到对应的链下数据,所述第二数据包括用户信息和用于数据计算的模型的训练参数信息。
可选的,将所述链下数据的索引信息加密后存储至链上区块链的区块,具体包括:
将所述链下数据用公钥进行加密后存储到链下的数据库中形成加密文件;
将所述加密文件的索引信息返回至链上并存储在索引表中,所述索引信息为所述加密文件对应的存储的地址。
可选的,当区块链上需要进行数据计算时,所述方法还包括:
数据计算方与数据持有方交换彼此的公钥;
所述数据持有方利用所述数据计算方的公钥对需要进行计算的数据的索引信息进行加密,并发送给所述数据计算方;
所述数据计算方利用所述数据计算方的私钥对所述数据的索引信息进行解密,根据解密后的数据的索引信息找到对应的数据,并对所述数据进行计算得到计算结果;
所述数据计算方利用所述数据持有方的公钥将所述计算结果进行加密。
可选的,所述方法还包括:
用户产生由所述用户到查询者的代理重加密密钥;
将所述代理重加密密钥发送至链上的代理重加密节点;
所述代理重加密节点根据所述查询者需要查询的密文和所述代理重加密密钥,完成重加密操作并将加密数据传送给所述查询者;
所述查询者对所述加密数据进行解密以获取数据从而完成共享操作。
可选的,所述将第一数据信息存储在链下的数据库中形成链下数据之前,还包括:
对所述数据信息进行分类,并公布所述分类的结果。
可选的,所述方法还包括:
将目标信息发送至区块链的链上区块;
由所述区块链中的同步模块获取所述目标信息,并保存至所述同步模块的数据库中;
由链下的数据库向所述区块链的代理模块发送对所述目标信息的请求,通过所述区块的代理模块查询所述同步模块的数据库,以获取所述目标信息实现实时查询同步。
可选的,所述链上区块,包括:
区块头和区块体;
所述区块头用于存储头信息;
所述区块体用于存储文档索引信息、模型参数信息和日志信息。
可选的,所述链上区块的存储内容还包括:
用户信息及用于数据计算的模型的训练参数信息。
第二方面,本申请实施例提供了一种基于区块链的数据存储的装置,所述装置包括:
链上存储模块,用于将第一数据信息存储在链下的数据库中形成链下数据,所述第一数据信息包括计算数据;
链上存储模块,用于将第二数据和所述链下数据的索引信息,加密后存储至链上区块链的区块,所述索引信息用于在所述数据库中匹配到对应的链下数据,所述第二数据包括用户信息和用于数据计算的模型的训练参数信息。
可选的,所述链上存储模块,具体包括:
加密文件形成子模块,用于将所述链下数据用公钥进行加密并存储到数据库中形成加密文件;
加密文件存储子模块,用于将所述加密文件对应的存储的地址值返回至链上并存储在索引表中,所述索引信息为所述加密文件对应的存储的地址。
可选的,所述装置包括:公钥交换模块、数据加密发送模块、数据计算模块及结果加密模块,当区块链上需要进行数据计算时,所述装置具体包括:
公钥交换模块,用于数据计算方与数据持有方交换彼此的公钥;
数据加密发送模块,用于所述数据持有方利用数据计算方的公钥对数据的索引信息进行加密,并发送给数据计算方;
数据计算模块,用于所述数据计算方利用所述数据计算方的私钥对所述数据的索引信息进行解密,根据解密后的所述数据的索引信息找到对应的数据,并对所述数据进行计算得到计算结果;
结果加密模块,用于所述据计算方利用所述数据持有方的公钥将所述计算结果进行加密。
第三方面本申请实施例提供了一种计算机存储介质,所述计算机存储介质中存储有代码,当所述代码被运行时,运行所述代码的设备实现前述第一方面任一项所述方法。
本申请提供了一种基于区块链的数据存储的方法、装置及存储介质,在执行所述方法时,运用链上存储和链下存储结合的方式存储数据,利用链下存储将数据信息存储在链下区块的数据库中形成链下数据,利用链上存储将链下数据的索引信息通过公钥加密后存储至链上区块。如此,通过链上存储和链下存储相结合的方式,将大规模的的数据信息存储至链下区块形成链下数据,然后将链下数据对应的存储地址加密后存储至链上区块,解决了数据量较大的信息在区块链的链上区块存储造成内存的过度占用的问题。
附图说明
为更清楚地说明本实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种基于区块链的数据存储的方法的流程图;
图2为链上存储过程的流程图;
图3为区块链上进行数据计算的流程图;
图4为数据联合共享方法的流程图;
图5a为利用本申请的存储方法实现查询实时同步的流程图;
图5b为S501实现查询实时同步的信令图;
图5c为S502实现查询实时同步的信令图;
图5d为S503实现查询实时同步的信令图;
图6为一种基于区块链的数据存储的装置的结构示意图。
具体实施方式
在对于现有技术的研究发现,在隐私计算平台中,计算数据、算法的参数、个人的信息、日志数据等一般都是保存在内存或数据库中。但是在建模任务中以及计算任务中有时需要将这些信息存储在一个可信空间,这个空间需要提供数据实时查询、数据联合共享计算、建模任务回溯等功能。另外,在建立隐私计算联盟时,考虑到数据量较大的信息在区块链上存储会造成内存的过度占用,尤其当区块进行同步时信息会在各个节点中进行同步,这在一定程度上会导致资源的浪费和负担太重的问题。
基于此,本申请提出了一种基于区块链的数据存储的方法、装置及存储介质。能够解决数据量较大的信息在区块链的链上区块存储造成内存的过度占用的问题。具体方法为:
运用链上存储和链下存储结合的方式存储数据。首先利用所述链下存储将数据信息存储在链下的数据库中形成链下数据,然后利用所述链上存储将所述链下数据的索引信息加密后存储至链上区块。完成大量数据的存储,解决链上区块存储造成内存过度占用的问题。
图1为一种基于区块链的数据存储的方法的流程图。参见图1所示,本申请提供了一种基于区块链的数据存储的方法:运用链上存储和链下存储结合的方式存储数据。具体方法包括:
S101:将第一数据信息存储在链下的数据库中形成链下数据,所述第一数据信息包括用于计算的数据。
区块链是一种数据以区块(block)为单位产生和存储,并按时间顺序首尾相连行成的链式(chain)结构,同时通过密码学保证不被篡改,不可伪造,且能保证数据传输和访问安全的、去中心化的分布式账本。从科技层面来看,区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。
区块链包括以下三种类型:公共链、联盟链和私有链。其中公共链是指公有区块链(Public Block Chains):世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。联盟链指的是行业区块链(ConsortiumBlock Chains):由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不过问记账过程(本质上还是托管记账,只是变成分布式记账,预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点),其他任何人可以通过该区块链开放的API进行限定查询。私有链即私有区块链(Private Block Chains):仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。本申请所提供的数据存储方法不受区块链类型的限制,能够应用于各种类型的区块链中。
在本申请中主要使用了“Springboot+Mongodb+区块链(Fisco bcos)”架构方式,实现了去中心化、防篡改、数据联合共享、可追溯性的分布式存储方式(区块链上)来存储文档索引信息、联盟成员信息、模型参数信息、日志信息等数据量较小的信息。对区块链上数据的新增,删除,修改,查询,联合共享功能做了封装并切对外HTTP接口,用于登记文档索引信息、联邦成员信息。在链下的数据库则存储各联盟成员方的计算数据,并将此链下数据的索引信息通过公钥加密后存储至链上。
SpringBoot是一个用于快速构建项目和简化开发的框架,换言之Spring Boot就是对各种框架的整合,让它们集成在一起更加简单,简化了在集成过程中的模板化配置。本申请可以使用springboot开发union后台,提供http接口供各成员修改自身公开信息以及获取联邦中其他成员的公开信息。
MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,能在生产环境中提供高读写的能力,吞吐量较于mysql等SQL数据库大大增强。MongoDB具有易伸缩,自动故障转移的特点。易伸缩指的是提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器。自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。
本实施例中的区块链可以为FISCO BCOS。FISCO BCOS是一个区块链底层平台,由金融区块链合作联盟开源工作组以金融业务实践为参考样本,在BCOS开源平台基础上进行模块升级与功能重塑。特点:深度定制的安全可控、适用于金融行业且完全开源。整体架构上,FISCO BCOS划分为基础层、核心层、管理层和接口层。基础层提供区块链的基础数据结构和算法库。核心层实现了区块链的核心逻辑。管理实现了区块链的管理功能,包括参数配置、账本管理和AMOP。本申请中可以首先通过FISCO BCOS搭建区块链网络,将大规模的计算数据信息存储在链下的数据库,在链上存储文档的索引信息、联盟的成员信息以及模型训练参数信息等数据量较小的信息。
链上包括节点链和数据链:节点链指节点通过区块链网络层进行连接,共享信息,执行交易共识和区块上链的任务;数据链是指一个个区块以链式结构进行存储的形式。交易通过记账节点按照链式结构打包成区块,进行分布式共识,经过共识后的区块会被广播到所有节点,完成上链过程。上链过程会产生大量的共识开销、存储开销、计算开销和网络开销。所以在本申请提出了链上存储与链下存储相结合的方式,解决了链上存储上链过程数据庞杂,导致处理困难,最终影响到区块链的可用性的问题。
链上区块由区块头和区块体组成。区块头中存储着头信息,区块体中存储着文档索引信息、联盟成员信息、模型参数信息、日志信息等数据量较小的信息。其中,对于查询者需要查询的索引信息,则通过区块之间的连接进行区块的同步。对于像模型训练中的参数信息,在模型训练出错时,我们需要回溯它的历史记录。关于模型训练参数信息和联盟成员相关信息,如果跟计算数据一样存储在数据库中常常会遇到更新延时的问题。对于联盟成员信息以及模型训练参数信息等数据量较小的信息,则使用链上存储的方式去存储这些数据,这不仅保障了此类数据的安全性,也实现了此类数据的实时查询和联合共享。
链下也称为Layer 2层,应用链下扩容方案,只在参与该交易的节点之间进行直接交易,不需要将交易进行全网广播,其效率仅取决于参与节点之间的网络性能,因此链下扩容方案不会受到原有区块链性能的影响,不存在链上扩容方案的性能瓶颈。但目前链下扩容方案存在技术难度高、实施周期长等问题,且可能对安全性和去中心化带来损害。在本申请的应用场景中,会有多个联盟成员参与联合建模,此时各方提供的数据量往往很大。如果将数据全部存储于链上则会造成内存的过度占用,尤其是当区块进行同步时信息会在各个节点中进行同步,这在一定程度会导致资源的浪费和负担太重的问题。于是在本申请中采用了将大规模的计算数据存储于链下,形成链下数据,而后将链下数据对应的索引信息发送至链上区块进行存储,节约了链上资源。
S101中提到的数据信息主要指的是各联盟成员方的计算数据,具体而言就是由于在隐私计算平台中,当多个联盟成员参与联合建模时,各方成员所提供的计算数据量是很大的。对于这类大规模的计算数据,需要将其存储至链下区块,若全部存储至链上区块会导致内存的过度占用。而对于像模型训练中的参数信息,在模型训练出错时,我们会存在想回溯它的历史记录。关于模型训练参数信息和联盟成员相关信息,如果跟计算数据一样存储在数据库中常常会遇到更新延时的问题。对于联盟成员信息以及模型训练参数信息等数据量较小的信息,则使用链上存储的方式去存储这些数据,这不仅保障了此类数据的安全性,也实现了此类数据的实时查询和联合共享。
S102:将第二数据和所述链下数据的索引信息,加密后存储至链上区块链的区块,所述索引信息用于在所述数据库中匹配到对应的链下数据,所述第二数据包括用户信息和用于数据计算的模型的训练参数信息。
图2为链上存储过程的流程图,如图2所示,链上存储过程的具体方法包括:
S201:将所述链下数据用公钥进行加密后存储到数据库中形成加密文件。
公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证在世界范围内是独一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
链下数据利用公钥进行加密的原因在于:公钥的优势是两个用户能够安全的沟通而不需交换秘密钥匙。例如,假设一个送信者需要传送一个信息给一个收信者,而信息的秘密性是必要的,送信者以收信者的公钥来加密,而仅有收信者的私有的钥匙能够对此信息解密。
链上指的是区块链,链下指的是暂时脱离于主链的复杂业务逻辑,也可以理解为传统的信息系统,在链下包含数据库。链上链下存储相结合能够将区块链系统与传统信息系统进行有机融合,充分发挥联盟链的高性能、安全隐私、高可用性技术和高可拓展性技术优势,最终实现联盟区块链的大规模应用。
S202:将所述加密文件的索引信息返回至链上并存储在索引表中,所述索引信息为所述加密文件对应的存储的地址。
索引是一种存储结构,是一个排序的列表。其次,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。它的作用可以理解为图书的目录,可以根据目录中的页码快速找到所需的内容。索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。在数据的量十分庞大的时候,使用索引可以有效的加快查询(select)的速度,因为使用索引以后不用扫描全表来定位查找某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。在本实施例中利用索引可以实现将链下数据的加密文件的索引信息存储到区块链上,从而避免过度占用链上的存储空间。
在本实施例中,通过利用链上存储与链下存储相结合的方式,首先利用链下存储将数据信息存储在链下的数据库中形成链下数据。然后利用链上存储将链下数据的索引信息加密后存储至链上区块。在链上存储的过程中,先将链下数据用公钥进行加密后存储到数据库中形成加密文件。然后将加密文件的索引信息返回至链上并存储在索引表中,索引信息为加密文件对应的存储的地址。如此,将数据量较大的计算数据存储于链下,然后将数据的索引信息返回给链上进行保存,实现了解决数据量较大的信息在区块链的链上区块存储造成内存的过度占用的问题。
图3为区块链上进行数据计算的流程图,如图3所示,区块链上进行数据计算的方法如下:
S301:数据计算方与数据持有方交换彼此的公钥。
在数据计算的过程中需要有两方进行,其中一方为计算方,另一方为数据持有方。计算方需要利用数据持有方所持有的数据完成计算。数据持有方拥有计算方所需要的待计算的数据。所以当需要进行数据计算时,需要数据计算方和数据持有方之间交换彼此的公钥,以便数据计算的顺利进行,数据计算方获取所需数据。
S302:所述数据持有方利用所述数据计算方的公钥对需要进行计算的数据的索引信息进行加密,并发送给所述数据计算方。
S303:所述数据计算方利用所述数据计算方的私钥对所述数据的索引信息进行解密,根据解密后的数据的索引信息找到对应的数据,并对所述数据进行计算得到计算结果。
数据持有方利用私钥对计算方发送来的公钥进行解密,以获取到计算方发送的数据请求。根据数据请求将所请求的数据进行加密生成加密的数据,然后为加密的数据生成对应的索引信息,将索引信息和数据持有方的公钥发送给计算方。
数据加密(Data Encryption)指将一个信息(或称明文,plain text)经过加密钥匙(Encryption key)及加密函数转换,变成无意义的密文(cipher text),而接收方则将此密文经过解密函数、解密钥匙(Decryption key)还原成明文。
数据加密方式可以包括以下几种:对称加密、非对称加密和Hash算法等。
对称加密为采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。非对称加密为指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比非对称加密慢上1000倍。Hash算法是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。在本实施例中数据的加密方式可以由本领域的技术人员根据具体情况和应用场景进行选择,包括但不限于上述的对称加密、非对称加密和Hash算法,在此不做限定。
S304:所述数据计算方利用所述数据持有方的公钥将所述计算结果进行加密。
在本实施例中,通过计算方和数据持有方之间的信息传递实现了在区块链上的数据计算。首先数据计算方与数据持有方交换彼此的公钥。然后数据持有方利用数据计算方的公钥对数据的索引信息进行加密,并发送给数据计算方。数据计算方利用数据计算方的私钥对所述数据的索引信息进行解密,根据解密后的数据的索引信息找到对应的数据,并对所述数据进行计算得到计算结果。最后数据计算方利用所述数据持有方的公钥将所述计算结果进行加密。如此,完成了在区块链上的数据计算,同时通过加密的方式能够保证数据的安全性。
图4为数据联合共享方法的流程图,如图4所示,数据联合共享方法为利用代理重加密机制实现所述数据信息的共享,具体为:
S401:用户产生由所述用户到查询者的代理重加密密钥。
在大规模计算数据的存储中,联盟成员首先对要上传的数据信息进行分类,例如金融数据、医疗数据等,并对外公布分类,然后将对应分类中的数据用公钥进行加密并存储到数据库中形成加密文件,最后将存储的地址值返回至链上并存储在索引表中。
代理重加密(PRE)是一种对密文进行安全转换的加密技术。在代理重加密中,基于授权人(delegator)公钥加密的密文可以被转换为另一种密文,且保持对应明文不变,被转换后的密文可以由被授权人(delegate)的私钥进行解密。该密文转换过程由一个半可信的代理者(proxy)执行,在执行该过程前,代理者需要持有一个由授权人到被授权人的转换密钥,该转换密钥一般由授权人事先生成并交给代理者。同时在密文转换的整个过程中,代理者无法获取关于该密文对应明文的任何信息。代理重加密主要的作用是通过代理服务器将一个用户的密文转换为另一个用户可以解密的密文,且不泄露用户的私钥和明文信息。
代理重加密可以分为以下几类:双向代理重加密、单向代理重加密、单跳密文转换和多跳密文转换。假设需要加密共享数据的双方分别为A和B。双向代理重加密可以理解为将A的密文发给B解密,B的密文发给A解密;单项代理重加密可以理解为只能完成A的密文发给B解密;单跳密文转换可以理解为密文只允许转换一次;多跳密文转换可以理解为可多次密文转换。在申请中具体运用的代理重加密的方法可以由本领域的技术人员根据实际情况和应用场景进行自由选择,在此不做限定。
S402:将所述代理重加密密钥发送至链上的代理重加密节点。
S403:所述代理重加密节点根据所述查询者需要查询的密文和所述代理重加密密钥,完成重加密操作并将加密数据传送给所述查询者。
S404:所述查询者对所述加密数据进行解密以获取数据从而完成共享操作。
本实施例所用到的数据共享的方法可以与本申请提出的一种基于区块链的数据存储的方法结合起来使用,通过将链上索引表信息与链下数据库相结合进行存储,不仅能释放区块链上的大量空间,而且还能提高信息共享的效率。同时链下的数据库存储计算数据拥有者上传的加密文件以及数据联合共享计算过程中使用的代理重加密机制,都保证了数据的安全性。
图5a为利用本申请的存储方法实现查询实时同步的流程图,图5b为S501实现查询实时同步的信令图,图5c为S502实现查询实时同步的信令图,图5d为S503实现查询实时同步的信令图。如图5a所示,本申请还提供了一种实现查询实时同步的方法,具体包括:
S501:将目标信息发送至区块链的链上区块。
目标信息可以包括存储数据的索引信息、联盟的成员信息、日志信息及模型训练参数信息等数据量较小的信息。
目标信息可以从链下或者业务系统后端发送至链上区块(区块链上),具体发送的过程中具体需要进行以下这几个步骤:首先由链下向区块链代理模块发送数据上链的请求(如新增、修改、删除及更新数据),然后由区块链代理模块调用合约连数据上链至链上(区块链系统)。完成上述两步操作后,由区块链系统向区块链代理模块发送对于数据上链请求的响应结果,再由区块链代理模块向链下发送对于数据上链请求的响应结果。
S502:由所述区块链中的同步模块获取所述目标信息,并保存至所述同步模块的数据库中。
具体实施的步骤为:首先由区块链同步模块向区块链系统不断发出获取所述更新的目标数据的区块信息的请求。然后区块链系统在接收到区块链同步模块发送的请求后,向区块链同步模块发送更新的目标数据的区块信息。最后由区块链同步模块向同步模块的数据库解析区块信息中的目标数据,完成数据的更新同步。
S503:由链下的数据库向所述区块链的代理模块发送对所述目标信息的请求,通过所述区块的代理模块查询所述同步模块的数据库,以获取所述目标信息实现实时查询同步。
具体实施的步骤为:首先由链下向区块链代理模块发送查询目标数据的请求。然后区块链代理模块接收到查询请求后,直接向发起同步模块的数据库查询,由同步模块的数据库响应查询请求并获得查询结果后发送至区块链代理模块,最后由区块链代理模块向链下发送查询结果,以实现查询的实时同步。
本实施例可以通过用java开发的blockchain-data-sync模块实现,该模块对union的区块链相关业务进行了优化处理,实现了区块链上的数据到业务库的实时同步,以方便做一些复杂查询跟统计的业务操作。blockchain-data-sync模块是一个获取智能合约的交易,并存储到本地的定时任务。Sync包含三大组件:Syncer:负责获取智能合约的交易,并存储。Parser:交易解析。Syncer Server:负责定时任务的监控。本实施例的实现方式可以为一段程序,也可以是硬件电路等一切能够实现相同技术效果的方式,在此不作限定。
在本实施例中通过将目标信息发送至区块链的链上区块,然后由区块链中的同步模块获取目标信息,并保存至同步模块的数据库中。最后由链下的数据库向所述区块链的代理模块发送对所述目标信息的请求,通过所述区块的代理模块查询所述同步模块的数据库,以获取所述目标信息实现实时查询同步。如此实现了利用本申请所提出的链上链下相结合的存储方法实现了数据的同步更新以及查询的实时同步。
虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。
应当理解,本申请的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本申请的范围在此方面不受限制。
图6为一种基于区块链的数据存储的装置的结构示意图,如图6所示,本申请还提供了一种基于区块链的数据存储的装置,所述装置包括:
链下存储模块100,用于将数据信息存储在链下的数据库中形成链下数据;
链上存储模块200,用于将链下数据的索引信息加密后存储至链上区块。
链上存储模块200中还包括:加密文件形成子模块210,用于将链下数据用公钥进行加密并存储到数据库中形成加密文件;加密文件存储子模块220,用于将加密文件对应的存储的地址值返回至链上并存储在索引表中,索引信息为加密文件对应的存储的地址。
除此之外所述装置还包括:第一数据发送模块300、第一数据加密模块400、第二数据发送模块500及第二数据加密模块600,当区块链上需要进行数据计算时,由第一数据发送模块300将计算方向数据持有方发送数据请求及所述计算方的公钥。第一数据加密模块400将数据持有方根据数据请求对数据请求中对应的数据进行加密,并生成加密后的数据对应的索引信息。然后由第二数据发送模块500将索引信息及数据持有方的公钥发送给计算方,第二数据加密模块600主要用于让计算方根据索引信息对数据进行计算后得到计算结果,使用数据持有方的公钥对计算结果进行加密。
本申请提供了一种基于区块链的数据存储的装置,通过链上存储模块100将大规模的数据信息存储在链下的数据库中形成链下数据,然后利用链上存储模块200将链下数据对应的索引信息进行加密后存储至链上区块。将链下数据的索引信息加密后存储至链上区块的过程中需要用到加密文件形成子模块210将链下数据用公钥进行加密后存储到链下的数据库中形成加密文件,然后由加密文件存储子模块220将加密文件的对应的存储的地址返回至链上并存储在索引表中。
在可选的实现方式中,装置还包括:第一数据发送模块300、第一数据加密模块400、第二数据发送模块500及第二数据加密模块600。第一数据发送模块,用于计算方向数据持有方发送数据请求及所述计算方的公钥;第一数据加密模块,用于所述数据持有方根据所述数据请求对所述数据请求中对应的数据进行加密,并生成加密后的数据对应的索引信息;第二数据发送模块,用于将所述索引信息及所述数据持有方的公钥发送给所述计算方;第二数据加密模块,用于所述计算方根据所述索引信息对数据进行计算后得到计算结果,使用所述数据持有方的公钥对所述计算结果进行加密。
通过上述提供的一种基于区块链的数据存储的装置,可以实现解决数据量较大的信息在区块链的链上区块存储造成内存的过度占用的问题。
本申请实施例还提供了对应的设备以及计算机可读存储介质,用于实现本申请实施例提供的方案。
其中,所述设备包括存储器和处理器,所述存储器用于存储指令或代码,所述处理器用于执行所述指令或代码,以使所述设备执行本申请任一实施例所述的一种基于区块链的数据存储的方法。
在实际应用中,所述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
本申请实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (11)
1.一种基于区块链的数据存储的方法,其特征在于,所述方法包括:
将第一数据存储在链下的数据库中形成链下数据,所述第一数据包括用于计算的数据;
将第二数据和所述链下数据的索引信息,加密后存储至链上区块链的区块,所述索引信息用于在所述数据库中匹配到对应的链下数据,所述第二数据包括用户信息和用于数据计算的模型的训练参数信息。
2.根据权利要求1所述的方法,其特征在于,将所述链下数据的索引信息加密后存储至链上区块链的区块,具体包括:
将所述链下数据用公钥进行加密后存储到链下的数据库中形成加密文件;
将所述加密文件的索引信息返回至链上并存储在索引表中,所述索引信息为所述加密文件对应的存储的地址。
3.根据权利要求1所述的方法,其特征在于,当区块链上需要进行数据计算时,所述方法还包括:
数据计算方与数据持有方交换彼此的公钥;
所述数据持有方利用所述数据计算方的公钥对需要进行计算的数据的索引信息进行加密,并发送给所述数据计算方;
所述数据计算方利用所述数据计算方的私钥对所述数据的索引信息进行解密,根据解密后的数据的索引信息找到对应的数据,并对所述数据进行计算得到计算结果;
所述数据计算方利用所述数据持有方的公钥将所述计算结果进行加密。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
用户产生由所述用户到查询者的代理重加密密钥;
将所述代理重加密密钥发送至链上的代理重加密节点;
所述代理重加密节点根据所述查询者需要查询的密文和所述代理重加密密钥,完成重加密操作并将加密数据传送给所述查询者;
所述查询者对所述加密数据进行解密以获取数据从而完成共享操作。
5.根据权利要求1所述的方法,其特征在于,所述将第一数据信息存储在链下的数据库中形成链下数据之前,还包括:
对所述数据信息进行分类,并公布所述分类的结果。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将目标信息发送至区块链的链上区块;
由所述区块链中的同步模块获取所述目标信息,并保存至所述同步模块的数据库中;
由链下的数据库向所述区块链的代理模块发送对所述目标信息的请求,通过所述区块的代理模块查询所述同步模块的数据库,以获取所述目标信息实现实时查询同步。
7.根据权利要求1所述的方法,其特征在于,所述链上区块,包括:
区块头和区块体;
所述区块头用于存储头信息;
所述区块体用于存储文档索引信息、模型参数信息和日志信息。
8.根据权利要求1所述的方法,其特征在于,所述链上区块的存储内容还包括:
用户信息及用于数据计算的模型的训练参数信息。
9.一种基于区块链的数据存储的装置,其特征在于,所述装置包括:
链上存储模块,用于将第一数据信息存储在链下的数据库中形成链下数据,所述第一数据信息包括计算数据;
链上存储模块,用于将第二数据和所述链下数据的索引信息,加密后存储至链上区块链的区块,所述索引信息用于在所述数据库中匹配到对应的链下数据,所述第二数据包括用户信息和用于数据计算的模型的训练参数信息。
10.根据权利要求9所述的装置,其特征在于,所述链上存储模块,具体包括:
加密文件形成子模块,用于将所述链下数据用公钥进行加密并存储到数据库中形成加密文件;
加密文件存储子模块,用于将所述加密文件对应的存储的地址值返回至链上并存储在索引表中,所述索引信息为所述加密文件对应的存储的地址。
11.根据权利要求9所述的装置,其特征在于,所述装置包括:公钥交换模块、数据加密发送模块、数据计算模块及结果加密模块,当区块链上需要进行数据计算时,所述装置具体包括:
公钥交换模块,用于数据计算方与数据持有方交换彼此的公钥;
数据加密发送模块,用于所述数据持有方利用数据计算方的公钥对数据的索引信息进行加密,并发送给数据计算方;
数据计算模块,用于所述数据计算方利用所述数据计算方的私钥对所述数据的索引信息进行解密,根据解密后的所述数据的索引信息找到对应的数据,并对所述数据进行计算得到计算结果;
结果加密模块,用于所述据计算方利用所述数据持有方的公钥将所述计算结果进行加密。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211406274.1A CN115914245A (zh) | 2022-11-10 | 2022-11-10 | 一种基于区块链的数据存储的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211406274.1A CN115914245A (zh) | 2022-11-10 | 2022-11-10 | 一种基于区块链的数据存储的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115914245A true CN115914245A (zh) | 2023-04-04 |
Family
ID=86493261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211406274.1A Pending CN115914245A (zh) | 2022-11-10 | 2022-11-10 | 一种基于区块链的数据存储的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115914245A (zh) |
-
2022
- 2022-11-10 CN CN202211406274.1A patent/CN115914245A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109120639B (zh) | 一种基于区块链的数据云存储加密方法及系统 | |
Wang et al. | A blockchain-based framework for data sharing with fine-grained access control in decentralized storage systems | |
CN108830601B (zh) | 基于区块链的智慧城市信息安全使用方法及系统 | |
CN108282459B (zh) | 基于智能合约的数据传递方法及系统 | |
Aujla et al. | SecSVA: secure storage, verification, and auditing of big data in the cloud environment | |
JP7083754B2 (ja) | スマートコントラクトに基づく自動給与支払方法及びシステムをもたらす、ブロックチェーン上の給与支払に関連付けられた暗号通貨の効率的な転送のための方法及びシステム | |
US11726968B2 (en) | Methods, apparatuses, and devices for transferring data assets based on blockchain | |
US9674156B2 (en) | Event-triggered release through third party of pre-encrypted digital data from data owner to data assignee | |
US20230014599A1 (en) | Data processing method and apparatus for blockchain system | |
US11546348B2 (en) | Data service system | |
US20150074402A1 (en) | Cloud key escrow system | |
US20140281520A1 (en) | Secure cloud data sharing | |
Yan et al. | A homomorphic encryption and privacy protection method based on blockchain and edge computing | |
EP3933642A1 (en) | Managing transactions in multiple blockchain networks | |
US11569989B2 (en) | Blockchain system for hardening quantum computing security | |
CN117396869A (zh) | 用于使用分布式账本技术进行安全密钥管理的系统和方法 | |
CA3098649A1 (en) | Performing map iterations in a blockchain-based system | |
CN114500069A (zh) | 一种电子合同的存储及共享的方法与系统 | |
CN110798489A (zh) | 一种基于区块链的数据审批方法及系统 | |
Satamraju et al. | A secured and authenticated internet of things model using blockchain architecture | |
CN115914245A (zh) | 一种基于区块链的数据存储的方法及装置 | |
US11436351B1 (en) | Homomorphic encryption of secure data | |
Vishnupriya et al. | Secure multicloud storage with policy based access control and cooperative provable data possession | |
shaher Alslman et al. | Exchanging digital documents using blockchain technology | |
Shrivastava et al. | Secure Storage and Data Sharing Scheme Using Private Blockchain-Based HDFS Data Storage for Cloud Computing |
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 |