区块链数据存储的方法和装置
文献发布时间:2023-06-19 12:27:31
技术领域
本申请涉及区块链技术领域,特别是涉及一种区块链数据存储的方法和装置。
背景技术
目前的区块链数据存储,通常是将数据直接存储至区块,或仅在区块中存储哈希值,并将需要存储的信息存储至中心化数据库。
但是,上述存储方式却存在一些缺陷。当将数据直接存储至区块时,会导致存储效率低、成本高,同一份数据要求网络中的全部或部分节点重复存储,这将严重限制区块链可存储的数据大小及类型,如无法存储较大的图片、视频等。而将要存储的数据存放至中心化数据库时,存储又成为去中心化应用中的一个短板,如单点故障、去中心化的需求等。另外,无论存储至区块还是存储至中心化数据库,都面临着数据隐私的问题,任何人都能获取到明文数据,无法满足隐私保护的现实需求。
发明内容
本申请的目的在于克服上述问题或者至少部分地解决或缓减解决上述问题。
根据本申请的一个方面,提供了一种区块链数据存储的方法,包括:
在区块链中为当前用户生成一个账户,在所述账户下创建资产,所述资产对应任意类型的数据;
为所述数据随机生成一对用于加密解密的密钥,包括第一公钥和第一私钥;
使用所述第一公钥加密所述数据,通过哈希算法为加密后的数据生成对应的哈希值,并使用所述当前用户的个人公钥加密所述第一私钥;
将所述加密后的数据存储在分布式文件系统中,将所述哈希值和所述加密后的第一私钥作为交易信息存储在区块链中。
可选地,所述方法还包括:
当转移所述资产时,从区块链中获取所述加密后的第一私钥,使用所述当前用户的个人私钥对其进行解密得到所述第一私钥,使用资产转移接收者的个人公钥进行加密后,添加至所述交易信息中并存储在区块链中。
可选地,所述方法还包括:
在所述资产转移的交易完成后,当所述当前用户或所述接收者发起查询请求时,使用自己的个人私钥在区块链中查询所述交易信息;或,
在所述资产转移的交易完成后,当被授权的第三方发起查询请求时,使用专有密钥在区块链中查询所述交易信息。
可选地,所述方法还包括:
当未被授权的用户发起验证请求时,通过零知识证明的方式来验证所述转移资产交易的合法性。
可选地,所述分布式文件系统为去中心化的分布式文件系统或者中心化的分布式文件系统。
根据本申请的另一个方面,提供了一种区块链数据存储的装置,包括:
创建模块,其配置成在区块链中为当前用户生成一个账户,在所述账户下创建资产,所述资产对应任意类型的数据;
生成模块,其配置成为所述数据随机生成一对用于加密解密的密钥,包括第一公钥和第一私钥;
加密模块,其配置成使用所述第一公钥加密所述数据,通过哈希算法为加密后的数据生成对应的哈希值,并使用所述当前用户的个人公钥加密所述第一私钥;
存储模块,其配置成将所述加密后的数据存储在分布式文件系统中,将所述哈希值和所述加密后的第一私钥作为交易信息存储在区块链中。
可选地,所述加密模块还配置成:
当转移所述资产时,从区块链中获取所述加密后的第一私钥,使用所述当前用户的个人私钥对其进行解密得到所述第一私钥,使用资产转移接收者的个人公钥进行加密后,添加至所述交易信息中并存储在区块链中。
可选地,所述装置还包括:
查询模块,其配置成在所述资产转移的交易完成后,当所述当前用户或所述接收者发起查询请求时,使用自己的个人私钥在区块链中查询所述交易信息;或配置成在所述资产转移的交易完成后,当被授权的第三方发起查询请求时,使用专有密钥在区块链中查询所述交易信息。
可选地,所述装置还包括:
验证模块,其配置成当未被授权的用户发起验证请求时,通过零知识证明的方式来验证所述转移资产交易的合法性。
可选地,所述分布式文件系统为去中心化的分布式文件系统或者中心化的分布式文件系统。
根据本申请的又一个方面,提供了一种计算设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如上所述的方法。
根据本申请的又一个方面,提供了一种计算机可读存储介质,优选为非易失性可读存储介质,其内存储有计算机程序,所述计算机程序在由处理器执行时实现如上所述的方法。
根据本申请的又一个方面,提供了一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码由计算机设备执行时,导致所述计算机设备执行上述的方法。
本申请提供的技术方案,通过在区块链中为当前用户生成一个账户,在所述账户下创建资产,所述资产对应任意类型的数据,为所述数据随机生成一对用于加密解密的密钥,包括第一公钥和第一私钥,使用所述第一公钥加密所述数据,通过哈希算法为加密后的数据生成对应的哈希值,并使用所述当前用户的个人公钥加密所述第一私钥,将所述加密后的数据存储在分布式文件系统中,将所述哈希值和所述加密后的第一私钥作为交易信息存储在区块链中,从而无需将数据存储在区块链中,解决了区块链本身的低效率、高成本存储问题,而且,资产为任意类型的数据,不限于虚拟货币,还支持如图片、音频、视频、代码文件等各种通用数字资产,克服了局限性,应用更广泛。另外,通过将数据解密时使用的第一私钥存储在交易中,解决了复杂资产的转移问题。
根据下文结合附图对本申请的具体实施例的详细描述,本领域技术人员将会更加明了本申请的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本申请的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是根据本申请一个实施例的区块链数据存储的方法流程图;
图2是根据本申请另一个实施例的区块链数据存储的方法流程图;
图3是根据本申请另一个实施例的区块链数据存储的装置结构图;
图4是根据本申请另一个实施例的计算设备结构图;
图5是根据本申请另一个实施例的计算机可读存储介质结构图。
具体实施方式
图1是根据本申请一个实施例的区块链数据存储的方法流程图。参见图1,该方法包括:
101:在区块链中为当前用户生成一个账户,在账户下创建资产,该资产对应任意类型的数据;
本实施例中,可选的,创建的资产是指任何有价值的资产,包括但不限于:文本、图片、视频和虚拟货币等等,如原创文章、摄影作品等。
102:为上述数据随机生成一对用于加密解密的密钥,包括第一公钥和第一私钥;
103:使用第一公钥加密数据,通过哈希算法为加密后的数据生成对应的哈希值,并使用当前用户的个人公钥加密第一私钥;
104:将加密后的数据存储在分布式文件系统中,将哈希值和加密后的第一私钥作为交易信息存储在区块链中。
本实施例中,可选的,上述方法还包括:
当转移资产时,从区块链中获取加密后的第一私钥,使用当前用户的个人私钥对其进行解密得到第一私钥,使用资产转移接收者的个人公钥进行加密后,添加至交易信息中并存储在区块链中。
本实施例中,可选的,上述方法还包括:
在资产转移的交易完成后,当上述当前用户或接收者发起查询请求时,使用自己的个人私钥在区块链中查询交易信息;或,
在资产转移的交易完成后,当被授权的第三方发起查询请求时,使用专有密钥在区块链中查询交易信息。
本实施例中,可选的,上述方法还包括:
当未被授权的用户发起验证请求时,通过零知识证明的方式来验证转移资产交易的合法性。
本实施例中,可选的,上述分布式文件系统为去中心化的分布式文件系统或者中心化的分布式文件系统。
本实施例提供的上述方法,通过在区块链中为当前用户生成一个账户,在所述账户下创建资产,所述资产对应任意类型的数据,为所述数据随机生成一对用于加密解密的密钥,包括第一公钥和第一私钥,使用所述第一公钥加密所述数据,通过哈希算法为加密后的数据生成对应的哈希值,并使用所述当前用户的个人公钥加密所述第一私钥,将所述加密后的数据存储在分布式文件系统中,将所述哈希值和所述加密后的第一私钥作为交易信息存储在区块链中,从而无需将数据存储在区块链中,解决了区块链本身的低效率、高成本存储问题,而且,资产为任意类型的数据,不限于虚拟货币,还支持如图片、音频、视频、代码文件等各种通用数字资产,克服了局限性,应用更广泛。另外,通过将数据解密时使用的第一私钥存储在交易中,解决了复杂资产的转移问题。进一步地,通过零知识证明对交易地址、交易金额进行隐私保护,解决了区块链因透明而带来的隐私问题,在创建资产、转移资产的过程中可以实现相关利益人的隐私保护。
图2是根据本申请另一个实施例的区块链数据存储的方法流程图。参见图2,该方法包括:
201:在区块链中为当前用户生成一个账户,在账户下创建资产,该资产对应任意类型的数据;
其中,生成一个账户相当于当前用户创建一个身份,比如用比特币创建一个地址,从而方便后续进行交易等操作。上述创建的资产是指任何有价值的资产,该资产对应的数据可以为任意类型,包括但不限于:文本、图片、视频和虚拟货币,如原创文章、摄影作品等。
202:为上述数据随机生成一对用于加密解密的密钥,包括第一公钥和第一私钥;
其中,第一公钥用来对该数据进行加密,第一私钥用来对加密后的数据进行解密。
203:使用第一公钥加密数据,通过哈希算法为加密后的数据生成对应的哈希值,并使用当前用户的个人公钥加密第一私钥;
204:将加密后的数据存储在分布式文件系统中,将哈希值和加密后的第一私钥作为交易信息存储在区块链中;
其中,分布式文件系统可以为去中心化的分布式文件系统,如IPFS(Inter-Planetary File System,星际文件系统),也可以为中心化的分布式文件系统,如HDFS(Hadoop Distribution File System,Hadoop分布式文件系统),具体不限定。
例如,当前用户创建的资产为1M大小的图片,使用第一公钥加密该图片后生成0.8M大小的加密数据,将该加密数据存储在分布式文件系统中,并为加密数据生成对应的哈希值,以及使用当前用户的个人公钥加密第一私钥,然后将只包括几十个字节的哈希值和加密后的第一私钥作为交易信息存储在区块链中,避免了将复杂数据直接存储在区块链中,从而极大地提高了区块链的存储空间利用率,降低了成本。用户在需要时,可以通过哈希值和第一私钥获取该资产。
205:当转移资产时,从区块链中获取加密后的第一私钥,使用当前用户的个人私钥对其进行解密得到第一私钥,使用资产转移接收者的个人公钥进行加密后,添加至交易信息中并存储在区块链中;
其中,当前用户进行转移资产给接收者的操作,预先会获取该接收者的个人公钥,从而可以用其对第一私钥进行加密。执行交易的过程可以使用UTXO(Unspent TransactionOutput,未花费的交易输出)模型,也可以使用账户模型来实现,本实施例对此不做具体限定。
值得一提的是,现有技术中针对复杂资产的平台目前还不支持资产的转移,如果借用区块链中转移数字货币的方式,则会带来其他问题,实用性较差。例如,对1M的资产数据进行转移,由于转移一次需要记账一次,则该资产被转移一千次后需要1G的存储空间,这会造成大量的数据重复、冗余,因此该方式不可取。而本实施例通过将加密后的第一私钥存储在交易中,资产数据不需要重复创建,而仅仅需要转移第一私钥,该第一私钥相比资产数据要小的多,因此解决了复杂资产的转移问题。
206:在资产转移的交易完成后,当上述当前用户或接收者发起查询请求时,使用自己的个人私钥在区块链中查询上述交易信息;或,在资产转移的交易完成后,当被授权的第三方发起查询请求时,使用专有密钥在区块链中查询上述交易信息;
其中,交易信息为交易的隐私信息,包括发送者和接收者的地址、交易数额等。当前用户和接收者为交易的参与者,因此有权查看该隐私信息,另外,被授权的第三方也有权可以查看该隐私信息,该第三方可以是被授权的政府监管部门、审计部门等,本实施例对此不做具体限定。
207:当未被授权的用户发起验证请求时,通过零知识证明的方式来验证转移资产交易的合法性。
本实施例中,零知识证明可以在不透露该交易任何信息的情况下证明该交易的合法性,因此,未被授权的用户即使无法查询到交易的隐私信息,仍然可以通过零知识证明来验证该笔交易的合法性。
本实施例提供的上述方法,通过在区块链中为当前用户生成一个账户,在所述账户下创建资产,所述资产对应任意类型的数据,为所述数据随机生成一对用于加密解密的密钥,包括第一公钥和第一私钥,使用所述第一公钥加密所述数据,通过哈希算法为加密后的数据生成对应的哈希值,并使用所述当前用户的个人公钥加密所述第一私钥,将所述加密后的数据存储在分布式文件系统中,将所述哈希值和所述加密后的第一私钥作为交易信息存储在区块链中,从而无需将数据存储在区块链中,解决了区块链本身的低效率、高成本存储问题,而且,资产为任意类型的数据,不限于虚拟货币,还支持如图片、音频、视频、代码文件等各种通用数字资产,克服了局限性,应用更广泛。另外,通过将数据解密时使用的第一私钥存储在交易中,解决了复杂资产的转移问题。进一步地,通过零知识证明对交易地址、交易金额进行隐私保护,解决了区块链因透明而带来的隐私问题,在创建资产、转移资产的过程中可以实现相关利益人的隐私保护。
图3是根据本申请另一个实施例的区块链数据存储的装置结构图。参见图3,该装置包括:
创建模块301,其配置成在区块链中为当前用户生成一个账户,在账户下创建资产,资产对应任意类型的数据;
生成模块302,其配置成为数据随机生成一对用于加密解密的密钥,包括第一公钥和第一私钥;
加密模块303,其配置成使用第一公钥加密数据,通过哈希算法为加密后的数据生成对应的哈希值,并使用当前用户的个人公钥加密第一私钥;
存储模块304,其配置成将加密后的数据存储在分布式文件系统中,将哈希值和加密后的第一私钥作为交易信息存储在区块链中。
本实施例中,可选的,加密模块还配置成:
当转移资产时,从区块链中获取加密后的第一私钥,使用当前用户的个人私钥对其进行解密得到第一私钥,使用资产转移接收者的个人公钥进行加密后,添加至交易信息中并存储在区块链中。
本实施例中,可选的,上述装置还包括:
查询模块,其配置成在资产转移的交易完成后,当上述当前用户或接收者发起查询请求时,使用自己的个人私钥在区块链中查询交易信息;或配置成在资产转移的交易完成后,当被授权的第三方发起查询请求时,使用专有密钥在区块链中查询交易信息。
本实施例中,可选的,上述装置还包括:
验证模块,其配置成当未被授权的用户发起验证请求时,通过零知识证明的方式来验证转移资产交易的合法性。
本实施例中,可选的,分布式文件系统为去中心化的分布式文件系统或者中心化的分布式文件系统。
本实施例提供的上述装置,可以执行上述任一方法实施例提供的方法,详细过程详见方法实施例中的描述,此处不再赘述。
本实施例提供的上述装置,通过在区块链中为当前用户生成一个账户,在所述账户下创建资产,所述资产对应任意类型的数据,为所述数据随机生成一对用于加密解密的密钥,包括第一公钥和第一私钥,使用所述第一公钥加密所述数据,通过哈希算法为加密后的数据生成对应的哈希值,并使用所述当前用户的个人公钥加密所述第一私钥,将所述加密后的数据存储在分布式文件系统中,将所述哈希值和所述加密后的第一私钥作为交易信息存储在区块链中,从而无需将数据存储在区块链中,解决了区块链本身的低效率、高成本存储问题,而且,资产为任意类型的数据,不限于虚拟货币,还支持如图片、音频、视频、代码文件等各种通用数字资产,克服了局限性,应用更广泛。另外,通过将数据解密时使用的第一私钥存储在交易中,解决了复杂资产的转移问题。进一步地,通过零知识证明对交易地址、交易金额进行隐私保护,解决了区块链因透明而带来的隐私问题,在创建资产、转移资产的过程中可以实现相关利益人的隐私保护。
根据下文结合附图对本申请的具体实施例的详细描述,本领域技术人员将会更加明了本申请的上述以及其他目的、优点和特征。
本申请实施例还提供了一种计算设备,参照图4,该计算设备包括存储器1120、处理器1110和存储在所述存储器1120内并能由所述处理器1110运行的计算机程序,该计算机程序存储于存储器1120中的用于程序代码的空间1130,该计算机程序在由处理器1110执行时实现用于执行任一项根据本发明的方法步骤1131。
本申请实施例还提供了一种计算机可读存储介质。参照图5,该计算机可读存储介质包括用于程序代码的存储单元,该存储单元设置有用于执行根据本发明的方法步骤的程序1131′,该程序被处理器执行。
本申请实施例还提供了一种包含指令的计算机程序产品。当该计算机程序产品在计算机上运行时,使得计算机执行根据本发明的方法步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、获取其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid StateDisk(SSD))等。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令处理器完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质是非短暂性(英文:non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(英文:magnetic tape),软盘(英文:floppy disk),光盘(英文:optical disc)及其任意组合。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。