一种区块链分域方法与流程

文档序号:15847488发布日期:2018-11-07 09:18阅读:238来源:国知局
一种区块链分域方法与流程

本公开涉及通讯技术领域,更具地体说,涉及一种区块链分域方法。

背景技术

区块链(blockchain)技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。区块链的设计是一种保护措施,比如(应用于)高容错的分布式计算系统。区块链使混合一致性成为可能。这使区块链适合记录事件、标题、医疗记录和其他需要收录数据的活动、身份识别管理,交易流程管理和出处证明管理。

区块链核心是去中心化,以点对点传输为承载,利用分布式节点共识算法、加密算法、块链式数据结构来生成不可篡改和不可伪造的分布式账本。区块链基于p2p传输、共识机制、加密算法、块链式数据结构,分布式数据存储等技术,实现了去中心化的可信数字架构。但是,正因为区块链的去中心化核心思想,在任意两个节点间都会有广播消息、共识算法消息、数据块同步等数据流量。当区块链网络节点数达到一定规模时,数据流量激增,将会给传输网络带来较大压力,同时各节点也面临计算量不断增加。

在现有区块链技术中,还没有对区块链基于p2p所带来的消息和数据传输、处理冗余的可行优化方案。



技术实现要素:

针对上述问题,本公开给出一种区块链分域方法。根据本公开的区块链分域方法,可以将广播消息、共识算法消息限制在域内,达到减少网络流量及节点计算量的效果。同时,在发生新的记账时,可以将数据块进行跨域同步,保证整个区块链网络节点都存储完整的账本数据。

在本公开的一个实施例中,提供了一种区块链分域方法,包括以下步骤:当新节点加入区块链网络时,从所述新节点连接的相邻节点获取区块链域信息表,其中,所述区块链域信息表包括节点信息表和分域指标参数;从所述区块链域信息表中获取分域指标参数;判断是否触发分域;将所述区块链网络中的所有节点按照分域规则分到两个不同的域中;将所述新节点加入到所述两个不同域的一个域中并更新所述区块链域信息表;将更新后的所述区块链域信息表发布到整个所述区块链网络中;以及完成所述新节点的加入。

在一个可选实施例中,所述节点信息表包括以下字段:节点序号、节点地址、所属域以及相邻节点标识。

在一个可选实施例中,所述分域指标参数包括:区块链网络的节点数量、每个域的节点数量、触发分域的门限参数数值和触发分域的规则。

在一个可选实施例中,判断是否触发分域的步骤包括:当所述区块链网络的节点数量满足n+1>=w时,触发分域,其中,n为区块链网络的节点数量,w为预设的触发标准值。

在一个可选实施例中,所述分域规则包括:将所述区块链网络的所有节点按照节点序号从小到大排序,将节点序号排在前1/2的节点作为第一归属域,将节点序号排在后1/2的节点作为第二归属域。

在一个可选实施例中,将所述区块链网络中的所有节点按照分域规则分到两个不同的域中的步骤包括:将所述区块链网络的所有节点按照节点序号从小到大排序;将节点序号序在前1/2的节点分到第一归属域中;以及将节点序号排在后1/2的节点分到第二归属域中。

在一个可选实施例中,将所述新节点加入到所述两个不同域的一个域中并更新所述区块链域信息表的步骤包括:更新所述区块链域信息表的所述节点信息表,使所述新节点与所述所属域对应;以及更新所述分域指标参数中的每个域的节点数量。

在一个可选实施例中,在将更新后的所述区块链域信息表发布到整个所述区块链网络中的步骤之后,在完成所述新节点的加入之前,所述方法还包括:所述区块链网络的各个节点接收更新后的所述区块链域信息表并获得分域结果;以及检查触发分域及分域结果的合理性,其中,如果合理,则更新本节点的区块链域信息表。

在一个可选实施例中,将更新后的所述区块链域信息表发布到整个所述区块链网络中的步骤进一步包括:数据同步发起节点读取区块链域信息表中的节点信息表;选取第二所属域的节点并向所述节点发送同步数据;在所述第二所属域的节点成功接收同步数据后,返回确认消息;如果所述数据同步发起节点收到所述确认消息,则在所述第二所属域内同步所述数据;如果所述数据同步发起节点没有收到所述确认消息,则所述数据同步发起节点选取所述第二所属域的另一个节点并向所述节点发送同步数据;在所述第二所属域内进行数据同步;以及重复上述步骤,直至在整个区块链上完成数据同步。

本公开提供的区块链分域机制,在区块链节点数达到一定规模时,全部节点通过某种机制分拆到两个域中,节点间的广播、共识算法消息限定在本域内,不扩散至其它域,但发生新的记账时将数据块进行跨域同步,后续如果子域节点规模达到分域标准,将进行再次分域。通过分域来达到降低网络流量、减轻节点计算量的目的。

附图说明

下面,将结合附图对本公开的特征和特点进行详细描述。在附图中:

图1是根据本公开一个实施例的区块链分域方法的流程图;以及

图2是根据本公开一个实施例的跨域数据同步机制的流程图。

具体实施方式

下面,将参考附图,详细描述根据本公开一个实施例的区块链分域方法。

图1是是根据本公开一个实施例的区块链分域方法的流程图。如图1所示,根据本公开一个实施例的区块链分域方法包括以下步骤:

s110,当新节点加入区块链网络时,从所述新节点连接的相邻节点获取区块链域信息表,其中,所述区块链域信息表包括节点信息表和分域指标参数;

s120,从所述区块链域信息表中获取分域指标参数;

s130,判断是否触发分域;

s140,将所述区块链网络中的所有节点按照分域规则分到两个不同的域中;

s150,将所述新节点加入到所述两个不同域的一个域中并更新所述区块链域信息表;

s160,将更新后的所述区块链域信息表发布到整个所述区块链网络中;以及

s170,完成所述新节点的加入。

在本实施例中,所述区块链域信息表存在于每个区块链网络节点中,并且包括节点信息表和分域指标参数。在一个示例性实施例中,所述节点信息表中包含整个区块链中的各个节点的信息状况,并且包括以下字段:节点序号、节点地址、所属域以及相邻节点标识。所述分域指标参数包括但不限于:区块链网络的节点数量、每个域的节点数量、触发分域的门限参数数值和触发分域的规则。触发分域的门限参数可以包括一种或几种参数。

在一个示例性实施例中,例如,触发分域的门限参数包括区块链网络的节点数量n。在这种情况下,判断是否触发分域的步骤s130包括:当所述区块链网络的节点数量满足n+1>=w(其中,n为区块链网络的节点数量,w为预设的触发标准值)时,触发分域。当新节点加入区块链网络时,从所述新节点连接的相邻节点获取区块链域信息表,然后从所述区块链域信息表中获取分域指标参数。根据所述分域指标参数,如果区块链网络的节点数量已经达到上限阈值,即,区块链网络的节点数量满足n+1>=w(其中,n为区块链网络的节点数量,w为预设的触发标准值),则表明所述新节点的加入将会触发分域。

在触发分域后,区块链网络的所有节点按照某种分域规则拆分到两个不同域中。不同的域在所述区块链域信息表的节点信息表中的“所属域”字段用不同的代码来体现,同时也体现节点和域的归属信息。

在一个示例性实施例中,所述分域规则可以包括:将所述区块链网络的所有节点按照节点序号从小到大排序,将节点序号排在前1/2的节点作为第一归属域,将节点序号排在后1/2的节点作为第二归属域。在这种情况下,将所述区块链网络中的所有节点按照分域规则分到两个不同的域中的步骤s140包括:将所述区块链网络的所有节点按照节点序号从小到大排序;将节点序号序在前1/2的节点分到第一归属域中;以及将节点序号排在后1/2的节点分到第二归属域中。

在一个示例性实施例中,将所述新节点加入到所述两个不同域的一个域中并更新所述区块链域信息表的步骤s150包括:更新所述区块链域信息表的所述节点信息表,使所述新节点与所述所属域对应;以及更新所述分域指标参数中的每个域的节点数量。

在区块链网络的各个节点收到更新的所述区块链域信息表后,获得分域结果,按照触发分域规则及分域规则,核对触发分域及分域结果的合理性,如正确则更新至本节点的域信息表,如有误则发布纠正消息,节点间按照共识规则来进行处理。

因此,在一个示例性实施例中,在将更新后的所述区块链域信息表发布到整个所述区块链网络中的步骤s160之后,在完成所述新节点的加入s170之前,所述方法还包括:所述区块链网络的各个节点接收更新后的所述区块链域信息表并获得分域结果;检查触发分域及分域结果的合理性,其中,如果合理,则更新本节点的区块链域信息表。

在分域后,如果区块链的节点收到p2p广播消息以及共识机制消息,则按所属域隔离p2p广播消息以及共识机制消息,以将p2p广播消息以及共识机制消息限制在所属域内。消息发布节点发布时读取区块链域信息表中的节点信息表,只将消息发布至本节点所属域内各个节点。

在分域后,如果区块链的节点收到区块链的新增块数据以及更新后的区块链域信息表,则进行跨域同步,以将新增区块链数据以及更新后的区块链域信息表扩散至整个区块链并且在区块链各个节点均保存完整新增区块链数据以及更新后的区块链域信息表副本。

对于需要进行跨域同步数据的情况,可以按照一定的机制来实现。例如,数据同步发起节点读取域信息表中的节点信息表,域内的传送对本域内的节点进行扩散发送,跨域的传送选取一个跨域节点进行发送,跨域节点成功接收后,返回确认消息,过期未接收到确认消息则发起节点选取另一个跨域节点进行发送,直至成功发送至跨域节点,之后由跨域节点在本域内进行数据同步的扩散。

图2是根据本公开一个实施例的跨域数据同步机制的流程图。如图2所示,将更新后的所述区块链域信息表发布到整个所述区块链网络中的步骤s160可以进一步包括:数据同步发起节点读取区块链域信息表中的节点信息表;选取第二所属域的节点并向所述节点发送同步数据;在所述第二所属域的节点成功接收同步数据后,返回确认消息;如果所述数据同步发起节点收到所述确认消息,则在所述第二所属域内同步所述数据;如果所述数据同步发起节点没有收到所述确认消息,则所述数据同步发起节点选取所述第二所属域的另一个节点并向所述节点发送同步数据;在所述第二所属域内进行数据同步;以及重复上述步骤,直至在整个区块链上完成数据同步。

根据本公开的实施例,提供了一种区块链节点分域方法。在所述区块链节点分域方法中,在达到分域条件时触发分域,所有节点划分到两个域中。如果子域达到分域条件则再次触发分域。数据块更新时进行跨域的同步更新,保证整个区块链各节点留存全量数据块。

本公开提供的区块链分域机制,在区块链节点数达到一定规模时,全部节点通过某种机制分拆到两个域中,节点间的广播、共识算法消息限定在本域内,不扩散至其它域,但发生新的记账时将数据块进行跨域同步,后续如果子域节点规模达到分域标准,将进行再次分域。通过分域来达到降低网络流量、减轻节点计算量的目的。

本公开的实施例所提供的方法不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本公开也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本公开的内容,并且上面对特定语言所做的描述是为了披露本公开的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本公开的示例性实施例的描述中,本公开的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的装置中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个装置中。可以把实施例中的若干模块组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者模块中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本公开的各个装置实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本公开实施例的装置中的一些或者全部模块的一些或者全部功能。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

例如,本公开的实施例所提供的方法可以在电子设备上运行。该电子设备传统上包括处理器和以存储器形式的计算机程序产品或者计算机可读介质。存储器可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。存储器具有用于执行上述方法中的任何方法步骤的程序代码的存储空间。例如,用于程序代码的存储空间可以包括分别用于实现上面的方法中的各种步骤的各个程序代码。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(cd)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为便携式或者固定存储单元。该存储单元可以具有与服务器中的存储器类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括计算机可读代码,即可以由例如诸如之类的处理器读取的代码,这些代码当由服务器运行时,导致该服务器执行上面所描述的方法中的各个步骤。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

应该注意的是上述实施例对本公开进行说明而不是对本公开进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

此外,还应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本公开的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本公开的范围,对本公开所做的公开是说明性的,而非限制性的,本公开的范围由所附权利要求书限定。

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