[发明专利]一种基于联盟链存储族谱数据的方法及系统有效
申请号: | 201910628706.5 | 申请日: | 2019-07-12 |
公开(公告)号: | CN110543606B | 公开(公告)日: | 2022-10-14 |
发明(设计)人: | 赵鑫烜 | 申请(专利权)人: | 鑫火信息技术(上海)有限公司 |
主分类号: | G06F16/958 | 分类号: | G06F16/958;G06F16/33 |
代理公司: | 北京睿派知识产权代理事务所(普通合伙) 11597 | 代理人: | 刘锋 |
地址: | 200120 上海市浦东新区南*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 联盟 存储 族谱 数据 方法 系统 | ||
1.一种基于联盟链存储族谱数据的方法,所述方法包括:
当本地服务器接收到希望被存储到联盟链中的族谱数据后,对所述族谱数据进行内容校验;
在本地服务器确定所述族谱数据通过内容校验后,将所述族谱数据发送给联盟链中的主节点;
主节点基于所述族谱数据向所述联盟链中的所有非主节点发送预准备消息,所述预准备消息包括请求存储族谱数据的存储请求和族谱数据;
每个非主节点对所述存储请求进行合法性验证,在确定所述存储请求通过合法性验证的情况下,在所述联盟链中广播准备消息;
任意的非主节点在预定时间内接收到预定数量的准备消息时,在所述联盟链中广播提交消息;以及
任意的非主节点的接收到预定数量的提交消息后对所述预准备消息中的族谱数据进行存储;
其中,在本地服务器确定所述族谱数据通过内容校验后,确定所连接的节点是否为联盟链中的主节点,如果是,则所连接的节点基于所述族谱数据向所述联盟链中的所有非主节点发送预准备消息;如果否,则经由所连接的节点将所述族谱数据发送给联盟链中的主节点;
其中,联盟链中的每个服务器定期通过所连接的节点从联盟链中获取所有的当前族谱数据,并将所有的当前族谱数据存储在本地数据库中;
当多个服务器中的任意服务器接收到来自用户的查询请求时,所述任意服务器基于查询请求在自身的本地数据库中进行查询,如果在本地数据库中查询到匹配的查询结果,则将查询结果发送给用户;
如果在本地数据库中查询不到匹配的查询结果,则所述任意服务器通过所连接的节点向联盟链发送查询请求,并将联盟链返回的查询结果发送给用户。
2.根据权利要求1所述的方法,当与本地服务器连接的客户端需要查询联盟链中的族谱数据时,向本地服务器发送查询请求,以促使本地服务器通过所连接的节点向联盟链发送查询请求。
3.根据权利要求1所述的方法,所述族谱数据包括一个或多个数据项,每个数据项包括族谱人员的多个属性,其中属性包括以下内容中的至少一个:序列号、姓名、父亲编号、性别、生日、字号、地址和字排名。
4.根据权利要求3所述的方法,对所述族谱数据进行内容校验包括确定族谱数据的每个数据项中的每个属性的属性值是否符合各自的取值范围。
5.根据权利要求1所述的方法,每个非主节点对所述存储请求进行合法性验证包括:每个非主节点获取所述存储请求中的数据项,确定存储请求中的版本号和序列号是否与之前的存储请求的版本号和序列号相同,如果不相同,则确定所述存储请求通过合法性验证;如果相同,则确定所述存储请求中的数据项与之前的具有相同版本号和序列号的存储请求中的数据项是否相同;如果不相同,则确定所述存储请求通过合法性验证;如果相同,则确定所述存储请求未通过合法性验证。
6.根据权利要求1所述的方法,在任意的非主节点的接收到预定数量的提交消息,对所述预准备消息中的族谱数据进行存储之后,联盟链经由与本地服务器连接的节点向本地服务器发送用于指示族谱数据已经被存储在联盟链中的响应消息。
7.根据权利要求1所述的方法,本地服务器接收到与特定族谱成员相关联的新的数据项时,确定所述特定族谱成员的原始数据项的原始编号和当前版本号,将新的数据项的编号修改为所述原始编号并基于当前版本号确定所述新的数据项的版本号,以生成经过修改的数据项,在所述联盟链中增加所述经过修改的数据项。
8.一种基于联盟链存储族谱数据的系统,所述系统包括:
本地服务器,接收到希望被存储到联盟链中的族谱数据后,对所述族谱数据进行内容校验,在确定所述族谱数据通过内容校验后,将所述族谱数据发送给联盟链中的主节点;
主节点,基于所述族谱数据向所述联盟链中的所有非主节点发送预准备消息,所述预准备消息包括请求存储族谱数据的存储请求和族谱数据;
多个非主节点,每个非主节点对所述存储请求进行合法性验证,在确定所述存储请求通过合法性验证的情况下,在所述联盟链中广播准备消息;其中,任意的非主节点在预定时间内接收到预定数量的准备消息时,在所述联盟链中广播提交消息;以及任意的非主节点的接收到预定数量的提交消息后对所述预准备消息中的族谱数据进行存储;
其中,在本地服务器确定所述族谱数据通过内容校验后,确定所连接的节点是否为联盟链中的主节点,如果是,则所连接的节点基于所述族谱数据向所述联盟链中的所有非主节点发送预准备消息;如果否,则经由所连接的节点将所述族谱数据发送给联盟链中的主节点;
其中,联盟链中的每个服务器定期通过所连接的节点从联盟链中获取所有的当前族谱数据,并将所有的当前族谱数据存储在本地数据库中;
当多个服务器中的任意服务器接收到来自用户的查询请求时,所述任意服务器基于查询请求在自身的本地数据库中进行查询,如果在本地数据库中查询到匹配的查询结果,则将查询结果发送给用户;
如果在本地数据库中查询不到匹配的查询结果,则所述任意服务器通过所连接的节点向联盟链发送查询请求,并将联盟链返回的查询结果发送给用户。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于鑫火信息技术(上海)有限公司,未经鑫火信息技术(上海)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910628706.5/1.html,转载请声明来源钻瓜专利网。