CN116755640B - 联盟链的数据处理方法、装置、计算机设备和存储介质 - Google Patents
联盟链的数据处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116755640B CN116755640B CN202311051825.1A CN202311051825A CN116755640B CN 116755640 B CN116755640 B CN 116755640B CN 202311051825 A CN202311051825 A CN 202311051825A CN 116755640 B CN116755640 B CN 116755640B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- block
- matrix
- target
- 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
Links
- 238000003672 processing method Methods 0.000 title abstract description 22
- 239000011159 matrix material Substances 0.000 claims abstract description 343
- 238000012795 verification Methods 0.000 claims abstract description 308
- 238000000034 method Methods 0.000 claims abstract description 41
- 238000004590 computer program Methods 0.000 claims abstract description 23
- 239000013598 vector Substances 0.000 claims description 134
- 238000011084 recovery Methods 0.000 claims description 129
- 238000012545 processing Methods 0.000 claims description 22
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 230000036961 partial effect Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000010200 validation analysis Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000012550 audit Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 244000061520 Angelica archangelica Species 0.000 description 1
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 235000001287 Guettarda speciosa Nutrition 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/008—Reliability or availability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种联盟链的数据处理方法、装置、计算机设备、存储介质和计算机程序产品。该方法可以应用于云技术、云存储和区块链等技术领域;所述方法包括:接收共识节点发送的验证请求;根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;从数据节点树中,获取验证请求对应的目标数据块和验证路径;向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。采用本方法能够保证联盟链上数据的可用性。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种联盟链的数据处理方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
联盟链是带有鉴权功能的区块链,只有获得准许的用户才能向联盟链发送交易。
在相关技术中,由于联盟链中的节点数量少,通常采用归档节点存储链上数据,共识节点直接将被归档的数据删除,用户查询数据时,可以从归档节点中获取数据;但是在归档节点发生磁盘损坏时,可能导致用户无法从归档节点获取正确数据,难以保证联盟上数据的可用性。
发明内容
基于此,有必要针对上述技术问题,提供一种联盟链的数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,能够保证联盟链上数据的可用性。
第一方面,本申请提供了一种联盟链的数据处理方法。所述方法包括:
接收共识节点发送的验证请求;根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;从数据节点树中,获取验证请求对应的目标数据块和验证路径;向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
第二方面,本申请还提供了一种联盟链的数据处理装置。所述装置包括:
验证请求接收模块,用于接收共识节点发送的验证请求;
数据节点树获取模块,用于根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;
验证数据获取模块,用于从数据节点树中,获取验证请求对应的目标数据块和验证路径;
验证数据发送模块,用于向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;
扩展归档模块,当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
在一些实施例中,验证数据获取模块,还用于在数据节点树的叶子节点中,获取验证请求包括的节点标识所对应的目标叶子节点;将目标叶子节点所存储的数据块,作为目标数据块;依据目标叶子节点、数据节点树的根节点以及目标叶子节点与根节点之间的中间节点,确定验证路径。
在一些实施例中,目标数据块的数量为至少两个;联盟链的数据处理装置还包括:可用性验证模块,用于依据验证路径包括的各哈希值和目标数据块,确定验证哈希值;根据验证哈希值和根节点的哈希值,确定目标数据块的正确性信息;依据各目标数据块的正确性信息,确定数据节点树的可用性验证结果;可用性验证模块,可以部署于共识节点中。
在一些实施例中,可用性验证模块,还用于依据各目标数据块的正确性信息,确定各目标数据块中正确的数据块所对应的目标数量;依据目标数量与各目标数据块的总数量,确定数据节点树的可用性验证结果。
在一些实施例中,正确性信息用于反映数据节点树包括的目标数据块正确或错误;可用性验证模块包括目标数量确定单元,用于在各目标数据块中,获取正确性信息表示为正确的数据块;确定正确的数据块所对应的目标数量。
在一些实施例中,扩展归档模块包括:
数据获取请求接收单元,用于当可用性验证结果满足节点扩展条件时,接收共识节点发送的数据获取请求;
数据块获取单元,用于根据数据获取请求,从数据节点树中获取各数据块;
解码单元,用于依据纠删码矩阵对各数据块进行解码,得到区块数据;
区块数据发送单元,用于向共识节点发送区块数据,以使得共识节点将区块数据发送至扩展的归档节点,以指示扩展的归档节点依据纠删码矩阵对区块数据进行编码,并基于编码所得的数据矩阵得到备份的数据节点树。
在一些实施例中,解码单元,还用于依据各数据块在数据矩阵中的位置标识,在各数据块中选取各候选数据块;依据各候选数据块确定候选数据矩阵;在纠删码矩阵中选取候选数据矩阵对应的候选纠删码矩阵;基于候选纠删码矩阵解码候选数据矩阵,得到区块数据。
在一些实施例中,联盟链的数据处理装置还包括:数据恢复模块,用于接收共识节点发送的数据恢复请求,从数据节点树中获取数据恢复请求对应的数据块;依据数据恢复请求对应的数据块确定数据恢复矩阵;在数据恢复矩阵满足恢复条件的情况下,依据纠删码矩阵对数据恢复矩阵进行解码,得到区块数据;向共识节点返回区块数据。
在一些实施例中,数据恢复模块,还用于在数据恢复矩阵不满足恢复条件的情况下,向共识节点发送恢复错误信息,以使得共识节点依据恢复错误信息向扩展的归档节点发送数据恢复请求,以获取区块数据。
在一些实施例中,联盟链的数据处理装置还包括:归档模块,用于响应于共识节点发送的归档请求,从共识节点中获取归档请求对应的区块数据;调用共识节点的归档合约,并基于归档合约获取共识节点的纠删码矩阵;依据纠删码矩阵对区块数据进行编码,得到数据矩阵;以节点树的形式存储数据矩阵,得到数据节点树。
在一些实施例中,归档模块,还用于对区块数据进行划分,得到数据分片向量;确定纠删码矩阵与数据分片向量之间的乘积,得到初始数据块向量;初始数据块向量包括各初始数据块;对初始数据块进行划分,得到候选数据块向量,并确定纠删码矩阵与候选数据块向量之间的乘积,得到初始数据块对应的数据块向量;依据各初始数据块对应的数据块向量,确定数据矩阵。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收共识节点发送的验证请求;根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;从数据节点树中,获取验证请求对应的目标数据块和验证路径;向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收共识节点发送的验证请求;根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;从数据节点树中,获取验证请求对应的目标数据块和验证路径;向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
接收共识节点发送的验证请求;根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;从数据节点树中,获取验证请求对应的目标数据块和验证路径;向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
上述联盟链的数据处理方法、装置、计算机设备、存储介质和计算机程序产品,接收共识节点发送的验证请求,确定验证请求对应的数据节点树,从数据节点树中获取验证请求对应的目标数据块和验证路径,以使得共识节点根据目标数据块和验证路径,确定数据节点树的可用性验证结果,可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点;共识节点可以验证归档节点中数据节点树的可用性,当可用性验证结果满足节点扩展条件时,表示数据节点树存在部分错误的数据块,并且数据节点树中正确的数据块可以用于恢复得到区块数据,此时,将区块数据归档至扩展的归档节点,避免了归档节点的数据节点树中错误的数据块持续增加,导致数据节点树中正确的数据块无法恢复得到区块数据,进而导致联盟链上区块数据无法恢复的情况,保证了联盟链上数据的可用性。
附图说明
图1为一个实施例中联盟链的数据处理方法的应用环境图;
图2为一个实施例中联盟链的数据处理方法的流程示意图;
图3为一个实施例中数据节点树的示意图;
图4为一个实施例中纠删码矩阵的示意图;
图5为一个实施例中数据分片向量的示意图;
图6为一个实施例中确定数据矩阵的示意图;
图7为一个实施例中确定数据块向量的示意图;
图8为另一个实施例中数据矩阵的示意图;
图9为一个实施例中数据节点树中验证路径的示意图;
图10为一个实施例中确定节点扩展条件的示意图;
图11为一个实施例中将区块数据备份至扩展的归档节点的示意图;
图12为一个实施例确定候选数据矩阵的示意图;
图13为一个实施例中联盟链的数据处理方法的流程示意图;
图14为一个实施例中联盟链的数据处理装置的结构框图;
图15为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营检测等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营检测模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、检测网络情况、检测节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
本申请实施例提供的联盟链的数据处理方法,可以应用于如图1所示的应用环境中。其中,联盟链包括共识节点102和归档节点104,归档节点104可以将数据存储至数据存储中,数据存储系统可以集成在归档节点104上,也可以放在云上或其他网络服务器上;联盟链的数据处理方法可以通过共识节点102或归档节点104执行,也可以通过共识节点102和归档节点104协同执行。
以联盟链的数据处理方法通过归档节点104执行为例,归档节点104接收共识节点发送的验证请求;归档节点104根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;归档节点104从数据节点树中,获取验证请求对应的目标数据块和验证路径;归档节点104向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;当可用性验证结果满足节点扩展条件时,归档节点104将区块数据归档至扩展的归档节点。
其中,共识节点102和归档节点104可以是独立的物理服务器,也可以是联盟链系统中的服务节点,该联盟链系统中的各节点之间形成组成点对点网络。
此外,共识节点102和归档节点104还可以是多个物理服务器构成的服务器集群,可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
共识节点102和归档节点104之间可以通过蓝牙、USB(Universal Serial Bus,通用串行总线)或者网络等通讯连接方式进行连接,本申请在此不做限制。
在一些实施例中,如图2所示,提供了一种联盟链的数据处理方法,该方法由图1中的服务器或终端执行,也可以由图1中的服务器和终端协同执行,以该方法由图1中的服务器执行为例进行说明,包括以下步骤:
步骤202,接收共识节点发送的验证请求。
其中,共识节点是联盟链中对区块数据进行共识的节点,并在达成共识后,产生经过共识的区块数据,联盟链还包括归档节点,归档节点用于对联盟链中各共识节点的区块数据进行归档。
其中,验证请求,用于验证归档节点中存储的数据的可用性,归档节点中存储的数据的可用性,可以反映归档节点中存储的数据是否可以用于恢复区块数据。
在一些实施例中,共识节点将区块高度信息对应的区块数据归档至归档节点之后,会将自身存储的区块数据删除,在可能的业务场景下,共识节点需要获取区块数据,则可以从归档节点处恢复区块数据;为了保证共识节点可以从归档节点处恢复区块数据,在共识节点将区块数据归档至归档节点之后,可以周期性地向归档节点发送验证请求,归档节点接收共识节点发送的验证请求,通过验证请求验证共识节点归档的数据的可用性,在归档节点中的数据可用时,共识节点可以从归档节点恢复区块数据。
在一些实施例中,共识节点可以通过归档合约生成验证请求,并通过归档合约向归档节点发送验证请求,进而归档节点接收到验证请求;归档节点也可以通过独立的进程实时检测共识节点的归档合约,当归档节点检测到归档合约中包括验证请求时,归档节点可以从归档合约中拉取验证请求,以获取到验证请求。
步骤204,根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的。
其中,对区块数据进行编码,可以是通过纠删码矩阵对区块数据进行编码,以得到包括冗余数据块的数据矩阵,将包括冗余数据块的数据矩阵保存,在数据矩阵中的部分数据块出错时,可以通过纠删码矩阵对其余正确的数据块进行解码得到区块数据;也就是说,通过纠删码矩阵对区块数据进行编码,可以达到容错目的。
示例性地,区块数据包括n个数据块,通过纠删码矩阵对n个数据块进行编码,得到n+m个数据块,假设n+m个数据块中存在任意m个数据块损坏或丢失,通过纠删码矩阵对剩余的n个数据块进行解码,可以恢复区块数据。
其中,数据矩阵是采用纠删码矩阵对区块数据进行编码所得的,数据矩阵包括多个数据块,将多个数据块以节点树的形式存储,得到数据节点树。
数据节点树包括顶层的根节点、多个中间节点层和底层的叶子节点层;叶子节点层包括多个叶子节点,分别存储有数据矩阵包括的多个数据块;每个中间节点层包括至少两个中间节点,用于存储下层节点对应哈希值计算所得的哈希值;根节点存储有根哈希值;在实际应用中,数据节点树可以是默克尔树,默克尔树的叶子节点用于存储数据矩阵包括的多个数据块,根据各叶子节点中数据块的哈希值进行逐层递归运算,可以计算得到默克尔树的中间节点和根节点的哈希值。
在一些实施例中,共识节点发起归档请求,该归档请求用于针对区块高度信息对应的区块数据进行归档,归档节点对该区块高度信息对应的区块数据进行编码,并将编码得到的数据矩阵以节点树的形式存储,即归档节点将区块高度信息对应区块数据,归档为数据节点树,该数据节点树与区块高度信息存在唯一对应关系,进而可以根据区块高度信息查找对应的数据节点树。
验证请求包括区块高度信息,归档节点获取验证请求所包括的区块高度信息,在节点树关系表中获取区块高度信息对应的节点树标识,获取节点树标识对应的数据节点树,以实现根据验证请求获取数据节点树。
区块高度信息具体可以是区块高度区间,比如共识节点将区块高度为a至a+i的区块数据归档至归档节点,区块高度信息为[a,a+i];归档节点将区块数据归档为数据节点树后,建立数据节点树与区块高度信息之间的对应关系;当共识节点发送验证请求至归档节点时,归档节点根据验证请求包括的区间高度信息确定数据节点树;比如,验证请求包括的区块高度为[a,a+i],则归档节点可以获取[a,a+i]对应的数据节点树T1,根据验证请求验证数据节点树T1的可用性。
步骤206,从数据节点树中,获取验证请求对应的目标数据块和验证路径。
其中,数据节点树的多个叶子节点,分别存储有数据矩阵包括的多个数据块,目标数据块是多个叶子节点中,验证请求对应的目标叶子节点所存储的数据块。
数据节点树包括顶层的根节点、多个中间节点层和底层的叶子节点层;对叶子节点层中的多个叶子节点进行两两分组,根据各组叶子节点中数据块的哈希值,可以确定叶子节点层的上级中间节点层的哈希值;对上级中间节点层的多个中间节点进行两两分组,根据各组中间节点,可以确定该中间节点层的上级中间节点层的哈希值,如此递推,可以根据次顶层的两个中间节点的哈希值,确定根节点的哈希值。
验证路径包括多个哈希值,根据多个哈希值和目标数据块,可以进行向上递归运算,直至得到一个最终的哈希值,该最终的哈希值对应根节点的哈希值;在实际应用中,数据节点树可以是默克尔树,相应地,验证路径可以是默克尔路径。
在一些实施例中,归档节点在数据节点树中获取验证请求对应的目标数据块,在数据节点树中获取基于目标数据块对应叶子节点逐层进行递归计算,直至得到根节点对应哈希值所涉及的各哈希值,得到验证路径。
在一些实施例中,步骤206包括:在数据节点树的叶子节点中,获取验证请求包括的节点标识所对应的目标叶子节点;将目标叶子节点所存储的数据块,作为目标数据块;依据目标叶子节点、数据节点树的根节点以及目标叶子节点与根节点之间的中间节点,确定验证路径。
其中,节点标识是数据节点树中叶子节点的唯一性标识,节点标识可以用于反映叶子节点中存储的数据块在数据矩阵中的位置;示例性地,数据矩阵包括4个数据块:d11,d12,d21和d22,d11,d12,d21和d22在数据矩阵中的位置分别为(1,1),(1,2),(2,1)和(2,2),进而数据节点树中对应叶子节点的节点标识,d11,d12,d21和d22在分别为(1,1),(1,2),(2,1)和(2,2)。
在一些实施例中,归档节点获取验证请求包括的节点标识,在数据节点树的叶子节点中获取节点标识对应的目标叶子节点,并获取该目标叶子节点中存储的目标数据块。
依据目标叶子节点、数据节点树的根节点以及目标叶子节点与根节点之间的中间节点,确定验证路径,可以是获取基于目标叶子节点对应哈希值和数据节点树的中间节点,逐层进行递归计算,直至得到根节点对应哈希值所涉及的各哈希值,根据获取的各哈希值确定验证路径。
确定验证路径的步骤具体可以包括:获取与目标叶子节点属于同组的邻近叶子节点存储的数据块的第一哈希值,获取目标叶子节点的上层节点,判断上层节点是否为根节点,当该上层节点不是根节点时,获取与该上层节点的属于同组的邻近中间节点的第二哈希值;获取邻近中间节点的上层节点,并继续执行判断上层节点是否为根节点的过程,直至上层节点为根节点,根据第一哈希值和邻近中间节点的第二哈希值,确定验证路径。
示例性地,数据节点树如图3所示,其中,底层的各叶子节点的节点标识分别为(1,1),(1,2),……,(4,1),(4,2);假设节点标识为(1,1),则节点标识为(1,1)的叶子节点f11为目标叶子节点,目标数据块是目标叶子节点f11存储的数据块d11,与目标叶子节点属于同组的邻近叶子节点为叶子节点f12;与目标叶子节点f11的上层中间节点f01属于同组的邻近中间节点是中间节点f02;与邻近中间节点f02的上层中间节点f05属于同组的邻近中间节点是中间节点f06;邻近中间节点的上层节点f07为根节点,可以确定验证路径包括:叶子节点f12存储的数据块的哈希值、中间节点f02的哈希值和中间节点f06的哈希值。
在上述实施例中,基于数据节点树确定目标数据块和验证路径,验证路径包括根据目标叶子节点逐层进行递归计算,直至得到根节点对应哈希值所涉及的各哈希值,以便于共识节点根据目标数据块和验证路径验证数据节点树的可用性。
步骤208,向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果。
其中,可用性验证结果,用于反映数据节点树的可用性,具体用于反映是否可以依据数据节点树恢复区块数据;需要说明的是,依据数据节点树可以恢复区块数据或无法恢复区块数据,指的是依据数据节点树包括的数据块可以恢复区块数据或无法恢复区块数据。
可用性验证结果为第一可用性结果或第二可用性结果,第一可用性结果用于反映依据数据节点树包括的数据块可以恢复区块数据,第二可用性结果用于反映依据数据节点树包括的数据块无法恢复区块数据。
在一些实施例中,联盟链的数据处理方法还包括:依据纠删码矩阵对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成数据节点树之后,向共识节点发送数据节点树的根节点的哈希值;归档节点将数据节点树的根节点的哈希值同步至共识节点,以便于共识节点接收到归档节点响应于验证请求所返回的目标数据块和验证路径时,可以依据目标数据块、验证路径和接收的根节点的哈希值,确定数据节点树的可用性验证结果。
在一些实施例中,验证请求的数量为多个,多个验证请求各自包括的节点标识不同,多个验证请求分别用于获取多个节点标识对应的数据块和验证路径;具体地,共识节点可以依次向归档节点发送多个验证请求,归档节点接收多个验证请求,并依次获取多个验证请求各自对应的目标数据块和验证路径,依次向共识节点发送多个验证请求各自对应的目标数据块和验证路径。
共识节点根据每个验证请求各自对应的目标数据块、验证路径和根节点的哈希值,确定每个验证请求各自对应的目标数据块正确或错误,统计多个验证请求各自对应的目标数据块中正确的目标数据块的数量,根据多个验证请求的数量和正确的目标数据块的数量,确定数据节点树的可用性验证结果。
在一些实施例中,当目标数据块正确时,根据目标数据块和验证路径计算得到的哈希值,与根节点的哈希值相同,当目标数据块错误时,根据目标数据块和验证路径计算得到的哈希值,与根节点的哈希值不同。
需要说明的是,在归档节点发生磁盘损坏或节点故障时,可能会导致数据节点树中的数据块出错,进而归档节点读取到的数据块是错误的数据块,该数据块不可用于恢复区块数据,可以理解为数据节点树已经丢失正确的数据块。
步骤210,当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
其中,可用性验证结果用于反映数据节点树中正确的数据块所占的比值,可用性验证结果满足节点扩展条件,可以是可用性验证结果属于预设比值区间;需要说明的是,数据节点树的可用性验证结果属于预设比值区间,表示数据节点树存在部分错误的数据块,并且数据节点树中正确的数据块可以用于恢复得到区块数据。
当数据节点树存在部分错误的数据块时,表示归档节点可能存在故障,数据节点树中错误的数据块可能会持续增加,导致数据节点树中剩余的正确的数据块无法恢复得到区块数据,进而导致联盟链丢失区块数据,因此需要增加扩展的归档节点,通过扩展的归档节点备份区块数据。
在一些实施例中,由共识节点确定数据节点树的可用性验证结果是否满足节点扩展条件,当可用性验证结果满足节点扩展条件时 ,共识节点新增扩展的归档节点。
在共识节点新增扩展的归档节点之后,可以向归档节点发送数据获取请求,归档节点依据数据获取请求对数据节点树中正确的数据块进行解码,得到区块数据,向共识节点发送区块数据,共识节点将区块数据发送至扩展的归档节点,以实现将区块数据备份至扩展的归档节点。
在共识节点新增扩展的归档节点之后,也可以向归档节点发送数据备份请求,数据备份请求包括扩展的归档节点的网络地址,归档节点依据数据获取请求对数据节点树中正确的数据块进行解码,得到区块数据,根据扩展的归档节点的网络地址,将区块数据发送至扩展的归档节点,以实现将区块数据备份至扩展的归档节点。
在一些实施例中,共识节点新增扩展的归档节点,扩展的归档节点可以是联盟链的新增节点,共识节点可以为新增节点签发证书、将新增节点配置为归档节点,将该归档节点添加到联盟链中,使得该归档节点成为联盟链中扩展的归档节点。
共识节点将区块数据发送至扩展的归档节点后,扩展的归档节点可以从共识节点处获取纠删码矩阵,依据纠删码矩阵对区块数据进行编码,得到数据矩阵,再将数据矩阵以节点树的形式存储,得到数据节点树,以实现将区块数据归档至扩展的归档节点。
在一些实施例中,将区块数据归档至扩展的归档节点之后,共识节点可以周期性地向扩展的归档节点发送验证请求,以验证扩展的归档节点中数据节点树的可用性。
在一些实施例中,当归档节点中数据节点树的可用性验证结果不满足节点扩展条件时,则不进行新增扩展的归档节点,以及将区块数据归档至扩展的归档节点的操作。
联盟链中的节点较少,且有准入门槛,在相关技术中,联盟链通常以中心化存储的形式归档数据,即通过一个归档节点存储联盟链上的数据;当用户向共识节点查询区块数据时,共识节点可以将用户的请求转发至归档节点,从归档节点处恢复区块数据,再将区块数据返回至用户;当归档节点出现单点故障时,可能会丢失数据,进而导致联盟链无法恢复丢失的数据;在本申请实施例中,共识节点周期性地向归档节点发送验证请求,通过验证请求验证其归档的数据的可用性,在可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点,可以避免归档节点故障,导致数据无法恢复的情况。
在上述联盟链的数据处理方法中,接收共识节点发送的验证请求,确定验证请求对应的数据节点树,从数据节点树中获取验证请求对应的目标数据块和验证路径,以使得共识节点根据目标数据块和验证路径,确定数据节点树的可用性验证结果,可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点;共识节点可以验证归档节点中数据节点树的可用性,当可用性验证结果满足节点扩展条件时,表示数据节点树存在部分错误的数据块,并且数据节点树中正确的数据块可以用于恢复得到区块数据,此时,将区块数据归档至扩展的归档节点,避免了归档节点的数据节点树中错误的数据块持续增加,导致数据节点树中正确的数据块无法恢复得到区块数据,进而导致联盟链上区块数据无法恢复的情况,保证了联盟链上数据的可用性。
在一些实施例中,联盟链的数据处理方法还包括:响应于共识节点发送的归档请求,从共识节点中获取归档请求对应的区块数据;调用共识节点的归档合约,并基于归档合约获取共识节点的纠删码矩阵;依据纠删码矩阵对区块数据进行编码,得到数据矩阵;以节点树的形式存储数据矩阵,得到数据节点树。
其中,纠删码矩阵是共识节点生成的;纠删码矩阵中各行向量之间相互独立,即各行向量中部分行向量组成的矩阵可逆。
纠删码矩阵的尺寸是(k+q)×k,即纠删码矩阵是k+q行、k列的矩阵,并且纠删码矩阵的前k个行向量可以组成单位矩阵,纠删码矩阵的后q个行向量中元素的具体取值由共识节点确定;纠删码矩阵的后q个行向量中元素的具体取值可以是随机生成。
在实际应用中,纠删码矩阵的尺寸可以是2k×k(即q=k),示例性地,尺寸为2k×k的纠删码矩阵如图4所示,纠删码矩阵中后k个行向量中元素(至/>)的具体取值由共识节点确定。
在一些实施例中,共识节点生成纠删码矩阵后,将纠删码矩阵写入归档合约中,共识节点需要将区块数据归档至归档节点时,向归档节点发送包括区块数据对应的区块高度信息的归档请求,在归档合约中记录区块高度信息,并将区块高度信息设置为等待归档状态;区块高度信息包括区块起始高度和区块结束高度。
归档节点接收到归档请求,获取归档请求包括的区块高度信息,从共识节点中获取区块高度信息对应的区块数据,并调用共识节点的归档合约,根据归档合约获取共识节点的纠删码矩阵,依据纠删码矩阵对区块数据进行编码,得到数据矩阵。
在一些实施例中,依据纠删码矩阵对区块数据进行编码,得到数据矩阵,包括:将区块数据打包为数据包,获取纠删码矩阵的列数,依据纠删码矩阵的列数将数据包划分为数据分片向量;通过纠删码矩阵对数据分片向量进行编码,得到数据矩阵;在实际应用中,通过纠删码矩阵对数据分片向量进行编码,得到数据矩阵,可以是确定纠删码矩阵和数据分片向量之间的乘积,得到数据矩阵。
示例性地,纠删码矩阵的尺寸为2k×k,纠删码矩阵的列数为k,进而根据纠删码矩阵的列数k将打包区块数据得到的数据包划分为数据分片向量,如图5所示,数据分片向量是行数为k的列向量,包括k个数据块分片,分别为:b1、b2、……、bk;确定数据分片向量与纠删码矩阵的乘积,得到数据矩阵,如图6所示,数据矩阵包括2k个行向量,数据矩阵的每一行包括一个数据块,即数据矩阵包括2k个数据块,分别为:c1、c2、……、c2k。
归档节点将数据矩阵以节点树的形式存储,得到数据节点树,其中,数据节点树的各叶子节点分别用于存储数据矩阵包括的各数据块,归档节点确定各叶子节点中各数据块的哈希值,并根据各叶子节点对应的哈希值进行逐层递归运算,在递归运算的过程中确定数据节点树中各中间节点的哈希值,直至运算得到数据节点树中根节点的哈希值;数据节点树包括各叶子节点、各层中间节点和根节点。
示例性地,在数据节点树中存储有2k个数据块,若归档节点出现故障,导致数据节点树中的数据块丢失或出现错误,在数据节点树还存在k个正确的数据块的情况下,归档节点可以通过纠删码矩阵对k个正确的数据块恢复得到区块数据,提升了数据节点树的容错能力。
在一些实施例中,归档节点将数据矩阵以节点树的形式存储,得到数据节点树,则表示已完成对区块数据进行归档,归档节点调用共识节点的归档合约,将归档合约中区块高度信息的状态更改为已归档状态,共识节点检测到区块高度信息的状态为已归档状态时,将区块高度信息对应的区块数据(已归档的区块数据)删除;当共识节点需要恢复区块数据时,可以从归档节点处恢复区块数据。
在上述实施例中,将依据纠删码矩阵对区块数据进行编码,得到数据矩阵,将数据矩阵存储为数据节点树,使得数据节点树中的部分数据块丢失或出现错误时,可以根据其余正确的数据块恢复得到区块数据,提升了数据节点树的容错能力;此外,将数据矩阵存储为数据节点树,使得后续可以从数据节点树中获取目标数据块和验证路径,以验证数据节点树的可用性。
在一些实施例中,依据纠删码矩阵对区块数据进行编码,得到数据矩阵,包括:对区块数据进行划分,得到数据分片向量;确定纠删码矩阵与数据分片向量之间的乘积,得到初始数据块向量;初始数据块向量包括各初始数据块;对初始数据块进行划分,得到候选数据块向量,并确定纠删码矩阵与候选数据块向量之间的乘积,得到初始数据块对应的数据块向量;依据各初始数据块对应的数据块向量,确定数据矩阵。
其中,数据分片向量是列向量,数据分片向量的每一行包括一个数据分片;初始数据块向量也是列向量,初始数据块向量的每一行包括一个初始数据块;初始数据块向量的行数大于数据分片向量的行数;对每一初始数据块进行划分,得到该初始数据块对应的候选数据块向量,候选数据块向量是列向量,候选数据块向量的每一行包括一个候选数据块,并且候选数据块向量的行数,等于数据分片向量的行数;数据块向量是行向量,数据块向量的每一列包括一个数据块,并且数据块向量的列数等于初始数据块向量的行数,且数据块向量的列数大于候选数据块向量的行数。
在一些实施例中,归档节点将区块数据打包为数据包,获取纠删码矩阵的列数,依据该列数将数据包划分为数据分片向量;示例性地,纠删码矩阵的尺寸为2k×k,则数据分片向量的尺寸为k×1;确定纠删码矩阵与数据分片向量之间的乘积,得到初始数据块向量;示例性地,初始数据块向量的尺寸为2k×1,初始数据块向量包括2k个初始数据块;对于初始数据块向量中的每一初始数据块,根据纠删码矩阵的列数,对该初始数据块进行划分,得到该初始数据块对应的候选数据块向量;示例性地,如图7所示,将初始数据块向量中的初始数据块c1,划分为候选数据块向量C1={};确定纠删码矩阵与该候选数据块向量之间的乘积,得到该初始数据块对应的数据块向量;示例性地,如图7所示,确定尺寸为2k×k的纠删码矩阵与候选数据块向量之间的乘积,得到数据块向量D1={/>、、……、/>};根据2k个初始数据块,可以得到2k个数据块向量,分别为:D1、D2、……、D2k;将2k个数据块向量均作为行向量,组成确定数据矩阵,数据矩阵的尺寸为2k×2k;示例性地,数据矩阵如图8所示。
在依据纠删码矩阵对区块数据进行编码,得到数据矩阵的过程中,对区块数据对应的数据包进行第一次数据划分,得到数据分片向量,根据纠删码矩阵对数据分片向量进行第一次编码,得到初始数据块向量;对初始数据块向量中的各初始数据块进行第二次数据划分,得到候选数据块向量,根据纠删码矩阵对各初始数据块各自对应的候选数据块向量进行第二次编码,根据编码得到的各初始数据块对应的数据块向量确定数据矩阵,使得数据矩阵中每个数据块的数据量较小。
示例性地,假设区块数据的数据量为1GB,k为256,在依据纠删码矩阵对区块数据进行编码,得到数据矩阵的过程中,若进行一次数据划分和一次编码,可以得到2k个初始数据块,2k个初始数据块的数据量为2GB,每个初始数据块的数据量为4MB;若进行两次数据花费和两次编码,可以得到2k×2k个数据块,2k×2k个数据块的数据量为4GB,每个数据块的数据量为16kb;显然,数据块的数据量小于初始数据块的数据量。
在上述实施例中,在依据纠删码矩阵对区块数据进行编码,得到数据矩阵的过程中,在对区块数据进行划分,并根据纠删码矩阵进行一次编码后,对初始数据块向量包括各初始数据块,再次进行数据划分,以及再次编码,使得编码得到的数据矩阵中,每个数据块的数据量较小,在后续从数据节点树中获取目标数据块和验证路径时,每次获取的目标数据块的数据量较小,使得在验证数据节点树的可用性的过程中,降低了归档节点的数据读写压力和网络的数据传输压力,实现了以较小的资源占用,验证数据节点树的可用性。
在一些实施例中,目标数据块的数量为至少两个;依据目标数据块和验证路径,确定数据节点树的可用性验证结果,包括:依据验证路径包括的各哈希值和目标数据块,确定验证哈希值;根据验证哈希值和根节点的哈希值,确定目标数据块的正确性信息;依据各目标数据块的正确性信息,确定数据节点树的可用性验证结果。
其中,验证哈希值是共识节点根据目标数据块和验证路径进行逐层递归运算所得的;根节点的哈希值是数据节点树中根节点的哈希值,在归档节点完成区块数据的归档之后,归档节点向共识节点发送根节点的哈希值,以便于共识节点依据根节点的哈希值验证数据节点树的可用性。
在一些实施例中,共识节点根据目标数据块和验证路径中的各哈希值,进行逐层递归运算,得到验证哈希值;示例性地,数据节点树如图9所示,其中,验证路径包括从底层到顶层依次排序的各哈希值:h1、h2和h3,共识节点通过哈希算法确定目标数据块的哈希值,根据目标数据块f11的哈希值和h1,计算得到中间节点A对应的哈希值,根据中间节点A对应的哈希值和h2,计算得到中间节点B对应的哈希值,根据中间节点B对应的哈希值和h3,计算得到验证哈希值。
在一些实施例中,当验证哈希值与根节点的哈希值相同时,确定目标数据块的正确性信息为第一信息,表示目标数据块是正确的数据块;当验证哈希值与根节点的哈希值不同时,确定目标数据块的正确性信息为第二信息,表示目标数据块是错误的数据块。
共识节点对多个目标数据块对应的正确性信息进行统计,根据多个目标数据块中正确的数据块的占比,确定数据节点树的可用性验证结果。
在上述实施例中,通过验证路径包括的各哈希值和目标数据块,确定验证哈希值,根据根节点的哈希值和验证哈希值确定目标数据块的正确性信息,根据各目标数据块的正确性信息,确定数据节点树的可用性验证结果,以实现共识节点可以验证归档节点中数据的可用性。
在一些实施例中,依据各目标数据块的正确性信息,确定数据节点树的可用性验证结果,包括:依据各目标数据块的正确性信息,确定各目标数据块中正确的数据块所对应的目标数量;依据目标数量与各目标数据块的总数量,确定数据节点树的可用性验证结果。
在一些实施例中,目标数据块的数量为多个,在归档节点存在故障,导致数据块丢失或出错的情况下,多个目标数据块的正确性信息可能包括多个第一信息和多个第二信息,在归档节点不存在故障的情况下,多个目标数据块的正确性信息均为第一信息。
共识节点根据多个目标数据块的正确性信息,确定多个目标数据块中正确的数据块的目标数量,将目标数量与多个目标数据块的总数量之间的比值,得到可用性验证结果。
示例性地,根据纠删码矩阵的列数k将区块数据的数据包划分为k个数据分片,纠删码矩阵的尺寸为2k×k,通过纠删码矩阵对k个数据分片进行编码,得到的数据矩阵的尺寸为2k×2k,在数据矩阵中正确的数据块所对应矩阵的尺寸大于或等于k×k时,则可以根据纠删码矩阵对正确的数据块进行解码,得到区块数据;在数据矩阵中正确的数据块所对应矩阵的尺寸小于k×k时,则无法根据纠删码矩阵解码得到区块数据。
需要说明的是,数据矩阵中的哪一数据块为错误数据块是随机的,在最好的情况下,归档节点丢失75%的数据块,剩余25%的正确的数据块正好可以组成k×k子矩阵时,数据矩阵中的数据块可以用于恢复区块数据;比如,如图10所示,将数据矩阵划分为四块,其中,U1、U2、U3、U4的均是尺寸为k×k子矩阵,在数据矩阵中正确的数据块可以组成U1、U2、U3或U4中任一子矩阵的情况下,可以根据纠删码矩阵对U1、U2、U3或U4中的任一子矩阵进行解码,得到区块数据;在最坏的情况下,归档节点丢失大于25%的数据块,剩余的正确的数据块不能组成k×k子矩阵时,则数据矩阵中的数据块不可用于恢复区块数据;比如,归档节点丢失子矩阵E包括的数据块,剩余的数据块不能组成大于或等于k×k的子矩阵,因此不可用于恢复区块数据。
由上述分析可知,在数据矩阵中正确的数据块占据总数据块的比值,大于75%的情况下,可以根据正确的数据块恢复区块数据,进而可以根据“75%”确定节点扩展条件;比如当可用性验证结果属于预设比值区间:[80%,90%]时,可用性验证结果满足节点扩展条件。
需要说明的是,目标数据块的总数量可以小于数据节点树中叶子节点的总数量,共识节点发出的多个验证请求包括的节点标识是随机确定的,进而多个目标数据块是从数据节点树的所有数据块中随机获取的数据块,因此多个目标数据块中正确的数据块的占比,可以反映数据节点树中正确的数据块在所有数据块的占比,如此,在共识节点不需要验证数据节点树中所有数据块的正确性信息的情况下,即可以确定数据节点树的可用性结果,降低了归档节点的数据读写压力和网络的数据传输压力,实现了以较小的资源占用,验证数据节点树的可用性,提升了确定数据节点树的可用性结果的效率。
示例性地,数据节点树包括2k×2k个叶子节点,共识节点可以发送2k个验证请求,确定获取的2k个目标数据块的正确性信息,若其中存在m个目标数据块的,将m与2k的比值作为可用性验证结果;当m与2k的比值属于预设比值区间:[80%,90%]时,表示归档节点中的数据块存在错误,并且归档节点中正确的数据块可以恢复得到区块数据,为了避免归档节点中错误的数据块持续增加,导致正确的数据块无法恢复得到区块数据,将区块数据归档至扩展的归档节点,保证了联盟链上数据的可用性。
在上述实施例中,共识节点获取多个目标数据块,并确定各目标数据块的正确性信息,将各目标数据块中正确的数据块的占比作为可用性验证结果,使得在数据节点树存在部分错误的数据块,并且数据节点树中正确的数据块可以用于恢复得到区块数据时,将区块数据备份至扩展的归档节点,保证了联盟链上数据的可用性。
在一些实施例中,正确性信息用于反映数据节点树包括的目标数据块正确或错误;依据各目标数据块的正确性信息,确定各目标数据块中正确的数据块所对应的目标数量,包括:在各目标数据块中,获取正确性信息表示为正确的数据块;确定正确的数量块所对应的目标数量。
其中,目标数据块的正确性信息为第一信息或第二信息,第一信息表示目标数据块是正确的数据块,第二信息表示目标数据块是错误的数据块。
在一些实施例中,共识节点在各目标数据块的正确性信息中获取第一信息,将第一信息对应的目标数据块,作为正确的数据块,确定正确的数据块的数量,得到目标数量。
在一些实施例中,共识节点在各目标数据块的正确性信息中获取第一信息,并确定各目标数据块的正确性信息中第一信息的数量,得到目标数量。
在上述实施例中,根据多个目标数据块的正确性信息,确定正确的数据块的目标数量,以便于后续根据目标数量确定数据节点树的可用性验证结果。
在一些实施例中,当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点,包括:当可用性验证结果满足节点扩展条件时,接收共识节点发送的数据获取请求;根据数据获取请求,从数据节点树中获取各数据块;依据纠删码矩阵对各数据块进行解码,得到区块数据;向共识节点发送区块数据,以使得共识节点将区块数据发送至扩展的归档节点,以指示扩展的归档节点依据纠删码矩阵对区块数据进行编码,并基于编码所得的数据矩阵得到备份的数据节点树。
其中,数据获取请求用于获取区块数据,数据获取请求包括区块高度信息。
在一些实施例中,当共识节点确定可用性验证结果满足节点扩展条件时,确定扩展的归档节点,并向归档节点发送数据获取请求,归档节点接收数据获取请求,根据数据获取请求包括的区块高度信息确定对应的数据节点树,获取数据节点树的各叶子节点存储的各数据块。
对于每个叶子节点的数据块,归档节点根据与该叶子节点属于同组的邻近叶子节点中数据块的哈希值、数据节点树中的中间节点的哈希值和根节点的哈希值,确定该数据叶子节点的数据块的正确性信息;归档节点根据数据节点树中所有数据块的正确性信息,从所有数据块中选取正确的数据块;根据正确的数据块各自对应的节点标识,确定候选数据矩阵,通过纠删码矩阵对候选数据矩阵进行解码,得到区块数据;数据块各自对应的节点标识,也是数据块在数据矩阵中的表示行列的位置信息,因此可以确定数据块在候选数据矩阵中的位置。
归档节点解码得到区块数据后,向共识节点发送区块数据,共识节点依据区块数据向扩展的归档节点发送归档请求,扩展的归档节点根据归档请求从共识节点中获取区块数据,调用共识节点的归档合约,基于归档合约获取纠删码矩阵,依据纠删码矩阵对区块数据进行编码,得到数据矩阵,以节点树的形式存储数据矩阵,得到备份的数据节点树,以实现将区块数据备份至扩展的归档节点。
示例性地,如图11所示,当共识节点确定可用性验证结果满足节点扩展条件时,确定扩展的归档节点,向归档节点发送数据获取请求,归档节点接收数据获取请求,根据纠删码矩阵对数据节点树中的数据块进行解码,得到区块数据,向共识节点返回区块数据,共识节点向扩展的归档节点发送归档请求,扩展的归档节点从共识节点中获取区块数据和纠删码矩阵,依据纠删码矩阵对区块数据进行编码,得到数据矩阵,以节点树的形式存储数据矩阵,得到备份的数据节点树。
在上述实施例中,当可用性验证结果满足节点扩展条件,共识节点从归档节点中恢复区块数据,将恢复的区块数据备份至扩展的归档节点,避免了归档节点的数据节点树中错误的数据块持续增加,导致数据节点树中正确的数据块无法恢复得到区块数据,进而导致联盟链上区块数据无法恢复的情况,保证了联盟链上数据的可用性。
在一些实施例中,依据纠删码矩阵对各数据块进行解码,得到区块数据,包括:依据各数据块在数据矩阵中的位置标识,在各数据块中选取各候选数据块;依据各候选数据块确定候选数据矩阵;在纠删码矩阵中选取候选数据矩阵对应的候选纠删码矩阵;基于候选纠删码矩阵解码候选数据矩阵,得到区块数据。
其中,位置标识是数据块在数据矩阵中的行列标识,比如数据块存储在数据矩阵的第i行第j列,进而数据块在数据矩阵中的位置标识为(i,j);需要说明的是,存储该数据块的叶子节点的节点标识也为(i,j)。
其中,各候选数据块可以是各数据块中的部分或全部数据块;候选数据矩阵的列数和行数均大于或等于纠删码矩阵的列数时,可以基于候选纠删码矩阵解码候选数据矩阵,得到区块数据。
在一些实施例中,依据各数据块在数据矩阵中的位置标识,在各数据块中选取各候选数据块,包括归档节点确定各数据块的正确性信息,根据各数据块的正确性信息,从各数据块中选取正确的数据块,将正确的数据块所属叶子节点的节点标识,作为正确的数据块在数据矩阵中的位置标识,根据正确的数据块在数据矩阵中的位置标识,在正确的数据块中获取处于同行或同列,且处于同行或同列的正确的数据块的数量大于纠删码矩阵的列数的数据块,根据获取的数据块组成候选数据矩阵。纠删码矩阵的列数是将区块数据对应的数据包划分得到的数据分片向量,所包括的数据分片的数量。
示例性地,纠删码矩阵的列数是4,正确的数据块在数据矩阵中的位置如图12所示,将d11至d15、d21至d25、d31至d35、d41至d45、d51至d55选取为候选数据块,并且选取的候选数据块组成候选数据矩阵。
在一些实施例中,归档节点获取候选数据矩阵中各候选数据块的位置标识,在纠删码矩阵中确定各位置标识各自对应的元素,并根据获取的元素组成候选纠删码矩阵。
示例性地,候选数据矩阵中各候选数据块的位置标识分别为(1,1)至(1,5),(2,1)至(2,5),(3,1)至(3,5),(4,1)至(4,5)、(5,1)至(5,5),根据纠删码矩阵中上述位置标识分别对应元素:m11至m15、m21至m25、m31至m35、m41至m45、m51至m55,确定候选纠删码矩阵。
在一些实施例中,根据候选纠删码矩阵解码候选数据矩阵,得到区块数据的过程,包括,获取候选数据矩阵包括各候选数据列向量,确定候选纠删码矩阵的逆矩阵,计算逆矩阵与候选数据列向量之间的乘积,得到候选数据列向量对应的第一恢复数据列向量,根据候选数据列向量对应的第一恢复数据列向量确定第一恢复数据块,根据各候选数据列向量分别对应的第一恢复数据块,确定第二恢复数据列向量,计算逆矩阵与第二恢复数据列向量之间的乘积,得到恢复数据分片向量,根据恢复数据分片向量确定区块数据;需要说明的是,恢复数据分片向量,与对区块数据的数据包进行划分所得的数据分片向量相同。
示例性地,候选数据矩阵的尺寸为k×k,在纠删码矩阵/>中确定候选数据矩阵对应的候选纠删码矩阵/>,候选纠删码矩阵/>的尺寸为k×k,确定候选纠删码矩阵/>的逆矩阵/>,计算逆矩阵/>与候选数据矩阵/>中候选数据列向量/>的乘积,得到第一恢复数据列向量/>,将第一恢复数据列向量/>打包为第二恢复数据块/>,根据候选数据矩阵/>中各候选数据列向量各自对应的第二恢复数据块(/>至/>),确定第二恢复数据列向量/>,计算逆矩阵/>与第二恢复数据列向量/>之间的乘积,得到恢复数据分片向量/>,根据恢复数据分片向量/>确定区块数据。
在上述实施例中,在数据节点树的部分数据块出错或丢失的情况下,可以根据纠删码矩阵对正确的数据块进行解码,以恢复区块数据,提升了数据节点树的容错能力,在数据节点树的可用性结果满足节点扩展时,也可以及时根据数据节点树恢复区块数据,并备份至扩展的归档节点中,保证了联盟链上数据的可用性。
在一些实施例中,联盟链的数据处理方法还包括:接收共识节点发送的数据恢复请求,从数据节点树中获取数据恢复请求对应的数据块;依据数据恢复请求对应的数据块确定数据恢复矩阵;在数据恢复矩阵满足恢复条件的情况下,依据纠删码矩阵对数据恢复矩阵进行解码,得到区块数据;向共识节点返回区块数据。
其中,数据恢复请求用于恢复区块数据;在实际应用中,共识节点将区块数据归档至归档节点后,将区块数据删除,当用户需要查询区块数据时,像共识节点发送查询请求,共识节点响应于用户发起的查询请求,向共识节点发送数据恢复请求,通过数据恢复请求获取区块数据,再将区块数据返回至用户。
其中,恢复条件可以是数据恢复矩阵的行数和列数均大于或等于区块数据对应的纠删码矩阵的列数。
在一些实施例中,归档节点接收到数据恢复请求时,根据数据恢复请求包括的区块高度信息确定数据节点树,在数据节点树中获取正确的数据块,将获取的正确的数据块作为数据恢复请求对应的数据块。
其中,依据数据恢复请求对应的数据块确定数据恢复矩阵的具体过程,和上述实施例中依据各候选数据块确定候选数据矩阵的具体过程相同,因此依据数据恢复请求对应的数据块确定数据恢复矩阵的具体过程,可以参考上述实施例中依据各候选数据块确定候选数据矩阵的说明。
依据纠删码矩阵对数据恢复矩阵进行解码,得到区块数据,包括根据数据恢复在纠删码矩阵中确定恢复纠删码矩阵,基于恢复纠删码矩阵解码数据恢复矩阵,得到区块数据;其中,根据数据恢复在纠删码矩阵中确定恢复纠删码矩阵,基于恢复纠删码矩阵解码数据恢复矩阵,得到区块数据的过程,与上述实施例中,在纠删码矩阵中选取候选数据矩阵对应的候选纠删码矩阵,基于候选纠删码矩阵解码候选数据矩阵,得到区块数据的过程相同,因此根据数据恢复在纠删码矩阵中确定恢复纠删码矩阵,基于恢复纠删码矩阵解码数据恢复矩阵,得到区块数据的过程,可以参考上述实施例中的说明。
在上述实施例中,在共识节点需要恢复区块数据时,可以向归档节点发送数据恢复请求,通过纠删码矩阵解码数据恢复请求对应的数据块,得到区块数据,使得通过数据节点树存储的数据块,在部分出错或丢失的情况下,也可以恢复区块数据,提升了归档节点的容错能力。
在一些实施例中,联盟链的数据处理方法,还包括:在数据恢复矩阵不满足恢复条件的情况下,向共识节点发送恢复错误信息,以使得共识节点依据恢复错误信息向扩展的归档节点发送数据恢复请求,以获取区块数据。
其中,数据恢复矩阵不满足恢复条件,指的是数据恢复矩阵的行数或列数小于数据分片的数量。
在一些实施例中,当数据恢复矩阵的行数或列数小于数据分片的数量时,确定数据恢复矩阵无法用于恢复区块数据,则归档节点向共识节点发送恢复错误信息,共识节点接收到恢复错误信息后,向扩展的归档节点发送数据恢复请求,扩展的归档节点接收到数据恢复请求后,根据数据恢复请求,从其备份的数据节点树中获取数据恢复矩阵,根据纠删码矩阵对数据恢复矩阵进行解码,得到区块数据,并向共识节点返回区块数据。
在上述实施例中,由于在数据节点树的可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点,在归档节点出现故障,导致数据节点树中错误的数据块过多,无法恢复区块数据时,共识节点可以从扩展的归档节点处恢复区块数据,保证了联盟链上数据的可用性。
在一些实施例中,如图13所示,联盟链的数据处理方法可以通过归档节点和共识节点协同执行,包括:
步骤1301,归档节点响应于共识节点发送的归档请求,从共识节点中获取归档请求对应的区块数据;调用共识节点的归档合约,并基于归档合约获取共识节点的纠删码矩阵;
步骤1302,归档节点对区块数据进行划分,得到数据分片向量;确定纠删码矩阵与数据分片向量之间的乘积,得到初始数据块向量;初始数据块向量包括各初始数据块;对初始数据块进行划分,得到候选数据块向量,并确定纠删码矩阵与候选数据块向量之间的乘积,得到初始数据块对应的数据块向量;依据各初始数据块对应的数据块向量,确定数据矩阵;以节点树的形式存储数据矩阵,得到数据节点树;
步骤1303,归档节点接收共识节点发送的验证请求,根据验证请求获取数据节点树;在数据节点树的叶子节点中,获取验证请求包括的节点标识所对应的目标叶子节点;将目标叶子节点所存储的数据块,作为目标数据块;依据目标叶子节点、数据节点树的根节点以及目标叶子节点与根节点之间的中间节点,确定验证路径;向共识节点发送目标数据块和验证路径;
步骤1304,共识节点依据验证路径包括的各哈希值和目标数据块,确定验证哈希值;根据验证哈希值和根节点的哈希值,确定目标数据块的正确性信息;正确性信息用于反映数据节点树包括的目标数据块正确或错误;
步骤1305,共识节点在各目标数据块中,归档节点获取正确性信息表示为正确的数据块,确定正确的数据块所对应的目标数量;依据目标数量与各目标数据块的总数量,确定数据节点树的可用性验证结果;
步骤1306,当可用性验证结果满足节点扩展条件时,归档节点接收共识节点发送的数据获取请求;根据数据获取请求,从数据节点树中获取各数据块;
步骤1307,归档节点依据各数据块在数据矩阵中的位置标识,在各数据块中选取各候选数据块;依据各候选数据块确定候选数据矩阵;在纠删码矩阵中选取候选数据矩阵对应的候选纠删码矩阵;基于候选纠删码矩阵解码候选数据矩阵,得到区块数据;
步骤1308,归档节点向共识节点发送区块数据,以使得共识节点将区块数据发送至扩展的归档节点,以指示扩展的归档节点依据纠删码矩阵对区块数据进行编码,并基于编码所得的数据矩阵得到备份的数据节点树;
步骤1309,归档节点接收共识节点发送的数据恢复请求,从数据节点树中获取数据恢复请求对应的数据块;依据数据恢复请求对应的数据块确定数据恢复矩阵;
步骤1310A,在数据恢复矩阵满足恢复条件的情况下,归档节点依据纠删码矩阵对数据恢复矩阵进行解码,得到区块数据;向共识节点返回区块数据;
步骤1310B,在数据恢复矩阵不满足恢复条件的情况下,向共识节点发送恢复错误信息,以使得共识节点依据恢复错误信息向扩展的归档节点发送数据恢复请求,以获取区块数据。
在上述联盟链的数据处理方法中,接收共识节点发送的验证请求,确定验证请求对应的数据节点树,从数据节点树中获取验证请求对应的目标数据块和验证路径,以使得共识节点根据目标数据块和验证路径,确定数据节点树的可用性验证结果,可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点;共识节点可以验证归档节点中数据节点树的可用性,当可用性验证结果满足节点扩展条件时,表示数据节点树存在部分错误的数据块,并且数据节点树中正确的数据块可以用于恢复得到区块数据,此时,将区块数据归档至扩展的归档节点,避免了归档节点的数据节点树中错误的数据块持续增加,导致数据节点树中正确的数据块无法恢复得到区块数据,进而导致联盟链上区块数据无法恢复的情况,保证了联盟链上数据的可用性。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的联盟链的数据处理方法的联盟链的数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个联盟链的数据处理装置实施例中的具体限定可以参见上文中对于联盟链的数据处理方法的限定,在此不再赘述。
在一些实施例中,如图14所示,提供了一种联盟链的数据处理装置,包括:验证请求接收模块1401、数据节点树获取模块1402、验证数据获取模块1403、验证数据发送模块1404和扩展归档模块1405,其中:
验证请求接收模块1401,用于接收共识节点发送的验证请求;
数据节点树获取模块1402,用于根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;
验证数据获取模块1403,用于从数据节点树中,获取验证请求对应的目标数据块和验证路径;
验证数据发送模块1404,用于向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;
扩展归档模块1405,当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
在一些实施例中,验证数据获取模块1403,还用于在数据节点树的叶子节点中,获取验证请求包括的节点标识所对应的目标叶子节点;将目标叶子节点所存储的数据块,作为目标数据块;依据目标叶子节点、数据节点树的根节点以及目标叶子节点与根节点之间的中间节点,确定验证路径。
在一些实施例中,目标数据块的数量为至少两个;联盟链的数据处理装置还包括:可用性验证模块,用于依据验证路径包括的各哈希值和目标数据块,确定验证哈希值;根据验证哈希值和根节点的哈希值,确定目标数据块的正确性信息;依据各目标数据块的正确性信息,确定数据节点树的可用性验证结果;可用性验证模块,可以部署于共识节点中。
在一些实施例中,可用性验证模块,还用于依据各目标数据块的正确性信息,确定各目标数据块中正确的数据块所对应的目标数量;依据目标数量与各目标数据块的总数量,确定数据节点树的可用性验证结果。
在一些实施例中,正确性信息用于反映数据节点树包括的目标数据块正确或错误;可用性验证模块包括目标数量确定单元,用于在各目标数据块中,获取正确性信息表示为正确的数据块;确定正确的数据块所对应的目标数量。
在一些实施例中,扩展归档模块1405包括:
数据获取请求接收单元,用于当可用性验证结果满足节点扩展条件时,接收共识节点发送的数据获取请求;
数据块获取单元,用于根据数据获取请求,从数据节点树中获取各数据块;
解码单元,用于依据纠删码矩阵对各数据块进行解码,得到区块数据;
区块数据发送单元,用于向共识节点发送区块数据,以使得共识节点将区块数据发送至扩展的归档节点,以指示扩展的归档节点依据纠删码矩阵对区块数据进行编码,并基于编码所得的数据矩阵得到备份的数据节点树。
在一些实施例中,解码单元,还用于依据各数据块在数据矩阵中的位置标识,在各数据块中选取各候选数据块;依据各候选数据块确定候选数据矩阵;在纠删码矩阵中选取候选数据矩阵对应的候选纠删码矩阵;基于候选纠删码矩阵解码候选数据矩阵,得到区块数据。
在一些实施例中,联盟链的数据处理装置还包括:数据恢复模块,用于接收共识节点发送的数据恢复请求,从数据节点树中获取数据恢复请求对应的数据块;依据数据恢复请求对应的数据块确定数据恢复矩阵;在数据恢复矩阵满足恢复条件的情况下,依据纠删码矩阵对数据恢复矩阵进行解码,得到区块数据;向共识节点返回区块数据。
在一些实施例中,数据恢复模块,还用于在数据恢复矩阵不满足恢复条件的情况下,向共识节点发送恢复错误信息,以使得共识节点依据恢复错误信息向扩展的归档节点发送数据恢复请求,以获取区块数据。
在一些实施例中,联盟链的数据处理装置还包括:归档模块,用于响应于共识节点发送的归档请求,从共识节点中获取归档请求对应的区块数据;调用共识节点的归档合约,并基于归档合约获取共识节点的纠删码矩阵;依据纠删码矩阵对区块数据进行编码,得到数据矩阵;以节点树的形式存储数据矩阵,得到数据节点树。
在一些实施例中,归档模块,还用于对区块数据进行划分,得到数据分片向量;确定纠删码矩阵与数据分片向量之间的乘积,得到初始数据块向量;初始数据块向量包括各初始数据块;对初始数据块进行划分,得到候选数据块向量,并确定纠删码矩阵与候选数据块向量之间的乘积,得到初始数据块对应的数据块向量;依据各初始数据块对应的数据块向量,确定数据矩阵。
上述联盟链的数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一些实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图15所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于数据节点树。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种联盟链的数据处理方法。
本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一些实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
接收共识节点发送的验证请求;根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;从数据节点树中,获取验证请求对应的目标数据块和验证路径;向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
在一些实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收共识节点发送的验证请求;根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;从数据节点树中,获取验证请求对应的目标数据块和验证路径;向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
在一些实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
接收共识节点发送的验证请求;根据验证请求获取数据节点树;数据节点树是对共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;从数据节点树中,获取验证请求对应的目标数据块和验证路径;向共识节点发送目标数据块和验证路径,以使得共识节点依据目标数据块和验证路径,确定数据节点树的可用性验证结果;当可用性验证结果满足节点扩展条件时,将区块数据归档至扩展的归档节点。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(FerroelectricRandom Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(DynamicRandom AccessMemory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (24)
1.一种联盟链的数据处理方法,其特征在于,所述方法包括:
接收共识节点发送的验证请求;
根据所述验证请求获取数据节点树;所述数据节点树是对所述共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;
从所述数据节点树中,获取所述验证请求对应的目标数据块和验证路径;
向所述共识节点发送所述目标数据块和所述验证路径,以使得所述共识节点依据所述目标数据块和所述验证路径,确定所述数据节点树的可用性验证结果;
当所述可用性验证结果满足节点扩展条件时,将所述区块数据归档至扩展的归档节点;
接收所述共识节点发送的数据恢复请求,从所述数据节点树中获取所述数据恢复请求对应的数据块;
依据所述数据恢复请求对应的数据块确定数据恢复矩阵;
在所述数据恢复矩阵不满足恢复条件的情况下,向所述共识节点发送恢复错误信息,以使得所述共识节点依据所述恢复错误信息向所述扩展的归档节点发送数据恢复请求,以获取所述区块数据。
2.根据权利要求1所述的方法,其特征在于,所述从所述数据节点树中,获取所述验证请求对应的目标数据块和验证路径,包括:
在所述数据节点树的叶子节点中,获取所述验证请求包括的节点标识所对应的目标叶子节点;
将所述目标叶子节点所存储的数据块,作为目标数据块;
依据所述目标叶子节点、所述数据节点树的根节点以及所述目标叶子节点与所述根节点之间的中间节点,确定验证路径。
3.根据权利要求1所述的方法,其特征在于,所述目标数据块的数量为至少两个;所述依据所述目标数据块和所述验证路径,确定所述数据节点树的可用性验证结果,包括:
依据所述验证路径包括的各哈希值和所述目标数据块,确定验证哈希值;
根据所述验证哈希值和根节点的哈希值,确定所述目标数据块的正确性信息;
依据各所述目标数据块的正确性信息,确定所述数据节点树的可用性验证结果。
4.根据权利要求3所述的方法,其特征在于,所述依据各所述目标数据块的正确性信息,确定所述数据节点树的可用性验证结果,包括:
依据各所述目标数据块的正确性信息,确定各所述目标数据块中正确的数据块所对应的目标数量;
依据所述目标数量与各所述目标数据块的总数量,确定所述数据节点树的可用性验证结果。
5.根据权利要求4所述的方法,其特征在于,所述正确性信息用于反映所述数据节点树包括的所述目标数据块正确或错误;
所述依据各所述目标数据块的正确性信息,确定各所述目标数据块中正确的数据块所对应的目标数量,包括:
在各所述目标数据块中,获取所述正确性信息表示为正确的数据块;
确定所述正确的数据块所对应的目标数量。
6.根据权利要求1所述的方法,其特征在于,所述当所述可用性验证结果满足节点扩展条件时,将所述区块数据归档至扩展的归档节点,包括:
当所述可用性验证结果满足节点扩展条件时,接收所述共识节点发送的数据获取请求;
根据所述数据获取请求,从所述数据节点树中获取各数据块;
依据纠删码矩阵对所述各数据块进行解码,得到所述区块数据;
向所述共识节点发送所述区块数据,以使得所述共识节点将所述区块数据发送至扩展的归档节点,以指示所述扩展的归档节点依据所述纠删码矩阵对所述区块数据进行编码,并基于编码所得的数据矩阵得到备份的数据节点树。
7.根据权利要求6所述的方法,其特征在于,所述依据纠删码矩阵对所述各数据块进行解码,得到所述区块数据,包括:
依据所述各数据块在所述数据矩阵中的位置标识,在所述各数据块中选取各候选数据块;
依据所述各候选数据块确定候选数据矩阵;
在纠删码矩阵中选取所述候选数据矩阵对应的候选纠删码矩阵;
基于所述候选纠删码矩阵解码所述候选数据矩阵,得到所述区块数据。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述数据恢复矩阵满足恢复条件的情况下,依据纠删码矩阵对所述数据恢复矩阵进行解码,得到所述区块数据;
向所述共识节点返回所述区块数据。
9.根据权利要求8所述的方法,其特征在于,所述在所述数据恢复矩阵满足恢复条件的情况下,依据纠删码矩阵对所述数据恢复矩阵进行解码,得到所述区块数据,包括:
当所述数据恢复矩阵的行数和列数均大于或等于纠删码矩阵的列数时,依据所述纠删码矩阵对所述数据恢复矩阵进行解码,得到所述区块数据。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述方法还包括:
响应于所述共识节点发送的归档请求,从所述共识节点中获取所述归档请求对应的区块数据;
调用所述共识节点的归档合约,并基于所述归档合约获取所述共识节点的纠删码矩阵;
依据所述纠删码矩阵对所述区块数据进行编码,得到数据矩阵;
以节点树的形式存储所述数据矩阵,得到数据节点树。
11.根据权利要求10所述的方法,其特征在于,所述依据所述纠删码矩阵对所述区块数据进行编码,得到数据矩阵,包括:
对所述区块数据进行划分,得到数据分片向量;
确定所述纠删码矩阵与所述数据分片向量之间的乘积,得到初始数据块向量;所述初始数据块向量包括各初始数据块;
对所述初始数据块进行划分,得到候选数据块向量,并确定所述纠删码矩阵与所述候选数据块向量之间的乘积,得到所述初始数据块对应的数据块向量;
依据各所述初始数据块对应的数据块向量,确定数据矩阵。
12.一种联盟链的数据处理装置,其特征在于,所述装置包括:
验证请求接收模块,用于接收共识节点发送的验证请求;
数据节点树获取模块,用于根据所述验证请求获取数据节点树;所述数据节点树是对所述共识节点的区块数据进行编码,并基于编码所得的数据矩阵形成的;
验证数据获取模块,用于从所述数据节点树中,获取所述验证请求对应的目标数据块和验证路径;
验证数据发送模块,用于向所述共识节点发送所述目标数据块和所述验证路径,以使得所述共识节点依据所述目标数据块和所述验证路径,确定所述数据节点树的可用性验证结果;
扩展归档模块,当所述可用性验证结果满足节点扩展条件时,将所述区块数据归档至扩展的归档节点;
数据恢复模块,用于接收共识节点发送的数据恢复请求,从数据节点树中获取数据恢复请求对应的数据块;依据数据恢复请求对应的数据块确定数据恢复矩阵;在所述数据恢复矩阵不满足恢复条件的情况下,向所述共识节点发送恢复错误信息,以使得所述共识节点依据所述恢复错误信息向所述扩展的归档节点发送数据恢复请求,以获取所述区块数据。
13.根据权利要求12所述的装置,其特征在于,所述验证数据获取模块,还用于在所述数据节点树的叶子节点中,获取所述验证请求包括的节点标识所对应的目标叶子节点;将所述目标叶子节点所存储的数据块,作为目标数据块;依据所述目标叶子节点、所述数据节点树的根节点以及所述目标叶子节点与所述根节点之间的中间节点,确定验证路径。
14.根据权利要求12所述的装置,其特征在于,所述目标数据块的数量为至少两个;所述装置还包括可用性验证模块,用于依据所述验证路径包括的各哈希值和所述目标数据块,确定验证哈希值;根据所述验证哈希值和根节点的哈希值,确定所述目标数据块的正确性信息;依据各所述目标数据块的正确性信息,确定所述数据节点树的可用性验证结果。
15.根据权利要求14所述的装置,其特征在于,所述可用性验证模块,还用于依据各所述目标数据块的正确性信息,确定各所述目标数据块中正确的数据块所对应的目标数量;依据所述目标数量与各所述目标数据块的总数量,确定所述数据节点树的可用性验证结果。
16.根据权利要求15所述的装置,其特征在于,所述正确性信息用于反映所述数据节点树包括的所述目标数据块正确或错误;所述可用性验证模块包括目标数量确定单元,用于在各所述目标数据块中,获取所述正确性信息表示为正确的数据块;确定所述正确的数据块所对应的目标数量。
17.根据权利要求12所述的装置,其特征在于,所述扩展归档模块,包括:
数据获取请求接收单元,用于当所述可用性验证结果满足节点扩展条件时,接收所述共识节点发送的数据获取请求;
数据块获取单元,用于根据所述数据获取请求,从所述数据节点树中获取各数据块;
解码单元,用于依据纠删码矩阵对所述各数据块进行解码,得到所述区块数据;
区块数据发送单元,用于向所述共识节点发送所述区块数据,以使得所述共识节点将所述区块数据发送至扩展的归档节点,以指示所述扩展的归档节点依据所述纠删码矩阵对所述区块数据进行编码,并基于编码所得的数据矩阵得到备份的数据节点树。
18.根据权利要求17所述的装置,其特征在于,所述解码单元,还用于依据所述各数据块在所述数据矩阵中的位置标识,在所述各数据块中选取各候选数据块;依据所述各候选数据块确定候选数据矩阵;在纠删码矩阵中选取所述候选数据矩阵对应的候选纠删码矩阵;基于所述候选纠删码矩阵解码所述候选数据矩阵,得到所述区块数据。
19.根据权利要求12所述的装置,其特征在于,所述数据恢复模块,还用于在所述数据恢复矩阵满足恢复条件的情况下,依据纠删码矩阵对所述数据恢复矩阵进行解码,得到所述区块数据;向所述共识节点返回所述区块数据。
20.根据权利要求19所述的装置,其特征在于,所述数据恢复模块,还用于当所述数据恢复矩阵的行数和列数均大于或等于纠删码矩阵的列数时,依据所述纠删码矩阵对所述数据恢复矩阵进行解码,得到所述区块数据。
21.根据权利要求12至20中任一项所述的装置,其特征在于,所述装置还包括:归档模块,用于响应于所述共识节点发送的归档请求,从所述共识节点中获取所述归档请求对应的区块数据;调用所述共识节点的归档合约,并基于所述归档合约获取所述共识节点的纠删码矩阵;依据所述纠删码矩阵对所述区块数据进行编码,得到数据矩阵;以节点树的形式存储所述数据矩阵,得到数据节点树。
22.根据权利要求21所述的装置,其特征在于,所述归档模块,还用于对所述区块数据进行划分,得到数据分片向量;确定所述纠删码矩阵与所述数据分片向量之间的乘积,得到初始数据块向量;所述初始数据块向量包括各初始数据块;对所述初始数据块进行划分,得到候选数据块向量,并确定所述纠删码矩阵与所述候选数据块向量之间的乘积,得到所述初始数据块对应的数据块向量;依据各所述初始数据块对应的数据块向量,确定数据矩阵。
23.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311051825.1A CN116755640B (zh) | 2023-08-21 | 2023-08-21 | 联盟链的数据处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311051825.1A CN116755640B (zh) | 2023-08-21 | 2023-08-21 | 联盟链的数据处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116755640A CN116755640A (zh) | 2023-09-15 |
CN116755640B true CN116755640B (zh) | 2024-02-09 |
Family
ID=87951908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311051825.1A Active CN116755640B (zh) | 2023-08-21 | 2023-08-21 | 联盟链的数据处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116755640B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005352723A (ja) * | 2004-06-10 | 2005-12-22 | Backbone Software Inc | クラスタ化された環境でデータをアーカイブするシステムおよび方法 |
CN102207951A (zh) * | 2010-03-29 | 2011-10-05 | 软件Ag公司 | 分布式数据归档系统和/或方法 |
CN109298835A (zh) * | 2018-08-16 | 2019-02-01 | 北京京东尚科信息技术有限公司 | 区块链的数据归档处理方法、装置、设备及存储介质 |
CN110442644A (zh) * | 2019-07-08 | 2019-11-12 | 深圳壹账通智能科技有限公司 | 区块链数据归档存储方法、装置、计算机设备和存储介质 |
CN111526219A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的共识方法及联盟链系统 |
CN111523899A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 联盟链的共识方法、数据校验方法、装置及系统 |
CN113238996A (zh) * | 2021-05-18 | 2021-08-10 | 中国信息通信研究院 | 基于dht的区块链数据归档方法、电子设备及存储介质 |
CN115348278A (zh) * | 2022-08-18 | 2022-11-15 | 中山大学 | 区块链的分布式存储方法 |
CN115481417A (zh) * | 2022-09-02 | 2022-12-16 | 浪潮云信息技术股份公司 | 基于链的数据快照、归档、完整恢复上链方案的方法 |
CN115499453A (zh) * | 2022-06-28 | 2022-12-20 | 重庆邮电大学 | 面向联盟链的分片存储方法 |
CN115756966A (zh) * | 2022-11-25 | 2023-03-07 | 天翼电子商务有限公司 | 一种区块链数据归档和恢复方法及系统 |
CN115964224A (zh) * | 2022-12-29 | 2023-04-14 | 北京易华录信息技术股份有限公司 | 一种索引元数据备份方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10976962B2 (en) * | 2018-03-15 | 2021-04-13 | Pure Storage, Inc. | Servicing I/O operations in a cloud-based storage system |
-
2023
- 2023-08-21 CN CN202311051825.1A patent/CN116755640B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005352723A (ja) * | 2004-06-10 | 2005-12-22 | Backbone Software Inc | クラスタ化された環境でデータをアーカイブするシステムおよび方法 |
CN102207951A (zh) * | 2010-03-29 | 2011-10-05 | 软件Ag公司 | 分布式数据归档系统和/或方法 |
CN109298835A (zh) * | 2018-08-16 | 2019-02-01 | 北京京东尚科信息技术有限公司 | 区块链的数据归档处理方法、装置、设备及存储介质 |
CN110442644A (zh) * | 2019-07-08 | 2019-11-12 | 深圳壹账通智能科技有限公司 | 区块链数据归档存储方法、装置、计算机设备和存储介质 |
CN111526219A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的共识方法及联盟链系统 |
CN111523899A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 联盟链的共识方法、数据校验方法、装置及系统 |
CN113238996A (zh) * | 2021-05-18 | 2021-08-10 | 中国信息通信研究院 | 基于dht的区块链数据归档方法、电子设备及存储介质 |
CN115499453A (zh) * | 2022-06-28 | 2022-12-20 | 重庆邮电大学 | 面向联盟链的分片存储方法 |
CN115348278A (zh) * | 2022-08-18 | 2022-11-15 | 中山大学 | 区块链的分布式存储方法 |
CN115481417A (zh) * | 2022-09-02 | 2022-12-16 | 浪潮云信息技术股份公司 | 基于链的数据快照、归档、完整恢复上链方案的方法 |
CN115756966A (zh) * | 2022-11-25 | 2023-03-07 | 天翼电子商务有限公司 | 一种区块链数据归档和恢复方法及系统 |
CN115964224A (zh) * | 2022-12-29 | 2023-04-14 | 北京易华录信息技术股份有限公司 | 一种索引元数据备份方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116755640A (zh) | 2023-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Perard et al. | Erasure code-based low storage blockchain node | |
US10970276B2 (en) | Object loss reporting in a data storage system | |
US10735137B2 (en) | Distributed storage system data management and security | |
US20200374126A1 (en) | Method for storing an object on a plurality of storage nodes | |
Ateniese et al. | Remote data checking using provable data possession | |
CN101488104B (zh) | 一种实现高效安全存储的系统和方法 | |
CN102170440B (zh) | 适用于存储云间数据安全迁移的方法 | |
CN103916483A (zh) | 一种针对编码冗余存储系统的自适应数据存储与重构方法 | |
Kumar et al. | Ensuring data storage security in cloud computing using Sobol Sequence | |
EP2689333B1 (en) | Method and system for storing and reading data in or from a key value storage | |
CN104915609B (zh) | 一种基于Lagrange插值法和多云的数据隐藏方法 | |
Bao et al. | An adaptive erasure code for jointcloud storage of internet of things big data | |
CN117473020B (zh) | 数据存取方法、系统及计算机存储介质和终端设备 | |
CN116755640B (zh) | 联盟链的数据处理方法、装置、计算机设备和存储介质 | |
US20230179423A1 (en) | Method and apparatus for storing blockchain transaction data and distributed storage system using the same | |
CN116015609A (zh) | 业务记录存储方法、装置、计算机设备和存储介质 | |
CN115221244A (zh) | 区块链跨链方法、装置、计算机设备和存储介质 | |
CN115730933A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
Galinanes et al. | Ensuring data durability with increasingly interdependent content | |
Li et al. | Post‐Quantum Privacy‐Preserving Provable Data Possession Scheme Based on Smart Contracts | |
Yongmei et al. | Guided systematic random ldpc for distributed storage system | |
CN118070331A (zh) | 一种基于分布式集群部署和纠删码的隐私查询方法 | |
Mareeswari et al. | Implementation of repair tree algorithm for fast repair in distributed storage system | |
Sun et al. | Vault: Decentralized Storage Made Durable | |
CN117714474A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40093861 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |