CN109936620A - 基于区块链的存储方法及装置、系统与存储介质 - Google Patents
基于区块链的存储方法及装置、系统与存储介质 Download PDFInfo
- Publication number
- CN109936620A CN109936620A CN201910054497.8A CN201910054497A CN109936620A CN 109936620 A CN109936620 A CN 109936620A CN 201910054497 A CN201910054497 A CN 201910054497A CN 109936620 A CN109936620 A CN 109936620A
- Authority
- CN
- China
- Prior art keywords
- merkle tree
- node
- stored
- data node
- broadcast message
- 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
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000012545 processing Methods 0.000 claims description 30
- 239000012634 fragment Substances 0.000 claims description 25
- 238000005065 mining Methods 0.000 claims description 22
- 238000012795 verification Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013467 fragmentation Methods 0.000 claims description 5
- 238000006062 fragmentation reaction Methods 0.000 claims description 5
- 238000013461 design Methods 0.000 description 20
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于区块链的存储方法及装置、系统与存储介质。该方法包括:数据节点在区块链上广播第一广播消息,所述第一广播消息用于请求将待存储信息存储在所述区块链上,然后,所述数据节点获取第一Merkle树与第二Merkle树;所述第一Merkle树为所述数据节点根据所述待存储信息获取到的,所述第二Merkle树是存储节点根据所述待存储信息获取到的,从而,所述数据节点利用所述第一Merkle树对所述第二Merkle树进行验证,若验证通过,所述数据节点在区块链上广播第二广播消息,所述第二广播消息用于指示挖矿节点根据所述第二Merkle树生成新区块。本发明的方法,能够在一定程度上解决基于区块链的存储系统由于存储压力而导致应用受限的问题。
Description
技术领域
本发明涉及区块链技术,尤其涉及一种基于区块链的存储方法及装置、系统与存储介质。
背景技术
区块链分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,目前得到广泛应用。
目前,区块链技术已广泛应用于数据存储领域。在现有的基于区块链技术实现的存储方案中,区块链账本中会完整记录各节点之间广播的待存储数据,也就是,区块链技术满足了海量数据的存储需求。但是,这也导致区块链账本的内容量巨大,而基于区块链系统的分布式存储架构,区块链中的每个节点都需要在本地同步区块链账本,这就对区块链中各节点造成较大的存储压力,导致现有的基于区块链的存储方案难以大规模应用。
发明内容
本发明提供一种基于区块链的存储方法及装置、系统与存储介质,用以解决基于区块链的存储系统由于存储压力而导致应用受限的问题。
第一方面,本发明提供一种基于区块链的存储方法,包括:
数据节点在区块链上广播第一广播消息,所述第一广播消息用于请求将待存储信息存储在所述区块链上;
所述数据节点获取第一Merkle树与第二Merkle树;所述第一Merkle树为所述数据节点根据所述待存储信息获取到的,所述第二Merkle树是所述存储节点根据所述待存储信息获取到的;
所述数据节点利用所述第一Merkle树对所述第二Merkle树进行验证;
若验证通过,所述数据节点在区块链上广播第二广播消息,所述第二广播消息用于指示挖矿节点根据所述第二Merkle树生成新区块。
第二方面,本发明提供一种基于区块链的存储装置,包括:
广播模块,用于在区块链上广播第一广播消息,所述第一广播消息用于请求将待存储信息存储在所述区块链上;
获取模块,用于获取第一Merkle树与第二Merkle树;所述第一Merkle树为自身根据所述待存储信息获取到的,所述第二Merkle树是所述存储节点根据所述待存储信息获取到的;
验证模块,用于利用所述第一Merkle树对所述第二Merkle树进行验证;
所述广播模块,还用于若验证通过,在区块链上广播第二广播消息,所述第二广播消息用于指示挖矿节点根据所述第二Merkle树生成新区块。
第三方面,本发明提供一种基于区块链的存储设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的方法。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如第一方面所述的方法。
第五方面,本发明提供一种基于区块链的存储系统,包括:
数据节点,用于执行如第一方面所述的方法;
存储节点,用于存储待存储信息,以及,用于获取所述待存储信息的第二Merkle树并发送给所述数据节点;
挖矿节点,用于根据所述第二Merkle树生成新区块。
其中,如第二方面或第三方面所述的基于区块链的存储装置设置于数据节点侧。
本发明提供的基于区块链的存储方法及装置、系统与存储介质,任意数据节点可在区块链上广播发出的针对待存储信息的存储请求,并且,存储节点与数据节点分别获取该待存储信息的Merkle树,从而,数据节点可通过验证二者的Merkle树来验证存储数据是否一致,进而,由区块链中的挖矿节点将获取到的Merkle树来生成新区块,由此,完整的待存储信息被存储在区块链的存储节点中,对于区块链中的其他各节点而言,无需记录完整的待存储信息,仅需记录体量较小的Merkle树即可,这能够有效减轻区块链网络中各节点的存储压力,也便于区块链的挖矿节点挖矿效率的提升。因此,本发明实施例所提供的技术方案能够解决基于区块链的存储系统由于存储压力而导致应用受限的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本发明实施例所提供的一种基于区块链的存储系统的架构示意图;
图2为本发明实施例所提供的另一种基于区块链的存储装置方法的流程示意图;
图3为本发明实施例所提供的一种Merkle树的生成流程示意图;
图4为本发明实施例所提供的一种Merkle树的架构示意图;
图5为本发明实施例所提供的一种基于区块链的存储装置的功能方块图;
图6为本发明实施例所提供的一种基于区块链的存储装置的实体结构示意图;
图7为本发明实施例所提供的另一种基于区块链的存储系统的架构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
首先对本发明所涉及的名词进行解释:
区块链(原始区块链),是一种去中心化的数据库,它包含一张被称为区块的列表,有着持续增长并且排列整齐的记录。每个区块都包含一个时间戳和一个与前一区块的链接:设计区块链使得数据不可篡改:数据一旦被记录下来,在一个区块中的数据将不可逆。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。区块链(Blockchain)是比特币的一个重要概念,火币网联合清华大学五道口金融学院互联网金融实验室、新浪科技发布的《2014—2016全球比特币发展研究报告》提到区块链是比特币的底层技术和基础架构。本质上是一个去中心化的数据库,同时作为比特币的底层技术。区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算。
区块链的设计是一种保护措施,比如(应用于)高容错的分布式计算系统。区块链使混合一致性成为可能。这使区块链适合记录事件、标题、医疗记录和其他需要收录数据的活动、身份识别管理,交易流程管理和出处证明管理。区块链对于金融脱媒有巨大的潜能,对于引领全球贸易有着巨大的影响。2008年由中本聪第一次提出了区块链的概念,在随后的几年中,成为了电子货币比特币的核心组成部分:作为所有交易的公共账簿。通过利用点对点网络和分布式时间戳服务器,区块链数据库能够进行自主管理。为比特币而发明的区块链使它成为第一个解决重复消费问题的数字货币。比特币的设计已经成为其他应用程序的灵感来源。
Merkle树(Merkle Tree,默克尔树),也称之为Hash Tree或Merkle Hash Tree,是一种由哈希(Hash)值作为节点构成的树(数据结构中所说的树)结构。Merkle树可以是二叉树,也可以多叉树,无论是几叉树,它都具有树结构的所有特点。具体而言,Merkle树由叶子节点哈希值(value)、非叶子节点哈希值(value)和根哈希值(value)构成的。其中,叶子节点哈希值可以根据初始数据得到,而非叶子节点的value是根据它下面所有的叶子节点值,然后按照一定的算法计算而得出的,以及,根节点哈希值根据非叶子节点哈希值得到。
具体而言,本发明实施例具体的应用场景为基于区块链技术实现数据存储的场景。
在现有的基于区块链实现存储的技术方案中,区块链中的每个节点均需要同步区块链账本,而区块链账本中记录有区块链中所有完整的存储数据,这就导致区块链账本的体量巨大,这也就对各节点的存储能力提出了较高的要求,因此,受限于这种存储模式,导致基于区块链的存储方案存在难以大规模应用的难题。
本发明提供的基于区块链的存储方法,旨在解决现有技术的如上技术问题,并提出如下解决思路:采用Markle树来描述区块链的存储系统的待存储信息,Markle树只包含各个待存储信息的碎片的Hash值,而不包含每个待存储信息的详细内容,这样对于存储内容来说具有隐私性,不容易被整个区块链的各节点所盗取,也不容易被待存储信息的存储服务器所篡改,同时又减轻了区块链网络各节点的存储压力,不需要每个区块链的节点都存储的区块链账本中包含所有的待存储信息,也便于区块链的挖矿节点挖矿效率的提升,促进区块链的发展。
下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
本发明实施例提供了一种基于区块链的存储方法。其中,图1示出了本发明实施例所提供的一种基于区块链的存储系统的结构架设图。
如图1所示,该基于区块链的存储系统100至少包括:数据节点110、存储节点120与挖矿节点130。其中,数据节点110(也可称之为参与节点)用于执行本方案中涉及到的具体步骤;存储节点120负责存储区块链的全部真实信息,并用于执行本方案中涉及到的其他步骤;而;挖矿节点130用于根据待存储信息生成新区块。
本发明实施例所提供的存储系统100中,数据节点110、存储节点120与挖矿节点130的数目均为至少一个,本发明实施例对此均无特别限定。为了便于理解,以下以一个数据节点110向一个存储节点120进行待存储信息的存储这一具体的实现场景为例,说明本方案。
基于前述存储系统100的系统架构,本发明实施例给出如图2所示的基于区块链的存储方法。该方法包括如下步骤:
S202,数据节点在区块链上广播第一广播消息,所述第一广播消息用于请求将待存储信息存储在所述区块链上。
可知,在不同的存储场景中,待存储信息的表现形式不同,本发明实施例对于待存储信息的表现形式无特别限定。例如,其可以表现为文件形式,如word文件,或excel文件,或pdf文档等形式;又例如,其还可以表现为多媒体形式,如图片、音频、视频等形式。
S204,所述数据节点获取第一Merkle树与第二Merkle树。
其中,所述第一Merkle树为所述数据节点根据所述待存储信息获取到的,所述第二Merkle树是所述存储节点根据所述待存储信息获取到的。其中,数据节点与存储节点各自分别获取Merkle树的方式后续具体说明。
本发明实施例中,通过待存储信息的Merkle树来表征待存储信息,因此,将Merkle树记录在区块链账本,以实现对待存储信息的记录,并缓解各节点同步区块链账本的存储压力。而Merkle树的处理需要得到存储节点和数据节点的双方认可才可进行存储,以避免数据被篡改。
S206,所述数据节点利用所述第一Merkle树对所述第二Merkle树进行验证。
具体而言,数据节点需要获取自身获取到的第一Merkle树和存储节点获取到的第二Merkle树是否一致。若一致,则说明存储节点当前存储的待存储信息与自身需要被存储的待存储信息一致,验证通过;此时,数据节点认可第二Merkle树,则可用第二Merkle树表征待存储信息。反之,若不一致,则说明存储节点当前存储的待存储信息与自身需要被存储的待存储信息不同,存储节点存储的待存储信息可能被篡改,则不再执行后续支付、生成新区块的步骤,此时,验证不通过。
若验证不通过,在具体实现时,可结束处理,或者,数据节点也可通过私信或广播的方式通知存储节点。而与之相对的,存储节点可删除自身存储的已被存储的待存储信息,此外,存储节点还可以进一步向管理人员发出待存储信息被篡改以及验证失败的通知消息,以便于管理人员可进行存储篡改调查或其他处理。
S208,若验证通过,所述数据节点在区块链上广播第二广播消息,所述第二广播消息用于指示挖矿节点根据所述第二Merkle树生成新区块。
如前所述,若验证通过,数据节点认可当前存储在存储节点处的待存储信息是自身需要存储的信息,此时,数据节点可在区块链上发出第二广播消息,如此,区块链上的挖矿节点可根据该第二广播消息生成新区块,并记录在区块链中账本中,以及,区块链上的各节点同步该区块链账本。而由于本发明实施例所提供的技术方案中,第二广播消息指示根据第二Merkle树生成新区块,Merkle树是由具备特定顺序的一组哈希值构成,因此,相对于将原始的待存储信息完整的存储在区块链账本中,本方案能够有效降低区块链账本的数据量,如此,也就缓解了对区块链中各节点的存储压力,此外,还能够有效提高存储效率。
为了更好的理解本方案,以下对图2所示方法流程中所涉及到的各步骤的实现方式分别进行具体说明。
一种可能的设计中,出于数据安全传输的考虑,区块链中任意节点发出的任意消息,包括广播消息,可使用自身私钥对其进行私钥签名后再发出,如此,接收到该消息的接收端可以利用区块链上的非对称加密算法验证出发送端的身份,在明确其身份后,再执行后续处理,这对于提升数据安全具有重大意义。
具体而言,本发明实施例中的一种可能的设计中,数据节点发出的任意广播消息均可采用自身私钥进行私钥签名后发出。
以S202为例,数据节点可以对所述第一广播消息进行私钥签名,然后,所述数据节点在所述区块链上广播所述私钥签名后的所述第一广播消息。
而与之相对的,接收到该第一广播消息的存储节点、其他数据节点、挖矿节点等可根据区块链上记录的与该数据节点的私钥对应的公钥对该第一广播消息进行解密。若解密成功,则针对该第一广播消息的身份验证通过,即可得到其具体携带的消息和数据;反之,若解密失败,则针对该第一广播消息的身份验证失败,证明该第一广播消息的发送端有误,可不作处理。
通过如上所述的非对称式加密算法,可以保证数据传输的安全性。本发明实施例后续所涉及到的任意节点在区块链上广播任一广播消息,均可采用自身的私钥对其进行私钥签名后再广播,后续不再赘述。
经过S202步骤的处理,存储节点可通过对第一广播消息进行解密,得到待存储信息。
此时,存储节点可将待存储信息进行存储。其中,用于存储待存储信息的存储位置为非区块链账本的其他存储位置,具体可以包括但不限于:本地存储空间、第三方存储设备或者云端存储服务器等。这种设计是考虑到,存储到区块链账本中的数据会被区块链中的各节点进行同步,因此,将原始的待存储信息仅存储在存储节点,由于区块链账本未存储原始的待存储信息,可有效缓解各节点的存储压力。
基于前述处理,存储节点与数据节点均具备待存储信息,如此,在执行S204中获取第一Merkle树与第二Merkle树的过程中,可以参考图3和图4,其中,图3示出了数据节点获取第一Merkle树的方法流程,图4示出了Merkle树的生成示意图。
如图3所示,该生成过程可以包括如下两个步骤:
S302,所述数据节点将所述待存储信息进行碎片化处理,得到至少两个待存储碎片。
具体而言,碎片化处理就是将原始的待存储信息进行拆分,以获取到体量较小的多个待存储碎片。而具体的拆分方式可以根据需要预设。
在一个具体的设计中,可以按照一定的碎片大小(或者碎片数目),对待存储信息进行平均拆分或不平均拆分,这种设计中,碎片大小或碎片数目可根据需要预设,其中,以碎片大小方式进行碎片化处理时,可采用统一的碎片大小,或者,也可以采用至少两个碎片大小进行拆分。
另一种设计中,还可以根据不同的待存储信息的类型,采用结构式拆分的方式进行碎片化。例如,待存储信息表现为包含文字和附图的文件,此时,可将待存储信息拆分为至少一个文字碎片和至少一个附图碎片。又例如,待存储信息表现为包含片头、正片和片尾的视频,则可以将待存储信息拆分为:至少一个片头碎片、至少一个正片碎片和至少一个片尾碎片。
S304,所述数据节点对所述至少两个待存储碎片进行哈希处理,得到所述第一Merkle树。
如前所述,Merkle树由叶子节点哈希值(value)、非叶子节点哈希值和根哈希值构成,因此,该步骤的实现方式可以通过如图4所示方式实现,具体包括如下步骤:所述数据节点分别获取各所述待存储碎片的哈希值,以作为所述第一Merkle树的叶子节点哈希值;所述数据节点对所述叶子节点进行哈希处理,得到所述第一Merkle树的非叶子节点哈希值;所述数据节点对所述非叶子节点进行哈希处理,得到所述第一Merkle树的根节点哈希值;所述数据节点将所述叶子节点哈希值、非叶子节点哈希值与所述根节点哈希值按照预设顺序进行排序,得到所述第一Merkle树。
结合图4,可通过S302步骤将初始的待存储信息处理为8个待存储碎片,为了便于区分,可对待存储碎片进行编号,如图4中将待存储碎片编号为a0~a7。然后,对每个待存储碎片分别计算其对应的哈希值,得到哈希值A0~A7,将此作为该Merkle树的叶子节点。之后,再按照一定的次序,对叶子节点进行哈希处理,如图4所示的对相邻的叶子节点作两两哈希处理,并持续处理,直至最后得到一个哈希值,以作为该Merkle树的根节点D0,其中,两两哈希处理得到的哈希值作为非叶子节点,如图4所示的B0~B3以及C0、C1。最终,即可得到如图4所示的Merkle树。
此外,需要说明的是,对叶子节点进行哈希处理以得到非叶子节点,直至得到根节点的具体算法,本发明实施例无特别限定,如图4所示的方式仅为一种可能的设计,并不用以限制本申请。
基于前述设计思路,数据节点与存储节点可分别根据待存储信息进行Merkle树的获取,得到第一Merkle树和第二Merkle树。此时,由于第Merkle树和第二Merkle树用于验证待存储信息是否被篡改,因此,数据节点执行的第一Merkle树的获取方式,与存储节点执行的第二Merkle树的获取方式采用相同的算法。
本发明实施例中,第一Merkle树是数据节点可根据待存储信息并按照前述方法获取得到,而其获取第二Merkle树的方式则可以为:接收存储节点发送的第二Merkle树。
具体而言,此时,可以包括但不限于如下的实现方式:
第一种方式,数据节点接收所述存储节点在所述区块链上发出的第三广播消息,所述第三广播消息中携带所述第二Merkle树。这种实现方式中,区块链账本会记录存储节点所发送的第三广播消息,如此,在数据节点完成确认后,无需再次广播第二Merkle树,挖矿节点即可根据该第三广播消息中携带的第二Merkle树完成新区块的生成。
此外,在这种实现方式中,考虑到该存储系统中包含不止一个数据节点,因此,存储节点发出的第三广播消息中还可以进一步携带前述数据节点(待存储信息的原始发送节点)的区块链节点标识,如此,该数据节点在接收到第三广播消息时,即可确认该广播消息中携带的第二Merkle树是对应于自身发送的待存储信息。
除前述信息之外,第三广播消息中还可以携带其他信息,例如,在一种设计中,还可以携带以下至少一种信息:存储节点的区块链节点标识、待存储信息的标识信息等。
或者,
第二种方式,所述数据节点接收所述存储节点发送的私信消息,所述私信消息中携带所述第二Merkle树。其中,本发明实施例所涉及到的私信消息可以为除区块链网络外的其他点对点通信方式。在具体实现过程中,出于安全性考虑,还可以采用较高级别的安全协议来实现此处的安全通信。
这种实现方式中,考虑到该第二Merkle树并未得到数据节点的确认,因此,数据节点与存储节点可以通过非区块链网络的其他途径的点对点通信方式进行该第二Merkle树的沟通与确认,这种方式有利于降低对区块链上的资源占用。
此外,如前所述,存储节点在以前述任一方式实现第二Merkle树的发送时,还可利用自身私钥对其签名后再发送。如,在一种可能的设计中,数据节点接收到的第三广播消息,为存储节点利用自身私钥对第二Merkle树与数据节点的区块链节点标识进行私钥签名后,在区块链上广播发送的。而与之相对的,数据节点在接收到第三广播消息之后,可以通过私钥签名来验证并确认该第三广播消息的发送端身份是否为存储节点,若是,再执行后续S206步骤;反之,则可作结束处理。
如前所述,S206所述的验证过程后,若验证通过,则可继续执行后续S208步骤;反之,则可作结束处理,或发出另一广播消息或私信至存储节点,以通知该待存储信息被篡改。
如前所述,数据节点在区块链上广播第二广播消息时,除直接广播之外,还可以对所述第二广播消息进行私钥签名;所述数据节点在所述区块链上广播所述私钥签名后的所述第二广播消息。
本申请实施例中,区块链账本的记录权由挖矿节点承担,区块链上的挖矿节点即可根据第二Merkle树生成新区块,使得该待存储信息的第二Merkle树被记录在区块链账本中,而初始的完整的待存储信息被记录在存储节点中。
此外,考虑到数据节点后续可能会有针对自身存储的存储数据的查阅需求,因此,本发明实施例还进一步设计了如下步骤:数据节点记录所述新区块的区块号。也就是,将生成的新区块的区块号在本地进行保存,以便于后续查询自己的历史广播信息的记录,便于自身在区块链账本中进行查询。
通过本发明实施例所提供的前述方案设计,既保障了待存储信息的真实可靠性,又避免了区块链中所有的节点都实时存储的区块链账本过于巨大的问题,并且,待存储信息的隐私性也得到了保护。
可以理解的是,上述实施例中的部分或全部步骤骤或操作仅是示例,本申请实施例还可以执行其它操作或者各种操作的变形。此外,各个步骤可以按照上述实施例呈现的不同的顺序来执行,并且有可能并非要执行上述实施例中的全部操作。
实施例二
基于上述实施例一所提供的基于区块链的存储方法,本发明实施例进一步给出实现上述方法实施例中各步骤及方法的装置实施例。
本发明实施例提供了一种基于区块链的存储装置,请参考图5,该基于区块链的存储装置500,包括:
广播模块51,用于在区块链上广播第一广播消息,所述第一广播消息用于请求将待存储信息存储在所述区块链上;
获取模块52,用于获取第一Merkle树与第二Merkle树;所述第一Merkle树为自身根据所述待存储信息获取到的,所述第二Merkle树是存储节点根据所述待存储信息获取到的;
验证模块53,用于利用所述第一Merkle树对所述第二Merkle树进行验证;
广播模块51,还用于若验证通过,在区块链上广播第二广播消息,所述第二广播消息用于指示挖矿节点根据所述第二Merkle树生成新区块。
一种可能的设计中,获取模块52,用于:
将所述待存储信息进行碎片化处理,得到至少两个待存储碎片;
对所述至少两个待存储碎片进行哈希处理,得到所述第一Merkle树。
其中,获取模块52,具体用于:
分别获取各所述待存储碎片的哈希值,以作为所述第一Merkle树的叶子节点哈希值;
对所述叶子节点进行哈希处理,得到所述第一Merkle树的非叶子节点哈希值;
对所述非叶子节点进行哈希处理,得到所述第一Merkle树的根节点哈希值;
将所述叶子节点哈希值、非叶子节点哈希值与所述根节点哈希值按照预设顺序进行排序,得到所述第一Merkle树。
此外,获取模块52,还用于:
接收所述存储节点在所述区块链上发出的第三广播消息,所述第三广播消息中携带所述第二Merkle树;或者,
接收所述存储节点发送的私信消息,所述私信消息中携带所述第二Merkle树。
其中,所述第二Merkle树是所述存储节点利用自身私钥签名后发送的。
一种设计中,验证模块53,具体用于:
比较所述第一Merkle树与所述第二Merkle树是否一致。
一种可能的设计中,广播模块51,具体用于:
根据所述第二Merkle树生成所述第二广播消息;
在所述区块链上广播所述第二广播消息,以使得所述挖矿节点根据所述第二Merkle树生成新区块。
另一种可能的设计中,广播模块51,还具体用于:
对所述第二广播消息进行私钥签名;
在所述区块链上广播所述私钥签名后的所述第二广播消息。
一种可能的设计中,广播模块51,具体用于:
所述数据节点对所述第一广播消息进行私钥签名;
所述数据节点在所述区块链上广播所述私钥签名后的所述第一广播消息。此外,一种设计中,该基于区块链的存储装置500还包括:
记录模块(图5未示出),用于记录所述新区块的区块号。
图5所示实施例的基于区块链的存储装置500可用于执行上述方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述,可选的,该区块链的存储装置500可以是数据节点,可进一步表现为用户终端。
应理解以上图5所示区块链的存储装置500的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块以软件通过处理元件调用的形式实现,部分模块通过硬件的形式实现。例如,广播模块51可以为单独设立的处理元件,也可以集成在基于区块链的存储装置500,例如终端的某一个芯片中实现,此外,也可以以程序的形式存储于基于区块链的存储装置500的存储器中,由基于区块链的存储装置500的某一个处理元件调用并执行以上各个模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
并且,本发明实施例提供了一种基于区块链的存储装置,请参考图6,该基于区块链的存储装置500,包括:
存储器510;
处理器520;以及
计算机程序;
其中,计算机程序存储在存储器510中,并被配置为由处理器520执行以实现如上述实施例所述的方法。
此外,如图5所示,在该基于区块链的存储装置500中还设置有收发器530,用于与其他设备进行数据传输或通信,在此不再赘述。其中,如图6所示,存储器510、处理器520与收发器530之间通过总线连接。
此外,本发明实施例提供了一种可读存储介质,其上存储有计算机程序,
该计算机程序被处理器执行以实现如实施例一任一实现方式所述的方法。
以及,本发明实施例提供了一种基于区块链的存储系统,请参考图1与图7,该基于区块链的存储系统100包括:
数据节点110,用于执行如实施例一任一实现方式所述的方法;
存储节点120,用于存储待存储信息,以及,用于获取所述待存储信息的第二Merkle树并发送给所述数据节点;
挖矿节点130,用于根据所述第二Merkle树生成新区块。
其中,图1可参考前述说明不再赘述,图7还进一步示出了该数据节点110与图4或图5所示的基于区块链的存储装置500之间的关系,图4或图5所示的基于区块链的存储装置500设置于数据节点110侧。
由于本实施例中的各模块能够执行实施例一所示的方法,本实施例未详细描述的部分,可参考对实施例一的相关说明。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
Claims (14)
1.一种基于区块链的存储方法,其特征在于,包括:
数据节点在区块链上广播第一广播消息,所述第一广播消息用于请求将待存储信息存储在所述区块链上;
所述数据节点获取第一Merkle树与第二Merkle树;所述第一Merkle树为所述数据节点根据所述待存储信息获取到的,所述第二Merkle树是存储节点根据所述待存储信息获取到的;
所述数据节点利用所述第一Merkle树对所述第二Merkle树进行验证;
若验证通过,所述数据节点在区块链上广播第二广播消息,所述第二广播消息用于指示挖矿节点根据所述第二Merkle树生成新区块。
2.根据权利要求1所述的方法,其特征在于,所述数据节点获取所述第一Merkle树,包括:
所述数据节点将所述待存储信息进行碎片化处理,得到至少两个待存储碎片;
所述数据节点对所述至少两个待存储碎片进行哈希处理,得到所述第一Merkle树。
3.根据权利要求2所述的方法,其特征在于,所述数据节点对所述至少两个待存储碎片进行哈希处理,得到所述第一Merkle树,包括:
所述数据节点分别获取各所述待存储碎片的哈希值,以作为所述第一Merkle树的叶子节点哈希值;
所述数据节点对所述叶子节点进行哈希处理,得到所述第一Merkle树的非叶子节点哈希值;
所述数据节点对所述非叶子节点进行哈希处理,得到所述第一Merkle树的根节点哈希值;
所述数据节点将所述叶子节点哈希值、非叶子节点哈希值与所述根节点哈希值按照预设顺序进行排序,得到所述第一Merkle树。
4.根据权利要求1所述的方法,其特征在于,所述数据节点获取所述第二Merkle树,包括:
所述数据节点接收所述存储节点在所述区块链上发出的第三广播消息,所述第三广播消息中携带所述第二Merkle树;或者,
所述数据节点接收所述存储节点发送的私信消息,所述私信消息中携带所述第二Merkle树。
5.根据权利要求1或4所述的方法,其特征在于,所述第二Merkle树是所述存储节点利用自身私钥签名后发送的。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述数据节点利用所述第一Merkle树对所述第二Merkle树进行验证,包括:
所述数据节点比较所述第一Merkle树与所述第二Merkle树是否一致。
7.根据权利要求1至4任一项所述的方法,其特征在于,所述数据节点在区块链上广播第二广播消息,包括:
所述数据节点根据所述第二Merkle树生成所述第二广播消息;
所述数据节点在所述区块链上广播所述第二广播消息,以使得所述挖矿节点根据所述第二Merkle树生成新区块。
8.根据权利要求1至4任一项所述的方法,其特征在于,所述数据节点在区块链上广播第二广播消息,包括:
所述数据节点对所述第二广播消息进行私钥签名;
所述数据节点在所述区块链上广播所述私钥签名后的所述第二广播消息。
9.根据权利要求1所述的方法,其特征在于,所述数据节点在区块链上广播第一广播消息,包括:
所述数据节点对所述第一广播消息进行私钥签名;
所述数据节点在所述区块链上广播所述私钥签名后的所述第一广播消息。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述数据节点记录所述新区块的区块号。
11.一种基于区块链的存储装置,其特征在于,包括:
广播模块,用于在区块链上广播第一广播消息,所述第一广播消息用于请求将待存储信息存储在所述区块链上;
获取模块,用于获取第一Merkle树与第二Merkle树;所述第一Merkle树为自身根据所述待存储信息获取到的,所述第二Merkle树是所述存储节点根据所述待存储信息获取到的;
验证模块,用于利用所述第一Merkle树对所述第二Merkle树进行验证;
所述广播模块,还用于若验证通过,在区块链上广播第二广播消息,所述第二广播消息用于指示挖矿节点根据所述第二Merkle树生成新区块。
12.一种基于区块链的存储装置,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1至10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,
所述计算机程序被处理器执行以实现如权利要求1至10任一项所述的方法。
14.一种基于区块链的存储系统,其特征在于,包括:
数据节点,用于执行如权利要求1至10任一项所述的方法;
存储节点,用于存储待存储信息,以及,用于获取所述待存储信息的第二Merkle树并发送给所述数据节点;
挖矿节点,用于根据所述第二Merkle树生成新区块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910054497.8A CN109936620B (zh) | 2019-01-21 | 2019-01-21 | 基于区块链的存储方法及装置、系统与存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910054497.8A CN109936620B (zh) | 2019-01-21 | 2019-01-21 | 基于区块链的存储方法及装置、系统与存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109936620A true CN109936620A (zh) | 2019-06-25 |
CN109936620B CN109936620B (zh) | 2022-02-01 |
Family
ID=66985118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910054497.8A Active CN109936620B (zh) | 2019-01-21 | 2019-01-21 | 基于区块链的存储方法及装置、系统与存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109936620B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111414426A (zh) * | 2020-03-26 | 2020-07-14 | 北京云图科瑞科技有限公司 | 一种基于区块链的数据处理方法及系统 |
CN113672046A (zh) * | 2020-05-13 | 2021-11-19 | 胡敏 | 一种基于区块链的大规模快速账本存取系统 |
CN114979173A (zh) * | 2021-04-21 | 2022-08-30 | 中移互联网有限公司 | 基于区块链的用户权益信息处理方法、装置、设备和存储介质 |
US11489663B2 (en) | 2020-01-31 | 2022-11-01 | International Business Machines Corporation | Correlation-based hash tree verification |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534317A (zh) * | 2016-11-17 | 2017-03-22 | 杭州云象网络技术有限公司 | 一种基于区块链技术的灾备云存储系统构建方法 |
CN107077674A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
CN107317672A (zh) * | 2017-05-10 | 2017-11-03 | 广东网金控股股份有限公司 | 一种轻量终端机区块链系统 |
CN107770154A (zh) * | 2017-09-22 | 2018-03-06 | 中国科学院信息工程研究所 | 基于云存储的区块链可靠数据存储方法、终端及系统 |
CN107943833A (zh) * | 2017-10-25 | 2018-04-20 | 华南农业大学 | 一种基于区块链的无中心分布式文件存储及检索方法 |
US20180129700A1 (en) * | 2016-11-09 | 2018-05-10 | Ingenico Group | Device, method and program for securely reducing an amount of records in a database |
WO2018126065A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Decentralized data storage and processing for iot devices |
CN108400872A (zh) * | 2018-02-24 | 2018-08-14 | 清华大学 | 一种基于星地协同的区块链信息传输方法和系统 |
US20180276668A1 (en) * | 2017-03-24 | 2018-09-27 | Alibaba Group Holding Limited | Method and apparatus for consensus verification |
CN108923932A (zh) * | 2018-07-10 | 2018-11-30 | 东北大学 | 一种去中心化协同验证模型及验证算法 |
CN109040012A (zh) * | 2018-06-19 | 2018-12-18 | 西安电子科技大学 | 一种基于区块链的数据安全保护和共享方法与系统和应用 |
CN109194486A (zh) * | 2018-08-23 | 2019-01-11 | 东北大学 | 可信赖协同模型及数据模型、元数据存储及协同验证算法 |
-
2019
- 2019-01-21 CN CN201910054497.8A patent/CN109936620B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180129700A1 (en) * | 2016-11-09 | 2018-05-10 | Ingenico Group | Device, method and program for securely reducing an amount of records in a database |
CN106534317A (zh) * | 2016-11-17 | 2017-03-22 | 杭州云象网络技术有限公司 | 一种基于区块链技术的灾备云存储系统构建方法 |
CN107077674A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 交易验证处理方法、装置及节点设备 |
WO2018126065A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Decentralized data storage and processing for iot devices |
US20180276668A1 (en) * | 2017-03-24 | 2018-09-27 | Alibaba Group Holding Limited | Method and apparatus for consensus verification |
CN107317672A (zh) * | 2017-05-10 | 2017-11-03 | 广东网金控股股份有限公司 | 一种轻量终端机区块链系统 |
CN107770154A (zh) * | 2017-09-22 | 2018-03-06 | 中国科学院信息工程研究所 | 基于云存储的区块链可靠数据存储方法、终端及系统 |
CN107943833A (zh) * | 2017-10-25 | 2018-04-20 | 华南农业大学 | 一种基于区块链的无中心分布式文件存储及检索方法 |
CN108400872A (zh) * | 2018-02-24 | 2018-08-14 | 清华大学 | 一种基于星地协同的区块链信息传输方法和系统 |
CN109040012A (zh) * | 2018-06-19 | 2018-12-18 | 西安电子科技大学 | 一种基于区块链的数据安全保护和共享方法与系统和应用 |
CN108923932A (zh) * | 2018-07-10 | 2018-11-30 | 东北大学 | 一种去中心化协同验证模型及验证算法 |
CN109194486A (zh) * | 2018-08-23 | 2019-01-11 | 东北大学 | 可信赖协同模型及数据模型、元数据存储及协同验证算法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11489663B2 (en) | 2020-01-31 | 2022-11-01 | International Business Machines Corporation | Correlation-based hash tree verification |
CN111414426A (zh) * | 2020-03-26 | 2020-07-14 | 北京云图科瑞科技有限公司 | 一种基于区块链的数据处理方法及系统 |
CN113672046A (zh) * | 2020-05-13 | 2021-11-19 | 胡敏 | 一种基于区块链的大规模快速账本存取系统 |
CN114979173A (zh) * | 2021-04-21 | 2022-08-30 | 中移互联网有限公司 | 基于区块链的用户权益信息处理方法、装置、设备和存储介质 |
CN114979173B (zh) * | 2021-04-21 | 2023-07-14 | 中移互联网有限公司 | 基于区块链的用户权益信息处理方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109936620B (zh) | 2022-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109936457B (zh) | 区块链多方见证方法、装置、设备及计算机可读存储介质 | |
CN109936620B (zh) | 基于区块链的存储方法及装置、系统与存储介质 | |
CN111556120B (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
US20230006842A1 (en) | Blockchain-based data processing method and apparatus, computer device, computer-readable storage medium, and computer program product | |
KR102193552B1 (ko) | 리플레이 공격 방지 인증 프로토콜 | |
US20210027289A1 (en) | Asset transaction method, storage medium, and computer device | |
CN107171810B (zh) | 区块链的验证方法及装置 | |
CN109840769B (zh) | 基于区块链的存证方法及装置、系统与存储介质 | |
CN110881063B (zh) | 一种隐私数据的存储方法、装置、设备及介质 | |
CN111242617B (zh) | 用于执行交易正确性验证的方法及装置 | |
WO2020147489A1 (zh) | 区块链交易的生成方法和装置 | |
CN111416808A (zh) | 跨区块链的数据互存方法、装置、设备及存储介质 | |
CN111476572B (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
CN111241593A (zh) | 用于区块链节点的数据同步方法及装置 | |
CN111597567B (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN111767569A (zh) | 区块链的访问授权方法及节点 | |
CN110336779B (zh) | 一种区块链的构建方法、装置和电子设备 | |
CN113255014B (zh) | 一种基于区块链的数据处理方法以及相关设备 | |
CN113328997A (zh) | 联盟链跨链系统及方法 | |
WO2023011019A1 (zh) | 基于区块链的数据处理方法、装置、设备、可读存储介质及计算机程序产品 | |
CN113315745A (zh) | 一种数据处理方法、装置、设备及介质 | |
US20240289179A1 (en) | Blockchain-based data processing method and apparatus | |
CN113328854B (zh) | 基于区块链的业务处理方法及系统 | |
CN110276693B (zh) | 保险理赔方法及系统 | |
CN115794947A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |