一种基于区块链的数据读写方法及区块链网络结构与流程

文档序号:18601118发布日期:2019-09-03 22:39阅读:387来源:国知局
一种基于区块链的数据读写方法及区块链网络结构与流程

本发明涉及区块链技术领域,更具体地,涉及一种基于区块链的数据读写方法及区块链网络结构。



背景技术:

随着互联网规模的高速扩张,数据量的井喷式增长,数据的安全存储也成为了越来越受关注的问题。研究和调研报告显示,数据的不安全存储会给相关的企业,机构和所有者等多方角色造成来自法律和道德上的不同程度的麻烦。

区块链技术是去中心化的数据共享技术,拥有开放性、自治性、不可篡改等多种特性,这也使得它是目前最受大众认可的安全程度极高的分布式存储模型。但是,它的可扩展性问题一直是阻碍其进一步发展的重要因素,这也是研究人员现在比较关注的问题。随着区块链技术的日渐普及,用户与区块链的读写请求频率不断攀升,由此导致区块链节点承受的读写请求成指数级地增长,会直接引发网络堵塞,甚至瘫痪。因此,如何提升区块链系统承受读写请求的能力,就是解决区块链可扩展性问题的关键之一。

尽管在现有的解决方案中,有侧链,闪电网络等技术研究着眼于区块链的可扩展性问题,但是在读写请求频率不均衡,并且读请求频率远大于写请求频率的场景下,还是会存在扩容不合理的问题,即在提升了区块链读性能的同时会降低区块链的写性能。比如,当使用区块链系统来存储电子病历进行数据共享时,由于参与数据共享的机构数量会日益增长,而每天将病历数据写入区块链的需求量保持稳定,增长速度远低于读取区块链病历共享的读请求需求量增长速度。因此区块链上的病历数据被读的频率会远大于将病历数据写入区块链上的频率。此时,如果使用传统的技术对区块链的节点数量进行扩容,增加区块链节点的数量虽然提升了区块链的数据读能力,但是会降低相同写需求情况下的写速率,降低写性能,会造成扩容不合理的问题。



技术实现要素:

针对现有技术的缺陷,本发明的目的在于解决现有区块链网络在读请求频率远大于写请求频率的场景下,会存在扩容不合理的技术问题。

为实现上述目的,第一方面,本发明提供一种基于区块链的数据读写方法,包括以下步骤:

区块链的一个内层节点接收用户发送的写请求,该内层节点向区块链的其他内层节点广播所述写请求,且所有内层节点对所述写请求进行共识以防止该写请求被篡改;所述区块链的节点包括多个内层节点和多个外层节点,多个内层节点之间相互连接,外层节点与内层节点连接;

区块链的每个内层节点写入所述写请求对应的数据,且将所述写请求发送给与其连接的外层节点;

区块链的外层节点接收内层节点发送的写请求并写入对应的数据;

区块链的外层节点接收用户发送的读请求,并在其存储的数据中查询读请求对应的数据以向用户返回查询结果,其中,所有外层节点可以承接的读请求总量有上限,当读请求总量达到上限的预设比例时,所述区块链增加新的外层节点以扩展所有外层节点承接读请求的能力。

可选地,该方法还包括如下步骤:

当区块链增加新的外层节点时,新增的外层节点向内层节点发送请求以同步数据;

当外层节点运行一段时间后,通过心跳机制周期性查询内层节点进行数据的核对以保证与内层节点数据的一致性。

可选地,所述外层节点写入写请求对应的数据,具体包括:

所述外层节点优先将写请求对应的数据存储在外层节点的内存中,当所述数据在内存中停留的时间超过预设时间周期或者使用率达到预设阈值后,将所述数据转移到外层节点对应的本地其他存储介质中。

可选地,所述内层节点异步地将所述写请求发送给与其连接的外层节点。

可选地,所述外层节点向用户返回查询结果,具体包括:

所述外层节点中至少一个外层节点接收用户发送的读请求,各个节点向用户返回查询结果,以使用户根据至少一个外层节点返回的查询结果确定最终的查询结果,以避免用户收到的查询结果被篡改。

第二方面,本发明提供一种区块链网络结构,包括:多个内层节点和多个外层节点;

所述多个内层节点之间相互连接,每个内层节点用于接收用户发送的写请求,并向区块链的其他内层节点广播所述写请求,以使每个内层节点均写入所述写请求对应的数据;每个所述内层节点将所述写请求发送给与其连接的外层节点;

所述多个外层节点分散连接于多个内层节点,所述外层节点接收内层节点发送的写请求并写入对应的数据;

至少一个外层节点接收用户发送的读请求,并在其存储的数据中查询读请求对应的数据以向用户返回查询结果,其中,所有外层节点可以承接的读请求总量有上限,当读请求总量达到上限的预设比例时,所述区块链网络增加新的外层节点以扩展所有外层节点承接读请求的能力。

可选地,当区块链网络增加新的外层节点时,新增的外层节点向内层节点发送请求以同步数据;当外层节点运行一段时间后,外层节点通过心跳机制周期性查询内层节点进行数据的核对以保证与内层节点数据的一致性。

可选地,所述外层节点优先将写请求对应的数据存储在外层节点的内存中,当所述数据在内存中停留的时间超过预设时间周期或者使用率达到预设阈值后,外层节点将所述数据转移到其对应的本地其他存储介质中。

可选地,所述内层节点异步地将所述写请求发送给与其连接的外层节点。

可选地,所述至少一个外层节点接收用户发送的读请求,各个节点向用户返回查询结果,以使用户根据至少一个外层节点返回的查询结果确定最终的查询结果,以避免用户收到的查询结果被篡改。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

本发明针对在区块链系统中的传统的可扩展性解决方案中存在的扩容不合理问题,提出了读写分离的手段,即让区块链上的节点具有不同的分工,以处理不同类型的请求。比如只处理读请求的外层节点和只处理写请求的内层节点,当读请求量增加超过上限时,增加外层节点以对区块链扩容,此时区块链中用于处理写请求的内层节点的数量保持不变,即不影响处理写请求的速度;从而可以实现在不同的应用场景和业务需求下,对区块链系统进行不同层面的扩容,以达到单方面的提高区块链读性能的同时不会对写性能造成不良影响或者单方面的提高区块链写性能的同时不会对读性能造成不良影响的效果。

本发明针对基于读写分离技术的区块链存储系统提出了一种基于区块链的存储方法,通过这种方法,能够实现在区块链存储开销和区块链性能之间的自动化权衡,以尽可能保证系统在能够提供较高的读性能的同时降低存储的开销。

本发明针对基于读写分离技术的区块链存储系统提出了一种投票选举方式,基于这种投票选举方式,可以实现安全可靠地读取存储于区块链上的数据信息。

本发明针对基于读写分离技术的区块链存储系统提出了一种心跳机制,通过这种机制,可以实现不同节点之间的数据的一致性存储,从而保证了数据的安全性和准确性。

附图说明

图1是本发明提供的基于区块链的数据读写方法流程图;

图2是本发明针对基于读写分离技术的区块链存储系统的操作方法流程图;

图3是本发明针对基于读写分离技术的区块链存储系统的整体结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

针对现有技术方案存在的问题,本发明提供了一种基于区块链网络的读写方法及区块链网,解决现有区块链存储系统中存在的扩容不合理的问题,同时结合存储方法和选举方法以提升系统的读性能和安全性。

图1是本发明提供的基于区块链的数据读写方法流程图,如图1所示,包括如下步骤:

s101,区块链的一个内层节点接收用户发送的写请求,该内层节点向区块链的其他内层节点广播所述写请求,且所有内层节点对所述写请求进行共识以防止该写请求被篡改;所述区块链的节点包括多个内层节点和多个外层节点,多个内层节点之间相互连接,外层节点与内层节点连接;

s102,区块链的每个内层节点写入所述写请求对应的数据,且将所述写请求发送给与其连接的外层节点;

s103,区块链的外层节点接收内层节点发送的写请求并写入对应的数据;

s104,区块链的外层节点接收用户发送的读请求,并在其存储的数据中查询读请求对应的数据以向用户返回查询结果,其中,所有外层节点可以承接的读请求总量有上限,当读请求总量达到上限的预设比例时,所述区块链增加新的外层节点以扩展所有外层节点承接读请求的能力。

可选地,当区块链增加新的外层节点时,新增的外层节点向内层节点发送请求以同步数据;

当外层节点运行一段时间后,通过心跳机制周期性查询内层节点进行数据的核对以保证与内层节点数据的一致性。

可选地,所述外层节点写入写请求对应的数据,具体包括:

所述外层节点优先将写请求对应的数据存储在外层节点的内存中,当所述数据在内存中停留的时间超过预设时间周期或者使用率达到预设阈值后,将所述数据转移到外层节点对应的本地其他存储介质中。

可选地,所述内层节点异步地将所述写请求发送给与其连接的外层节点。

可选地,所述外层节点向用户返回查询结果,具体包括:

所述外层节点中至少一个外层节点接收用户发送的读请求,各个节点向用户返回查询结果,以使用户根据至少一个外层节点返回的查询结果确定最终的查询结果,以避免用户收到的查询结果被篡改。

具体地,用户收集外层节点返回的查询结果状态,其中,如果存在一致的状态数量超过50%,则确定该状态为最终结果,如果不存在一致的状态数量超过50%,则确定最终结果为读请求对应的数据不存在。

本发明的整体思路在于,将传统的区块链节点中读写耦合的功能解耦,通过为不同的节点分配不同的角色,并为不同的角色赋予不同的功能,再引入异步通知,心跳等技术保持不同节点之间的数据一致性,从而实现区块链存储系统中的节点合理的扩容。

如图2所示,本发明基于读写分离技术的区块链存储方法应用在区块链系统中,包括以下步骤:

(1)用户向区块链内层节点提交一笔转账请求;

具体地,此处转账请求即对应一种写请求的示例说明。本发明不对具体写请求的形式做任何限定。该写请求也可以是其他种交易请求。

(2)区块链上内层各个节点收到转账请求并对转账结果进行共识;

具体地,共识的目的是为了防止其他内层节点收到的写请求被篡改。

(3)共识完成后,转账结果被持久化到内层节点本地硬盘中,同时转账结果会被异步地提交给区块链外层节点;

具体地,异步地提交,指的是外层节点将写请求提交给外层节点后,无需等待外层节点的反馈信息,即可继续处理其他业务。

(4)区块链外层节点根据内层节点提交的转账结果,对本地内存或硬盘中的转账数据进行更新;

(5)用户向多个区块链外层节点发起转账查询请求;

同理地,转账查询请求为读请求的一种示例说明,本发明不对具体读请求的形式做任何限定。该读请求也可以是其他种交易请求。

(6)外层节点收到用户发起的转账查询请求后先去查询本地内存,若转账信息存在,则返回转账信息,若转账信息不存在,则进行步骤7;

(7)外层节点查询本地硬盘数据,若转账信息存在,则返回转账信息,若转账信息不存在,则返回转账信息不存在;

(8)用户收集多个外层节点返回的结果状态,并在用户本地通过投票选举方法确定最终转账信息查询结果;

具体地,投票的方式是为了防止读请求读取的数据被篡改。

(9)当有新的节点加入作为外层节点或者节点持续作为外层节点运行时,通过心跳机制与内层节点保持数据一致。

具体地,心跳机制指的是外层节点周期性查询内层节点,以保持与内层节点数据的一致性。

可选地,外层节点会优先将内层节点提交的交易信息存储在外层节点的内存中,当交易信息在内存中停留的时间超过一定的时间周期或者内存使用率达到一定的阈值后,交易信息会被转移到本地其他存储介质中。

可选地,用户本地收集外层节点返回的状态,其中,如果存在一致的状态数量超过50%,则确定该状态为最终结果,如果不存在一致的状态数量超过50%,则确定最终结果为交易记录不存在。

可选地,如果外层节点是刚刚加入,那么此时外层节点将没有任何数据,外层节点会主动去向内层节点请求并同步数据,如果外层节点是已经运行了一段时间,那么外层节点会每隔一定的时间周期去和内层节点进行数据的核对以保证数据的一致。

为了更好的理解,本发明提供图3为整体区块链网络的结构图,如图3所示,包括多个外层节点100和多个内层节点200。

多个内层节点200之间相互连接,每个内层节点200用于接收用户发送的写请求,并向区块链的其他内层节点200广播所述写请求,以使每个内层节点200均写入所述写请求对应的数据;每个内层节点将所述写请求发送给与其连接的外层节点;

多个外层节点100分散连接于多个内层节点200,所述外层节点100接收内层节点200发送的写请求并写入对应的数据;

至少一个外层节点100接收用户发送的读请求,并在其存储的数据中查询读请求对应的数据以向用户返回查询结果,其中,所有外层节点100可以承接的读请求总量有上限,当读请求总量达到上限的预设比例时,所述区块链网络增加新的外层节点以扩展所有外层节点承接读请求的能力。

具体地,各个内层节点200和外层节点100的功能可参照前述方法实施例中的介绍,在此不做赘述。

本发明公开了一种针对区块链安全存储的合理扩容的方法和系统,包括:提出了一种基于读写分离技术的区块链存储系统,区块链系统在读性能达到瓶颈或者写性能达到瓶颈的时候,可以通过扩展不同类型的节点达到扩容的效果;提出了一种基于区块链的数据读写方法,能够在存储开销和性能之间实现自动化权衡,以尽可能在保证在提供高性能读的同时支持低开销的存储;提出了一种投票选举方式,以实现安全可靠地读取信息;提出了一种心跳机制,以实现数据的一致性存储。本发明适用于解决区块链系统存储过程中扩容不合理的问题,能够使区块链读性能或者写性能在不影响彼此的前提下得以合理扩展。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1