CN115065689B - 一种基于历史评价的联盟链区块数据存储方法及*** - Google Patents
一种基于历史评价的联盟链区块数据存储方法及*** Download PDFInfo
- Publication number
- CN115065689B CN115065689B CN202210650385.0A CN202210650385A CN115065689B CN 115065689 B CN115065689 B CN 115065689B CN 202210650385 A CN202210650385 A CN 202210650385A CN 115065689 B CN115065689 B CN 115065689B
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- block
- data
- aggregation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000011156 evaluation Methods 0.000 title claims abstract description 35
- 238000013500 data storage Methods 0.000 title claims description 17
- 238000003860 storage Methods 0.000 claims abstract description 53
- 230000008569 process Effects 0.000 claims abstract description 28
- 230000007246 mechanism Effects 0.000 claims abstract description 16
- 238000013210 evaluation model Methods 0.000 claims abstract description 15
- 230000003993 interaction Effects 0.000 claims abstract description 8
- 230000002776 aggregation Effects 0.000 claims description 73
- 238000004220 aggregation Methods 0.000 claims description 73
- 230000002159 abnormal effect Effects 0.000 claims description 37
- 230000009191 jumping Effects 0.000 claims description 17
- 238000012544 monitoring process Methods 0.000 claims description 14
- 238000009826 distribution Methods 0.000 claims description 13
- 238000010606 normalization Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 5
- 230000000737 periodic effect Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000002474 experimental method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005304 joining Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- 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/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
-
- 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/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于历史评价的联盟链区块数据存储方法及***,包括:步骤S1,建立基于纠删码的协作式存储模型,将网络中的所有节点按照角色分配到若干个协作群内,每个协作群内的节点之间使用纠删码进行协作式分块保存;步骤S2,通过每个节点在预设周期内持续记录和其他节点的交互状态,并根据评价模型汇总出各个节点的服务质量;步骤S3,对各个评分列表进行汇总并形成全局的节点分数排序,同时采用密码抽签的方式随机分配节点。本发明基于历史评价的节点分配机制来处理节点和数据块的对应关系,能够识别出运行状态更好的节点并授予更高的存储权限,同时,还结合服务质量进行评估,通过节点之间周期性汇总评价并利用密码抽签算法来分配。
Description
技术领域
本发明涉及一种区块数据存储方法,尤其涉及一种基于历史评价的联盟链区块数据存储方法,还进一步涉及采用了该基于历史评价的联盟链区块数据存储方法的联盟链区块数据存储***。
背景技术
由于区块链不可篡改的特性,运维者的使用成本需要一直递增。存储机制影响了区块链应用部署的成本,存储成本高成为制约区块链应用发展的核心要素。孙知信等学者在其综述中将现有方案根据数据存储位置分为链下存储和链上存储两种基本类型,其中链上存储模型中区块链节点保存全部的区块数据,而链下存储会将部分数据存储到区块链***之外,节点只拥有少数描述信息和外部存储索引。
链上存储可以细分为轻节点、压缩编码、分片和纠删码四种模型,链下存储可以分为IPFS和DHT两种模型。CoVer是一种改进型的去中心化、无许可的轻节点协议,主要贡献在于提出了一种欺诈证明协议来让验证节点快速说明区块包括非法交易,并将奇偶校验码与梅克尔树结合来保障即使无法下载所有信息时也可获得完整区块。Alexander等人提出了一种基于快照的比特币数据编码模型,***定期对区块数据产生快照并保存在新区块中,新区块和主链相连并形成特殊的双链架构。LightChain是第一个基于DHT的完全去中心化、无许可、可扩展的区块链架构,其关键点在于每个节点都有机会公平的参与到下个周期的共识周期中。LightChain使用了基于跳图的DHT寻址策略,每个节点使用数值ID或者名字ID来作为跳图的唯一标识,任何消息通信最多只需要O(logn)次。
联盟链更希望能够减少维持网络运行的节点的存储量,轻节点不能满足上述需求,而基于IPFS的方案需要比较高的成本同时会将联盟内的数据公开化,DHT方案也不适合节点数目比较少的联盟链环境并会有数据安全风险。因此需要从压缩编码和纠删码模型思***链环境的解决方案。纠删码不需要全部的分片即可恢复出原来的全部数据,这个特性很适合存在恶意和故障节点的拜占庭环境。通常早期生成的区块访问查询频率是极低的,但是每个节点仍然要存储全量的区块交易数据,这造成了节点的存储压力。结合纠删码的存储方案可以让节点仅存储交易集合的一个分片,需要的时候可以实时恢复出完整的区块交易信息。
在运行过程中如果某个节点能够一直表现出更好的运行状态,那么会造成每次都会将数据块分配给该节点。这种分配的不均衡会产生两个问题,首先是因为拥有了多轮次的数据块,该节点的数据请求负载明显高于其他节点,影响该节点的正常运行;其次由于分配结果可预测,该节点更容易遭受攻击者的入侵,因为入侵该节点更容易获取到更高的收益。因此节点在选拔过程中还需要考虑负载均衡和随机选择的需要。
其中,电子科技大学的张尧提出了一种区块链的本地存储优化方法研究。在联盟链中使用该方法的流程如图2所示。流程中包含普通节点、轻型节点、共识节点和中心节点共四种节点。网络分为P2P网络、共识网络和分组网络三个网络层次,分组和共识网络又包含于P2P网络中。每一种节点都在P2P网络中连接,共识节点和轻型节点又分布在各自对应的分组网络中。完整的区块链分布于P2P网络,而数据的编码切片只在分组网络内有效。
这种区块链的本地存储的***流程如下:
(1)加入***。每个成员节点在加入联盟链时,可选择成为普通节点或者轻型节点。如果选择成为轻型节点,该节点与普通联盟链的节点无差别,不会被分组,需要下载完整的区块信息,无法优化本地存储。如果节点选择成为轻型节点,则会向中心节点发出分组请求。
(2)分组请求。节点选择成为轻型节点,向中心节点发出请求。收到请求后,中心节点会根据目前分组状态,将该节点分配到成员数量较少的分组中,并把该分组的领导节点地址和对应的编码矩阵返回申请节点。此时中心节点向全网广播一条特殊交易,该交易包含申请分组节点地址、分组后相应的共识节点地址。只有中心节点可以发送这种包含节点分组信息的特殊交易类型,中心节点也只能发送这种特殊交易,不能发送普通交易。这条交易会被全网的共识节点验证,验证交易中的节点是否存在,验证成功的特殊交易也会被打包进入区块中,作为分组的凭证。
(3)加入分组。申请节点从中心节点获得某分组的领导节点地址和编码矩阵后,向对应的共识节点发出申请,共识节点验证地址和编码矩阵后,确认网络连接,返回分组成员节点地址信息。申请节点被加入编码传输的网络拓扑中。加入分组后,节点还需通过P2P网络,从全网同步完整的区块历史数据(节点获取历史区块,不涉及编码切片,是在***全网层次的通信)。
(4)编码和切片删除。在同步了完整区块数据后,根据分组的编码矩阵,节点对区块数据进行编码,得到每一个块的编码数据切片,删除原始区块数据。根据自身存储性能,随机删除部分编码数据切片,成为了轻型节点。
(5)切片获取当节点需要获取历史交易数据时,向组内节点获取编码切片。在(3)中接受到,组内领导者共识节点已经在分组请求阶段向请求节点返回组内其他轻型节点成员列表。节点向列表中节点发起申请,获取编码切片。收到数据获取申请的节点检索本地数据,传输需求的数据切片。在联盟链中,考虑到分组之后分组成员数量问题。若成员数量太少,分组内保留的某个区块切片数量可能小于重构所需切片数量,造成该区块无法被解码重构。这种情况下,可以向分组的领导节点获取该区块完整数据,因为每一个分组的领导者共识节点拥有完整的区块数据。
(6)区块重构接收到足够编码数据切片后,根据切片标示,通过编码矩阵的逆矩阵,进行数据重构运算。完成后得到完整的区块数据。
这种现有的区块链本地存储方式中,没有设定纠删码和节点间的对应关系,因此某个编码切片有可能被所有节点同时删除,这样会有原始区块无法被编码重构的可能,存在数据丢失风险,这会对实用性造成影响。并且这种方案的总存储体积随区块高度线性增加,需要着重考虑如何平衡安全和存储两类需求。
另外一种方式是基于BFT-Store的体系结构,BFT-Store是一个节点上具有拜占庭式容错功能的区块链存储引擎。客户端向区块链提交交易(TXs),区块链以区块的形式打包,以供节点达成共识。然后,网络共识后的每个区块都被写入BFT-Store中进行存储。客户端通过向BFT-Store中的节点发送请求来读取区块。BFT-Store的功能可以分为两个功能:区块编码和区块读取。
区块编码,BFT-Store体系结构使用(n-2f,2f)-RS对区块进行编码。每n-2f个表示为{B1,…,Bn-2f}的原始区块都经过编码以生成2f奇偶校验。然后,原始的n-2f区块和2f奇偶校验组成n个切片,用{C1,…,Cn-2f,…,Cn}表示。可以将{C1,…,Cn-2f,…,Cn}中任意的n-2f个切片进行解密,获得n-2f个原始区块。这n个切片分布在n个节点上,其中每个节点都保留一个唯一的切片。因此,每个节点仅存储一个小片段而不是整个区块链。在不安全的环境中,没有受信任的第三方来编码区块和分发区块。BFT-Store要求每个节点独立编码区块,而无需任何网络通信。区块B1~Bn-2f是由区块链共识产生的,因此所有诚实的节点都将获得相同的区块。每个节点都维护一个块缓冲区,以便在编码之前将新生成的块缓存在编码组中。每次从共识中收集n-2f个切片后,每个节点将这些切片编码为n个切片,从中挑选一个进行本地保存,并删除其他切片以提高空间效率。
区块读取,为了读取一个区块Bi,客户端将其请求发送到一个节点P,称为委托节点。在BFT-Store中,节点P读取区块Bi时面临不同的情况。包括:(1)如果节点P是区块Bi的目标节点,则节点P可以在本地读取Bi并直接发送到客户端。如果区块Bi在P的区块缓冲区中,节点P可以在本地处理请求。(2)如果节点P不是区块Bi的目标节点,则可以从其目标节点P′拉取Bi。诚实节点P′将使用RO方法将Bi传输回P。(3)如果恶意目标节点P′响应节点P为空或不正常区块,则节点P会通过RS解码强制恢复所有区块B1~Bn-2f。为此,节点P将请求广播到所有节点,其他节点将它们存储的切片放在同一编码组中发送回来。一旦收集到n-2f个正确的切片后,节点P会通过RS解码恢复B1~Bn-2f,并且直接回复区块Bi给客户端。作为RD情况的优化,如果一个节点已经缓存了区块Bi在它的缓冲区内,就会直接把区块Bi而不是切片发送给节点P,防止节点P解码。
BFT-Store采用阈值签名作为切片的证明。具体来说,每个节点在编码后广播编码组中所有切片的签名,对于每个切片,在收集到n-2f个签名时,就会通过(n,n-2f)ts将这些签名聚合为单个签名。当被请求时,每个节点将阈值签名与切片一起发回。因此,节点可以通过验证阈值签名来确保至少n-2f节点曾经验证通过这个切片。在n-2f个节点中(n-2f-f=n-3f≥1),至少有一个诚实的节点验证通过这个切片。因此,即使节点事先对某个切片一无所知,它仍然可以检查该切片的正确性。
但是,基于BFT-Store的这种模型一个主要不足在于没有对于数据块进行合理地分配,数据块中存储的是原始区块交易信息,而编码块中存储的是无法直接提取信息的综合编码结果。如果拥有数据块的节点表现出非正常的状态,那么其上唯一存储的数据都会有通过编码恢复数据的风险,保存编码块的正常节点却无力避免这种开销的发生。
发明内容
本发明所要解决的技术问题是需要提供一种能够实现节点的合理分配,促进和保证***的运行状态的基于历史评价的联盟链区块数据存储方法。在此基础上,还进一步提供采用了该基于历史评价的联盟链区块数据存储方法的联盟链区块数据存储***。
对此,本发明提供一种基于历史评价的联盟链区块数据存储方法,包括:
步骤S1,建立基于纠删码的协作式存储模型,将网络中的所有节点按照角色分配到若干个协作群内,每个协作群中的所有节点共同维持区块账本数据的一个备份;且每个协作群内的节点之间使用纠删码进行协作式分块保存;
步骤S2,通过每个节点在预设周期内持续记录和其他节点的交互状态,并根据评价模型汇总出各个节点的服务质量,获取每个节点对其他节点的评分列表;
步骤S3,对各个评分列表进行汇总并形成全局的节点分数排序,同时采用密码抽签的方式随机分配节点,然后按照抽中次数大小进行节点排序,其中次数相同的节点再按照评价值大小排序。
本发明的进一步改进在于,所述步骤S1中,先将节点划分为共识节点和普通节点,所述共识节点包括记账节点、投票节点和聚合节点,所述普通节点表示接收、转发和存储共识节点广播的区块,所述普通节点与所述记账节点实现网络连接;所述记账节点用于将自身接收的交易打包并存储到区块链中,并且每个记账节点具有相同的写入能力,所述记账节点与所述投票节点实现网络连接;所述投票节点对每个记账节点的交易集合进行投票表决,所述投票节点与所述聚合节点实现网络连接;所述聚合节点收集投票节点对每个交易集合的认可投票,并形成最后的区块头广播到全网。
本发明的进一步改进在于,所述步骤S2包括以下子步骤:
步骤S201,根据节点在单位时间内处理请求的能力计算初始的服务质量;
步骤S202,增加周期权重对服务质量进行更新;
步骤S203,对每个节点的服务质量进行线性归一化操作,获得线性归一化之后的服务质量。
本发明的进一步改进在于,所述步骤S201中,通过公式计算初始的服务质量qos,其中,nt表示本节点共向另一个节点数据请求的总次数,nr表示nt次请求中成功接受到回复的次数,nr和nt的比值代表节点能正常响应请求的概率;rtt代表的是节点间的链路状态服务能力,/>表示链路状态服务能力rtt的平均数,k表示心跳包的序号,i表示节点序号,rttk表示第k次心跳包对应的链路状态服务能力;所述步骤S202中,通过公式/>对服务质量进行更新,获得更新后的服务质量qos,其中,qost表示第t个周期的服务质量,t表示周期序号,q表示前一个周期的影响权重,0<q<1;步骤S203中,通过公式/>对步骤S202更新后的服务质量qos进行线性归一化操作,其中,qosmax和qosmin分别代表所有节点评分中服务质量qos的最大值和最小值,qosnorm表示节点的服务质量评分。
本发明的进一步改进在于,所述步骤S3包括以下子步骤:
步骤S301,在节点分配周期的最后一次区块共识中,协作群内将各个节点形成评分列表并发送给聚合节点;
步骤S302,所述聚合节点判断本次节点分配是否有效,若是则跳转至步骤S303,若否则返回对聚合节点进行轮换;
步骤S303,通过聚合节点将全局评分列表写入至交易中;
步骤S304,判断聚合节点认定的非正常节点数量是否小于2f,若是则基于采用密码抽签算法选出存储编码块的正常节点,并跳转至步骤S305,若否则对编码块进行分配后结束,其中,f表示协作群预设的恶意节点数量上限;
步骤S305,在限定时间内将抽签消息形成抽签汇聚消息,并发送给聚合节点至少2f+1个投票节点,将所有消息写入到交易中广播全网。
本发明的进一步改进在于,所述步骤S302包括以下子步骤:
步骤S3021,判断所述聚合节点是否收集到协作群内至少2f+1个消息,若是则判定为本次分配有效,跳转至步骤S3022,若否则跳转至步骤S3023;
步骤S3022,通过所述聚合节点对所有评分列表进行统计整理,并通过公式对节点i进行评分,其中,Scorei表示节点i的最终得分,qosi表示第i个节点的服务质量评分,ni表示节点i历史上共分配到数据块的周期次数;
步骤S3023,返回进行预设次数的分配,若依然分配无效,则对聚合节点进行轮换后,跳转至所述步骤S3021。
本发明的进一步改进在于,所述步骤S304包括以下子步骤:
步骤S3041,判断聚合节点认定的非正常节点数量是否小于2f,若是则跳转至步骤S3042,若否则认定为所有的编码块均可以分配,并在分配后结束;
步骤S3042,基于可验证随机函数的密码抽签算法在正常节点中选拔出存储编码块的节点,各个节点判断自己是否在聚合节点认定的正常节点范围中,在正常节点范围内的节点参与到分配过程中,节点i以P为概率独立进行Scorei次伯努利模拟抽签实验B(Scorei;p),并使用抽中的次数作为排名的原则,对排名高的节点进行分配,并在分配后结束。
本发明的进一步改进在于,还包括步骤S4,所述步骤S4用于将处于失联状态的数据迁移到正常节点保存,其实现过程如下:
步骤S401,聚合节点实时监测各个协作群内节点的历史状态情况,当某个节点连续Sabnor个监测周期都被评价为非正常状态,聚合节点将启动对该节点保存数据块的再分配过程,每个监测周期内迁移最近的Sabnor个数据块,当下次监测周期内节点恢复正常则停止再分配,否则继续迁移Sabnor个数据块直到该非正常状态的节点不再保存任何的数据块,所述非正常状态包括宕机状态或恶意状态,Sabnor表示***预设的节点处于非正常状态的周期数上限;
步骤S402,聚合节点将恶意的节点和需要再分配的数据块信息写入到区块中并广播到全网,其他节点监测聚合节点是否及时发起了再分配流程;通过所述投票节点进行相同的计算之后,与聚合节点公布的信息进行比较投票;
步骤S403,节点在回归正常并重新拥有对应的编码块之前,用于响应数据读取;新分配到数据块的节点在获取数据块后在预设时间内继续保存编码块,若没有成功获取到编码块,则发送请求至(n-2f)个节点并计算纠删码以得到编码块,n表示的是节点数。
本发明的进一步改进在于,所述步骤S401包括以下子步骤:
步骤S4011,合节点实时监测各个协作群内节点的历史状态情况,当某个节点连续Sabnor个监测周期都被评价为非正常状态时,跳转至步骤S4012;
步骤S4012,获取该节点数据块对应的区块高度,并迁移其保存的最近的Sabnor个数据块;
步骤S4013,判断在一个监测周期内节点状态是否恢复正常,若是则停止迁移数据块,若否则跳转至步骤S4014;
步骤S4014,判断该非正常节点是否还保留有数据块,若是则返回至步骤S4012,若否则停止迁移数据块。
本发明还提供一种基于历史评价的联盟链区块数据存储***,采用了如上所述的基于历史评价的联盟链区块数据存储方法,并包括:
协作式存储模型建立模块,建立基于纠删码的协作式存储模型,将网络中的所有节点按照角色分配到若干个协作群内,每个协作群中的所有节点共同维持区块账本数据的一个备份;且每个协作群内的节点之间使用纠删码进行协作式分块保存;
节点评价模型建立模块,通过每个节点在预设周期内持续记录和其他节点的交互状态,并根据评价模型汇总出各个节点的服务质量,获取每个节点对其他节点的评分列表;
节点分配机制建立模块,对各个评分列表进行汇总并形成全局的节点分数排序,同时采用密码抽签的方式随机分配节点,然后按照抽中次数大小进行节点排序,其中次数相同的节点再按照评价值大小排序;
非正常节点数据再分配机制建立模块,用于将处于失联状态的数据迁移到正常节点保存。
与现有技术相比,本发明的有益效果在于:基于历史评价的节点分配机制来处理节点和纠删码块的对应关系,原始区块被拆分成若干个纠删码块,纠删码块包括存储有真实信息的数据块和仅用于计算的编码块,本机制能够识别出运行状态更好的节点并授予更高的数据块存储权限,同时,还结合读取服务表现和通信质量等因素进行评估,建立节点评价模型,通过节点之间周期性汇总评价并利用密码抽签算法来完成纠删码块和节点之间的分配,进而使得历史评价中表现正常、服务更佳的节点能够持续拥有数据块来快速响应读取请求,很好地解决了现有技术中纠删码块与节点之间的分配问题,大幅度提升并保障了联盟链区块数据存储***的性能。在此基础上,还非正常节点数据再分配机制,在节点失效后,***会自动完成该节点数据块的动态再分配,将处于失联状态的数据迁移到正常节点保存,再进一步提升了节点分配的合理性和高效性。
附图说明
图1是本发明一种实施例的工作流程示意图;
图2是现有技术中一种区块链的本地存储优化***的工作流程示意图;
图3是本发明一种实施例的网络模型示意图;
图4是本发明一种实施例基于纠删码的原理图;
图5是本发明一种实施例结合密码抽签的节点分配工作流程示意图;
图6是本发明一种实施例的非正常节点数据再分配的工作流程示意图。
具体实施方式
下面结合附图,对本发明的较优的实施例作进一步的详细说明。
数据块中存储的是原始区块交易信息,而编码块中存储的是无法直接提取信息的综合编码结果。如果拥有数据块的节点表现出非正常的状态,那么其上唯一存储的数据都会有通过编码恢复数据的风险,保存编码块的正常节点却无力避免这种开销的发生。一种解决方案是将数据块分配给更有可能正常运行的节点,而将编码块分配给非正常几率更高的节点。同时在运行过程中如果某个节点能够一直表现出更好的运行状态,那么会造成每次都会将数据块分配给该节点。
区块链是一种分布式对等网络架构,节点之间处于互不信任的平等关系,只能通过互相的历史评价结果来分析出更合理的选拔结果。这种分配的不均衡会产生两个问题。首先是因为拥有了多轮次的数据块,该节点的数据请求负载明显高于其他节点,影响该节点的正常运行;其次由于分配结果可预测,该节点更容易遭受攻击者的入侵,因为入侵该节点更容易获取到更高的收益。因此节点在选拔过程中还需要考虑负载均衡和随机选择的需要。
因此,如何建立合理的节点分配机制,对于增强协作式区块存储模型来说具有明显的有益效果及意义。由于区块头中的数据是经常读取的,因此,本例仅对存储了交易的区块体进行分片。
具体的,如图1所示,本例提供一种基于历史评价的联盟链区块数据存储方法,包括:
步骤S1,建立基于纠删码的协作式存储模型,将网络中的所有节点按照角色分配到若干个协作群内,每个协作群中的所有节点共同维持区块账本数据的一个备份;且每个协作群内的节点之间使用纠删码进行协作式分块保存;
步骤S2,通过每个节点在预设周期内持续记录和其他节点的交互状态,并根据评价模型汇总出各个节点的服务质量,获取每个节点对其他节点的评分列表;
步骤S3,对各个评分列表进行汇总并形成全局的节点分数排序,同时采用密码抽签的方式随机分配节点,然后按照抽中次数大小进行节点排序,其中次数相同的节点再按照评价值大小排序。
如图3所示,本例所述步骤S1中,先将节点划分为共识节点和普通节点,共识节点用于维持共识算法的正常运行并需要承担算法赋予的责任,普通节点用于被动接收、转发和存储共识节点广播的区块。所述共识节点包括记账节点、投票节点和聚合节点,所述普通节点表示接收、转发和存储共识节点广播的区块,所述普通节点与所述记账节点实现网络连接;普通节点在网络中只有读取的能力,在***中拥有获取区块的权利,以及向邻居节点转发消息的责任,仅可以将交易转发给记账节点来代其打包处理但是无法对区块生成产生任何影响。所述记账节点用于将自身接收的交易打包并存储到区块链中,并且每个记账节点具有相同的写入能力,所述记账节点与所述投票节点实现网络连接。在一轮共识中,投票节点对每个记账节点的交易集合进行投票表决,只有被广泛认可的交易才能被写入区块链网络,所述投票节点与所述聚合节点实现网络连接。在每一轮共识周期内,所述聚合节点收集投票节点对每个交易集合的认可投票,并形成最后的区块头广播到全网。
如图4所示,假设共有n个节点,其中最多存在x个不响应节点,那么该协作式存储中就可使用阈值为(n-x,x)的RS码,RS码指的是Reed-Solomon码,也称纠删码,这样客户端在任何时候都可以联系一定活跃的n-x个节点恢复原始数据,也即能满足数据的读取安全性。对于任意的区块,每个节点独立使用RS码编码产生n个块其中包括n-x个数据块以及x个编码块/>数据块是原始数据的等比例分割,记录了一定数量的交易信息,而编码块仅能用于恢复的冗余数据,每个节点只存储其中一个纠删码块(数据块或者编码块),并独立删除其它所有块信息,当必要的时候会请求其他任意n-x个块即可恢复区块体本身,因此区块体理论上的最大压缩率为1/(n-x)。
为了在分片保存后仍然能进行交易检索,本例优选通过布隆过滤器来记录每个数据块内所有交易的存在信息,布隆过滤器的优点在于通常只需要不多于百分之一的存储就可判断交易存在性。节点在区块体分片前会将每个交易的哈希记录在布隆过滤器中,协作群内每个节点都对应一个布隆过滤器,同时为了保证能够检验获取的纠删码块是正确的,纠删码块指的是原始区块通过纠删码算法生成的若干个文件切片,节点还需将每个纠删码块的哈希值保存到区块头的额外属性中。
本例将网络中的所有节点按照角色分配到若干个协作群内,每个协作群中的所有节点共同维持了区块账本数据的一个备份。协作群内节点之间使用纠删码的原理进行分块保存,节点互相配合来获取没有保存的分块数据。为了更好地分配数据块,本例在基于纠删码的协作式存储基础上,还同时提出了结合服务质量的节点评价模型,来对节点的表现进行打分。在经过打分后,每个节点都拥有对其他节点的评分列表,然后以交易的形式对各个列表进行汇总并形成全局的节点分数排序,同时还采用密码抽签算法随机分配节点。
本例所述步骤S2用于建立结合服务质量的节点评价模型。节点对协作群内其他节点的评价高低,代表了对其未来正常履行数据读存业务的信任程度,***中的每个节点在一周期内都会持续记录和其他节点的交互状态,并根据评价模型汇总出各个节点的得分总表,如下表1所示。
表1 节点评分列表的示意表
节点序号 | 状态 | 评分 |
0 | 正常 | 0.7 |
1 | 正常 | 0.5 |
2 | 宕机 | 0 |
3 | 恶意 | 0 |
…… | …… | …… |
节点在***中共会有三种状态的可能,分别是正常(Normal)、宕机(Crash)和恶意(Evil)。节点首先要评估其他节点处于的状态si(si∈{Normal,Crash,Evil}),在一轮周期内如果其他节点产生一次恶意行为即表示为恶意状态。其中恶意行为的定义包括四类情况:(1)当请求其他节点保存的数据时,该节点返回的数据与本地的数据摘要不同;(2)在本周期内任意一个区块产生过程中,该节点产生的交易集合、投票或者区块头消息无法被验证通过;(3)对于投票节点来说,该投票节点在一次区块表决中产生了与多数派不一致的意见;(4)如果一个节点可以正常回复心跳包并能够正常发送除数据请求响应外的其他消息,那么该节点也会被视为恶意节点。处于宕机状态的节点不会响应用户任何请求。
没有恶意行为和宕机行为的节点被视作正常节点,如果能恰好检测出来f个恶意节点和f个宕机节点,此时能够对纠删码块开始分配,但是实际应用中,恶意节点数量和宕机节点数量要小于上述数量,因此本例需要对正常节点进行划分。
优选的,本例所述步骤S2包括以下子步骤:
步骤S201,根据节点在单位时间内处理请求的能力计算初始的服务质量;
步骤S202,增加周期权重对服务质量进行更新;
步骤S203,对每个节点的服务质量进行线性归一化操作,获得线性归一化之后的服务质量。
具体的,本例所述步骤S201中,通过公式计算初始的服务质量qos,其中,服务质量qos代表的是一个节点在单位时间内可处理请求的能力,正常节点通过服务质量qos来排序;nt表示本节点共向另一个节点数据请求的总次数,nr表示nt次请求中成功接受到回复的次数,nr和nt的比值代表节点能正常响应请求的概率;rtt代表的是节点间的链路状态服务能力,/>表示链路状态服务能力rtt的平均数,k表示心跳包的序号,i表示节点序号,rttk表示第k次心跳包对应的链路状态服务能力。服务质量qos等价于在单位时间内与某节点可成功请求数据的次数,如果和某个节点之间在本周期内没有进行数据请求,可用其他节点的平均读取成功概率代替。
本例所述步骤S201适用于单一周期的评价,但是单一周期的评价用于认定节点的全部历史表现不够全面,容易被恶意节点干扰,因此,本例优选将各个周期的表现进行整体分析。考虑到时效性,新周期占据更大的权重对于评价结果会更为准确,因此,本例将新周期对总体影响的权重设置为1,将前一个周期对总体影响的比例会变为本周期的q倍,其中0<q<1,假设当前为第t个周期,则在所述步骤S202中,通过公式对服务质量进行更新,获得考虑了周期因素而更新后的服务质量qos,其中,qost表示第t个周期的服务质量,t表示周期序号,q表示前一个周期的影响权重。
为了让不同节点的服务质量打分具有相同的量纲,避免某个节点的恶意打分影响全局评估,本例还对每个节点服务质量评分进行了线性归一化操作,在所述步骤S203中,通过公式对步骤S202更新后的服务质量qos进行线性归一化操作,其中,qosmax和qosmin分别代表所有节点评分中服务质量qos的最大值和最小值,qosnorm表示节点的服务质量评分,服务质量评分qosnorm取值范围为[0,1],并根据评分高低进行节点排序。
本例所述步骤S3用于结合密码抽签算法建立节点分配机制。在经过步骤S2的统计后,每个节点都拥有对其他节点的评分列表,在步骤S3中将会以交易的形式对各个列表进行汇总并形成全局的节点分数排序,同时采用密码抽签算法的方式随机分配节点,本例的具体流程如图5所示。本例所述步骤S3包括步骤S301至步骤S305。
本例所述步骤S301中,***每经过r轮的共识被认为是一个节点分配周期,在节点分配周期的最后一次区块共识中,协作群内将各个节点形成评分列表并发送给聚合节点;其格式为<Score<StateTable{s0,s1,…,si}i∈n,ScoreTable{qos0,qos1,…,qosi}i∈n,h,ith,Sign>>,其中StateTable是记录节点处于正常、宕机或者恶意的状态表,ScoreTable是代表节点服务质量的评分表,h代表发送消息时的区块高度,ith代表此时处于第ith个节点分配周期,Sign是对应节点对本消息的签名,n代表本节点协作群里的节点个数,si表示第i个节点所处于的状态,状态si包括正常状态、宕机状态或者恶意状态,i表示节点序号,qosi表示第i个节点的服务质量评分。
本例所述步骤S302中,所述聚合节点判断本次节点分配是否有效,若是则跳转至步骤S303,若否则返回对聚合节点进行轮换;更为具体的,所述步骤S302包括子步骤S3021至步骤S3023。所述步骤S3021中,判断所述聚合节点是否收集到协作群内至少2f+1个消息,若是则判定为本次分配有效,跳转至步骤S3022,若否则跳转至步骤S3023;f表示协作群安全设置内恶意节点数量上限;假设多个共识轮次下聚合节点都没有形成分配结果,就要对其进行轮换。
在检查消息本身是有效后,聚合节点将会对所有评分列表进行统计整理。首先所有节点根据状态将会被最终分类,恶意或者宕机的节点需要至少f+1个节点一致同意,这些节点的最终评分视为0。其他的节点都被视作正常节点,即使其中仍然可能存在隐藏的恶意节点。每个正常节点都会有一组评分数据,为了尽量排除掉恶意节点打分的影响,本例优选选择中位数作为评价指标,因为正常节点的数量要大于恶意节点数量,即使在极端情况下恶意节点协作打很高或很低的评分也能保证中间的数据是正常节点的反馈。
除了服务质量外,节点处理请求时的负载均衡也需要被充分考虑。存储有数据块的节点需要承担更多的***责任,相对于存储有编码块的节点,它们会接受更多的数据读取请求。因此,存储数据块比较少的节点应该在下次分配中拥有更多的机会,用ni代表节点i历史上共分配到数据块的周期次数,在所述步骤S3022中,通过所述聚合节点对所有评分列表进行统计整理,并通过公式对节点i进行评分,其中,Scorei表示节点i的最终得分,qosi表示第i个节点的服务质量评分,ni表示节点i历史上共分配到数据块的周期次数。
同时聚合节点将生成的全局评分表<StateTable,ScoreTable>写入到交易中,以保证所有节点最终会读取到该配置信息。
本例所述步骤S3023,返回进行预设次数的分配,若依然分配无效,则对聚合节点进行轮换后,跳转至所述步骤S3021。所述预设次数可以根据实际情况和需求进行自定义设置和调整。
本例所述步骤S303,通过聚合节点将全局评分列表写入至交易中。其他节点在接受到聚合节点发布的信息后,首先会判断状态表中的宕机节点和恶意节点数量,如果上述数量等于2f,那么所有的编码块都能够得到分配。此时根据节点公钥进行非正常节点排序{0,1,2,…,2f-1},节点分配的编码块编号ci和节点编号i的关系为:ci=(Hash(BlockHeaderh)%2f+i)mod 2f,其中BlockHeaderh代表本次共识前一个高度h的区块头,Hash代表一个散列函数。对于数据块编号di与正常节点序号i(i∈{0,1,2,…,n-2f})的分配采用相同的公式。
本例所述步骤S304中,判断聚合节点认定的非正常节点数量是否小于2f,若是则需要在正常节点中选拔出存储编码块的节点,本例基于采用密码抽签算法选出存储编码块的正常节点,并跳转至步骤S305,若否则对编码块进行分配后结束,其中,f表示协作群预设的恶意节点数量上限。
本例所述步骤S304包括以下子步骤:
步骤S3041,判断聚合节点认定的非正常节点数量是否小于2f,若是则跳转至步骤S3042,若否则认定为所有的编码块均可以分配,并在分配后结束;
步骤S3042,基于可验证随机函数的密码抽签算法在正常节点中选拔出存储编码块的节点,各个节点判断自己是否在聚合节点认定的正常节点范围中,在正常节点范围内的节点参与到分配过程中,节点i以P为概率独立进行Scorei次伯努利模拟抽签实验B(Scorei;p),并使用抽中的次数作为排名的原则,对排名高的节点进行分配,并在分配后结束。
更为具体的,本例优选采用基于VRF(Verifiable Random Funcition,可验证随机函数)的密码抽签算法,此密码抽签算法可以保证在单次抽签时选中的结果是随机的,而在多次抽签后,节点被选择的概率趋向于其分数比值。
可验证随机函数中,对于一组确定的公私钥对<PK,SK>,VRF可以利用一个数源(Source)和私钥(SK)生成一个确定性的不可推测的随机数(r)和一个证明数据(π),该过程可以表示为:<r,π>←VRF(Source,SK)。对于给定的私钥SK和数源Source,只能产生唯一的随机数r,因此,根据公钥PK、随机数r和证明数据π验证随机数r是否由私钥SK产生,以及随机数r是否由数源Source生成,该过程可以表示为:BOOL←VRF_VERIFY(Source,PK,r)。VRF的重要性在于随机数产生者不能故意操纵结果,同时其他人也无法猜测随机数结果但是可以相信该数是由产生者随机生成的。
各个节点需要判断自己是否在聚合节点认定的正常节点范围中,此范围内的节点进一步参与到分配过程中。节点i以P为概率独立进行Scorei次伯努利模拟抽签实验B(Scorei;p),并使用抽中的次数作为排名的原则,排名高的节点分配数据块存储。为保证伯努利实验独立随机的特性,节点利用VRF生成的均匀随机数R(0≤R≤1)作为抽签实验的输入,判断随机数R落入的伯努利累计分布曲线的整数区间[j,j+1),将整数区间向下取整结果j作为抽签实验抽中的次数。对于相同的概率P,抽签基数越大抽中的个数也就越多,那么在相同的输入随机数R下评分高的节点会被选拔。因为每次抽签的随机数结果是不可控的,攻击者无法预测单次的排名结果,但是多次下随机数r的均值会趋向于0.5,这保障了多次下评分高的节点具有更高的选拔权重。***使用前一个高度h的区块Blockh作为随机数源。其实现过程的伪代码如下所示:
/>
本例所述步骤S305中,在限定时间内将抽签消息<Sortition<R,π,j,i,Sign>>形成抽签汇聚消息,并发送给聚合节点至少2f+1个投票节点,其中i表示节点序号。将所有消息写入到交易中广播全网。
在超过限定时间后,投票节点将会把自身收到的所有抽签消息形成抽签汇聚消息发送给聚合节点,聚合节点需要接收到至少2f+1个来自不同投票节点的抽签汇聚消息,并将所有消息写入到交易中广播全网。由于聚合节点存在恶意的可能,它可以主动拒绝接收任何的节点消息,从而控制分配的结果。然而经过两轮的消息传递,成功发送给投票节点的抽签信息一定会被发送到聚合节点中,并且由于***最多存在f个恶意节点,那么任何发送成功的抽签信息一定会存在于聚节点广播的交易中,否则聚合节点将无法产生有效的交易并引起聚合节点轮换。
其他节点接收到上述交易后,需要独立验证各个抽签汇聚消息的签名合法性和唯一性,之后提取出所有的抽签消息并进行有效性验证,节点需要利用证明信息π验证随机数的合法性,并独立获取对应的伯努利实验抽中次数值来与抽签消息公布的数值比对,验证过程的伪代码如下所示:
Algorithm 2:验证抽签结果(Verifying Sortition Result)
之后按照抽中次数大小进行节点排序,其中次数相同的节点再按照评价值大小排序,选择其中的前n-2f个节点来分配数据块,其他节点分配编码块,数据块编号di和节点编号i的关系为:di=(Hash(BlockHeaderh)%(n-2f)+i)mod(n-2f)。
值得说明的是,本例还优选包括步骤S4,所述步骤S4用于将处于失联状态的数据迁移到正常节点保存,如图6所示,其实现过程包括步骤S401至步骤S403。
本例所述步骤S401,聚合节点实时监测各个协作群内节点的历史状态情况,当某个节点连续Sabnor个监测周期都被评价为非正常状态,聚合节点将启动对该节点保存数据块的再分配过程。***得到该非正常节点数据块的对应区块高度{h1,h2,…,hcnt},为了避免同时传输计算过多数据造成的***负担,每个监测周期内只迁移最近的Sabnor个数据块,当下次监测周期内节点恢复正常则停止再分配,否则继续迁移Sabnor个数据块直到该非正常状态的节点不再保存任何的数据块,所述非正常状态包括宕机状态或恶意状态,Sabnor表示***预设的节点处于非正常状态的周期数上限。
聚合节点重新计算数据块对应存储的节点,根据上次评价的结果获得所有正常节点,并统计出其中在对应高度中保存编码块的节点个数total和评分列表,按照分数高低对正常节点进行排序,新节点的编号i和数据块高度di的关系为:
如图6所示,本例所述步骤S401优选包括以下子步骤:
步骤S4011,合节点实时监测各个协作群内节点的历史状态情况,当某个节点连续Sabnor个监测周期都被评价为非正常状态时,跳转至步骤S4012;
步骤S4012,获取该节点数据块对应的区块高度,并迁移其保存的最近的Sabnor个数据块;
步骤S4013,判断在一个监测周期内节点状态是否恢复正常,若是则停止迁移数据块,若否则跳转至步骤S4014;
步骤S4014,判断该非正常节点是否还保留有数据块,若是则返回至步骤S4012,若否则停止迁移数据块。
本例所述步骤S402,聚合节点将恶意的节点和需要再分配的数据块信息写入到区块中并广播到全网,其他节点监测聚合节点是否及时发起了再分配流程;不称职的聚合节点将会通过额外的机制被撤销,即没有在设定时间内发起了再分配流程的聚合节点将会进行撤销处理。通过所述投票节点进行相同的计算之后,与聚合节点公布的信息进行比较投票,以防止聚合节点作弊来额外再分配正常节点的数据块。
正常节点通过新产生的区块可以感知到自己新分配的数据块信息,由于原始信息已经不可获得,节点通过请求存活的(n-2f)个块来进行编码获得。假如一个高度对应的多个数据块需要再分配,正常节点之间可以通过适当的沟通机制互相发送数据块来保证编码只使用一次。完成了所有数据块请求的正常节点会通告全网,其他节点修改自身块和节点的对应关系并会将读请求重新定位到新节点。
本例所述步骤S403,节点在回归正常并重新拥有对应的编码块之前,用于响应数据读取;新分配到数据块的节点在获取数据块后在预设时间内继续保存编码块,若没有成功获取到编码块,则发送请求至(n-2f)个节点并计算纠删码以得到编码块,n表示的是协作群内的节点数量。
在非正常节点在未来重新回归正常后,通过获取新产生的区块信息可以查询其所存的数据块已经被再分配。由于***中的每个节点都需要存储不同的纠删码块才可以保证数据安全,那么该节点在重新拥有对应的编码块之前只能响应数据读取而不能正常参与到***共识过程中。新分配到数据块的节点在获取数据块后可以继续保存编码块一段时间,即可以根据实际情况进行修改和设置的预设时间,在这期间内回归正常的节点有机率直接获取到编码块,否则它就需要请求(n-2f)个节点并计算纠删码来得到编码块。回归正常的节点数据在满足安全性要求后应该在预设的时间范围内完成共识机制要求的责任,以避免继续被标记为非正常节点,该节点在未来有更大的权重来保存新产生的数据块。
本例还提供一种基于历史评价的联盟链区块数据存储***,采用了如上所述的基于历史评价的联盟链区块数据存储方法,并包括:
协作式存储模型建立模块,建立基于纠删码的协作式存储模型,将网络中的所有节点按照角色分配到若干个协作群内,每个协作群中的所有节点共同维持区块账本数据的一个备份;且每个协作群内的节点之间使用纠删码进行协作式分块保存;
节点评价模型建立模块,通过每个节点在预设周期内持续记录和其他节点的交互状态,并根据评价模型汇总出各个节点的服务质量,获取每个节点对其他节点的评分列表;
节点分配机制建立模块,对各个评分列表进行汇总并形成全局的节点分数排序,同时采用密码抽签的方式随机分配节点,然后按照抽中次数大小进行节点排序,其中次数相同的节点再按照评价值大小排序;
非正常节点数据再分配机制建立模块,用于将处于失联状态的数据迁移到正常节点保存。
综上所述,本例基于历史评价的节点分配机制来处理节点和数据块的对应关系,能够识别出运行状态更好的节点并授予更高的数据块存储权限,同时,还结合读取服务表现和通信质量等因素进行评估,建立节点评价模型,通过节点之间周期性汇总评价并利用密码抽签算法来完成纠删码和节点之间的分配,进而使得历史评价中表现正常、服务更佳的节点能够持续拥有数据块来快速响应读取请求,很好地解决了现有技术中纠删码与节点之间的分配问题,大幅度提升并保障了联盟链区块数据存储***的性能。在此基础上,还非正常节点数据再分配机制,在节点失效后,***会自动完成该节点数据块的动态再分配,将处于失联状态的数据迁移到正常节点保存,再进一步提升了节点分配的合理性和高效性。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (6)
1.一种基于历史评价的联盟链区块数据存储方法,其特征在于,包括:
步骤S1,建立基于纠删码的协作式存储模型,将网络中的所有节点按照角色分配到若干个协作群内,每个协作群中的所有节点共同维持区块账本数据的一个备份;且每个协作群内的节点之间使用纠删码进行协作式分块保存;
步骤S2,通过每个节点在预设周期内持续记录和其他节点的交互状态,并根据评价模型汇总出各个节点的服务质量,获取每个节点对其他节点的评分列表;
步骤S3,对各个评分列表进行汇总并形成全局的节点分数排序,同时采用密码抽签的方式随机分配节点,然后按照抽中次数大小进行节点排序,其中次数相同的节点再按照评价值大小排序;
所述步骤S1中,先将节点划分为共识节点和普通节点,所述共识节点包括记账节点、投票节点和聚合节点,所述普通节点表示接收、转发和存储共识节点广播的区块,所述普通节点与所述记账节点实现网络连接;所述记账节点用于将自身接收的交易打包并存储到区块链中,并且每个记账节点具有相同的写入能力,所述记账节点与所述投票节点实现网络连接;所述投票节点对每个记账节点的交易集合进行投票表决,所述投票节点与所述聚合节点实现网络连接;所述聚合节点收集投票节点对每个交易集合的认可投票,并形成最后的区块头广播到全网;
所述步骤S2包括以下子步骤:
步骤S201,根据节点在单位时间内处理请求的能力计算初始的服务质量;
步骤S202,增加周期权重对服务质量进行更新;
步骤S203,对每个节点的服务质量进行线性归一化操作,获得线性归一化之后的服务质量;
所述步骤S201中,通过公式计算初始的服务质量/>,其中,/>表示本节点共向另一个节点数据请求的总次数,/>表示/>次请求中成功接受到回复的次数,/>和/>的比值代表节点能正常响应请求的概率;/>代表的是节点间的链路状态服务能力,/>表示链路状态服务能力/>的平均数,/>表示心跳包的序号,/>表示节点序号,/>表示第/>次心跳包对应的链路状态服务能力;
所述步骤S202中,通过公式对服务质量进行更新,获得更新后的服务质量/>,其中,/>表示第/>个周期的服务质量,/>表示周期序号,/>表示前一个周期的影响权重,/>;步骤S203中,通过公式/>对步骤S202更新后的服务质量/>进行线性归一化操作,其中,/>和/>分别代表所有节点评分中服务质量/>的最大值和最小值,/>表示节点的服务质量评分;
所述步骤S3包括以下子步骤:
步骤S301,在节点分配周期的最后一次区块共识中,协作群内将各个节点形成评分列表并发送给聚合节点;
步骤S302,所述聚合节点判断本次节点分配是否有效,若是则跳转至步骤S303,若否则返回对聚合节点进行轮换;
步骤S303,通过聚合节点将全局评分列表写入至交易中;
步骤S304,判断聚合节点认定的非正常节点数量是否小于,若是则基于采用密码抽签算法选出存储编码块的正常节点,并跳转至步骤S305,若否则对编码块进行分配后结束,其中,/>表示协作群预设的恶意节点数量上限;
步骤S305,在限定时间内将抽签消息形成抽签汇聚消息,并发送给聚合节点至少个投票节点,将所有消息写入到交易中广播全网。
2.根据权利要求1所述的基于历史评价的联盟链区块数据存储方法,其特征在于,所述步骤S302包括以下子步骤:
步骤S3021,判断所述聚合节点是否收集到协作群内至少个消息,若是则判定为本次分配有效,跳转至步骤S3022,若否则跳转至步骤S3023;
步骤S3022,通过所述聚合节点对所有评分列表进行统计整理,并通过公式对节点/>进行评分,其中,/>表示节点/>的最终得分,/>表示第/>个节点的服务质量评分,表示节点/>历史上共分配到数据块的周期次数;
步骤S3023,返回进行预设次数的分配,若依然分配无效,则对聚合节点进行轮换后,跳转至所述步骤S3021。
3.根据权利要求2所述的基于历史评价的联盟链区块数据存储方法,其特征在于,所述步骤S304包括以下子步骤:
步骤S3041,判断聚合节点认定的非正常节点数量是否小于,若是则跳转至步骤S3042,若否则认定为所有的编码块均可以分配,并在分配后结束;
步骤S3042,基于可验证随机函数的密码抽签算法在正常节点中选拔出存储编码块的节点,各个节点判断自己是否在聚合节点认定的正常节点范围中,在正常节点范围内的节点参与到分配过程中,节点以/>为概率独立进行/>次伯努利模拟抽签实验/>,并使用抽中的次数作为排名的原则,对排名高的节点进行分配,并在分配后结束。
4.根据权利要求1所述的基于历史评价的联盟链区块数据存储方法,其特征在于,还包括步骤S4,所述步骤S4用于将处于失联状态的数据迁移到正常节点保存,其实现过程如下:
步骤S401,聚合节点实时监测各个协作群内节点的历史状态情况,当某个节点连续个监测周期都被评价为非正常状态,聚合节点将启动对该节点保存数据块的再分配过程,每个监测周期内迁移最近的/>个数据块,当下次监测周期内节点恢复正常则停止再分配,否则继续迁移/>个数据块直到该非正常状态的节点不再保存任何的数据块,所述非正常状态包括宕机状态或恶意状态,/>表示***预设的节点处于非正常状态的周期数上限;
步骤S402,聚合节点将恶意的节点和需要再分配的数据块信息写入到区块中并广播到全网,其他节点监测聚合节点是否及时发起了再分配流程;通过所述投票节点进行相同的计算之后,与聚合节点公布的信息进行比较投票;
步骤S403,节点在回归正常并重新拥有对应的编码块之前,用于响应数据读取;新分配到数据块的节点在获取数据块后在预设时间内继续保存编码块,若没有成功获取到编码块,则发送请求至个节点并计算纠删码以得到编码块,n表示的是节点数。
5.根据权利要求4所述的基于历史评价的联盟链区块数据存储方法,其特征在于,所述步骤S401包括以下子步骤:
步骤S4011,合节点实时监测各个协作群内节点的历史状态情况,当某个节点连续个监测周期都被评价为非正常状态时,跳转至步骤S4012;
步骤S4012,获取该节点数据块对应的区块高度,并迁移其保存的最近的个数据块;
步骤S4013,判断在一个监测周期内节点状态是否恢复正常,若是则停止迁移数据块,若否则跳转至步骤S4014;
步骤S4014,判断该非正常节点是否还保留有数据块,若是则返回至步骤S4012,若否则停止迁移数据块。
6.一种基于历史评价的联盟链区块数据存储***,其特征在于,采用了如权利要求1至5任意一项所述的基于历史评价的联盟链区块数据存储方法,并包括:
协作式存储模型建立模块,建立基于纠删码的协作式存储模型,将网络中的所有节点按照角色分配到若干个协作群内,每个协作群中的所有节点共同维持区块账本数据的一个备份;且每个协作群内的节点之间使用纠删码进行协作式分块保存;
节点评价模型建立模块,通过每个节点在预设周期内持续记录和其他节点的交互状态,并根据评价模型汇总出各个节点的服务质量,获取每个节点对其他节点的评分列表;
节点分配机制建立模块,对各个评分列表进行汇总并形成全局的节点分数排序,同时采用密码抽签的方式随机分配节点,然后按照抽中次数大小进行节点排序,其中次数相同的节点再按照评价值大小排序;
非正常节点数据再分配机制建立模块,用于将处于失联状态的数据迁移到正常节点保存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210650385.0A CN115065689B (zh) | 2022-06-10 | 2022-06-10 | 一种基于历史评价的联盟链区块数据存储方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210650385.0A CN115065689B (zh) | 2022-06-10 | 2022-06-10 | 一种基于历史评价的联盟链区块数据存储方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115065689A CN115065689A (zh) | 2022-09-16 |
CN115065689B true CN115065689B (zh) | 2024-04-02 |
Family
ID=83201314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210650385.0A Active CN115065689B (zh) | 2022-06-10 | 2022-06-10 | 一种基于历史评价的联盟链区块数据存储方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115065689B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117376352B (zh) * | 2023-10-07 | 2024-03-12 | 山东山科智能科技有限公司 | 基于区块链的物联网*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427433A (zh) * | 2019-08-08 | 2019-11-08 | 上海中通吉网络技术有限公司 | 一种区块链共识方法和存储介质 |
US10769135B1 (en) * | 2019-08-20 | 2020-09-08 | Alibaba Group Holding Limited | Blockchain data storage based on shared nodes and error correction code |
CN112232619A (zh) * | 2020-07-27 | 2021-01-15 | 上海树图区块链研究院 | 联盟链的区块出块和定序方法、节点及区块链网络*** |
CN114139203A (zh) * | 2021-12-03 | 2022-03-04 | 成都信息工程大学 | 基于区块链的异构身份联盟风险评估***、方法及终端 |
CN114331395A (zh) * | 2021-12-22 | 2022-04-12 | 南京航空航天大学 | 一种基于纠删码的区块链数据分组存储优化结构及方法 |
CN114594911A (zh) * | 2022-03-13 | 2022-06-07 | 西安电子科技大学 | 基于链下纠删码分布式存储的区块链数据存储***及方法 |
-
2022
- 2022-06-10 CN CN202210650385.0A patent/CN115065689B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427433A (zh) * | 2019-08-08 | 2019-11-08 | 上海中通吉网络技术有限公司 | 一种区块链共识方法和存储介质 |
US10769135B1 (en) * | 2019-08-20 | 2020-09-08 | Alibaba Group Holding Limited | Blockchain data storage based on shared nodes and error correction code |
CN112232619A (zh) * | 2020-07-27 | 2021-01-15 | 上海树图区块链研究院 | 联盟链的区块出块和定序方法、节点及区块链网络*** |
CN114139203A (zh) * | 2021-12-03 | 2022-03-04 | 成都信息工程大学 | 基于区块链的异构身份联盟风险评估***、方法及终端 |
CN114331395A (zh) * | 2021-12-22 | 2022-04-12 | 南京航空航天大学 | 一种基于纠删码的区块链数据分组存储优化结构及方法 |
CN114594911A (zh) * | 2022-03-13 | 2022-06-07 | 西安电子科技大学 | 基于链下纠删码分布式存储的区块链数据存储***及方法 |
Non-Patent Citations (1)
Title |
---|
基于纠删码的区块链存储优化;樊玉琦等;《计算机学报》;第45卷(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115065689A (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110868440B (zh) | 区块链公链 | |
CN114079660B (zh) | 一种高性能分布式存储区块数据、时间戳、跨链通信与数据协同方法 | |
US11626993B2 (en) | Network for improved verification speed with tamper resistant data | |
CN110140116B (zh) | 用于启用事件删除的分布式数据库的方法和设备 | |
CN109150972B (zh) | 一种双层分片的高效区块链的共识机制的工作方法 | |
WO2021032138A1 (zh) | 一种基于区块链***的共识方法、装置及*** | |
US11930113B2 (en) | Blockchain hybrid consensus-based system for maintaining domain name information | |
CN110011981B (zh) | 一种基于区块链的可信云存储方法及*** | |
US20210258375A1 (en) | Sharding block chain generation method based on tree structure | |
CN111131209B (zh) | 一种改进的高效共识方法、***、计算机设备及存储介质 | |
WO2020000011A1 (en) | Blockchain system and method | |
US20210021412A1 (en) | Method and apparatus for electing representative node device, computer device, and storage medium | |
CN111935207A (zh) | 基于改进型c4.5算法区块链***共识方法 | |
CN112615847B (zh) | 基于区块链的数据共享和隐私保护方法 | |
CN113726913B (zh) | 骨干节点接入方法和区块链*** | |
CN113141414A (zh) | 一种cnfs协议中区块链节点的分组多链异步共识方法 | |
CN115065689B (zh) | 一种基于历史评价的联盟链区块数据存储方法及*** | |
Buchnik et al. | Fireledger: A high throughput blockchain consensus protocol | |
CN113626875A (zh) | 一种区块链分片赋能的知识图谱文件存储方法 | |
CN112116349B (zh) | 面向高吞吐率的图式账本的随机化共识方法和装置 | |
CN115664682A (zh) | 基于联盟链主从多链的医疗数据共享的共识方法 | |
Han et al. | Analysing and improving shard allocation protocols for sharded blockchains | |
CN112039837B (zh) | 一种基于区块链和秘密共享的电子证据保全方法 | |
CN107454162A (zh) | 一种提高云计算环境可靠性的*** | |
CN114862397B (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 |