一种区块链共享信息均衡存储方法

文档序号:26586467发布日期:2021-09-10 19:24阅读:76来源:国知局
一种区块链共享信息均衡存储方法

1.本发明涉及区块链技术,具体涉及区块数据存储技术。


背景技术:

2.随着互联网络的快速发展,大数据时代下产生的日均信息量十分庞大,集中式存储的信息遭受攻击进而威胁公民隐私安全的问题屡屡发生,信息的安全存储与交换得到了人们的广泛关注。而区块链技术作为一种以密码学方法保证的不可篡改和不可伪造的分布式账本,本质上是一个共享的数据库,这个数据库用于存储、分享数据或信息,并且其中的信息具有不可伪造、可溯源、公开透明、集体维护等显著特征,能有效解决当前数据中心化存储带来的信息不可信问题。
3.区块链是分布式数据存储、点对点传输、共识机制、加密算法等技术的集成应用,其中共识机制保证了链上数据的可靠性,而共识过程实现了数据的完整共享,因此并不需要所有节点各自保存完整副本,只要部分全节点进行全账本存储,再通过共识方法使得成员在有需求时获得完整账本信息,但是区块链技术与分布式技术的设计理念与解决问题有所不同,一方面分布式技术既支持数据在各节点完整存储,也支持数据差量存储,而区块链技术现阶段要求各节点必须存储全量完整数据。另一方面分布式技术通过中心节点管理数据,统一下发至个分节点,保证数据一致,而区块链技术通过共识机制保证数据一致。
4.区块链全副本存储的存储模式相比较于传统分布式存储而言在存储空间利用率上有着天然的劣势,区块链系统在记账的全节点上保存了全部区块数据,随着系统持续的运行,区块链中的数据将不断累积增加,这造成了节点高昂的存储代价。即使是对于交易速度有所限制的比特币和以太坊,其公有链数据也已经达到了较大规模。在2019年初,每秒7笔交易的比特币区块链系统的数据规模已经达到200gb,以太坊的公有链也达到了1tb以上的数据规模,一旦技术上解除了交易速率的限制,这些区块链系统的数据规模还将以更高的速率增长。对于大规模的区块链系统而言,很难保证每个存储节点都能够应对如此高昂的存储负载。区块链的全副本分布式存储机制在增加本地查询处理代价的同时,也提高了区块链系统网络通信代价。在未来的应用中区块数据的存储模式将是制约区块链发展的一个主要问题。


技术实现要素:

5.本发明所要解决的技术问题是,针对全副本分布式存储机制较大存储代价的问题,提供一种将存储内容分块并按照分布式的形式进行存储的方法。
6.本发明为解决上述技术问题所采用的技术方案是,一种区块链共享信息均衡存储方法,包括以下步骤:
7.1)准备步骤:
[0008]1‑
1)区块链网络内所有节点按照选举算法选举出三个以上个监督节点,在全网广播监督节点的选举结果;
[0009]1‑
2)将三个以上的节点对应划分至一个节点块中,节点块内的所有节点按照选举算法选举出一个联合节点;将联合节点的选举结果再节点块内广播,节点块内的各节点验证联合节点的选举结果,向监督节点报备将通过验证的联合节点信息发送至监督节点;
[0010]1‑
3)监督节点为每个节点块指定三个以上的同步节点;
[0011]
2)存储步骤:
[0012]2‑
1)联合节点对下一次进行区块存储的联合节点进行达成共识,其中3≤区块存储的联合节点数a≤总联合节点数n;联合节点对区块存储的共识结果进行群签名并在全网广播,排序节点验证群签名的区块存储的共识结果,将通过验证的区块存储的共识结果来确定下一次进行区块存储的联合节点;
[0013]2‑
2)排序节点接收到需要待存储内容,将存储内容打包成区块并在区块内标识根据步骤2

1)确定的进行区块存储的联合节点并在全网广播;
[0014]2‑
3)联合节点接收到区块后验证区块,读取通过验证的区块中标识,通过标识判断自身是否需要存储该区块,再将区块上标识自身已阅并签名后向全网广播。
[0015]
还包括步骤3)一致性维护步骤:
[0016]
同步节点接收到带有联合节点签名的区块后,同步节点对联合节点签名进行验证,再判断通过验证的带有不同联合节点签名的区块数量超过了设定阈值则认定该区块内容为账本的真实记录,否则报备给监督节点,请求监督节点对对应的联合节点进行零知识验证。
[0017]
本发明将区块链作为一种重要的不可篡改的信息安全存储平台使用时,因区块链账本的块链系统数据分布采用全复制式(即网络中每个全节点都在本地复制了全局的全部数据)所造成的本地存储资源的浪费问题,提出了一种区块链共享信息均衡存储方案,用联合节点的概念代替网络中原有的全节点,与全节点不同在于联合节点存储的仅为完整账本的一部分,整个网络所有的联合节点共同维护一个完整的共享账本,以此实现存储的均衡性,借助共识算法与群签名算法实现账本的更新,借助同步节点维护账本唯一性,借助零知识证明与签名算法实现联合节点的诚实性与共享内容的真实性。方案相较分布式存储的改进之处在于其在一定程度上维持了区块链网络的健壮性,方案将存储内容按照分布式的形式存储的同时,每个存储部分由多个节点进行备份,即便有几个节点被劫持或是宕机,也可以保证其存储内容不会被篡改或丢失,网络中的存储某一区块的联合节点的选择由联合节点共识选举决定,新的节点加入不会影响整个网络的账本完整性与一致性,保证了网络的可拓展。保证整个网络在不破坏区块链特性的前提下实现分布式的存储过程中存储空间的节省与存储内容的完整一致。
[0018]
本发明的有益效果是,在保证区块链存储安全的前提下加强存储空间的利用率。
附图说明
[0019]
图1为系统分块与选举流程;
[0020]
图2为存储信息的更新流程;
[0021]
图3为存储信息维护流程;
[0022]
图4为节点访问存储请求流程;
[0023]
图5为监督节点的监督流程。
具体实施方式
[0024]
本发明将区块链作为一种信息存储平台使用,在保证存储安全的前提下加强存储空间的利用率,其存储方法如下:
[0025]
1.系统节点分块并选举生成联合节点、监督节点、同步节点
[0026]
如图1所示,在一个区块链存储系统中存在三种节点类型,联合节点、监督节点和同步节点。每个联合节点的功能在于存储完整账本的一部分,并借助共识算法实现账本的更新与同步,并接受监督节点的监管与挑战。同步节点不进行任何存储,它只协助监督节点维护全网的账本,通过保证区块内容的一致保证网络账本的唯一性。监督节点的功能在于监督各个联合节点存储内容的真实性(代表了各个联合节点的诚实性)。另外,还设置有排序节点,排序节点用于对区块进行打包,并将打包的区块存储至确定好的联合节点中。
[0027]
所有节点按照选举算法选举出多个监督节点。所有节点按照逻辑关系或是随机性的分为多个节点块(≥3),节点块按照选举算法选举出一个联合节点。监督节点为每个节点块指定多名同步节点。
[0028]
节点的选取由投票产生,节点的投票权益可以由算力或是每个节点的权重决定,投票时考虑联合节点的存储空间、安全系数、通信强度等。理论上最终决定的联合节点是具有高稳定性、高通信度、高安全性的节点。选举结果再选举范围内进行广播,在所有节点进行的选取就在所有节点中广播,在节点块内进行的选举就在节点块内广播。接收到选举广播的节点验证选举结果,通过验证结果判断是否接受选举结果。
[0029]
2.存储信息的更新(新的内容上链存储)
[0030]
如图2所示,收集一次新的内容上链存储有两个先决条件:
[0031]
(1)选定好的联合节点对将要存储的区块存储于哪几个节点进行一次共识(3≤区块存储的联合节点数a≤总联合节点数n);联合节点对共识结果进行群签名并在全网广播,排序节点收到这份群签名时验证其真实性,以此来确定存储下一个区块的联合节点;
[0032]
(2)新的存储内容经由路由广播,经由排序节点收集;
[0033]
在此基础上,排序节点打包内容成区块并标识需要存储的联合节点并向全网广播,任一节点块内的节点收集到广播的区块后,向外广播的同时会发送给本节点块的联合节点,联合节点对区块进行简单验证,并根据标识信息决定自身是否存储该区块,再在区块上标识自身已阅并签名后再广播到网络中。
[0034]
该阶段在存储区块的联合节点数量上保证有多个副本,防止在一个节点存储时出现宕机或被恶意劫持导致节点存储区块的丢失,并且可以实现不需要每个节点都存储完整的链上区块,节约了存储节点的存储空间同时,保证区块存储的完整性,同时网络可以实现节点的动态进出,增加和删除联合节点不会影响整个账本的完整性与一致性。
[0035]
3.维护存储信息的一致性
[0036]
任意一个区块都有a个(3≤a≤n)联合节点进行了存储,(不一定所有联合节点都进行了存储),则该区块有a个存储副本,设定的同步节点不进行存储,只进行判断,同步节点对此区块进行请求时,如图3所示,对返回同样内容的区块数量设定阈值,联合节点为请求节点返回带有自身签名的区块,同步节点首先对签名进行验证,剔除验证不通过的区块,当内容相同但签名不同的区块数量超过了该阈值时,同步节点认定该区块内容为账本的真实记录,否则,将未能到达阈值的区块发起方(联合节点)报备给监督节点,请求监督节点对
该联合节点进行零知识验证。
[0037]
该阶段同步节点的设定用于维护账本一致性,同步节点不进行存储,只进行归类判断,同步节点拥有一个标识区块存储地址的名单,其判断区块内容时只涉及签名的正确性以及收到的区块之间内部哈希值的对比,因此在多副本情况下,只要在不超过半数联合节点被攻破或宕机,存储的区块内容毫无疑问是正确的。如若超过半数联合节点损坏(一般而言此情况下网络已经没有意义),也可以通过同步节点向监督节点请求检测的步骤得以补救。
[0038]
4.节点对于存储内容的访问
[0039]
如图4所示,节点如果需要访问某一区块的信息,首先向自身所处的节点块的联合节点发出访问请求,如若来该联合节点存储了该区块,则返回相应带有签名的区块,如若来该联合节点没有该区块的存储,那么向全网广播该对区块的访问请求,其他节点块的节点接收到这个请求,返回给节点块的联合节点,存储有被请求联合区块的联合节点收到请求后,向全网广播该区块与自己的签名,请求访问的节点收到区块以后验证签名的正确性,通过签名验证,则结束访问请求,否则抛弃区块,并请求监督节点验证发送区块的联合节点的诚实性。
[0040]
5.监督节点对全网共享账本的监督
[0041]
如图5所示,监督节点在收到排序节点打包广播的区块以后,会对其内容进行设定方式的计算,并将计算结果保存作为后续验证的标准,监督节点在收到同步节点发送来的验证请求或是任意时间随机选择,依据某个区块的零知识证明对某个联合节点(或多个)进行零知识验证,联合节点按照收到的监督节点的计算请求进行计算,将结果返回给监督节点,监督节点通过比对返回值判断该区块的存储内容是否发生了改变,如果某个监督节点发现联合节点返回值有误,则向网络中广播一条等待群签名的消息,消息内包含发起群签名的监督节点标识、有问题的联合节点等信息,其他监督节点在获取到该条信息以后向对应的联合节点验证该区块,如果验证没能通过,则在该信息内同样加上自己的签名并向网路中广播,由此循环,一旦验证失败的信息上的群签名节点数超过阈值,则说明该联合节点的记录内容已不可信,在节点块中通过选举算法重新选举出新的联合节点,新的联合节点通过与其他随机联合节点进行同步,拷贝其存储副本并存储,同时由监督节点更新信息;如果一定时间后群签名的节点数仍未能到达阈值,则说明发起群签名的监督节点的验证有误,有概率该验证节点是恶意节点,对其进行扣分处理,扣分超过一定限额则通过选举算法重新选出新的监督节点进行替换。
[0042]
该阶段监督节点手握每个区块的零知识证明,其检测的为联合节点存储的区块的具体内容,因此监督节点需要为完全安全稳定的。同步节点的存在可以减少监督节点与其他节点的通信频率,一定程度上保护监督节点安全性,并且同步节点的工作能够有效减少监督节点的工作量与工作开销,监督节点的存在可以及时有效地检测联合节点的诚实性,保证分布式地存储过程中整个网络存储内容的动态统一与完整一致,同时通过剔除坏联合节点,录进新联合节点来实现网络存储节点的动态进出,使得整个网络在不破坏区块链特性的前提下实现分布式的存储过程中存储空间的节省与存储内容的完整一致。
[0043]
6.分布式存储下保持区块链的健壮性
[0044]
区块链的健壮性之一就在于其多个节点受到攻击后,整个网络的账本仍能保持完
整性,而分布式存储下只要收到攻击的节点达到一定数量,就可以破坏其存储内容的完整性,这里引入的监督节点工作便是使得在分布式存储的情况下仍保持区块链的健壮性监督节点除了接收同步节点的审核请求而对联合节点进行零知识挑战以外,它们还自动随机进行审查,每隔一段时间便对存储名单上的某一联合节点存储的某一区块验证,若在规定的时间阈值内没有收到带有特定联合区块签名的区块,或是收到的区块没能通过验证,那么便向网络中广播等待群签名的消息,其他监督节点在获取到该条信息以后向对应的联合节点验证该区块,验证没能通过同样加上自己的签名并向网路中广播,循环,当群签名节点数超过阈值时,说明该联合节点已损坏,则及时在节点块中选举出新的联合节点,以及时止损,运用此监督检测机制,可以及时发现坏节点,在存储区块的副本量足够的情况下,可以使得节点不论被袭击多少个,都能维持网络账本的完整性。
[0045]
实施例
[0046]
下面将结合实施例对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围,本发明实施例基于polkadot网络进行方案描述,方案作为一个公司机密业务的存储平台使用,一段机密业务的存储由广播到上链具体过程如下:
[0047]
s1:区块链网络中由组织间的责任关系选举出一个排序节点(群)(o1,o2,

);
[0048]
s2:区块链网络中剩余节点按照业务逻辑关系分块,每个块内用dpos共识算法选举出一个联合节点,联合节点分别为(u1,u2,

);
[0049]
s3:区块链网络中所有节点按照raft算法选举出多个监督节点,再由监督节点指定出多个同步节点,监督节点分别为(s1,s2,

),同步节点分别为(i1,i2,

);
[0050]
s4:联合节点参照各自的空间大小,以负载均衡的原则对存储该块区块达成共识,确定由u1,u2,u3,u4四个联合节点存储,并将该共识结果在区块链网络中广播;
[0051]
s5:一段机密业务由节点在网络中广播;
[0052]
s6:排序节点o3捕捉到该业务,达到打包要求以后打包成区块,标定存储的联合节点,签名并广播到全网;
[0053]
s7:联合节点u
*
(*=1,2,3,

)收到区块进行签名验证与存储,而监督节点s
*
(*=1,2,3,

)收到区块后将采用对区块连同一个随机数一起取两次哈希计算,将计算结果和随机数进行保存以作后续验证;
[0054]
s8:联合节点u
*
(*=1,2,3,

)收到区块,对区块以及签名进行验证,后查看排序节点的存储标识中是否包含自己,有则存储(u1,u2,u3,u4四个联合节点),无则继续广播区块
[0055]
s9:标识的u1,u2,u3,u4四个联合节点对区块完成存储;
[0056]
s10:内容上链存储完成。
[0057]
同步节点对账本一致性维护的具体过程如下:
[0058]
s1:某一时刻同步节点i1向网络广播一条对某个区块的访问请求,并设定开始时钟;
[0059]
s2:存储相应区块的联合节点u1,u3,u
17
,u
52
,u
69
收到请求后,返回一条带有自身签名的区块信息;
[0060]
s3:同步节点收集到多条返回值;
[0061]
s4:同步节点验证签名的真实性,签名未通过验证,则抛弃区块,否则进行s5;
[0062]
s5:同步节点计算收到的区块的不同签名数,若大于存储该块的联合节点数的2/3,则进行s6,若时钟终止时仍有未到达2/3量的区块,则进行s7;
[0063]
s6:同步节点认定此区块内容代表帐本中该条目的真实记录,并认定有其他返回值的联合节点有问题,请求监督节点验证;
[0064]
s7:放弃该内容的区块,请求监督节点验证发送该内容区块的联合节点的诚实性,并重新进行s1;
[0065]
一段时间或是收到同步节点的验证请求时,监督节点向联合节点进行零知识验证,验证联合节点的诚实性,具体过程如下:
[0066]
s1:监督节点向联合节点发起计算请求,请求计算区块连同一个随机数一起取两次哈希计算结果;
[0067]
s2:联合节点计算后将结果返回给监督节点;
[0068]
s3:监督节点比对存储的结果和返回结果是否一致,若一致则说明联合节点处于正常工作状态,之前的交易内容记录未被篡改,反之则发送一条带有群签名的验证未通过的消息给其它验证节点;
[0069]
s4:其它监督节点收到后分别对全节点发起验证,若验证不通过则在接收到的消息上添上自己的群签名,并广播给其它验证节点;
[0070]
s5:当一个监督节点收到带有阈值t的签名信息后表明联合节点出现异常,将触发规则选举出新的联合节点,新联合节点随机拷贝一个诚实联合节点的账本并报备给监督节点;
[0071]
s6:监督节点在一定时限内未收到指定阈值数的签名信息则表明第一个监督节点出现误报,对其扣10分处理,若所扣分数超过100分则轮循出新一个监督节点。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1