CN113630445B - 一种基于区块链网络的数据存储方法及装置 - Google Patents

一种基于区块链网络的数据存储方法及装置 Download PDF

Info

Publication number
CN113630445B
CN113630445B CN202110811633.0A CN202110811633A CN113630445B CN 113630445 B CN113630445 B CN 113630445B CN 202110811633 A CN202110811633 A CN 202110811633A CN 113630445 B CN113630445 B CN 113630445B
Authority
CN
China
Prior art keywords
storage
data
node
block
consensus
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.)
Active
Application number
CN202110811633.0A
Other languages
English (en)
Other versions
CN113630445A (zh
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.)
Shandong Blockchain Research Institute
Original Assignee
Shandong Blockchain Research Institute
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 Shandong Blockchain Research Institute filed Critical Shandong Blockchain Research Institute
Priority to CN202110811633.0A priority Critical patent/CN113630445B/zh
Publication of CN113630445A publication Critical patent/CN113630445A/zh
Application granted granted Critical
Publication of CN113630445B publication Critical patent/CN113630445B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例中提供一种基于区块链网络的数据存储方法及装置,用于提高区块链网络的数据存储能力。所述方法包括:获得数据所有方发送的数据存储请求,所述数据存储请求包括待存储数据;对所述待存储数据进行共识处理;在对所述待存储数据达成共识后,将所述待存储数据发送给所述区块链网络中的第一存储组,以将所述待存储数据存储到所述第一存储组中的各个存储节点中。如此,将区块链网络中的共识功能和存储功能从同一区块链节点中解耦,将共识节点从存储功能方面解放出来,通过专门的存储组中的各个存储节点实现对数据的可靠存储,从而解决了共识节点单机存储空间受限的问题,提高了区块链网络的存储能力。

Description

一种基于区块链网络的数据存储方法及装置
技术领域
本申请涉及区块链技术领域,具体涉及一种基于区块链网络的数据存储方法及装置。
背景技术
区块链是一种利用密码学方法、计算机网络和分布式存储等技术综合实现的复合型技术,区块链提供一种分布式的数据共享模式,具有去中心化(点对点网络通信)、不可篡改、全程留痕、集体维护、公开透明等特点。基于区块链的这些特性,用户可以将数据存储在区块链上,以通过区块链实现对数据的共享。而用户数据一般涉及到用户自身隐私,所以有必要对区块链上存储的数据进行有效保护,以确保数据的安全。
传统的区块链网络虽然是去中心化的,包括很多共识节点,但是具体到每个共识节点,都采用本地单机磁盘来存储区块中的数据。而对于海量数据存储的场景,对存储的需求非常高,而传统区块链网络中,通过单机盘来保存数据,由于单机存储上限的限制,导致当前的区块链网络无法应对海量数据存储。所以,如何提高区块链网络的数据存储能力是需要考虑的问题。
发明内容
本申请实施例中提供了一种基于区块链网络的数据存储方法及装置,用于提高区块链网络的数据存储能力。
根据本申请实施例的第一方面,提供一种基于区块链网络的数据存储方法,应用于所述区块链网络中的共识节点,所述方法包括:
获得数据所有方发送的数据存储请求,所述数据存储请求包括待存储数据;
对所述待存储数据进行共识处理;
在对所述待存储数据达成共识后,将所述待存储数据发送给所述区块链网络中的第一存储组,以将所述待存储数据存储到所述第一存储组中的各个存储节点中。
在一种可能的实现方式中,在将所述待存储数据发送给所述区块链网络中的第一存储组之后,所述方法还包括:
确定所述待存储数据所属区块的区块标识,并将所述区块标识与所述第一存储组的组标识之间的对应关系关联保存,所述区块标识包括区块高度信息。
在一种可能的实现方式中,所述方法还包括:
获得第一存储节点发送的数据同步请求;
确定所述第一存储节点所在存储组的组标识对应的最大区块高度;
向所述第一存储节点返回所述最大区块高度,以使所述第一存储节点根据所述最大区块高度从所述第一存储节点所在存储组中的其它存储节点同步数据。
在一种可能的实现方式中,所述方法还包括:
获得针对所述第一存储组的扩容指令;
对所述扩容指令进行共识处理;
在对所述扩容指令达成共识之后,响应所述扩容指令,确定停止向所述第一存储组发送数据并将第二存储组确定为继续存储数据的存储组。
在一种可能的实现方式中,获得针对所述第一存储组的扩容指令,包括:
获得所述第一存储组中的至少两个存储节点分别发送的扩容指令;
对所述扩容指令进行共识处理,包括:
在确定接收的扩容指令达到第一预定数量且指令内容相同时,对所述扩容指令进行共识处理,其中,所述第一预定数量与所述第一存储组包括的存储节点的总数量相关。
在一种可能的实现方式中,获得针对所述第一存储组的扩容指令,包括:
获得所述区块链网络中的管理节点发送的扩容指令,所述扩容指令中携带所述第一存储组的组标识。
在一种可能的实现方式中,所述方法还包括:
获得第二存储节点发送的加入请求,所述加入请求是所述第二存储节点利用私钥进行签名得到的,所述加入请求携带所述第二存储节点的节点标识;
对所述加入请求进行签名验证;
在签名验证通过时,从存储节点与存储组的对应归属关系中确定与所述第二存储节点的节点标识对应的存储组;
确定所述第二存储节点加入确定出的存储组,并向所述第二存储节点发送确认加入信息。
根据本申请实施例的第二方面,提供一种基于区块链网络的数据存储方法,应用于所述区块链网络中的存储节点,所述存储节点属于所述区块链网络中的第一存储组,所述方法包括:
获得所述区块链网络中的共识节点向所述第一存储组发送的待存储数据,其中,所述待存储数据是所述共识节点经过共识处理并达成共识的;
存储所述待存储数据,并记录所述待存储数据所属区块的区块标识,所述区块标识包括区块高度信息。
在一种可能的实现方式中,所述方法还包括:
在满足同步触发条件时,向所述区块链网络中的共识节点广播数据同步请求;
获得所述区块链网络中的共识节点发送的所述存储节点所在存储组对应的最大区块高度;
根据所述最大区块高度从所述存储节点所在存储组中的其它存储节点同步数据。
在一种可能的实现方式中,根据所述最大区块高度从所述存储节点所在存储组中的其它存储节点同步数据,包括:
确定所述存储节点本地存储区块的区块高度与所述最大区块高度之间的区块高度差值;
在所述区块高度差值大于或等于预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的目标存储节点同步数据;
在所述区块高度差值小于所述预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的各个存储节点分别同步数据。
在一种可能的实现方式中,根据所述区块高度差值从所述其它存储节点中的目标存储节点同步数据,包括:
向所述目标存储节点发送区块高度同步信息,所述区块高度同步信息中携带所述存储节点本地存储区块的区块高度;
获得所述目标存储节点发送的待同步区块数据以及所述待同步区块数据的第一哈希值;
对所述待同步区块数据进行哈希运算得到第二哈希值,并在所述第二哈希值与所述第一哈希值一致时保存所述待同步区块数据。
在一种可能的实现方式中,所述方法还包括:
在满足扩容触发条件时,生成扩容指令;
向所述区块链网络中的共识节点发送所述扩容指令,以请求停止继续向所述存储节点所在的存储组存储数据。
在一种可能的实现方式中,所述方法还包括:
在满足加入触发条件时,生成加入请求,并通过私钥对所述加入请求进行签名处理;
广播签名处理后的加入请求;
在获得第二预定数量的确认加入信息时,确定已成功加入存储组,其中,所述确认加入信息是所述区块链网络中的共识节点对签名处理后的加入请求进行签名验证通过时返回的,所述第二预定数量与所述区块链网络中包括的共识节点的总数量有关。
根据本申请实施例的第三方面,提供一种区块链系统,包括共识子系统和存储子系统,所述共识子系统包括至少两个共识节点,所述存储子系统包括至少一个存储组,每个存储组中包括至少两个存储节点,其中:
所述共识子系统中的共识节点用于获得数据所有方发送的数据存储请求,所述数据存储请求包括待存储数据,并对所述待存储数据进行共识处理;以及在对所述待存储数据达成共识后,将所述待存储数据发送给所述存储子系统中的第一存储组;
所述第一存储组中的各个存储节点用于接收所述待存储数据,并记录所述待存储数据所属区块的区块标识,所述区块标识包括区块高度信息。
根据本申请实施例的第四方面,提供一种基于区块链网络的数据存储装置,所述装置包括:
获得模块,用于获得数据所有方发送的数据存储请求,所述数据存储请求包括待存储数据;
共识模块,用于对所述待存储数据进行共识处理;
发送模块,用于在对所述待存储数据达成共识后,将所述待存储数据发送给所述区块链网络中的第一存储组,以将所述待存储数据存储到所述第一存储组中的各个存储节点中。
在一种可能的实现方式中,所述装置还包括处理模块,用于:
在所述发送模块将所述待存储数据发送给所述区块链网络中的第一存储组之后,确定所述待存储数据所属区块的区块标识,并将所述区块标识与所述第一存储组的组标识之间的对应关系关联保存,所述区块标识包括区块高度信息。
在一种可能的实现方式中,所述处理模块还用于:
获得第一存储节点发送的数据同步请求;
确定所述第一存储节点所在存储组的组标识对应的最大区块高度;
向所述第一存储节点返回所述最大区块高度,以使所述第一存储节点根据所述最大区块高度从所述第一存储节点所在存储组中的其它存储节点同步数据。
在一种可能的实现方式中,所述装置还包括扩容模块,用于:
获得针对所述第一存储组的扩容指令;
对所述扩容指令进行共识处理;
在对所述扩容指令达成共识之后,响应所述扩容指令,确定停止向所述第一存储组发送数据并将第二存储组确定为继续存储数据的存储组。
在一种可能的实现方式中,所述扩容模块用于:
获得所述第一存储组中的至少两个存储节点分别发送的扩容指令;
对所述扩容指令进行共识处理,包括:
在确定接收的扩容指令达到第一预定数量且指令内容相同时,对所述扩容指令进行共识处理,其中,所述第一预定数量与所述第一存储组包括的存储节点的总数量相关。
在一种可能的实现方式中,所述扩容模块用于:
获得所述区块链网络中的管理节点发送的扩容指令,所述扩容指令中携带所述第一存储组的组标识。
在一种可能的实现方式中,所述处理模块还用于:
获得第二存储节点发送的加入请求,所述加入请求是所述第二存储节点利用私钥进行签名得到的,所述加入请求携带所述第二存储节点的节点标识;
对所述加入请求进行签名验证;
在签名验证通过时,从存储节点与存储组的对应归属关系中确定与所述第二存储节点的节点标识对应的存储组;
确定所述第二存储节点加入确定出的存储组,并向所述第二存储节点发送确认加入信息。
根据本申请实施例的第五方面,提供一种基于区块链网络的数据存储装置,所述装置包括:
获得模块,用于获得所述区块链网络中的共识节点向所述区块链网络中的第一存储组发送的待存储数据,其中,所述待存储数据是所述共识节点经过共识处理并达成共识的;
存储模块,用于存储所述待存储数据,并记录所述待存储数据所属区块的区块标识,所述区块标识包括区块高度信息。
在一种可能的实现方式中,所述装置还包括区块同步模块,用于:
在满足同步触发条件时,向所述区块链网络中的共识节点广播数据同步请求;
获得所述区块链网络中的共识节点发送的所述存储节点所在存储组对应的最大区块高度;
根据所述最大区块高度从所述存储节点所在存储组中的其它存储节点同步数据。
在一种可能的实现方式中,所述区块同步模块用于:
确定所述存储节点本地存储区块的区块高度与所述最大区块高度之间的区块高度差值;
在所述区块高度差值大于或等于预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的目标存储节点同步数据;
在所述区块高度差值小于所述预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的各个存储节点分别同步数据。
在一种可能的实现方式中,所述区块同步模块用于:
向所述目标存储节点发送区块高度同步信息,所述区块高度同步信息中携带所述存储节点本地存储区块的区块高度;
获得所述目标存储节点发送的待同步区块数据以及所述待同步区块数据的第一哈希值;
对所述待同步区块数据进行哈希运算得到第二哈希值,并在所述第二哈希值与所述第一哈希值一致时保存所述待同步区块数据。
在一种可能的实现方式中,所述装置还包括扩容模块,用于:
在满足扩容触发条件时,生成扩容指令;
向所述区块链网络中的共识节点发送所述扩容指令,以请求停止继续向所述存储节点所在的存储组存储数据。
在一种可能的实现方式中,所述装置还包括上线模块,用于:
在满足加入触发条件时,生成加入请求,并通过私钥对所述加入请求进行签名处理;
广播签名处理后的加入请求;
在获得第二预定数量的确认加入信息时,确定已成功加入存储组,其中,所述确认加入信息是所述区块链网络中的共识节点对签名处理后的加入请求进行签名验证通过时返回的,所述第二预定数量与所述区块链网络中包括的共识节点的总数量有关。
根据本申请实施例的第六方面,提供一种计算机存储介质,所述计算机存储介质中存储有计算机可读程序,所述计算机可读程序用于执行根据上述的第一方面中描述的方法。
根据本申请实施例的第七方面,提供了一种计算机存储介质,所述计算机存储介质中存储有计算机可读程序,所述计算机可读程序用于执行根据上述的第二方面中描述的方法。
根据本申请实施例的第八方面,提供了一种计算机程序产品,该计算机程序产品对用于执行一种过程的指令进行编码,该过程包括上述的第一方面中描述的方法。
根据本申请实施例的第九方面,提供了一种计算机程序产品,该计算机程序产品对用于执行一种过程的指令进行编码,该过程包括上述的第二方面中描述的方法。
根据本申请实施例的第十方面,提供了一种计算机设备,包括存储器和处理器,所 述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行 第一方面中的任一项所述的方法的步骤,或者用于执行第二方面中的任一项所述的方法 的步骤。
本申请实施例的基于区块链网络的数据存储方法及装置,共识节点对待存储数据仅进行共识操作,而由区块链网络中的存储组中的存储节点负责对待存储数据的存储。这样,将区块链网络中的共识功能和存储功能从同一区块链节点中解耦,如此将共识节点从存储功能方面解放出来,通过专门的存储组中的各个存储节点实现对数据的可靠存储,从而解决了共识节点单机存储空间受限的问题。并且,通过构建专门的存储组来存储数据,可根据业务需求对存储资源按需扩容,可缓解海量存储数据带来的存储空间压力,为区块链技术在海量数据存储场景提供了强有力的存储支撑,提高了区块链网络的存储能力。
并且,基于将共识子系统和存储子系统直连的网络架构,可由共识子系统直接向存储节点发送需要上链存储的数据,而无需经过任何中间节点,这样可尽量避免中间节点被攻击而导致数据被篡改或被拦截的风险,如此,本申请实施例中基于共识子系统的共识能力而将数据直接发送给存储子系统,可尽量提高数据传输的安全性。此外,共识子系统中的共识节点不仅可实现共识功能,还可对存储节点中存储的数据进行记录和管理,以便于后续进行数据查询,从而充分利用共识节点的设备能力。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例适用的一种应用场景的示意图;
图2为本申请实施例中的基于区块链网络的数据存储方法的流程示意图;
图3为本申请实施例中的基于区块链网络的数据存储方法的流程示意图;
图4A为本申请实施例中的基于区块链网络的数据存储装置的结构框图;
图4B为本申请实施例中的基于区块链网络的数据存储装置的另一结构框;
图5A为本申请实施例中的基于区块链网络的数据存储装置的另一结构框;
图5B为本申请实施例中的基于区块链网络的数据存储装置的另一结构框;
图6为本申请实施例中的计算机设备的结构示意图。
具体实施方式
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
为更好地理解本申请实施例提供的技术方案,下面对本申请实施例提供的技术方案适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
请参见图1所示,图1为本申请实施例的基于区块链网络的数据存储方法适用的一种应用场景图,该基于区块链网络的数据存储方法可以应用于数据存储系统,该数据存储系统可以理解为是区块链系统,或者称作区块链网络,该区块链系统中包括多个区块链节点,在本申请实施例中,区块链节点包括共识节点和存储节点这两种类型的节点。参照图1,该区块链系统包括共识子系统和存储子系统,其中共识子系统包括多个共识节点,例如包括至少三个共识节点,所有共识节点组成区块链系统中的共识网络;存储子系统包括至少一个存储组,图1中是以存储组1、存储组2这两个存储组为例进行图示说明,每个存储组均包括至少两个存储节点,例如每个存储组都包括三个存储节点。共识子系统和存储子系统之间可以通信,具体来说,共识子系统中的各个共识节点均可以和存储子系统中的各个存储节点之间进行通信。以及,共识子系统中包括的各个共识节点之间也可以相互通信,各个存储组中包括的各个存储节点之间也可以相互通信。
此外,本申请实施例中的区块链系统还可以包括管理节点,可以通过管理节点对区块链系统中的共识子系统和存储子系统分别进行配置,例如将哪些区块链节点配置为共识节点,以及将哪些区块链节点配置为存储节点,以及,将哪些存储节点配置归属到具体的哪一个存储组,等等。管理节点与共识子系统和存储子系统均可通信,具体来说,管理节点可与共识子系统中的各个共识节点通信,以及,管理节点可与存储子系统中的各个存储节点通信。
区块链网络是运行区块链技术的载体和组织方式。区块链技术,也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明、利用分布式节点共识算法来生成和更细年数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
共识节点是区块链网络中的数据处理节点,共识节点是参与记账共识的节点,通常来说,共识节点中拥有全量账本信息,但在本申请实施例中的所提及的共识节点是指仅参与共识操作的节点。基于此,客户端可以将需要上链存储的区块数据发送给共识子系统中的共识节点,共识子系统再对该区块数据进行共识处理,当共识子系统对该区块数据达成共识之后,共识节点自身并不存储该区块数据,而是将该区块数据发送给存储子系统中的某个存储组进行存储,例如发送给存储组1,即发送给存储组1中的各个存储节点,存储组1中的各个存储节点在收到共识节点发送的通过共识之后的区块数据之后,将其分别保存在本地,并且可分别记录该区块数据对应的区块标识,该区块标识可以包括该区块数据的区块高度信息,例如区块高度信息所表示的该区块数据的区块高度是38。这样,在本申请实施例中的区块链系统中,将共识功能和存储功能从传统的共识节点中解耦,将共识功能和存储功能分离部署在共识节点和存储节点中,这样可解决共识节点单机存储空间受限的问题,并且可根据业务需求对存储资源(即存储子系统)按需扩容,可缓解海量存储数据带来的存储空间压力,为区块链技术在海量数据存储场景提供了强有力的存储支撑,提高区块链网络的存储能力。
为便于理解,以下再结合附图对本申请实施例中的基于区块链网络的数据存储方法进行详细说明。
请参见图2所示,图2为本申请实施例提供的一种基于区块链网络的数据存储方法,该方法例如可应用于上述图1中的共识子系统中的任一共识节点,也就是说,该方法可由区块链网络中的共识节点执行。请参照图2,图2所示的流程描述如下。
步骤201:获得数据所有方发送的数据存储请求,该数据存储请求包括待存储数据。
数据所有方例如是图1中的客户端,当用户希望将区块数据上链存储时,可通过客户端向共识子系统发送区块数据,具体可以是向共识子系统中的各个共识节点均发送该区块数据,或者可以是向共识子系统中的某个共识节点发送该区块数据,例如将需要存储的区块数据称作待存储数据。对于不同的业务场景,待存储数据也会不同,比如,对于电子发票的区块链系统,待存储数据可以是预设时间段内所产生的电子发票。
步骤202:对待存储数数据进行共识处理。
当区块链网络中的共识节点接收到待存储数据时,会对其进行共识处理,共识节点对待存储数据进行共识处理,是指联合共识子系统中的其它共识节点对待存储数据进行共识处理,即是整个共识子系统对待存储数据进行共识处理。当区块链子系统中的大部分或全部共识节点均对该待存储数据达成共识时,可认为该待存储数据通过了共识子系统的共识,即共识子系统对该待存储数据达成了共识。
在具体实施过程中,共识子系统可通过运行共识算法来对待存储数据进行共识处理,例如可以采用目前通用的共识算法来进行共识处理,目前通用的共识算法例如可包括工作量证明(Proof of Work,Pow)算法、股权证明(Proof of Stake,PoS)算法、委任权益证明(Delegated Proof of Stake,DPoS)、实用拜占庭容错(Practical Byzantine FaultTolerance,PBFT)算法等。
步骤203:在对待存储数据达成共识后,将待存储数据发送给区块链网络中的第一存储组,以将待存储数据存储到第一存储组中的各个存储节点中。
如图1所示的,本申请实施例中的区块链系统包括单独部署用来存储数据的存储子系统,存储子系统中包括已被预先配置好的至少一个存储组,例如可先配置一个存储组,当需要进行存储扩容时再配置另一个存储组,或者,可以预先就配置好多个存储组,等等。每个存储组具有对应的组标识,组标识是用于对各个存储组进行区分的标识信息,组标识可包括数字、字母和符号中的至少一种字符的字符串,例如可以是数字编号,如图1中的存储组1、存储组2等编号。
共识子系统在对待存储数据达成共识后,为对其进行上链存储,将待存储数据发送给存储子系统进行保存,当前系统配置用于存储数据的存储组例如是第一存储组,那么共识子系统即可将待存储数据发送给第一存储组,以将该待存储数据存储到第一存储组中的各个存储节点中。具体实施时,共识子系统中的共识节点将待存储数据可以分别发送给第一存储组中的各个存储节点,或者可以是发送给第一存储中的某个存储节点,再由该存储节点将待存储数据分别同步给该存储组内的其它存储节点。
这样,第一存储组中的各个存储节点接收到共识子系统达成共识的待存储数据,进一步地将其保存在本地,并且各个存储节点份可分别记录待存储数据所属区块的区块标识,区块标识中可包括用于表明待存储数据所属区块的区块高度的信息,例如称作区块高度信息,区块高度信息可表明待存储数据的区块高度,例如当前区块高度是99。
共识子系统中的共识节点在将待存储数据发送给第一存储组之后,可确定待存储数据所属区块的区块标识,并将该区块标识与第一存储组的组标识之间的对应关系关联保存,也就是说,共识节点可记录每条数据存储在了哪个存储组中,以及该存储组中当前存储的数据存储到了哪个区块高度,以便于对各个才存储组进行管理和维护。
通过上述方案,本申请实施例中的区块链系统实现了将共识功能和存储功能从传统的共识节点中解耦,而是通过共识子系统中的共识节点和存储子系统中的存储节点分别实现共识功能和存储功能,解决了传统的共识节点单机存储空间受限的问题,提高了区块链系统的存储能力。并且,基于将共识子系统和存储子系统直连的网络架构,可由共识子系统直接向存储节点发送需要上链存储的数据,而无需经过任何中间节点,这样可尽量避免中间节点被攻击而导致数据被篡改或被拦截的风险,如此,本申请实施例中基于共识子系统的共识能力而将数据直接发送给存储子系统,可尽量提高数据传输的安全性。此外,共识子系统中的共识节点不仅可实现共识功能,还可对存储节点中存储的数据进行记录和管理,以便于后续进行数据查询,从而充分利用共识节点的设备能力。
如前所述的,同一个存储组中的各个存储节点所存储的数据理论上应该是一样的,相当于是通过多个存储节点对数据进行冗余备份存储,以尽量确保数据的安全性和可靠性,在一种示例中,一个存储组至少包括三个存储节点,这样,即使有一个存储节点被恶意攻击或控制,由于正常有效的存储节点多余被恶意攻击的存储节点,这样通过大多数有效的存储节点可确保数据的安全性,从而提高整个存储子系统的可靠性。
在实际中,同一个存储组中的某个(或某些)存储节点会由于一些原因导致和同组的其余存储节点中存储的数据不同步,以存储子系统中的第一存储节点为例,第一存储节点由于临时网络故障或者宕机重启后导致其中存储的数据要少于同存储组的其它存储节点中存储的数据,例如第一存储节点中存储的区块高度是35,而其它存储节点中当前存储的区块高度已经达到了60,为了实现同组存储节点之间的数据同步,第一存储节点可向共识子系统发送数据同步请求,对应的,共识子系统中的共识节点可接收到第一存储节点发送的数据同步请求,进而可确定第一存储节点所在存储组的组标识,例如称作目标组标识,再从本地存储的各个存储组所存储数据的区块标识中确定目标组标识所对应的存储组中当前所存储的区块数据的最大区块高度,例如共识节点查出第一存储节点所在存储组当前对应的最大区块高度是60,那么则可以将最大区块高度的相关信息返回给第一存储节点。进一步地,第一存储节点在接收到的共识节点返回的最大区块高度之后,则可计算出自身所存储数据的区块高度与最大区块高度之间的区块高度差值,进而可以根据该最大区块高度从同组的其它存储节点处同步数据,以实现同组存储节点之间的数据实时同步,确保数据存储的准确性。
基于本申请实施例中的共识节点和存储节点分离部署以实现共识功能和存储功能解耦的系统架构,在存储资源不足的情况下可通过部署的其它存储组或者新增存储组的方式来实现存储扩容。例如前面实施例中所描述的,假设共识子系统将需要存储的数据先是发往存储子系统中的第一存储组进行存储,也就是说,先是由第一存储组来负责共识数据的存储,在某些情形下,需要进行存储扩容,例如在第一存储组的存储资源即将用尽时或者达到一定的存储比例时,或者例如用户通过管理节点向共识子系统下发了扩容指令时等,例如可以将这些需要进行存储扩容的条件称作扩容触发条件,即在满足扩容触发条件时可针对存储子系统进行扩容处理。
为了实现存储扩容,可向共识子系统下发扩容指令,具体例如是向共识子系统中的各个共识节点或者部分共识节点发送扩容指令,共识子系统在获得扩容指令之后,可对扩容指令进行共识处理,例如运用前述的通用的共识算法对扩容指令进行共识操作。以当前是通过第一存储组存储数据为例,当需要进行存储扩容时,例如在第一存储组中的存储节点的存储资源即将用尽时,可向共识子系统发送针对第一存储组的扩容指令,当共识子系统对该扩容指令达成共识之后,即可响应该扩容指令,则可确定停止向第一存储组再继续发送数据并将另一存储组(例如是第二存储组)确定为是可继续存储数据的存储组,也就是说,将用于继续存储数据的存储组从第一存储组变更为了第二存储组,这样,共识子系统可将后续需要存储的数据就直接发送给第二存储组,以通过第二存储组中的各个存储节点来存储后续数据,从而实现存储资源的扩容。
本申请实施例中,共识子系统通过对扩容指令进行共识处理并达成共识之后即可实现存储资源的扩容,整个区块链系统的扩容仅由一个简单的区块链交易即可进行处理,上层客户端是完全感觉不到的,如此可实现系统的无感知扩容的效果。
在具体实施过程中,共识子系统获得的扩容指令可以是由上层的管理节点直接下发,也可以是由底层负责存储的存储子系统请求的,以下分别进行说明。
一种示例中,由管理节点向共识子系统下发扩容指令。在该方式中,用户可根据业务的实际存储需求或者根据第一存储组的剩余存储容量情况在合适的时候通过管理节点向共识子系统下发针对第一存储组的扩容指令,为此,可以在扩容指令中携带第一存储组的组标识。共识子系统在获得携带第一存储组的组标识的扩容指令之后,可确定不能再向第一存储组继续存储数据,即将第一存储组的存储功能熔断,并且可确定用于存储后续数据的另一存储组,例如确定由第二存储组来存储后续需要存储的数据。
另一种示例中,由存储子系统向共识子系统发送扩容指令。在该方式中,第一存储组中的一个存储节点向共识子系统发送扩容指令,共识子系统在收到该一个扩容指令之后,确定发送扩容指令的存储节点所在的存储组是第一存储组,即确定需要熔断第一存储组的存储功能,并确定另一存储组(例如第二存储组)作为后续用来继续存储数据的存储组;或者,第一存储组中的多个存储节点均向共识子系统发送扩容指令,共识子系统在收到多个扩容指令之后,先判断这多个扩容指令的指令内容是否相同且是否达到第一预定数量,若这两者条件均满足即可对该扩容指令进行共识处理,并在对其达成共识之后则响应该扩容指令,其中的第一预定数量与第一存储组中包括的存储节点的总数量相关,例如第一存储组中包括2B+1个存储节点,那么第一预定数量可以是B+1,即,假设第一存储组中最多有B个存储节点受到攻击变的不安全时,至少还可以通过B+1(大部分)有效的存储节点发送扩容指令来正确表达存储子系统的存储扩容需求,以此在真正有扩容需求时准确地执行存储扩容操作,提高存储扩容的有效性。
在具体实施过程中,存储组中的存储节点首次上线提供存储服务,或者由于某些原因(例如临时故障或者掉电)下线后又需要重新上线继续提供存储服务时,需要通知共识子系统,以便共识子系统中的共识节点知晓自身的在线情况。基于此,以第二存储节点为例,在其首次上线或者重新上线时可生成加入请求,该加入请求中可携带第二存储节点自身的节点标识,并利用自身的私钥对该加入请求进行签名处理,然后将签名处理后的加入请求进行广播。共识子系统中的各个共识节点在收到第二存储节点广播的经签名处理后的加入请求后,根据其中携带的第二存储节点的节点标识确定第二存储节点对应的公钥,再利用第二存储节点对应的公钥对其进行签名验证,在签名验证通过时,确定第二存储节点加入了存储组并可提供存储服务,即处于可正常提供存储服务的状态,而根据预先配置的存储节点与存储组的对应归属关系,共识节点可确定第二存储节点所属的存储组,例如第二存储节点归属于第一存储组。进一步地,共识节点可向第二存储节点发送确认加入信息,以表明确定第二存储节点成功上线。在具体实施过程中,第二存储节点与前述的第一存储节点可以是同一个存储节点,也可以是不同的存储节点。
由于共识子系统中的多个共识节点都可能向第二存储节点发送确定加入信息,而在实际中,共识子系统中的某些共识节点可能已经被敌手攻击或控制而暂时失效,即这些共识节点当前可能已经并不安全,那么其发送的确认加入信息也就可能是伪造的假信息,所以为了确保安全,第二存储节点在接收到共识子系统中的多个共识节点分别发送的确认加入信息之后,可判断相同的确认加入信息的数量是否达到指定数量,例如是否达到第二预定数量,若达到了第二预定数量,则可确定该确认加入信息是正确有效的信息,进而可根据达到第二预定数量的确认加入信息确定自身已经成功上线,也即向共识子系统表明自身当前可提供有效的存储服务。其中的第二预定数量与区块链网络中包括的共识节点的总数量有关,例如共识子系统共包括2f+1个共识节点,那么这里的第二预定数量可以为f+1,这样可确保有效的共识节点始终是多余可能已被攻击的共识节点,从而可确保区块链网络的安全性。
请参见图3所示,图3为本申请实施例提供的一种基于区块链网络的数据存储方法,该方法可应用于上述图1中的存储子系统中的任一存储节点,也就是说,该方法可由区块链系统中的存储节点执行,例如以存储子系统中的第一存储组中的一个存储节点为例进行说明,如图3所示的流程描述如下。
步骤301:获得区块链网络中的共识节点发送的待存储数据。
其中,待存储数据是区块链网络中的共识节点达成共识的,也就是说,待存储数据是通过共识子系统中的共识节点进行共识后处理并通过共识的。
如前所述的,在本申请实施例中区块链系统包括共识子系统和存储子系统,且存储子系统中包括至少一个存储组,例如至少包括第一存储组,共识子系统在对待存储数据达成共识后,可将其发送给第一存储组,进而,第一存储组中的各个存储节点可以获得来自共识子系统且通过共识的待存储数据。
本申请实施例中的共识节点仅对待存储数据执行共识操作而并不对其执行存储操作,也就是说,本申请实施例中的共识节点并不负责数据的存储,而是由专门的存储子系统来提供存储服务,如此,可将区块链系统中的共识功能和存储功能从共识节点中解耦,通过分离部署的共识节点和存储节点来分别提供共识功能和存储功能,如此可解决共识节点单机存储空间受限的问题,提高区块链系统的存储能力。
步骤302:存储获得的待存储数据。
在接收到共识节点发送的待存储数据之后,存储节点可将其保存在本地,以实现对数据的存储操作。
步骤303:记录待存储数据所属区块的区块标识,该区块标识包括区块高度信息。
在将待存储数据保存之后,存储节点还可将该待存储数据所属区块的区块标识记录下来,以便后续通过区块标识可直接查找到相应的数据,相当于是对存储的数据建立了索引,以便于后续可快速地读取数据。其中,待存储数据的区块标识包括该待存储数据所属区块的区块高度信息,例如通过区块高度信息表明所属区块的区块高度是33。
上述图3是以一个存储节点为例对数据的存储过程进行说明,而在具体实施过程中,与该存储节点同存储组的其它存储节点均可执行相同的操作流程,如此可将同一份待存储数据分别保存在该存储组中的各个存储节点中,以实现对数据的冗余备份存储,从而可提高数据存储的安全性和有效性,提高存储子系统的可靠性。
在满足同步触发条件时,例如在某个存储节点由于网络临时故障或者宕机重启后,其区块高度肯定低于同存储组的其它存储节点的区块高度,也就是说,该存储节点比同存储组的其它存储节点中的存储的区块要少一些,而为了实现同存储组的各个存储节点之间的数据实时同步,以保证数据存储的完整性和有效性,存储节点可向区块链网络中的共识节点发送数据同步请求,存储子系统在收到该存储节点的数据同步请求之后,确定其所属的存储组,然后确定该存储组当前实际存储的区块的最大高度,即可确定出该存储区对应的最大区块高度,并将确定出的最大区块高度发送给该存储节点,以使得该存储节点能够根据获得的最大区块高度从其同存储组的其它存储节点处同步数据,即执行数据同步操作。
在具体的数据同步过程中,存储节点可先确定其本地存储区块的区块高度与从共识子系统获得的最大区块高度之间的区块高度差值,再根据该区块高度差值来确定具体的数据同步模式。例如,在区块高度差值大于或等于预定高度阈值时,表明存储节点本地存储的数据落后实际存储高度较多,说明需要同步的区块数据量较大,此时可采用单点同步模式,以尽量节约系统带宽;在区块高度差值小于预定高度阈值时,表明存储节点本地存储的数据落后实际存储高度较少,说明需要同步的区块数据量不是很多,可采用多节点同步模式,即从多个存储节点处分别同步数据,以尽量确保同步数据的准确性。也就是说,可根据需要同步的区块数据的多少来选择对应的数据同步模式,提高数据同步的灵活性,增强系统的存储能力。
对于单点同步模式,即只从目标存储节点处同步数据,存储节点可以向目标存储节点发送携带本存储节点本地存储区块的区块高度的区块高度同步信息,目标存储节点在获得该区块高度同步信息之后,可确定出区块高度差值所对应的待同步区块数据,并利用预定哈希算法计算得到该待同步区块数据的哈希值(称作第一哈希值),该第一哈希值是该待同步区块数据的验证信息,然后将待同步区块数据和第一哈希值一并发送给存储节点。存储节点在收到待同步区块数据和第一哈希值之后,可以采用相同的预定哈希算法计算接收到的待同步区块数据的哈希值(称作第二哈希值),再将第二哈希值与第一哈希值进行比对,若两者一致即表明接收到的待同步区块数据是准确可靠的,进而可将其保存在本地,以此确保同步数据的有效性。也就是说,为了节约系统带宽可采用单点同步模式,而为了确保单点同步模式过程中的数据安全,可采用哈希验证的可靠性校验方式。
对于多节点同步模式,即可以从多个其它存储节点中同时同步数据,即存储节点可向多个同组的其它存储节点分别请求待同步区块数据,与上述单点同步模式不同的是,各个其它存储节点可以仅向本地存储节点发送待同步区块数据而无需发送哈希值,本地存储节点在收到多个其它存储节点分别发送的待同步区块数据之后可将接收到的多份待同步区块数据进行比对以检验其有效性。
在满足扩容触发条件时,例如在存储节点的剩余存储容量达到一定阈值或者已存储容量达到一定比例时存储节点可生成扩容指令,进而可向区块网络中的共识节点发送该扩容指令,以请求共识子系统停止继续向该存储节点所在的存储组存储数据。也就是说,基于本申请实施例中的共识和存储相分离的区块链系统架构,可在存储告警的时候实现自动的存储扩容上报,通过存储子系统的扩容伸展,实现对整个区块链系统的灵活扩容处理,提高了整个区块链系统的存储能力。
在一种可能的实施方式中,如前所述的,存储节点在满足加入触发条件时可生成携带该存储节点自身的节点标识的加入请求,并通过自身私钥对该加入请求进行签名处理,并将签名处理后的加入请求进行广播。共识子系统中的各个共识节点在收到该存储节点发送的经签名处理后的加入请求后,通过其中携带的节点标识确定出请求加入的存储节点,再利用对应的公钥对将签名处理后的加入请求进行签名验证,在签名验证通过时,确定该存储节点加入存储组,即确定其可正常提供存储服务,此时可向该存储节点发送确认加入信息,以表明确定该存储节点成功上线,即确定该存储节点处于“活跃”状态,可为整个系统提供数据存储服务。
由于共识子系统中的多个共识节点都可能向第二存储节点发送确定加入信息,而在实际中,共识子系统中的某些共识节点可能已经被敌手攻击或控制而暂时失效,即这些共识节点当前可能已经并不安全,那么其发送的确认加入信息也就可能是伪造的假信息,所以为了确保安全,第二存储节点在接收到共识子系统中的多个共识节点分别发送的确认加入信息之后,可判断相同的确认加入信息的数量是否达到指定数量,例如是否达到第二预定数量,若达到了第二预定数量,则可确定该确认加入信息是正确有效的信息,进而可根据达到第二预定数量的确认加入信息确定自身已经成功上线,也即向共识子系统表明自身当前可提供有效的存储服务。其中的第二预定数量与区块链网络中包括的共识节点的总数量有关,例如共识子系统共包括2f+1个共识节点,那么这里的第二预定数量可以为f+1,这样可确保有效的共识节点始终是多余可能已被攻击的共识节点,从而可确保区块链网络的安全性。
本申请实施例中,共识节点对待存储数据仅进行共识操作,而由区块链网络中的存储组中的存储节点负责对待存储数据的存储。这样,将区块链网络中的共识功能和存储功能从同一区块链节点(即传统的共识节点)中解耦,如此将共识节点从存储功能方面解放出来,通过专门的存储组中的各个存储节点实现对数据的可靠存储,从而解决了共识节点单机存储空间受限的问题。并且,通过构建专门的存储组来存储数据,可根据业务需求对存储资源按需扩容,可缓解海量存储数据带来的存储空间压力,为区块链技术在海量数据存储场景提供了强有力的存储支撑,提高了区块链网络的存储能力。
并且,基于将共识子系统和存储子系统直连的网络架构,可由共识子系统直接向存储节点发送需要上链存储的数据,而无需经过任何中间节点,这样可尽量避免中间节点被攻击而导致数据被篡改或被拦截的风险,如此,本申请实施例中基于共识子系统的共识能力而将数据直接发送给存储子系统,可尽量提高数据传输的安全性。此外,共识子系统中的共识节点不仅可实现共识功能,还可对存储节点中存储的数据进行记录和管理,以便于后续进行数据查询,从而充分利用共识节点的设备能力。
基于同一发明构思,本申请实施例提供一种区块链系统,该区块链系统例如是图1中的区块链系统,该区块链系统包括共识子系统和存储子系统,其中,共识子系统包括至少两个共识节点,存储子系统包括至少一个存储组,每个存储组中包括至少两个存储节点,其中:
共识子系统中的共识节点用于获得数据所有方发送的数据存储请求,该数据存储请求包括待存储数据,并对该待存储数据进行共识处理;以及在对该待存储数据达成共识后,将该待存储数据发送给存储子系统中的第一存储组;
存储子系统中的第一存储组中的各个存储节点用于接收待存储数据,并记录该待存储数据所属区块的区块标识,其中农的区块标识包括区块高度信息。
基于本申请实施例中的区块链系统可以实现前述的图2和图3所描述的流程,具体地,该区块链系统中的共识子系统中的共识节点可以执行前述的图2所示的方法流程,该区块链系统中的存储子系统中的存储节点可以执行前述的图3所示的方法流程,具体的流程介绍可参见前述实施例说明。
基于本申请实施例中的将共识子系统和存储子系统直连的区块链系统架构,可由共识子系统直接向存储节点发送需要上链存储的数据,而无需经过任何中间节点,这样可尽量避免中间节点被攻击而导致数据被篡改或被拦截的风险,如此,本申请实施例中基于共识子系统的共识能力而将数据直接发送给存储子系统,可尽量提高数据传输的安全性。此外,共识子系统中的共识节点不仅可实现共识功能,还可对存储节点中存储的数据进行记录和管理,以便于后续进行数据查询,从而可充分利用共识节点的设备能力。
基于同一发明构思,本申请实施例提供一种基于区块链网络的数据存储装置,该装置可以是硬件结构、软件模块、或硬件结构加软件模块,该装置可以配置在区块链系统中的各个共识节点中。请参见图4A所示,本申请实施例中的基于区块链网络的数据存储装置包括获得模块401、共识模块402和发送模块403,其中:
获得模块401,用于获得数据所有方发送的数据存储请求,数据存储请求包括待存储数据;
共识模块402,用于对待存储数据进行共识处理;
发送模块403,用于在对待存储数据达成共识后,将待存储数据发送给区块链网络中的第一存储组,以将待存储数据存储到第一存储组中的各个存储节点中。
在一种可能的实施方式中,请参见图4B所示,本申请实施例中的基于区块链网络的数据存储装置还包括处理模块404,用于:
在发送模块403将待存储数据发送给区块链网络中的第一存储组之后,确定待存储数据所属区块的区块标识,并将区块标识与第一存储组的组标识之间的对应关系关联保存,区块标识包括区块高度信息。
在一种可能的实施方式中,处理模块404还用于:
获得第一存储节点发送的数据同步请求;
确定第一存储节点所在存储组的组标识对应的最大区块高度;
向第一存储节点返回最大区块高度,以使第一存储节点根据最大区块高度从第一存储节点所在存储组中的其它存储节点同步数据。
在一种可能的实施方式中,请参见图4B所示,本申请实施例中的基于区块链网络的数据存储装置还包括扩容模块405,用于:
获得针对第一存储组的扩容指令;
对扩容指令进行共识处理;
在对扩容指令达成共识之后,响应扩容指令,确定停止向第一存储组发送数据并将第二存储组确定为继续存储数据的存储组。
在一种可能的实施方式中,扩容模块405用于:
获得第一存储组中的至少两个存储节点分别发送的扩容指令;
对扩容指令进行共识处理,包括:
在确定接收的扩容指令达到第一预定数量且指令内容相同时,对扩容指令进行共识处理,其中,第一预定数量与第一存储组包括的存储节点的总数量相关。
在一种可能的实施方式中,扩容模块405用于:
获得区块链网络中的管理节点发送的扩容指令,扩容指令中携带第一存储组的组标识。
在一种可能的实施方式中,处理模块404还用于:
获得第二存储节点发送的加入请求,加入请求是第二存储节点利用私钥进行签名得到的,加入请求携带第二存储节点的节点标识;
对加入请求进行签名验证;
在签名验证通过时,从存储节点与存储组的对应归属关系中确定与第二存储节点的节点标识对应的存储组;
确定第二存储节点加入确定出的存储组,并向第二存储节点发送确认加入信息。
前述的图2所示的基于区块链网络的数据存储方法的实施例中涉及的各步骤的所有相关内容均可以援引到本申请实施例中的基于区块链网络的数据存储装置所对应的功能模块的功能描述,在此不再赘述。
基于同一发明构思,本申请实施例提供一种基于区块链网络的数据存储装置,该装置可以是硬件结构、软件模块、或硬件结构加软件模块,该装置可以配置在区块链系统中的各个存储节点中。请参见图5A所示,本申请实施例中的基于区块链网络的数据存储装置包括获得模块501和存储模块502,其中:
获得模块501,用于获得区块链网络中的共识节点向区块链网络中的第一存储组发送的待存储数据,其中,待存储数据是共识节点经过共识处理并达成共识的;
存储模块502,用于存储待存储数据,并记录待存储数据所属区块的区块标识,区块标识包括区块高度信息。
在一种可能的实施方式中,请参见图5B所示,本申请实施例中的基于区块链网络的数据存储装置还包括区块同步模块503,用于:
在满足同步触发条件时,向区块链网络中的共识节点广播数据同步请求;
获得区块链网络中的共识节点发送的存储节点所在存储组对应的最大区块高度;
根据最大区块高度从存储节点所在存储组中的其它存储节点同步数据。
在一种可能的实施方式中,区块同步模块503用于:
确定存储节点本地存储区块的区块高度与最大区块高度之间的区块高度差值;
在区块高度差值大于或等于预定高度阈值时,根据区块高度差值从其它存储节点中的目标存储节点同步数据;
在区块高度差值小于预定高度阈值时,根据区块高度差值从其它存储节点中的各个存储节点分别同步数据。
在一种可能的实施方式中,区块同步模块503用于:
向目标存储节点发送区块高度同步信息,区块高度同步信息中携带存储节点本地存储区块的区块高度;
获得目标存储节点发送的待同步区块数据以及待同步区块数据的第一哈希值;
对待同步区块数据进行哈希运算得到第二哈希值,并在第二哈希值与第一哈希值一致时保存待同步区块数据。
在一种可能的实施方式中,请参见图5B所示,本申请实施例中的基于区块链网络的数据存储装置还包括扩容模块504,用于:
在满足扩容触发条件时,生成扩容指令;
向区块链网络中的共识节点发送扩容指令,以请求停止继续向存储节点所在的存储组存储数据。
在一种可能的实施方式中,请参见图5B所示,本申请实施例中的基于区块链网络的数据存储装置还包括上线模块505,用于:
在满足加入触发条件时,生成加入请求,并通过私钥对加入请求进行签名处理;
广播签名处理后的加入请求;
在获得第二预定数量的确认加入信息时,确定已成功加入存储组,该确认加入信息是区块链网络中的共识节点对签名处理后的加入请求进行签名验证通过时返回的,第二预定数量与区块链网络中包括的共识节点的总数量有关。
前述的图3所示的基于区块链网络的数据存储方法的实施例中涉及的各步骤的所有相关内容均可以援引到本申请实施例中的基于区块链网络的数据存储装置所对应的功能模块的功能描述,在此不再赘述。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于同一发明构思,本申请实施例还提供一种计算机设备,图6示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的共识节点或存储节点。如图6所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现基于区块链网络的数据存储方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行基于区块链网络的数据存储方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
基于同一发明构思,本申请实施例还提供一种计算机存储介质,该计算机存储介质可以是计算机可读存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述图2所对应的的基于区块链网络的数据存储方法的步骤。
基于同一发明构思,本申请实施例还提供一种计算机存储介质,该计算机存储介质可以是计算机可读存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述图3所对应的的基于区块链网络的数据存储方法的步骤。
在一些可能的实施方式中,本申请实施例提供的基于区块链网络的数据存储方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机上运行时,所述程序代码用于使所述计算机执行前文所描述的根据本申请各种示例性实施方式的基于区块链网络的数据存储方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (14)

1.一种基于区块链网络的数据存储方法,其特征在于,所述区块链网络包括共识子系统和存储子系统,所述共识子系统和所述存储子系统直连,所述方法应用于所述共识子系统中的共识节点,所述方法包括:
获得数据所有方发送的数据存储请求,所述数据存储请求包括待存储数据;
对所述待存储数据进行共识处理;
在对所述待存储数据达成共识后,将所述待存储数据发送给所述存储子系统中的第一存储组,以将所述待存储数据存储到所述第一存储组中的各个存储节点中;
确定所述待存储数据所属区块的区块标识,并将所述区块标识与所述第一存储组的组标识之间的对应关系关联保存,所述区块标识包括区块高度信息;
获得第一存储节点发送的数据同步请求;
根据所述第一存储节点对应的区块高度信息,确定所述第一存储节点所在存储组的组标识对应的最大区块高度;
向所述第一存储节点返回所述最大区块高度,以使所述第一存储节点根据所述最大区块高度从所述第一存储节点所在存储组中的其它存储节点同步数据;其中,所述第一存储节点根据所述最大区块高度从所述第一存储节点所在存储组中的其它存储节点同步数据,包括:确定所述第一存储节点本地存储区块的区块高度与所述最大区块高度之间的区块高度差值;在所述区块高度差值大于或等于预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的目标存储节点获得第一哈希值和同步数据,并在对同步获得的数据进行哈希运算得到的第二哈希值与所述第一哈希值一致时确定同步获得的数据有效;在所述区块高度差值小于所述预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的各个存储节点分别同步数据,并根据同步获得的多份数据的比对结果验证同步数据的有效性。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获得针对所述第一存储组的扩容指令;
对所述扩容指令进行共识处理;
在对所述扩容指令达成共识之后,响应所述扩容指令,确定停止向所述第一存储组发送数据并将第二存储组确定为继续存储数据的存储组。
3.根据权利要求2所述的方法,其特征在于,获得针对所述第一存储组的扩容指令,包括:
获得所述第一存储组中的至少两个存储节点分别发送的扩容指令;
对所述扩容指令进行共识处理,包括:
在确定接收的扩容指令达到第一预定数量且指令内容相同时,对所述扩容指令进行共识处理,其中,所述第一预定数量与所述第一存储组包括的存储节点的总数量相关。
4.根据权利要求2所述的方法,其特征在于,获得针对所述第一存储组的扩容指令,包括:
获得所述区块链网络中的管理节点发送的扩容指令,所述扩容指令中携带所述第一存储组的组标识。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获得第二存储节点发送的加入请求,所述加入请求是所述第二存储节点利用私钥进行签名得到的,所述加入请求携带所述第二存储节点的节点标识;
对所述加入请求进行签名验证;
在签名验证通过时,从存储节点与存储组的对应归属关系中确定与所述第二存储节点的节点标识对应的存储组;
确定所述第二存储节点加入确定出的存储组,并向所述第二存储节点发送确认加入信息。
6.一种基于区块链网络的数据存储方法,其特征在于,所述区块链网络包括共识子系统和存储子系统,所述共识子系统和所述存储子系统直连,所述方法应用于所述区块链网络中的存储节点,所述存储节点属于所述存储子系统中的第一存储组,所述方法包括:
获得所述共识子系统中的共识节点向所述第一存储组发送的待存储数据,其中,所述待存储数据是所述共识节点经过共识处理并达成共识的;
存储所述待存储数据,并记录所述待存储数据所属区块的区块标识,所述区块标识包括区块高度信息;
在满足同步触发条件时,向所述区块链网络中的共识节点广播数据同步请求;
获得所述区块链网络中的共识节点发送的所述存储节点所在存储组对应的最大区块高度;
确定所述存储节点本地存储区块的区块高度与所述最大区块高度之间的区块高度差值;
根据所述区块高度差值从所述其它存储节点中的目标存储节点同步数据,包括:在所述区块高度差值大于或等于预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的目标存储节点获得第一哈希值和同步数据,并在对同步获得的数据进行哈希运算得到的第二哈希值与所述第一哈希值一致时确定同步获得的数据有效;在所述区块高度差值小于所述预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的各个存储节点分别同步数据,并根据同步获得的多份数据比对结果验证同步数据的有效性。
7.根据权利要求6所述的方法,其特征在于,根据所述区块高度差值从所述其它存储节点中的目标存储节点同步数据,包括:
向所述目标存储节点发送区块高度同步信息,所述区块高度同步信息中携带所述存储节点本地存储区块的区块高度;
获得所述目标存储节点发送的待同步区块数据以及所述待同步区块数据的第一哈希值;
对所述待同步区块数据进行哈希运算得到第二哈希值,并在所述第二哈希值与所述第一哈希值一致时保存所述待同步区块数据。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在满足扩容触发条件时,生成扩容指令;
向所述区块链网络中的共识节点发送所述扩容指令,以请求停止继续向所述存储节点所在的存储组存储数据。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在满足加入触发条件时,生成加入请求,并通过私钥对所述加入请求进行签名处理;
广播签名处理后的加入请求;
在获得第二预定数量的确认加入信息时,确定已成功加入存储组,其中,所述确认加入信息是所述区块链网络中的共识节点对签名处理后的加入请求进行签名验证通过时返回的,所述第二预定数量与所述区块链网络中包括的共识节点的总数量有关。
10.一种区块链系统,其特征在于,包括共识子系统和存储子系统,所述共识子系统包括至少两个共识节点,所述存储子系统包括至少一个存储组,每个存储组中包括至少两个存储节点,其中:
所述共识子系统中的共识节点用于获得数据所有方发送的数据存储请求,所述数据存储请求包括待存储数据,并对所述待存储数据进行共识处理;以及在对所述待存储数据达成共识后,将所述待存储数据发送给所述存储子系统中的第一存储组;确定所述待存储数据所属区块的区块标识,并将所述区块标识与所述第一存储组的组标识之间的对应关系关联保存,所述区块标识包括区块高度信息;
所述第一存储组中的各个存储节点用于存储所述待存储数据,并记录所述待存储数据所属区块的区块标识,所述区块标识包括区块高度信息;在满足同步触发条件时,向所述区块链网络中的共识节点广播数据同步请求;获得所述区块链网络中的共识节点发送的所述存储节点所在存储组对应的最大区块高度;确定所述存储节点本地存储区块的区块高度与所述最大区块高度之间的区块高度差值;根据所述区块高度差值从所述其它存储节点中的目标存储节点同步数据,包括:在所述区块高度差值大于或等于预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的目标存储节点获得第一哈希值和同步数据,并在对同步获得的数据进行哈希运算得到的第二哈希值与所述第一哈希值一致时确定同步获得的数据有效;在所述区块高度差值小于所述预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的各个存储节点分别同步数据,并根据同步获得的多份数据比对结果验证同步数据的有效性。
11.一种基于区块链网络的数据存储装置,其特征在于,所述区块链网络包括共识子系统和存储子系统,所述共识子系统和所述存储子系统直连,所述装置配置于所述共识子系统的共识节点中,所述装置包括:
获得模块,用于获得数据所有方发送的数据存储请求,所述数据存储请求包括待存储数据;
共识模块,用于对所述待存储数据进行共识处理;
发送模块,用于在对所述待存储数据达成共识后,将所述待存储数据发送给所述存储子系统中的第一存储组,以将所述待存储数据存储到所述第一存储组中的各个存储节点中;
处理模块,用于确定所述待存储数据所属区块的区块标识,并将所述区块标识与所述第一存储组的组标识之间的对应关系关联保存,所述区块标识包括区块高度信息;获得第一存储节点发送的数据同步请求;根据所述第一存储节点对应的区块高度信息,确定所述第一存储节点所在存储组的组标识对应的最大区块高度;向所述第一存储节点返回所述最大区块高度,以使所述第一存储节点根据所述最大区块高度从所述第一存储节点所在存储组中的其它存储节点同步数据;其中,所述第一存储节点根据所述最大区块高度从所述第一存储节点所在存储组中的其它存储节点同步数据,包括:确定所述第一存储节点本地存储区块的区块高度与所述最大区块高度之间的区块高度差值;在所述区块高度差值大于或等于预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的目标存储节点获得第一哈希值和同步数据,并在对同步获得的数据进行哈希运算得到的第二哈希值与所述第一哈希值一致时确定同步获得的数据有效;在所述区块高度差值小于所述预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的各个存储节点分别同步数据,并根据同步获得的多份数据的比对结果验证同步数据的有效性。
12.一种基于区块链网络的数据存储装置,其特征在于,所述区块链网络包括共识子系统和存储子系统,所述共识子系统和所述存储子系统直连,所述装置配置于所述存储子系统中的第一存储组的存储节点中,所述装置包括:
获得模块,用于获得所述共识子系统中的共识节点向所述第一存储组发送的待存储数据,其中,所述待存储数据是经过共识处理并达成共识的;
存储模块,用于存储所述待存储数据,并记录所述待存储数据所属区块的区块标识,所述区块标识包括区块高度信息;
区块同步模块,用于在满足同步触发条件时,向区块链网络中的共识节点广播数据同步请求;获得区块链网络中的共识节点发送的存储节点所在存储组对应的最大区块高度;根据最大区块高度从存储节点所在存储组中的其它存储节点同步数据,包括:在所述区块高度差值大于或等于预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的目标存储节点获得第一哈希值和同步数据,并在对同步获得的数据进行哈希运算得到的第二哈希值与所述第一哈希值一致时确定同步获得的数据有效;在所述区块高度差值小于所述预定高度阈值时,根据所述区块高度差值从所述其它存储节点中的各个存储节点分别同步数据,并根据同步获得的多份数据比对结果验证同步数据的有效性。
13.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机可读程序,所述计算机可读程序用于执行根据权利要求1-5中任一项所述的方法,或者用于执行根据权利要求6-9中任一项所述的方法。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-5中任一项所述的方法的步骤,或者用于执行根据权利要求6-9中任一项所述的方法的步骤。
CN202110811633.0A 2021-07-19 2021-07-19 一种基于区块链网络的数据存储方法及装置 Active CN113630445B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110811633.0A CN113630445B (zh) 2021-07-19 2021-07-19 一种基于区块链网络的数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110811633.0A CN113630445B (zh) 2021-07-19 2021-07-19 一种基于区块链网络的数据存储方法及装置

Publications (2)

Publication Number Publication Date
CN113630445A CN113630445A (zh) 2021-11-09
CN113630445B true CN113630445B (zh) 2022-10-14

Family

ID=78380076

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110811633.0A Active CN113630445B (zh) 2021-07-19 2021-07-19 一种基于区块链网络的数据存储方法及装置

Country Status (1)

Country Link
CN (1) CN113630445B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114564446B (zh) * 2022-03-01 2022-12-27 清华大学 一种文件存储的方法、装置、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110378694A (zh) * 2018-05-21 2019-10-25 腾讯科技(深圳)有限公司 区块链数据处理方法、装置、计算机设备和存储介质
CN111264079A (zh) * 2019-11-14 2020-06-09 深圳市汇顶科技股份有限公司 数据传输方法、电子设备、系统及存储介质
CN112188247A (zh) * 2020-09-29 2021-01-05 腾讯科技(北京)有限公司 一种数据传输方法、装置、设备及计算机可读存储介质
CN113094437A (zh) * 2021-04-14 2021-07-09 深圳前海移联科技有限公司 一种基于Rsync的区块链状态数据同步方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10979390B2 (en) * 2017-08-25 2021-04-13 Panasonic Intellectual Property Corporation Of America Communication security apparatus, control method, and storage medium storing a program
CN110535969B (zh) * 2019-09-16 2021-06-15 腾讯科技(深圳)有限公司 基于区块链网络的数据存储方法、装置、存储介质和设备
CN111259074A (zh) * 2020-01-12 2020-06-09 杭州复杂美科技有限公司 区块同步方法、设备和存储介质
CN111475576B (zh) * 2020-04-15 2023-08-08 中国工商银行股份有限公司 基于区块链的分布式数据库存储方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110378694A (zh) * 2018-05-21 2019-10-25 腾讯科技(深圳)有限公司 区块链数据处理方法、装置、计算机设备和存储介质
CN111264079A (zh) * 2019-11-14 2020-06-09 深圳市汇顶科技股份有限公司 数据传输方法、电子设备、系统及存储介质
CN112188247A (zh) * 2020-09-29 2021-01-05 腾讯科技(北京)有限公司 一种数据传输方法、装置、设备及计算机可读存储介质
CN113094437A (zh) * 2021-04-14 2021-07-09 深圳前海移联科技有限公司 一种基于Rsync的区块链状态数据同步方法及系统

Also Published As

Publication number Publication date
CN113630445A (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
US20210158347A1 (en) Blockchain-based node management methods and apparatuses
US11294888B2 (en) Blockchain system and blockchain transaction data processing method based on ethereum
CN110535872B (zh) 在区块链网络中处理数据请求的方法和装置
CN107193490B (zh) 一种基于区块链的分布式数据存储系统及方法
CN113098907B (zh) 一种区块链的群组划分方法与装置
CN110784495B (zh) 基于区块链的大数据集群系统的发现与配置信息管理方法
CN111523899B (zh) 联盟链的共识方法、数据校验方法、装置及系统
CN111163182A (zh) 基于区块链的设备注册方法、装置、电子设备和存储介质
CN110730081B (zh) 基于区块链网络的证书吊销方法、相关设备及介质
US11200123B2 (en) Consensus process recovery method and related node
CN113570479B (zh) 一种房产交易数据的区块链传输方法、系统及存储介质
CN111899019A (zh) 一种黑名单多方交叉验证和共享的方法及系统
CN111698315A (zh) 针对区块的数据处理方法、数据处理装置及计算机设备
CN113630445B (zh) 一种基于区块链网络的数据存储方法及装置
CN110008739B (zh) 一种基于群组的区块链系统、群组管理方法及装置
CN116777631B (zh) 基于区块链的交易上链方法及装置、设备、介质
CN112380064A (zh) 一种区块链中的共识节点容错方法、装置及系统
CN116991948A (zh) 区块数据同步系统和方法、电子设备和存储介质
CN110908801A (zh) 基于区块链的数据处理方法、装置、计算机设备和存储介质
KR20190078451A (ko) 블록 체인을 이용하여 서비스 서버의 재해 복구를 수행하는 서버 및 복구 서버와, 상기 서버의 제어 방법
CN111369246B (zh) 智能合约的调用鉴权方法、装置、电子设备及存储介质
CN117061538A (zh) 一种基于区块链网络的共识处理方法及相关装置
CN116846888A (zh) 区块链网络的共识处理方法、装置、设备及存储介质
CN113904869A (zh) 一种区块链中恶意节点的检测方法及区块链
Xie et al. A raft algorithm with byzantine fault-tolerant performance

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